@clikvn/showroom-visualizer 0.5.0 → 0.5.1-dev-02

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 (121) hide show
  1. package/CLAUDE.md +145 -145
  2. package/DEVELOPMENT.md +120 -120
  3. package/EXAMPLES.md +967 -967
  4. package/README.md +489 -489
  5. package/SETUP_COMPLETE.md +149 -149
  6. package/dist/components/SkinLayer/DefaultLayout/index.d.ts.map +1 -1
  7. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts +16 -0
  8. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts.map +1 -0
  9. package/dist/components/SkinLayer/Drawer/index.d.ts +29 -0
  10. package/dist/components/SkinLayer/Drawer/index.d.ts.map +1 -0
  11. package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts +30 -0
  12. package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts.map +1 -0
  13. package/dist/components/SkinLayer/HotspotOverview/index.d.ts.map +1 -1
  14. package/dist/components/SkinLayer/Layout/index.d.ts.map +1 -1
  15. package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts +10 -0
  16. package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts.map +1 -0
  17. package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts +9 -0
  18. package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts.map +1 -0
  19. package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts +13 -0
  20. package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts.map +1 -0
  21. package/dist/components/SkinLayer/ModalItemInfo/index.d.ts +10 -0
  22. package/dist/components/SkinLayer/ModalItemInfo/index.d.ts.map +1 -0
  23. package/dist/components/SkinLayer/PlayAll/index.d.ts +8 -0
  24. package/dist/components/SkinLayer/PlayAll/index.d.ts.map +1 -0
  25. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/HorizontalMenu.d.ts +14 -0
  26. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/HorizontalMenu.d.ts.map +1 -0
  27. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/ListMovingMenuItem.d.ts +14 -0
  28. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/ListMovingMenuItem.d.ts.map +1 -0
  29. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/SemicircleMenu.d.ts +14 -0
  30. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/SemicircleMenu.d.ts.map +1 -0
  31. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/VerticalMenu.d.ts +14 -0
  32. package/dist/components/SkinLayer/PoiListMovingOptions/Menu/VerticalMenu.d.ts.map +1 -0
  33. package/dist/components/SkinLayer/PoiListMovingOptions/index.d.ts +4 -0
  34. package/dist/components/SkinLayer/PoiListMovingOptions/index.d.ts.map +1 -0
  35. package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts +13 -0
  36. package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts.map +1 -0
  37. package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts +13 -0
  38. package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts.map +1 -0
  39. package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts +15 -0
  40. package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts.map +1 -0
  41. package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts +13 -0
  42. package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts.map +1 -0
  43. package/dist/components/SkinLayer/index.d.ts +1 -0
  44. package/dist/components/SkinLayer/index.d.ts.map +1 -1
  45. package/dist/constants/Visualizer/index.d.ts +1 -0
  46. package/dist/constants/Visualizer/index.d.ts.map +1 -1
  47. package/dist/constants/Visualizer/poi.d.ts +1 -0
  48. package/dist/constants/Visualizer/poi.d.ts.map +1 -1
  49. package/dist/context/StoreContext.d.ts +5 -0
  50. package/dist/context/StoreContext.d.ts.map +1 -0
  51. package/dist/features/ShowroomVisualizer/Scripts.d.ts +4 -0
  52. package/dist/features/ShowroomVisualizer/Scripts.d.ts.map +1 -0
  53. package/dist/features/ShowroomVisualizer/TourContainer.d.ts +9 -0
  54. package/dist/features/ShowroomVisualizer/TourContainer.d.ts.map +1 -0
  55. package/dist/features/ShowroomVisualizer/Tours.d.ts +3 -0
  56. package/dist/features/ShowroomVisualizer/Tours.d.ts.map +1 -0
  57. package/dist/features/ShowroomVisualizer/{CssStyles.d.ts.map → cssStyles.d.ts.map} +1 -1
  58. package/dist/features/ShowroomVisualizer/index.d.ts +1 -0
  59. package/dist/features/ShowroomVisualizer/index.d.ts.map +1 -1
  60. package/dist/features/VirtualTourVisualizer/index.d.ts +20 -0
  61. package/dist/features/VirtualTourVisualizer/index.d.ts.map +1 -0
  62. package/dist/features/VirtualTourVisualizerUI/index.d.ts +17 -0
  63. package/dist/features/VirtualTourVisualizerUI/index.d.ts.map +1 -0
  64. package/dist/hooks/SkinLayer/useAutoPlayer.d.ts.map +1 -1
  65. package/dist/hooks/Visualizer/reducer.d.ts +116 -0
  66. package/dist/hooks/Visualizer/reducer.d.ts.map +1 -0
  67. package/dist/hooks/Visualizer/useTourVisualizer.d.ts.map +1 -1
  68. package/dist/hooks/useStore.d.ts.map +1 -1
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.html +110 -0
  72. package/dist/index.js +1 -1
  73. package/dist/models/Visualizer/Poi/PoiListMoving.d.ts +39 -0
  74. package/dist/models/Visualizer/Poi/PoiListMoving.d.ts.map +1 -0
  75. package/dist/models/Visualizer/Scene.d.ts.map +1 -1
  76. package/dist/models/Visualizer/Tour.d.ts +3 -0
  77. package/dist/models/Visualizer/Tour.d.ts.map +1 -1
  78. package/dist/models/Visualizer/TourScenario/TourScenarioPlayer.d.ts +1 -0
  79. package/dist/models/Visualizer/TourScenario/TourScenarioPlayer.d.ts.map +1 -1
  80. package/dist/models/Visualizer/TourScenario/actions/RotationAction.d.ts.map +1 -1
  81. package/dist/types/SkinLayer/store.type.d.ts +7 -0
  82. package/dist/types/SkinLayer/store.type.d.ts.map +1 -1
  83. package/dist/types/Visualizer/poi.type.d.ts +17 -0
  84. package/dist/types/Visualizer/poi.type.d.ts.map +1 -1
  85. package/dist/types/Visualizer/signal.type.d.ts +3 -0
  86. package/dist/types/Visualizer/signal.type.d.ts.map +1 -1
  87. package/dist/utils/Visualizer/index.d.ts +1 -0
  88. package/dist/utils/Visualizer/index.d.ts.map +1 -1
  89. package/dist/utils/Visualizer/scene.utils.d.ts +5 -0
  90. package/dist/utils/Visualizer/scene.utils.d.ts.map +1 -0
  91. package/dist/web.js +1 -1
  92. package/example/CSS_HANDLING.md +141 -141
  93. package/example/FIXES_SUMMARY.md +121 -121
  94. package/example/PATH_ALIASES.md +103 -103
  95. package/example/README.md +64 -64
  96. package/example/index.html +13 -13
  97. package/example/package.json +25 -25
  98. package/example/postcss.config.cjs +5 -5
  99. package/example/src/App.tsx +195 -0
  100. package/example/src/components/ControlPanel.tsx +736 -0
  101. package/example/src/components/CustomComponents/FloorplanComponents.tsx +37 -0
  102. package/example/src/components/CustomComponents/HotspotCategoryComponents.tsx +106 -0
  103. package/example/src/components/CustomComponents/PinActionsComponents.tsx +45 -0
  104. package/example/src/components/CustomComponents/PlayBarComponents.tsx +41 -0
  105. package/example/src/components/CustomComponents/PoiDetailComponents.tsx +296 -0
  106. package/example/src/components/CustomComponents/SearchAndDiscoveryComponents.tsx +207 -0
  107. package/example/src/components/CustomComponents/index.tsx +7 -0
  108. package/example/src/css-modules.d.ts +4 -0
  109. package/example/src/hooks/useCustomLayout.ts +328 -0
  110. package/example/src/index.css +31 -0
  111. package/example/src/main.tsx +11 -0
  112. package/example/tailwind.config.cjs +12 -12
  113. package/example/tsconfig.node.json +12 -12
  114. package/example/vite.config.ts +142 -142
  115. package/package.json +133 -133
  116. package/rollup.config.js +400 -400
  117. package/yarn-error.log +12200 -0
  118. package/.claude/settings.local.json +0 -19
  119. package/dist/components/SkinLayer/Floorplan/Minimap/test01.d.ts +0 -15
  120. package/dist/components/SkinLayer/Floorplan/Minimap/test01.d.ts.map +0 -1
  121. /package/dist/features/ShowroomVisualizer/{CssStyles.d.ts → cssStyles.d.ts} +0 -0
@@ -0,0 +1,207 @@
1
+ import {
2
+ SearchAndDiscoverySlideIn as SearchAndDiscoverySlideInDefault,
3
+ TourInfoActionPart as TourInfoActionPartDefault,
4
+ ScenarioPart as ScenarioPartDefault,
5
+ PromotionPart as PromotionPartDefault,
6
+ PoiInfoActionPart as PoiInfoActionPartDefault,
7
+ DisplayActionPart as DisplayActionPartDefault,
8
+ HelpActionPart as HelpActionPartDefault,
9
+ } from '@clikvn/showroom-visualizer';
10
+
11
+ // 🔍 Custom SearchAndDiscoverySlideIn Component
12
+ export const CustomSearchAndDiscoverySlideIn = (props: any) => {
13
+ return <SearchAndDiscoverySlideInDefault {...props} />;
14
+ };
15
+
16
+ // 🏢 Custom TourInfoActionPart
17
+ export const CustomTourInfoActionPart = (props: any) => {
18
+ return (
19
+ <div
20
+ style={{
21
+ background: 'linear-gradient(45deg, #ff6b6b, #4ecdc4)',
22
+ padding: '15px',
23
+ borderRadius: '8px',
24
+ margin: '10px 0',
25
+ }}
26
+ >
27
+ <h4 style={{ color: 'white', margin: '0 0 10px 0' }}>
28
+ 🏢 Tour Information
29
+ </h4>
30
+ <div style={{ opacity: 0.9 }}>
31
+ <TourInfoActionPartDefault {...props} />
32
+ </div>
33
+ </div>
34
+ );
35
+ };
36
+
37
+ // 🎬 Custom ScenarioPart
38
+ export const CustomScenarioPart = (props: any) => {
39
+ return (
40
+ <div
41
+ style={{
42
+ background: 'linear-gradient(45deg, #f093fb, #f5576c)',
43
+ padding: '15px',
44
+ borderRadius: '8px',
45
+ margin: '10px 0',
46
+ }}
47
+ >
48
+ <h4 style={{ color: 'white', margin: '0 0 10px 0' }}>🎬 Scenarios</h4>
49
+ <div style={{ filter: 'brightness(1.1)' }}>
50
+ <ScenarioPartDefault {...props} />
51
+ </div>
52
+ </div>
53
+ );
54
+ };
55
+
56
+ // 🎁 Custom PromotionPart
57
+ export const CustomPromotionPart = (props: any) => {
58
+ return (
59
+ <div
60
+ style={{
61
+ background: 'linear-gradient(45deg, #fa709a, #fee140)',
62
+ padding: '15px',
63
+ borderRadius: '8px',
64
+ margin: '10px 0',
65
+ border: '2px dashed #fff',
66
+ }}
67
+ >
68
+ <h4 style={{ color: 'white', margin: '0 0 10px 0' }}>
69
+ 🎁 Special Promotions
70
+ </h4>
71
+ <PromotionPartDefault {...props} />
72
+ </div>
73
+ );
74
+ };
75
+
76
+ // 📍 Custom PoiInfoActionPart
77
+ export const CustomPoiInfoActionPart = (props: any) => {
78
+ return (
79
+ <div
80
+ style={{
81
+ background: 'linear-gradient(45deg, #a8edea, #fed6e3)',
82
+ padding: '15px',
83
+ borderRadius: '8px',
84
+ margin: '10px 0',
85
+ }}
86
+ >
87
+ <h4 style={{ color: '#333', margin: '0 0 10px 0' }}>
88
+ 📍 Points of Interest
89
+ </h4>
90
+ <PoiInfoActionPartDefault {...props} />
91
+ </div>
92
+ );
93
+ };
94
+
95
+ // 🎨 Custom DisplayActionPart
96
+ export const CustomDisplayActionPart = (props: any) => {
97
+ return (
98
+ <div
99
+ style={{
100
+ background: 'linear-gradient(45deg, #ffecd2, #fcb69f)',
101
+ padding: '15px',
102
+ borderRadius: '8px',
103
+ margin: '10px 0',
104
+ }}
105
+ >
106
+ <h4 style={{ color: '#333', margin: '0 0 10px 0' }}>
107
+ 🎨 Display Options
108
+ </h4>
109
+ <DisplayActionPartDefault {...props} />
110
+ </div>
111
+ );
112
+ };
113
+
114
+ // ❓ Custom HelpActionPart
115
+ export const CustomHelpActionPart = (props: any) => {
116
+ return (
117
+ <div
118
+ style={{
119
+ background: 'linear-gradient(45deg, #89f7fe, #66a6ff)',
120
+ padding: '15px',
121
+ borderRadius: '8px',
122
+ margin: '10px 0',
123
+ boxShadow: '0 3px 10px rgba(0,0,0,0.2)',
124
+ }}
125
+ >
126
+ <h4 style={{ color: 'white', margin: '0 0 10px 0' }}>
127
+ ❓ Help & Support
128
+ </h4>
129
+ <HelpActionPartDefault {...props} />
130
+ </div>
131
+ );
132
+ };
133
+
134
+ // 🎯 Custom ContentItem Component
135
+ export const CustomContentItem = (props: any) => {
136
+ const {
137
+ dataKey,
138
+ icon,
139
+ title,
140
+ onClick,
141
+ type,
142
+ itemRight,
143
+ handleTitleRenderer,
144
+ } = props;
145
+
146
+ const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
147
+ e.preventDefault();
148
+ e.stopPropagation();
149
+ if (onClick) onClick(dataKey);
150
+ };
151
+
152
+ return (
153
+ <div
154
+ onClick={handleClick}
155
+ style={{
156
+ display: 'flex',
157
+ alignItems: 'center',
158
+ justifyContent: 'space-between',
159
+ padding: '12px 16px',
160
+ margin: '4px 0',
161
+ background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
162
+ borderRadius: '8px',
163
+ cursor: type === 'button' ? 'pointer' : 'default',
164
+ transition: 'all 0.3s ease',
165
+ boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
166
+ }}
167
+ onMouseEnter={(e) => {
168
+ e.currentTarget.style.transform = 'translateX(5px)';
169
+ e.currentTarget.style.boxShadow = '0 4px 12px rgba(0,0,0,0.2)';
170
+ }}
171
+ onMouseLeave={(e) => {
172
+ e.currentTarget.style.transform = 'translateX(0)';
173
+ e.currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.1)';
174
+ }}
175
+ >
176
+ <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
177
+ {icon && (
178
+ <div
179
+ style={{
180
+ width: '32px',
181
+ height: '32px',
182
+ borderRadius: '50%',
183
+ background: 'rgba(255,255,255,0.2)',
184
+ display: 'flex',
185
+ alignItems: 'center',
186
+ justifyContent: 'center',
187
+ }}
188
+ >
189
+ <i className={icon} style={{ color: 'white', fontSize: '16px' }} />
190
+ </div>
191
+ )}
192
+ <span style={{ color: 'white', fontWeight: '500', fontSize: '14px' }}>
193
+ {handleTitleRenderer ? handleTitleRenderer() : title}
194
+ </span>
195
+ </div>
196
+ {itemRight && <div style={{ color: 'white' }}>{itemRight}</div>}
197
+ </div>
198
+ );
199
+ };
200
+
201
+ export const CustomScenarioItem = (props: any) => {
202
+ return <div>test</div>;
203
+ };
204
+
205
+ export const CustomCardItem = (props: any) => {
206
+ return <div>test card item</div>;
207
+ };
@@ -0,0 +1,7 @@
1
+ // Export all custom components from a single entry point
2
+ export * from './FloorplanComponents';
3
+ export * from './PinActionsComponents';
4
+ export * from './SearchAndDiscoveryComponents';
5
+ export * from './HotspotCategoryComponents';
6
+ export * from './PlayBarComponents';
7
+ export * from './PoiDetailComponents';
@@ -0,0 +1,4 @@
1
+ declare module '*.css' {
2
+ const content: string;
3
+ export default content;
4
+ }
@@ -0,0 +1,328 @@
1
+ import {
2
+ CustomMarker,
3
+ FloorplanMinimapDefault,
4
+ CustomPinActions,
5
+ CustomPinActionButton,
6
+ CustomPinActionButtonWithTooltip,
7
+ CustomSearchAndDiscoverySlideIn,
8
+ CustomTourInfoActionPart,
9
+ CustomScenarioPart,
10
+ CustomPromotionPart,
11
+ CustomPoiInfoActionPart,
12
+ CustomDisplayActionPart,
13
+ CustomHelpActionPart,
14
+ CustomContentItem,
15
+ CustomScenarioItem,
16
+ CustomCardItem,
17
+ CustomHotspotCategorySlideIn,
18
+ CustomScenarioSlideIn,
19
+ CustomSpaceAndSceneSlideIn,
20
+ CustomFeatureSlideIn,
21
+ CustomProductSlideIn,
22
+ CustomPoiSlideIn,
23
+ CustomPlayBarTooltip,
24
+ CustomPlayBarButton,
25
+ CustomPoiDetailDrawer,
26
+ CustomPoiDetailBottomSheet,
27
+ CustomProductDetailHeader,
28
+ CustomGroupActionButton,
29
+ CustomTabs,
30
+ CustomTabsContent,
31
+ CustomInfo,
32
+ CustomGallery,
33
+ CustomArTab,
34
+ } from '../components/CustomComponents';
35
+
36
+ type CustomLayoutState = {
37
+ // General
38
+ enableCustomLayout: boolean;
39
+
40
+ // Floorplan/Minimap
41
+ customMinimap: boolean;
42
+ customMarker: boolean;
43
+
44
+ // PinActions
45
+ customPinActions: boolean;
46
+ customPinActionButton: boolean;
47
+ customPinActionButtonWithTooltip: boolean;
48
+
49
+ // SearchAndDiscoverySlideIn
50
+ customSearchAndDiscovery: boolean;
51
+ customTourInfoActionPart: boolean;
52
+ customScenarioPart: boolean;
53
+ customPromotionPart: boolean;
54
+ customPoiInfoActionPart: boolean;
55
+ customDisplayActionPart: boolean;
56
+ customHelpActionPart: boolean;
57
+ customContentItem: boolean;
58
+ customScenarioItem: boolean;
59
+ customCardItem: boolean;
60
+
61
+ // HotspotCategorySlideIn
62
+ customHotspotCategorySlideIn: boolean;
63
+ customScenarioSlideIn: boolean;
64
+ customSpaceAndSceneSlideIn: boolean;
65
+ customFeatureSlideIn: boolean;
66
+ customProductSlideIn: boolean;
67
+ customPoiSlideIn: boolean;
68
+
69
+ // PlayBar
70
+ customPlayBarTooltip: boolean;
71
+ customPlayBarButton: boolean;
72
+
73
+ // PoiDetailSlideIn
74
+ customPoiDetailDrawer: boolean;
75
+ customPoiDetailBottomSheet: boolean;
76
+ customProductDetailHeader: boolean;
77
+ customGroupActionButton: boolean;
78
+ customTabs: boolean;
79
+ customTabsContent: boolean;
80
+ customInfo: boolean;
81
+ customGallery: boolean;
82
+ customArTab: boolean;
83
+ };
84
+
85
+ export const useCustomLayout = (state: CustomLayoutState) => {
86
+ const buildCustomLayout = () => {
87
+ if (!state.enableCustomLayout) return {};
88
+
89
+ const layout: any = {};
90
+
91
+ // Floorplan/Minimap customizations
92
+ if (state.customMinimap || state.customMarker) {
93
+ layout.Floorplan = {};
94
+ if (state.customMinimap) {
95
+ layout.Floorplan.Minimap = {};
96
+ layout.Floorplan.Minimap.default = FloorplanMinimapDefault;
97
+ if (state.customMarker) {
98
+ layout.Floorplan.Minimap.Marker = CustomMarker;
99
+ }
100
+ }
101
+ }
102
+
103
+ // PinActions customizations
104
+ if (
105
+ state.customPinActions ||
106
+ state.customPinActionButton ||
107
+ state.customPinActionButtonWithTooltip
108
+ ) {
109
+ layout.PinActions = layout.PinActions || {};
110
+ if (state.customPinActions) {
111
+ layout.PinActions.default = CustomPinActions;
112
+ }
113
+ if (state.customPinActionButton) {
114
+ layout.PinActions.Button = CustomPinActionButton;
115
+ }
116
+ if (state.customPinActionButtonWithTooltip) {
117
+ layout.PinActions.ButtonWithTooltip = CustomPinActionButtonWithTooltip;
118
+ }
119
+ }
120
+
121
+ // SearchAndDiscoverySlideIn customizations
122
+ if (
123
+ state.customSearchAndDiscovery ||
124
+ state.customTourInfoActionPart ||
125
+ state.customScenarioPart ||
126
+ state.customPromotionPart ||
127
+ state.customPoiInfoActionPart ||
128
+ state.customDisplayActionPart ||
129
+ state.customHelpActionPart ||
130
+ state.customContentItem ||
131
+ state.customScenarioItem ||
132
+ state.customCardItem
133
+ ) {
134
+ layout.SearchAndDiscoverySlideIn = {};
135
+ if (state.customSearchAndDiscovery) {
136
+ layout.SearchAndDiscoverySlideIn.default =
137
+ CustomSearchAndDiscoverySlideIn;
138
+ }
139
+ if (state.customTourInfoActionPart || state.customContentItem) {
140
+ layout.SearchAndDiscoverySlideIn.TourInfoActionPart = {};
141
+ if (state.customTourInfoActionPart) {
142
+ layout.SearchAndDiscoverySlideIn.TourInfoActionPart.default =
143
+ CustomTourInfoActionPart;
144
+ }
145
+ if (state.customContentItem) {
146
+ layout.SearchAndDiscoverySlideIn.TourInfoActionPart.ContentItem =
147
+ CustomContentItem;
148
+ }
149
+ }
150
+ if (state.customScenarioPart || state.customScenarioItem) {
151
+ layout.SearchAndDiscoverySlideIn.ScenarioPart = {};
152
+ if (state.customScenarioPart) {
153
+ layout.SearchAndDiscoverySlideIn.ScenarioPart.default =
154
+ CustomScenarioPart;
155
+ }
156
+ if (state.customScenarioItem) {
157
+ layout.SearchAndDiscoverySlideIn.ScenarioPart.ScenarioItem =
158
+ CustomScenarioItem;
159
+ }
160
+ }
161
+ if (state.customPromotionPart || state.customCardItem) {
162
+ layout.SearchAndDiscoverySlideIn.PromotionPart = {};
163
+ if (state.customPromotionPart) {
164
+ layout.SearchAndDiscoverySlideIn.PromotionPart.default =
165
+ CustomPromotionPart;
166
+ }
167
+ if (state.customCardItem) {
168
+ layout.SearchAndDiscoverySlideIn.PromotionPart.CardItem =
169
+ CustomCardItem;
170
+ }
171
+ }
172
+ if (state.customPoiInfoActionPart || state.customContentItem) {
173
+ layout.SearchAndDiscoverySlideIn.PoiInfoActionPart =
174
+ layout.SearchAndDiscoverySlideIn.PoiInfoActionPart || {};
175
+ if (state.customPoiInfoActionPart) {
176
+ layout.SearchAndDiscoverySlideIn.PoiInfoActionPart.default =
177
+ CustomPoiInfoActionPart;
178
+ }
179
+ if (state.customContentItem) {
180
+ layout.SearchAndDiscoverySlideIn.PoiInfoActionPart.ContentItem =
181
+ CustomContentItem;
182
+ }
183
+ }
184
+ if (state.customDisplayActionPart || state.customContentItem) {
185
+ layout.SearchAndDiscoverySlideIn.DisplayActionPart =
186
+ layout.SearchAndDiscoverySlideIn.DisplayActionPart || {};
187
+ if (state.customDisplayActionPart) {
188
+ layout.SearchAndDiscoverySlideIn.DisplayActionPart.default =
189
+ CustomDisplayActionPart;
190
+ }
191
+ if (state.customContentItem) {
192
+ layout.SearchAndDiscoverySlideIn.DisplayActionPart.ContentItem =
193
+ CustomContentItem;
194
+ }
195
+ }
196
+ if (state.customHelpActionPart || state.customContentItem) {
197
+ layout.SearchAndDiscoverySlideIn.HelpActionPart =
198
+ layout.SearchAndDiscoverySlideIn.HelpActionPart || {};
199
+ if (state.customHelpActionPart) {
200
+ layout.SearchAndDiscoverySlideIn.HelpActionPart.default =
201
+ CustomHelpActionPart;
202
+ }
203
+ if (state.customContentItem) {
204
+ layout.SearchAndDiscoverySlideIn.HelpActionPart.ContentItem =
205
+ CustomContentItem;
206
+ }
207
+ }
208
+ }
209
+
210
+ // HotspotCategorySlideIn customizations
211
+ if (
212
+ state.customHotspotCategorySlideIn ||
213
+ state.customScenarioSlideIn ||
214
+ state.customSpaceAndSceneSlideIn ||
215
+ state.customFeatureSlideIn ||
216
+ state.customProductSlideIn ||
217
+ state.customPoiSlideIn
218
+ ) {
219
+ layout.HotspotCategorySlideIn = {};
220
+ if (state.customHotspotCategorySlideIn) {
221
+ layout.HotspotCategorySlideIn.default = CustomHotspotCategorySlideIn;
222
+ }
223
+ if (state.customScenarioSlideIn) {
224
+ layout.HotspotCategorySlideIn.ScenarioSlideIn = CustomScenarioSlideIn;
225
+ }
226
+ if (state.customSpaceAndSceneSlideIn) {
227
+ layout.HotspotCategorySlideIn.SpaceAndSceneSlideIn =
228
+ CustomSpaceAndSceneSlideIn;
229
+ }
230
+ if (state.customFeatureSlideIn) {
231
+ layout.HotspotCategorySlideIn.FeatureSlideIn = CustomFeatureSlideIn;
232
+ }
233
+ if (state.customProductSlideIn) {
234
+ layout.HotspotCategorySlideIn.ProductSlideIn = CustomProductSlideIn;
235
+ }
236
+ if (state.customPoiSlideIn) {
237
+ layout.HotspotCategorySlideIn.PoiSlideIn = CustomPoiSlideIn;
238
+ }
239
+ }
240
+
241
+ // PlayBar customizations
242
+ if (state.customPlayBarTooltip || state.customPlayBarButton) {
243
+ layout.PlayBar = {};
244
+ if (state.customPlayBarTooltip) {
245
+ layout.PlayBar.Tooltip = CustomPlayBarTooltip;
246
+ }
247
+ if (state.customPlayBarButton) {
248
+ layout.PlayBar.Button = CustomPlayBarButton;
249
+ }
250
+ }
251
+
252
+ // PoiDetailSlideIn customizations
253
+ if (
254
+ state.customPoiDetailDrawer ||
255
+ state.customPoiDetailBottomSheet ||
256
+ state.customProductDetailHeader ||
257
+ state.customGroupActionButton ||
258
+ state.customTabs ||
259
+ state.customTabsContent ||
260
+ state.customInfo ||
261
+ state.customGallery ||
262
+ state.customArTab
263
+ ) {
264
+ layout.PoiDetailSlideIn = {};
265
+
266
+ if (state.customPoiDetailDrawer) {
267
+ layout.PoiDetailSlideIn.Drawer = CustomPoiDetailDrawer;
268
+ }
269
+ if (state.customPoiDetailBottomSheet) {
270
+ layout.PoiDetailSlideIn.BottomSheet = CustomPoiDetailBottomSheet;
271
+ }
272
+
273
+ if (
274
+ state.customProductDetailHeader ||
275
+ state.customGroupActionButton ||
276
+ state.customTabs ||
277
+ state.customTabsContent ||
278
+ state.customInfo ||
279
+ state.customGallery ||
280
+ state.customArTab
281
+ ) {
282
+ layout.PoiDetailSlideIn.ProductDetail = {};
283
+
284
+ if (state.customProductDetailHeader) {
285
+ layout.PoiDetailSlideIn.ProductDetail.Header =
286
+ CustomProductDetailHeader;
287
+ }
288
+ if (state.customGroupActionButton) {
289
+ layout.PoiDetailSlideIn.ProductDetail.GroupActionButton =
290
+ CustomGroupActionButton;
291
+ }
292
+ if (state.customTabs) {
293
+ layout.PoiDetailSlideIn.ProductDetail.Tabs = CustomTabs;
294
+ }
295
+ if (state.customTabsContent) {
296
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent = CustomTabsContent;
297
+ }
298
+
299
+ if (state.customInfo || state.customGallery || state.customArTab) {
300
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent =
301
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent || {};
302
+ if (
303
+ typeof layout.PoiDetailSlideIn.ProductDetail.TabsContent !==
304
+ 'object'
305
+ ) {
306
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent = {};
307
+ }
308
+
309
+ if (state.customInfo) {
310
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent.Info = CustomInfo;
311
+ }
312
+ if (state.customGallery) {
313
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent.Gallery =
314
+ CustomGallery;
315
+ }
316
+ if (state.customArTab) {
317
+ layout.PoiDetailSlideIn.ProductDetail.TabsContent.ArTab =
318
+ CustomArTab;
319
+ }
320
+ }
321
+ }
322
+ }
323
+
324
+ return layout;
325
+ };
326
+
327
+ return { buildCustomLayout };
328
+ };
@@ -0,0 +1,31 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body {
8
+ font-family:
9
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
10
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
11
+ -webkit-font-smoothing: antialiased;
12
+ -moz-osx-font-smoothing: grayscale;
13
+ }
14
+
15
+ code {
16
+ font-family:
17
+ source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
18
+ background: #f4f4f4;
19
+ padding: 2px 6px;
20
+ border-radius: 3px;
21
+ font-size: 13px;
22
+ }
23
+
24
+ #root {
25
+ height: 100vh;
26
+ width: 100vw;
27
+ }
28
+
29
+ .custom-minimap-marker .marker__content {
30
+ background-color: red !important;
31
+ }
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import App from './App';
4
+ import './index.css';
5
+
6
+ ReactDOM.createRoot(document.getElementById('root')!).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>
10
+ );
11
+
@@ -1,12 +1,12 @@
1
- /** @type {import('tailwindcss').Config} */
2
- module.exports = {
3
- // Extend the parent tailwind config
4
- presets: [require('../tailwind.config.cjs')],
5
- content: [
6
- './index.html',
7
- './src/**/*.{js,ts,jsx,tsx}',
8
- // Include parent library source files
9
- '../src/**/*.{js,ts,jsx,tsx}',
10
- ],
11
- important: true,
12
- };
1
+ /** @type {import('tailwindcss').Config} */
2
+ module.exports = {
3
+ // Extend the parent tailwind config
4
+ presets: [require('../tailwind.config.cjs')],
5
+ content: [
6
+ './index.html',
7
+ './src/**/*.{js,ts,jsx,tsx}',
8
+ // Include parent library source files
9
+ '../src/**/*.{js,ts,jsx,tsx}',
10
+ ],
11
+ important: true,
12
+ };
@@ -1,12 +1,12 @@
1
- {
2
- "compilerOptions": {
3
- "composite": true,
4
- "skipLibCheck": true,
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "allowSyntheticDefaultImports": true,
8
- "strict": true
9
- },
10
- "include": ["vite.config.ts"]
11
- }
12
-
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "skipLibCheck": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowSyntheticDefaultImports": true,
8
+ "strict": true
9
+ },
10
+ "include": ["vite.config.ts"]
11
+ }
12
+