@clikvn/showroom-visualizer 0.2.2-dev-09 → 0.2.2-dev-11

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 (99) hide show
  1. package/.idea/inspectionProfiles/Project_Default.xml +36 -0
  2. package/.idea/jsLinters/eslint.xml +7 -0
  3. package/.idea/misc.xml +9 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/prettier.xml +8 -0
  6. package/.idea/showroom-visualizer.iml +9 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/DEVELOPMENT.md +120 -0
  9. package/EXAMPLES.md +967 -0
  10. package/README.md +139 -32
  11. package/SETUP_COMPLETE.md +149 -0
  12. package/dist/components/SkinLayer/DefaultLayout/index.d.ts.map +1 -1
  13. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts +16 -0
  14. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts.map +1 -0
  15. package/dist/components/SkinLayer/Drawer/index.d.ts +29 -0
  16. package/dist/components/SkinLayer/Drawer/index.d.ts.map +1 -0
  17. package/dist/components/SkinLayer/Floorplan/Map.d.ts.map +1 -1
  18. package/dist/components/SkinLayer/Floorplan/Minimap/MiniMapMarker.d.ts.map +1 -1
  19. package/dist/components/SkinLayer/Floorplan/Minimap/index.d.ts.map +1 -1
  20. package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts +30 -0
  21. package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts.map +1 -0
  22. package/dist/components/SkinLayer/Layout/index.d.ts.map +1 -1
  23. package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts +10 -0
  24. package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts.map +1 -0
  25. package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts +9 -0
  26. package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts.map +1 -0
  27. package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts +13 -0
  28. package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts.map +1 -0
  29. package/dist/components/SkinLayer/ModalItemInfo/index.d.ts +10 -0
  30. package/dist/components/SkinLayer/ModalItemInfo/index.d.ts.map +1 -0
  31. package/dist/components/SkinLayer/PlayAll/index.d.ts +8 -0
  32. package/dist/components/SkinLayer/PlayAll/index.d.ts.map +1 -0
  33. package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts +13 -0
  34. package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts.map +1 -0
  35. package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts +13 -0
  36. package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts.map +1 -0
  37. package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts +15 -0
  38. package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts.map +1 -0
  39. package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts +13 -0
  40. package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts.map +1 -0
  41. package/dist/components/SkinLayer/index.d.ts +32 -0
  42. package/dist/components/SkinLayer/index.d.ts.map +1 -1
  43. package/dist/context/CustomLayoutContext.d.ts +20 -0
  44. package/dist/context/CustomLayoutContext.d.ts.map +1 -0
  45. package/dist/context/StoreContext.d.ts +5 -0
  46. package/dist/context/StoreContext.d.ts.map +1 -0
  47. package/dist/features/ShowroomVisualizer/Scripts.d.ts +4 -0
  48. package/dist/features/ShowroomVisualizer/Scripts.d.ts.map +1 -0
  49. package/dist/features/ShowroomVisualizer/TourContainer.d.ts +9 -0
  50. package/dist/features/ShowroomVisualizer/TourContainer.d.ts.map +1 -0
  51. package/dist/features/ShowroomVisualizer/Tours.d.ts +3 -0
  52. package/dist/features/ShowroomVisualizer/Tours.d.ts.map +1 -0
  53. package/dist/features/ShowroomVisualizer/VirtualTour.d.ts +5 -0
  54. package/dist/features/ShowroomVisualizer/VirtualTour.d.ts.map +1 -1
  55. package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts +4 -3
  56. package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts.map +1 -1
  57. package/dist/features/ShowroomVisualizer/index.d.ts +24 -3
  58. package/dist/features/ShowroomVisualizer/index.d.ts.map +1 -1
  59. package/dist/features/VirtualTourVisualizer/index.d.ts +20 -0
  60. package/dist/features/VirtualTourVisualizer/index.d.ts.map +1 -0
  61. package/dist/features/VirtualTourVisualizerUI/index.d.ts +17 -0
  62. package/dist/features/VirtualTourVisualizerUI/index.d.ts.map +1 -0
  63. package/dist/hooks/Visualizer/reducer.d.ts +116 -0
  64. package/dist/hooks/Visualizer/reducer.d.ts.map +1 -0
  65. package/dist/hooks/headless/index.d.ts +0 -31
  66. package/dist/hooks/headless/index.d.ts.map +1 -1
  67. package/dist/hooks/useToolConfig.d.ts.map +1 -1
  68. package/dist/index.d.ts +11 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.html +95 -95
  71. package/dist/index.js +1 -1
  72. package/dist/register.d.ts +3 -0
  73. package/dist/register.d.ts.map +1 -1
  74. package/dist/types/SkinLayer/tool.type.d.ts +6 -0
  75. package/dist/types/SkinLayer/tool.type.d.ts.map +1 -1
  76. package/dist/types/SkinLayer/visualizer.type.d.ts +3 -0
  77. package/dist/types/SkinLayer/visualizer.type.d.ts.map +1 -1
  78. package/dist/types/custom-layout.d.ts +63 -0
  79. package/dist/types/custom-layout.d.ts.map +1 -0
  80. package/dist/web.js +1 -1
  81. package/example/CSS_HANDLING.md +141 -0
  82. package/example/FIXES_SUMMARY.md +121 -0
  83. package/example/PATH_ALIASES.md +103 -0
  84. package/example/README.md +64 -0
  85. package/example/index.html +13 -0
  86. package/example/package.json +25 -0
  87. package/example/postcss.config.cjs +6 -0
  88. package/example/tailwind.config.cjs +12 -0
  89. package/example/tsconfig.node.json +12 -0
  90. package/example/vite.config.ts +126 -0
  91. package/package.json +132 -124
  92. package/rollup.config.js +272 -4
  93. package/.claude/settings.local.json +0 -19
  94. package/dist/context/SwizzleContext.d.ts +0 -21
  95. package/dist/context/SwizzleContext.d.ts.map +0 -1
  96. package/dist/types/swizzle.d.ts +0 -59
  97. package/dist/types/swizzle.d.ts.map +0 -1
  98. /package/dist/features/ShowroomVisualizer/{CssStyles.d.ts → cssStyles.d.ts} +0 -0
  99. /package/dist/features/ShowroomVisualizer/{CssStyles.d.ts.map → cssStyles.d.ts.map} +0 -0
@@ -0,0 +1,20 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ import { CustomLayoutConfig } from '../types/custom-layout';
3
+ type CustomLayoutContextType = {
4
+ customLayout: CustomLayoutConfig;
5
+ getCustomComponent: <T = unknown>(path: string[], defaultComponent: ComponentType<T>) => ComponentType<T>;
6
+ };
7
+ /**
8
+ * Hook để access custom layout configuration
9
+ */
10
+ export declare const useCustomLayout: () => CustomLayoutContextType;
11
+ type Props = {
12
+ customLayout?: CustomLayoutConfig;
13
+ children: ReactNode;
14
+ };
15
+ /**
16
+ * CustomLayoutProvider - Wrap app với provider này để enable component overrides
17
+ */
18
+ export declare const CustomLayoutProvider: React.FC<Props>;
19
+ export {};
20
+ //# sourceMappingURL=CustomLayoutContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomLayoutContext.d.ts","sourceRoot":"","sources":["../../src/context/CustomLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EACL,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,uBAAuB,GAAG;IAC7B,YAAY,EAAE,kBAAkB,CAAC;IACjC,kBAAkB,EAAE,CAAC,CAAC,GAAG,OAAO,EAC9B,IAAI,EAAE,MAAM,EAAE,EACd,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,KAC/B,aAAa,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAOF;;GAEG;AACH,eAAO,MAAM,eAAe,+BAAwC,CAAC;AAErE,KAAK,KAAK,GAAG;IACX,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6ChD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { StoreData } from '../types/SkinLayer';
3
+ declare const StoreContext: React.Context<StoreData | null>;
4
+ export default StoreContext;
5
+ //# sourceMappingURL=StoreContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreContext.d.ts","sourceRoot":"","sources":["../../src/context/StoreContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,QAAA,MAAM,YAAY,iCAA8C,CAAC;AAEjE,eAAe,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+ declare const Scripts: FC;
3
+ export default Scripts;
4
+ //# sourceMappingURL=Scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scripts.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAKtC,QAAA,MAAM,OAAO,EAAE,EAOd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ type Props = {
3
+ mobile: boolean;
4
+ loaded: boolean;
5
+ code: string;
6
+ };
7
+ declare const TourContainer: FC<Props>;
8
+ export default TourContainer;
9
+ //# sourceMappingURL=TourContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TourContainer.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/TourContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,KAAK,CAS5B,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const Tours: FC;
3
+ //# sourceMappingURL=Tours.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tours.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/Tours.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,KAAK,EAAE,EAEnB,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { FC } from 'react';
2
2
  type Props = {
3
3
  code: string;
4
+ /**
5
+ * Disable UI hoàn toàn, chỉ render Visualizer
6
+ * Hữu ích khi muốn build UI hoàn toàn từ đầu ở component cha
7
+ */
8
+ disableDefaultUI?: boolean;
4
9
  };
5
10
  declare const VirtualTour: FC<Props>;
6
11
  export default VirtualTour;
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualTour.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/VirtualTour.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAK3B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,KAAK,CAS1B,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"VirtualTour.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/VirtualTour.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAM3B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,KAAK,CAqB1B,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,7 +1,8 @@
1
- import { FC } from 'react';
1
+ import React from 'react';
2
2
  type Props = {
3
3
  code: string;
4
+ disableDefaultUI?: boolean;
4
5
  };
5
- export declare const VirtualTourContainer: FC<Props>;
6
- export {};
6
+ declare const _default: React.NamedExoticComponent<Props>;
7
+ export default _default;
7
8
  //# sourceMappingURL=VirtualTourContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualTourContainer.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/VirtualTourContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,KAAK,CAI1C,CAAC"}
1
+ {"version":3,"file":"VirtualTourContainer.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/VirtualTourContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;;AAcF,wBAAgD"}
@@ -1,5 +1,6 @@
1
- import { FC } from 'react';
1
+ import React from 'react';
2
2
  import { ProductType, VisualizerListenersType } from '../../types/SkinLayer';
3
+ import { CustomLayoutConfig } from '../../types/custom-layout';
3
4
  type VirtualTourVisualizerProps = {
4
5
  elementId?: string;
5
6
  apiHost?: string;
@@ -16,7 +17,27 @@ type VirtualTourVisualizerProps = {
16
17
  };
17
18
  listeners?: VisualizerListenersType;
18
19
  products?: ProductType[];
20
+ /**
21
+ * Disable default UI hoàn toàn
22
+ * Chỉ render tour engine, không có UI
23
+ * Hữu ích khi muốn build UI từ đầu ở ngoài component này
24
+ */
25
+ disableDefaultUI?: boolean;
26
+ /**
27
+ * Custom layout config - Override components theo cấu trúc object
28
+ * @example
29
+ * ```tsx
30
+ * customLayout={{
31
+ * Floorplan: {
32
+ * Minimap: {
33
+ * Marker: MyCustomMarker,
34
+ * },
35
+ * },
36
+ * }}
37
+ * ```
38
+ */
39
+ customLayout?: CustomLayoutConfig;
19
40
  };
20
- declare const ShowroomVisualizer: FC<VirtualTourVisualizerProps>;
21
- export default ShowroomVisualizer;
41
+ declare const _default: React.NamedExoticComponent<VirtualTourVisualizerProps>;
42
+ export default _default;
22
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,EAAE,EAKH,MAAM,OAAO,CAAC;AAUf,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAM7E,KAAK,0BAA0B,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC;AACF,QAAA,MAAM,kBAAkB,EAAE,EAAE,CAAC,0BAA0B,CAoRtD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAON,MAAM,OAAO,CAAC;AAWf,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D,KAAK,0BAA0B,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,CAAC;;AAoSF,wBASG"}
@@ -0,0 +1,20 @@
1
+ import { FC } from 'react';
2
+ import Poi from '../../models/Visualizer/Poi/Poi';
3
+ import Tour from '../../models/Visualizer/Tour';
4
+ type VirtualTourVisualizerProps = {
5
+ elementId?: string;
6
+ apiHost?: string;
7
+ config?: {
8
+ tourCode?: string;
9
+ language?: string;
10
+ startScene?: string;
11
+ hLookAt?: number;
12
+ vLookAt?: number;
13
+ } & Record<string, unknown>;
14
+ onTourLoaded?: (tour: Tour) => void;
15
+ onPoiClicked?: (poi?: Poi) => void;
16
+ onPinActionClicked?: (key: string) => void;
17
+ };
18
+ declare const VirtualTourVisualizer: FC<VirtualTourVisualizerProps>;
19
+ export default VirtualTourVisualizer;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/VirtualTourVisualizer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,OAAO,GAAG,MAAM,iCAAiC,CAAC;AAClD,OAAO,IAAI,MAAM,8BAA8B,CAAC;AAEhD,KAAK,0BAA0B,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AACF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAmBzD,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { FC } from 'react';
2
+ type VirtualTourVisualizerProps = {
3
+ elementId?: string;
4
+ apiHost?: string;
5
+ mobile: boolean;
6
+ config?: {
7
+ tourCode?: string;
8
+ language?: string;
9
+ startScene?: string;
10
+ hLookAt?: number;
11
+ vLookAt?: number;
12
+ } & Record<string, unknown>;
13
+ tourLoaded?: boolean;
14
+ };
15
+ declare const VirtualTourVisualizerUI: FC<VirtualTourVisualizerProps>;
16
+ export default VirtualTourVisualizerUI;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/VirtualTourVisualizerUI/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAK3B,KAAK,0BAA0B,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AACF,QAAA,MAAM,uBAAuB,EAAE,EAAE,CAAC,0BAA0B,CAoB3D,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,116 @@
1
+ import Poi from '../../../model/Poi/Poi';
2
+ import { CoordsTypes } from '../../../types/PoiTypes';
3
+ import { FloorplanTypes } from './../../../types/FloorplanTypes';
4
+ export declare const storeName = "tour";
5
+ export declare const actions: {
6
+ SET_TOUR: string;
7
+ SET_ACTIVE_SCENE: string;
8
+ SET_ACTIVE_POI: string;
9
+ SET_ACTIVE_POI_COORDS: string;
10
+ SET_SELECTED_POI: string;
11
+ SET_SELECTED_POI_ACTIVE: string;
12
+ SET_ACTIVE_TOUR_GUIDE: string;
13
+ STOP_ACTIVE_TOUR_GUIDE: string;
14
+ TOGGLE_ACTIVE_TOUR_GUIDE: string;
15
+ TOGGLE_ACTIVE_BG_SOUND: string;
16
+ SET_LOADING: string;
17
+ TOGGLE_TOUR_PLUGIN: string;
18
+ SET_MOUSE_WHEEL: string;
19
+ SET_ACTIVE_FLOOR_PLAN: string;
20
+ SET_ALL_POI_VISIBLE: string;
21
+ SET_LOADING_SCENE: string;
22
+ SET_SOUND_PLAYABLE: string;
23
+ SET_SELECTED_PROMOTION: string;
24
+ SET_SELECTED_GALLERY: string;
25
+ SET_TOUR_READY: string;
26
+ SET_POI_TEXTURE_DATA: string;
27
+ SET_VIEW_ROTATING: string;
28
+ SET_TOUR_SCENARIO: string;
29
+ SET_ACTIVE_SCENARIO_CODE: string;
30
+ SET_REVIEW_SCENARIO_CODE: string;
31
+ SET_LANGUAGE: string;
32
+ SET_SCENARIO_LOADED: string;
33
+ SET_SCENARIO_CONFIG_CODES: string;
34
+ SET_EXIST_POI_TYPE: string;
35
+ SET_POI_CODE_BY_TYPE: string;
36
+ INCREASE_REPLAY_COUNTING: string;
37
+ SET_FLOOR_PLANS: string;
38
+ };
39
+ export interface TourStateType {
40
+ tourReady: boolean;
41
+ data: any;
42
+ activeScene: any;
43
+ activePoi: any;
44
+ activePoiCoords: any;
45
+ selectedPoi: any;
46
+ activeTourGuide: any;
47
+ backgroundSoundPlaying: boolean;
48
+ loading: boolean;
49
+ loadingScene: boolean;
50
+ plugin: {
51
+ [key: string]: boolean;
52
+ };
53
+ activeFloorPlan: FloorplanTypes;
54
+ soundReady: boolean;
55
+ selectedPromotion: any;
56
+ selectedGallery: any;
57
+ poiTextureData: {
58
+ poi: Poi | null;
59
+ coords: CoordsTypes | null;
60
+ };
61
+ viewRotating: boolean;
62
+ activeScenarioCode?: string;
63
+ reviewScenarioCode?: string;
64
+ language: string;
65
+ scenarioLoaded: {
66
+ [key: string]: boolean;
67
+ };
68
+ scenarioConfigCodes?: string[];
69
+ existPoiTypes?: string[];
70
+ poiCodeByType: {
71
+ [key: string]: string[];
72
+ };
73
+ poiCodeActive?: string;
74
+ replayCounting?: number;
75
+ floorplans: FloorplanTypes[];
76
+ }
77
+ declare const _default: (base: {
78
+ readonly tourReady: boolean;
79
+ readonly data: any;
80
+ readonly activeScene: any;
81
+ readonly activePoi: any;
82
+ readonly activePoiCoords: any;
83
+ readonly selectedPoi: any;
84
+ readonly activeTourGuide: any;
85
+ readonly backgroundSoundPlaying: boolean;
86
+ readonly loading: boolean;
87
+ readonly loadingScene: boolean;
88
+ readonly plugin: {
89
+ readonly [x: string]: boolean;
90
+ };
91
+ readonly activeFloorPlan: FloorplanTypes;
92
+ readonly soundReady: boolean;
93
+ readonly selectedPromotion: any;
94
+ readonly selectedGallery: any;
95
+ readonly poiTextureData: {
96
+ readonly poi: Poi | null;
97
+ readonly coords: CoordsTypes | null;
98
+ };
99
+ readonly viewRotating: boolean;
100
+ readonly activeScenarioCode?: string | undefined;
101
+ readonly reviewScenarioCode?: string | undefined;
102
+ readonly language: string;
103
+ readonly scenarioLoaded: {
104
+ readonly [x: string]: boolean;
105
+ };
106
+ readonly scenarioConfigCodes?: readonly string[] | undefined;
107
+ readonly existPoiTypes?: readonly string[] | undefined;
108
+ readonly poiCodeByType: {
109
+ readonly [x: string]: readonly string[];
110
+ };
111
+ readonly poiCodeActive?: string | undefined;
112
+ readonly replayCounting?: number | undefined;
113
+ readonly floorplans: any;
114
+ } | undefined, action: any) => TourStateType | undefined;
115
+ export default _default;
116
+ //# sourceMappingURL=reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/hooks/Visualizer/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,wBAAwB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCnB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,WAAW,EAAE,GAAG,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,eAAe,EAAE,GAAG,CAAC;IACrB,WAAW,EAAE,GAAG,CAAC;IACjB,eAAe,EAAE,GAAG,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACnC,eAAe,EAAE,cAAc,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,cAAc,EAAE;QAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;IAChE,YAAY,EAAE,OAAO,CAAC;IAEtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;;wBA5BY,OAAO;mBACZ,GAAG;0BACI,GAAG;wBACL,GAAG;8BACG,GAAG;0BACP,GAAG;8BACC,GAAG;qCACI,OAAO;sBACtB,OAAO;2BACF,OAAO;;;;8BAEJ,cAAc;yBACnB,OAAO;gCACA,GAAG;8BACL,GAAG;;sBACG,GAAG,GAAG,IAAI;yBAAU,WAAW,GAAG,IAAI;;2BAC/C,OAAO;kCAEA,MAAM;kCACN,MAAM;uBACjB,MAAM;;;;;;;;;6BAKA,MAAM;8BACL,MAAM;;;AAmCzB,wBA4HG"}
@@ -1,40 +1,9 @@
1
- /**
2
- * Headless Hooks - Main Export
3
- *
4
- * Cung cấp API để control Showroom Visualizer mà không cần dùng default UI
5
- * Người dùng có thể build custom UI hoàn toàn từ các hooks này
6
- */
7
1
  import { useTourCore } from './useTourCore';
8
2
  import { useFloorplanControl } from './useFloorplanControl';
9
3
  import { useSceneNavigation } from './useSceneNavigation';
10
4
  import { useScenarioControl } from './useScenarioControl';
11
5
  import { usePOIInteraction } from './usePOIInteraction';
12
6
  import { useViewportControl } from './useViewportControl';
13
- /**
14
- * Main Hook: useShowroomControls
15
- *
16
- * Tổng hợp tất cả các hooks nhỏ thành 1 hook duy nhất
17
- * Sử dụng khi muốn access tất cả controls
18
- *
19
- * @example
20
- * ```tsx
21
- * const MyCustomUI = () => {
22
- * const controls = useShowroomControls();
23
- *
24
- * return (
25
- * <div>
26
- * <button onClick={controls.floorplan.toggleFloorplan}>
27
- * Toggle Minimap
28
- * </button>
29
- * <button onClick={controls.navigation.goToNextScene}>
30
- * Next Scene
31
- * </button>
32
- * <p>Active Scene: {controls.tour.activeScene?.name}</p>
33
- * </div>
34
- * );
35
- * };
36
- * ```
37
- */
38
7
  export declare const useShowroomControls: () => {
39
8
  tour: {
40
9
  tourReady: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/headless/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC/B,CAAC;AAKF;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC5E,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/headless/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC/B,CAAC;AAKF;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC5E,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useToolConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolConfig.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,aAAa,YA4YlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"useToolConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolConfig.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,aAAa,YAkZlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,13 @@
1
+ export { default as ShowroomVisualizer } from './features/ShowroomVisualizer';
2
+ export type { CustomLayoutConfig, CustomLayoutComponent, CustomLayoutNode, } from './types/custom-layout';
3
+ export { CUSTOM_LAYOUT_COMPONENTS, resolveCustomLayoutComponent, } from './types/custom-layout';
4
+ export { useCustomLayout, CustomLayoutProvider, } from './context/CustomLayoutContext';
5
+ export { useShowroomControls, useTourCore, useFloorplanControl, useSceneNavigation, useScenarioControl, usePOIInteraction, useViewportControl, } from './hooks/headless';
6
+ export type { ShowroomControls, TourCoreControls, FloorplanControls, SceneNavigationControls, ScenarioControls, POIControls, ViewportControls, } from './hooks/headless';
7
+ export { Layout, DefaultLayout, PinActions, ButtonWithTooltip, ActionsChangeScene, SceneCategories, Floorplan, ScenarioList, TourScenarios, AGTProgressBar, HotspotActive, HotspotOverview, HotspotCategorySlideIn, PoiDetailSlideIn, PoiMovingPreview, PoiTextureOptions, ModalPopupPoi, ModalPopupPromotion, ModalGuide, PlayBar, PlayListSlideIn, GalleryFullScreen, SearchAndDiscoverySlideIn, LogoAndTitle, Joystick, Guide, UnmuteButton, LoadingScreen, } from './components/SkinLayer';
8
+ export { default as FloorplanMapDefault } from './components/SkinLayer/Floorplan/Map';
9
+ export { default as FloorplanMinimapDefault } from './components/SkinLayer/Floorplan/Minimap';
10
+ export { default as MiniMapMarkerDefault } from './components/SkinLayer/Floorplan/Minimap/MiniMapMarker';
11
+ export { default as MiniMapPolygonsDefault } from './components/SkinLayer/Floorplan/Minimap/MiniMapPolygons';
1
12
  export type { VirtualTourVisualizerType } from './types/SkinLayer/visualizer.type';
2
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAG9E,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAEL,MAAM,EACN,aAAa,EAGb,UAAU,EACV,iBAAiB,EAGjB,kBAAkB,EAClB,eAAe,EAGf,SAAS,EAGT,YAAY,EACZ,aAAa,EACb,cAAc,EAGd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAGjB,aAAa,EACb,mBAAmB,EACnB,UAAU,EAGV,OAAO,EACP,eAAe,EAGf,iBAAiB,EAGjB,yBAAyB,EAGzB,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAa,GACd,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AAG7G,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
package/dist/index.html CHANGED
@@ -1,107 +1,107 @@
1
- <!doctype html>
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
- name="viewport"
7
- content="width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
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
- </head>
11
- <body>
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%">
10
+ </head>
11
+ <body>
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
15
  <div class="h-full w-full relative">
16
- <showroom-visualizer></showroom-visualizer>
16
+ <showroom-visualizer></showroom-visualizer>
17
17
  </div>
18
- </div>
19
- <!-- <div class="h-full" style="width: 390px"></div>-->
20
18
  </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';
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
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',
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
32
 
33
- // startScene: 'scene_kr3rgeezzvw6',
34
- // hLookAt: -254,
35
- // vLookAt: 1
36
- // tourCode: 'TOUR_GEVEXLWNPT74',
37
- // tourCode: 'TOUR_7YUL2ALGFL94',
38
- tourCode: 'TOUR_KUFGDEPDTJA4',
39
- hLookAt: 10,
40
- vLookAt: 28,
41
- // startScene: 'SCENE_KNLRAKUHFL94',
42
- // hLookAt: -54.11884505373274,
43
- // vLookAt: -9.111287009391969
33
+ // startScene: 'scene_kr3rgeezzvw6',
34
+ // hLookAt: -254,
35
+ // vLookAt: 1
36
+ // tourCode: 'TOUR_GEVEXLWNPT74',
37
+ // tourCode: 'TOUR_7YUL2ALGFL94',
38
+ tourCode: 'TOUR_KUFGDEPDTJA4',
39
+ hLookAt: 10,
40
+ vLookAt: 28,
41
+ // startScene: 'SCENE_KNLRAKUHFL94',
42
+ // hLookAt: -54.11884505373274,
43
+ // vLookAt: -9.111287009391969
44
44
 
45
- // tourCode: 'tour_7a6hchjljga4'.toUpperCase(),
45
+ // tourCode: 'tour_7a6hchjljga4'.toUpperCase(),
46
46
 
47
- // tourCode: 'TOUR_ZJMHKMJEACAH',
48
- // startScene: 'SCENE_LVN4DLUFACAH',
49
- // hLookAt: -179.145,
50
- // vLookAt: 11.597,
47
+ // tourCode: 'TOUR_ZJMHKMJEACAH',
48
+ // startScene: 'SCENE_LVN4DLUFACAH',
49
+ // hLookAt: -179.145,
50
+ // vLookAt: 11.597,
51
51
 
52
- // tourCode: 'tour_7yul2algfl94'.toUpperCase(),
53
- // startScene: 'scene_vrz9v2uhfl94'.toUpperCase(),
54
- // hLookAt: -87,
55
- // vLookAt: 9,
56
- // hotspot: 'item27getn2d2m94'.toUpperCase(),
57
- },
58
- listeners: {
59
- onTourSwitchLoaded: (tool) => {
60
- window.switchTour = tool.switchTour;
61
- },
62
- onSceneCompleted: (...args) => {
63
- // console.log('onSceneCompleted', args);
64
- },
65
- onLoaded: (tool) => {
66
- // console.log('TOOL_LOADED')
67
- window.tool = tool;
68
- },
69
- onPoiClicked: (poi) => {
70
- console.log('onPoiClicked', poi);
71
- },
72
- onPoiOut: () => {
73
- // console.log('onPoiOut');
74
- },
75
- onPoiOver: (poi) => {
76
- console.log('onPoiOver', poi);
77
- },
78
- onPoiInCenter: (poi) => {
79
- // console.log('onPoiInCenter', poi);
80
- },
81
- onStartScenario: (code) => {
82
- // console.log('onStartScenario', code);
83
- },
84
- onScenarioPaused: (code) => {
85
- // console.log('onScenarioPaused', code);
86
- },
87
- onScenarioEnded: (code) => {
88
- // console.log('onScenarioEnded', code);
89
- },
90
- onChanged: (args) => {
91
- console.log('onChanged', args);
92
- },
93
- onStartLoadingTour: (code) => {
94
- // console.log('onStartLoadingTour', code);
95
- },
96
- onFinishedLoadingTour: (code) => {
97
- // console.log('onFinishedLoadingTour', code);
98
- },
99
- onStateChanged: (changes) => {
100
- // console.log('changes', changes);
101
- },
102
- },
103
- mobile: false,
104
- });
105
- </script>
106
- </body>
107
- </html>
52
+ // tourCode: 'tour_7yul2algfl94'.toUpperCase(),
53
+ // startScene: 'scene_vrz9v2uhfl94'.toUpperCase(),
54
+ // hLookAt: -87,
55
+ // vLookAt: 9,
56
+ // hotspot: 'item27getn2d2m94'.toUpperCase(),
57
+ },
58
+ listeners: {
59
+ onTourSwitchLoaded: (tool) => {
60
+ window.switchTour = tool.switchTour;
61
+ },
62
+ onSceneCompleted: (...args) => {
63
+ // console.log('onSceneCompleted', args);
64
+ },
65
+ onLoaded: tool => {
66
+ // console.log('TOOL_LOADED')
67
+ window.tool = tool;
68
+ },
69
+ onPoiClicked: (poi) => {
70
+ console.log('onPoiClicked', poi);
71
+ },
72
+ onPoiOut: () => {
73
+ // console.log('onPoiOut');
74
+ },
75
+ onPoiOver: (poi) => {
76
+ console.log('onPoiOver', poi);
77
+ },
78
+ onPoiInCenter: (poi) => {
79
+ // console.log('onPoiInCenter', poi);
80
+ },
81
+ onStartScenario: (code) => {
82
+ // console.log('onStartScenario', code);
83
+ },
84
+ onScenarioPaused: (code) => {
85
+ // console.log('onScenarioPaused', code);
86
+ },
87
+ onScenarioEnded: (code) => {
88
+ // console.log('onScenarioEnded', code);
89
+ },
90
+ onChanged: (args) => {
91
+ console.log('onChanged', args);
92
+ },
93
+ onStartLoadingTour: (code) => {
94
+ // console.log('onStartLoadingTour', code);
95
+ },
96
+ onFinishedLoadingTour: (code) => {
97
+ // console.log('onFinishedLoadingTour', code);
98
+ },
99
+ onStateChanged: (changes) => {
100
+ // console.log('changes', changes);
101
+ }
102
+ },
103
+ mobile: false
104
+ });
105
+ </script>
106
+ </body>
107
+ </html>