@clikvn/showroom-visualizer 0.2.2-dev-12 → 0.2.2-dev-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/.claude/settings.local.json +19 -0
- package/README.md +32 -139
- package/dist/components/SkinLayer/Floorplan/Map.d.ts.map +1 -1
- package/dist/components/SkinLayer/Floorplan/Minimap/MiniMapMarker.d.ts.map +1 -1
- package/dist/components/SkinLayer/Floorplan/Minimap/index.d.ts.map +1 -1
- package/dist/components/SkinLayer/Layout/index.d.ts.map +1 -1
- package/dist/components/SkinLayer/PoiMovingPreview/index.d.ts.map +1 -1
- package/dist/components/SkinLayer/index.d.ts +0 -32
- package/dist/components/SkinLayer/index.d.ts.map +1 -1
- package/dist/context/SwizzleContext.d.ts +21 -0
- package/dist/context/SwizzleContext.d.ts.map +1 -0
- package/dist/features/ShowroomVisualizer/VirtualTour.d.ts +0 -5
- package/dist/features/ShowroomVisualizer/VirtualTour.d.ts.map +1 -1
- package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts +3 -4
- package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts.map +1 -1
- package/dist/features/ShowroomVisualizer/index.d.ts +3 -24
- package/dist/features/ShowroomVisualizer/index.d.ts.map +1 -1
- package/dist/hooks/useToolConfig.d.ts.map +1 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.html +95 -95
- package/dist/index.js +1 -1
- package/dist/models/Visualizer/Tour.d.ts +1 -0
- package/dist/models/Visualizer/Tour.d.ts.map +1 -1
- package/dist/models/Visualizer/TourScenario/TourScenarioPlayer.d.ts +1 -0
- package/dist/models/Visualizer/TourScenario/TourScenarioPlayer.d.ts.map +1 -1
- package/dist/register.d.ts +0 -3
- package/dist/register.d.ts.map +1 -1
- package/dist/types/SkinLayer/tool.type.d.ts +1 -6
- package/dist/types/SkinLayer/tool.type.d.ts.map +1 -1
- package/dist/types/SkinLayer/visualizer.type.d.ts +0 -3
- package/dist/types/SkinLayer/visualizer.type.d.ts.map +1 -1
- package/dist/types/swizzle.d.ts +59 -0
- package/dist/types/swizzle.d.ts.map +1 -0
- package/dist/web.js +1 -1
- package/package.json +124 -132
- package/rollup.config.js +4 -334
- 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/DEVELOPMENT.md +0 -120
- package/EXAMPLES.md +0 -967
- package/SETUP_COMPLETE.md +0 -149
- package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts +0 -16
- package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/Drawer/index.d.ts +0 -29
- package/dist/components/SkinLayer/Drawer/index.d.ts.map +0 -1
- 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/PlayAll/index.d.ts +0 -8
- package/dist/components/SkinLayer/PlayAll/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/features/VirtualTourVisualizer/index.d.ts +0 -20
- package/dist/features/VirtualTourVisualizer/index.d.ts.map +0 -1
- package/dist/features/VirtualTourVisualizerUI/index.d.ts +0 -17
- package/dist/features/VirtualTourVisualizerUI/index.d.ts.map +0 -1
- package/dist/hooks/Visualizer/reducer.d.ts +0 -116
- package/dist/hooks/Visualizer/reducer.d.ts.map +0 -1
- package/example/CSS_HANDLING.md +0 -141
- package/example/FIXES_SUMMARY.md +0 -121
- package/example/PATH_ALIASES.md +0 -103
- package/example/README.md +0 -64
- package/example/index.html +0 -13
- package/example/package.json +0 -25
- package/example/postcss.config.cjs +0 -6
- package/example/tailwind.config.cjs +0 -12
- package/example/tsconfig.node.json +0 -12
- package/example/vite.config.ts +0 -126
- /package/dist/features/ShowroomVisualizer/{cssStyles.d.ts → CssStyles.d.ts} +0 -0
- /package/dist/features/ShowroomVisualizer/{cssStyles.d.ts.map → CssStyles.d.ts.map} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(find:*)",
|
|
5
|
+
"Bash(npm run build:*)",
|
|
6
|
+
"Bash(grep:*)",
|
|
7
|
+
"Bash(rm:*)",
|
|
8
|
+
"Bash(ls:*)",
|
|
9
|
+
"Bash(sed:*)",
|
|
10
|
+
"Bash(yarn build)",
|
|
11
|
+
"Bash(yalc push:*)",
|
|
12
|
+
"Bash(yarn dev)",
|
|
13
|
+
"Bash(yarn list:*)",
|
|
14
|
+
"Bash(mv:*)",
|
|
15
|
+
"Bash(rg:*)"
|
|
16
|
+
],
|
|
17
|
+
"deny": []
|
|
18
|
+
}
|
|
19
|
+
}
|
package/README.md
CHANGED
|
@@ -1,139 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 2. Custom UI với Headless Hooks
|
|
38
|
-
|
|
39
|
-
```tsx
|
|
40
|
-
import { ShowroomVisualizer, useShowroomControls } from 'showroom-visualizer';
|
|
41
|
-
|
|
42
|
-
function CustomUI() {
|
|
43
|
-
const controls = useShowroomControls();
|
|
44
|
-
|
|
45
|
-
return (
|
|
46
|
-
<div>
|
|
47
|
-
<h1>{controls.activeScene?.name}</h1>
|
|
48
|
-
<button onClick={controls.goToNextScene}>Next →</button>
|
|
49
|
-
<button onClick={controls.toggleFloorplan}>Toggle Map</button>
|
|
50
|
-
</div>
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function App() {
|
|
55
|
-
return (
|
|
56
|
-
<ShowroomVisualizer
|
|
57
|
-
config={{ tourCode: 'my-tour' }}
|
|
58
|
-
customLayout={<CustomUI />}
|
|
59
|
-
/>
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 3. Headless Mode (No UI)
|
|
65
|
-
|
|
66
|
-
```tsx
|
|
67
|
-
import { ShowroomVisualizer, useShowroomControls } from 'showroom-visualizer';
|
|
68
|
-
|
|
69
|
-
function ExternalControls() {
|
|
70
|
-
const controls = useShowroomControls();
|
|
71
|
-
return <div>Build your UI here...</div>;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function App() {
|
|
75
|
-
return (
|
|
76
|
-
<>
|
|
77
|
-
<ExternalControls />
|
|
78
|
-
<ShowroomVisualizer
|
|
79
|
-
config={{ tourCode: 'my-tour' }}
|
|
80
|
-
disableDefaultUI={true}
|
|
81
|
-
/>
|
|
82
|
-
</>
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## 📚 API Reference
|
|
88
|
-
|
|
89
|
-
### Headless Hooks
|
|
90
|
-
|
|
91
|
-
- `useShowroomControls()` - Main hook với tất cả controls
|
|
92
|
-
- `useTourCore()` - Tour engine state (read-only)
|
|
93
|
-
- `useSceneNavigation()` - Scene navigation controls
|
|
94
|
-
- `useFloorplanControl()` - Floorplan/minimap controls
|
|
95
|
-
- `useScenarioControl()` - Scenario auto-play controls
|
|
96
|
-
- `usePOIInteraction()` - POI interaction controls
|
|
97
|
-
- `useViewportControl()` - Viewport/camera controls
|
|
98
|
-
|
|
99
|
-
### Exported Components
|
|
100
|
-
|
|
101
|
-
- `DefaultLayout` - Default UI layout
|
|
102
|
-
- `PinActions`, `Floorplan`, `SceneCategories`
|
|
103
|
-
- `PlayBar`, `GalleryFullScreen`, `ModalPopupPoi`
|
|
104
|
-
- ...và nhiều components khác
|
|
105
|
-
|
|
106
|
-
Xem [HEADLESS_API.md](./HEADLESS_API.md) để biết chi tiết.
|
|
107
|
-
|
|
108
|
-
## 🎓 Examples
|
|
109
|
-
|
|
110
|
-
Xem [EXAMPLES.md](./EXAMPLES.md) để xem 9+ examples:
|
|
111
|
-
- Simple Custom Header
|
|
112
|
-
- Scene Grid Selector
|
|
113
|
-
- Sidebar Navigation
|
|
114
|
-
- External Dashboard
|
|
115
|
-
- Auto-play Controls
|
|
116
|
-
- POI Explorer
|
|
117
|
-
- Complete Custom UI
|
|
118
|
-
- Mobile-first UI
|
|
119
|
-
- ...và nhiều hơn nữa!
|
|
120
|
-
|
|
121
|
-
## 🔧 Development
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
# Install dependencies
|
|
125
|
-
yarn install
|
|
126
|
-
|
|
127
|
-
# Run development server
|
|
128
|
-
yarn dev
|
|
129
|
-
|
|
130
|
-
# Build for production
|
|
131
|
-
yarn build
|
|
132
|
-
|
|
133
|
-
# Serve built files
|
|
134
|
-
serve dist --cors
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## 📝 License
|
|
138
|
-
|
|
139
|
-
MIT
|
|
1
|
+
<!-- markdownlint-disable MD030 -->
|
|
2
|
+
|
|
3
|
+
# showroom-visualizer
|
|
4
|
+
|
|
5
|
+
Javascript library to display Clik Showroom Visualizer with UI on your website
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!-- public/index.html -->
|
|
9
|
+
<script type="module">
|
|
10
|
+
import ShowroomVisualizer from 'http://localhost:3000/web.js';
|
|
11
|
+
ShowroomVisualizer.initVisualizer({
|
|
12
|
+
apiHost: 'https://ci-api.clik.vn/vt360',
|
|
13
|
+
config: {
|
|
14
|
+
tourCode: 'TOUR_FXYCEN7ZZVW6',
|
|
15
|
+
language: 'EN'
|
|
16
|
+
},
|
|
17
|
+
onLoaded: tool => {
|
|
18
|
+
window.tool = tool;
|
|
19
|
+
},
|
|
20
|
+
mobile: false
|
|
21
|
+
});
|
|
22
|
+
</script>
|
|
23
|
+
<div style="width: 100vw; height: 100vh">
|
|
24
|
+
<showroom-visualizer></showroom-visualizer>
|
|
25
|
+
</div>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
add <Scripts /> in ShowroomVisualizer load js ÂR
|
|
32
|
+
serve dist --cors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/Floorplan/Map.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/Floorplan/Map.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,uBAAuB,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAc,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAK5C,OAAO,KAAK,MAAM,kCAAkC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGpE,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,KAAK,cAAc,GACf,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,OAAO,CAAC;AAEZ,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,yBAAyB,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,4BAA4B,EAAE,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,4BAA4B,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,CAAC;AACF,QAAA,MAAM,GAAG,EAAE,EAAE,CAAC,KAAK,CAgOlB,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniMapMarker.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/Floorplan/Minimap/MiniMapMarker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"MiniMapMarker.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/Floorplan/Minimap/MiniMapMarker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,KAAK,CAmC5B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/Floorplan/Minimap/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/Floorplan/Minimap/index.tsx"],"names":[],"mappings":"AA2BA,KAAK,0BAA0B,GAAG;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;;AAotBF,wBAAsC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/Layout/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,EAAE,EAAuB,MAAM,OAAO,CAAC;AAc/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/Layout/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,EAAE,EAAuB,MAAM,OAAO,CAAC;AAc/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAiC9D,KAAK,KAAK,GAAG;IACX,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,KAAK,CA0VrB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiMovingPreview/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiMovingPreview/index.tsx"],"names":[],"mappings":"AA8IA,QAAA,MAAM,oBAAoB,+CAAmB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SkinLayer Components Export
|
|
3
|
-
*
|
|
4
|
-
* Export tất cả components để người dùng có thể compose custom UI
|
|
5
|
-
*/
|
|
6
1
|
export { default as Layout } from './Layout';
|
|
7
|
-
export { default as DefaultLayout } from './DefaultLayout';
|
|
8
|
-
export { default as PinActions } from './PinActionButtons';
|
|
9
|
-
export { default as ButtonWithTooltip } from './PinActionButtons/ButtonWithTooltip';
|
|
10
|
-
export { default as ActionsChangeScene } from './ActionsChangeScene';
|
|
11
|
-
export { SceneCategories } from './SceneCategories';
|
|
12
|
-
export { Floorplan } from './Floorplan';
|
|
13
|
-
export { default as ScenarioList } from './ScenarioList';
|
|
14
|
-
export { TourScenarios } from './TourScenarios';
|
|
15
|
-
export { default as AGTProgressBar } from './AGTProgressBar';
|
|
16
|
-
export { default as HotspotActive } from './HotspotActive';
|
|
17
|
-
export { default as HotspotOverview } from './HotspotOverview';
|
|
18
|
-
export { default as HotspotCategorySlideIn } from './HotspotCategorySlideIn';
|
|
19
|
-
export { default as PoiDetailSlideIn } from './PoiDetailSlideIn';
|
|
20
|
-
export { PoiMovingPreview } from './PoiMovingPreview';
|
|
21
|
-
export { default as PoiTextureOptions } from './PoiTextureOptions';
|
|
22
|
-
export { ModalPopupPoi } from './ModalPoi';
|
|
23
|
-
export { ModalPopupPromotion } from './ModalPromotion';
|
|
24
|
-
export { ModalGuide } from './ModalGuide';
|
|
25
|
-
export { default as PlayBar } from './PlayBar';
|
|
26
|
-
export { default as PlayListSlideIn } from './PlayListSlideIn';
|
|
27
|
-
export { default as GalleryFullScreen } from './GalleryFullScreen';
|
|
28
|
-
export { default as SearchAndDiscoverySlideIn } from './SearchAndDiscoverySlideIn';
|
|
29
|
-
export { default as LogoAndTitle } from './LogoAndTitle';
|
|
30
|
-
export { default as Joystick } from './Joystick';
|
|
31
|
-
export { Guide } from './Guide';
|
|
32
|
-
export { default as UnmuteButton } from './UnmuteButton';
|
|
33
|
-
export { default as LoadingScreen } from './LoadingScreen';
|
|
34
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SkinLayer/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SkinLayer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { ReactNode, ComponentType } from 'react';
|
|
2
|
+
import { SwizzleConfig, SwizzlePath } from '../types/swizzle';
|
|
3
|
+
type SwizzleContextType = {
|
|
4
|
+
swizzle: SwizzleConfig;
|
|
5
|
+
getSwizzledComponent: <T = unknown>(path: SwizzlePath, defaultComponent: ComponentType<T>) => ComponentType<T>;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Hook để access swizzle configuration
|
|
9
|
+
*/
|
|
10
|
+
export declare const useSwizzle: () => SwizzleContextType;
|
|
11
|
+
type Props = {
|
|
12
|
+
swizzle?: SwizzleConfig;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* SwizzleProvider - Wrap app với provider này để enable component swizzling
|
|
17
|
+
* Giống như Docusaurus swizzle pattern
|
|
18
|
+
*/
|
|
19
|
+
export declare const SwizzleProvider: React.FC<Props>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=SwizzleContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwizzleContext.d.ts","sourceRoot":"","sources":["../../src/context/SwizzleContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAGZ,SAAS,EACT,aAAa,EAGd,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,oBAAoB,EAAE,CAAC,CAAC,GAAG,OAAO,EAChC,IAAI,EAAE,WAAW,EACjB,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,KAC/B,aAAa,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAOF;;GAEG;AACH,eAAO,MAAM,UAAU,0BAAmC,CAAC;AAE3D,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkG3C,CAAC"}
|
|
@@ -1,11 +1,6 @@
|
|
|
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;
|
|
9
4
|
};
|
|
10
5
|
declare const VirtualTour: FC<Props>;
|
|
11
6
|
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;
|
|
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,8 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FC } from 'react';
|
|
2
2
|
type Props = {
|
|
3
3
|
code: string;
|
|
4
|
-
disableDefaultUI?: boolean;
|
|
5
4
|
};
|
|
6
|
-
declare const
|
|
7
|
-
export
|
|
5
|
+
export declare const VirtualTourContainer: FC<Props>;
|
|
6
|
+
export {};
|
|
8
7
|
//# sourceMappingURL=VirtualTourContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualTourContainer.d.ts","sourceRoot":"","sources":["../../../src/features/ShowroomVisualizer/VirtualTourContainer.tsx"],"names":[],"mappings":"
|
|
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,6 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FC } from 'react';
|
|
2
2
|
import { ProductType, VisualizerListenersType } from '../../types/SkinLayer';
|
|
3
|
-
import { CustomLayoutConfig } from '../../types/custom-layout';
|
|
4
3
|
type VirtualTourVisualizerProps = {
|
|
5
4
|
elementId?: string;
|
|
6
5
|
apiHost?: string;
|
|
@@ -17,27 +16,7 @@ type VirtualTourVisualizerProps = {
|
|
|
17
16
|
};
|
|
18
17
|
listeners?: VisualizerListenersType;
|
|
19
18
|
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;
|
|
40
19
|
};
|
|
41
|
-
declare const
|
|
42
|
-
export default
|
|
20
|
+
declare const ShowroomVisualizer: FC<VirtualTourVisualizerProps>;
|
|
21
|
+
export default ShowroomVisualizer;
|
|
43
22
|
//# 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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToolConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useToolConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolConfig.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,aAAa,YA6ZlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
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';
|
|
12
1
|
export type { VirtualTourVisualizerType } from './types/SkinLayer/visualizer.type';
|
|
13
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/index.html
CHANGED
|
@@ -1,107 +1,107 @@
|
|
|
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
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<div class="flex h-screen w-screen">
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
16
|
+
<showroom-visualizer></showroom-visualizer>
|
|
17
17
|
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<!-- <div class="h-full" style="width: 390px"></div>-->
|
|
18
20
|
</div>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// import ShowroomVisualizer from 'https://85f81d7dc992.ngrok-free.app/web.js';
|
|
23
|
-
import ShowroomVisualizer from 'http://localhost:3000/web.js';
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
45
|
+
// tourCode: 'tour_7a6hchjljga4'.toUpperCase(),
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
// tourCode: 'TOUR_ZJMHKMJEACAH',
|
|
48
|
+
// startScene: 'SCENE_LVN4DLUFACAH',
|
|
49
|
+
// hLookAt: -179.145,
|
|
50
|
+
// vLookAt: 11.597,
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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>
|