@clikvn/showroom-visualizer 0.2.2-dev-09 → 0.2.2-dev-10
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/DEVELOPMENT.md +120 -0
- package/EXAMPLES.md +967 -0
- package/README.md +133 -26
- package/SETUP_COMPLETE.md +149 -0
- package/dist/components/SkinLayer/DefaultLayout/index.d.ts.map +1 -1
- 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/index.d.ts +32 -0
- package/dist/components/SkinLayer/index.d.ts.map +1 -1
- package/dist/context/CustomLayoutContext.d.ts +20 -0
- package/dist/context/CustomLayoutContext.d.ts.map +1 -0
- package/dist/features/ShowroomVisualizer/VirtualTour.d.ts +5 -0
- package/dist/features/ShowroomVisualizer/VirtualTour.d.ts.map +1 -1
- package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts +4 -3
- package/dist/features/ShowroomVisualizer/VirtualTourContainer.d.ts.map +1 -1
- package/dist/features/ShowroomVisualizer/index.d.ts +24 -3
- package/dist/features/ShowroomVisualizer/index.d.ts.map +1 -1
- package/dist/hooks/headless/index.d.ts +0 -31
- package/dist/hooks/headless/index.d.ts.map +1 -1
- package/dist/hooks/useToolConfig.d.ts.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/register.d.ts +3 -0
- package/dist/register.d.ts.map +1 -1
- package/dist/types/SkinLayer/tool.type.d.ts +6 -0
- package/dist/types/SkinLayer/tool.type.d.ts.map +1 -1
- package/dist/types/SkinLayer/visualizer.type.d.ts +3 -0
- package/dist/types/SkinLayer/visualizer.type.d.ts.map +1 -1
- package/dist/types/custom-layout.d.ts +63 -0
- package/dist/types/custom-layout.d.ts.map +1 -0
- package/dist/web.js +1 -1
- package/example/CSS_HANDLING.md +141 -0
- package/example/FIXES_SUMMARY.md +121 -0
- package/example/PATH_ALIASES.md +103 -0
- package/example/README.md +64 -0
- package/example/index.html +13 -0
- package/example/package.json +25 -0
- package/example/postcss.config.cjs +6 -0
- package/example/tailwind.config.cjs +12 -0
- package/example/tsconfig.node.json +12 -0
- package/example/vite.config.ts +126 -0
- package/package.json +9 -1
- package/rollup.config.js +270 -3
package/dist/register.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ProductType, VirtualTourVisualizerType, VisualizerListenersType } from './types/SkinLayer';
|
|
2
|
+
import { CustomLayoutConfig } from './types/custom-layout';
|
|
2
3
|
export declare class VisualizerUIComponent extends HTMLElement {
|
|
3
4
|
elementId?: string;
|
|
4
5
|
apiHost?: string;
|
|
@@ -16,6 +17,8 @@ export declare class VisualizerUIComponent extends HTMLElement {
|
|
|
16
17
|
};
|
|
17
18
|
listeners?: VisualizerListenersType;
|
|
18
19
|
products?: ProductType[];
|
|
20
|
+
customLayout?: CustomLayoutConfig;
|
|
21
|
+
disableDefaultUI?: boolean;
|
|
19
22
|
constructor();
|
|
20
23
|
updateAttributes(attributes: VirtualTourVisualizerType): void;
|
|
21
24
|
connectedCallback(): void;
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,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,CAAC,EAAE,OAAO,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;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;;IAO3B,gBAAgB,CAAC,UAAU,EAAE,yBAAyB;IActD,iBAAiB;IAMjB,MAAM;CAiBP;AAED,eAAO,MAAM,qBAAqB,YAKjC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FloorplanControls, SceneNavigationControls, ScenarioControls, POIControls, ViewportControls } from 'hooks/headless';
|
|
1
2
|
export type ToolType = {
|
|
2
3
|
goToScene: (codeOrName: string, keepCurrentView?: boolean) => Promise<void>;
|
|
3
4
|
goToProduct: (codeOrName: string, showDetails?: boolean) => Promise<boolean>;
|
|
@@ -34,6 +35,11 @@ export type ToolType = {
|
|
|
34
35
|
registerValueListeners: (keys: string[]) => void;
|
|
35
36
|
call: (action: string, args: any) => void;
|
|
36
37
|
toggleHotspotOverview: (open: boolean) => void;
|
|
38
|
+
useFloorplanControl: () => FloorplanControls;
|
|
39
|
+
useSceneNavigation: () => SceneNavigationControls;
|
|
40
|
+
useScenarioControl: () => ScenarioControls;
|
|
41
|
+
usePOIInteraction: () => POIControls;
|
|
42
|
+
useViewportControl: () => ViewportControls;
|
|
37
43
|
};
|
|
38
44
|
export type TourSwitchType = {
|
|
39
45
|
switchTour: (codeOrAlias: string) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.type.d.ts","sourceRoot":"","sources":["../../../src/types/SkinLayer/tool.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,aAAa,EAAE,CAAC,GAAG,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,WAAW,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,kBAAkB,EAAE,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAE9B,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,qBAAqB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.type.d.ts","sourceRoot":"","sources":["../../../src/types/SkinLayer/tool.type.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,aAAa,EAAE,CAAC,GAAG,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,WAAW,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,kBAAkB,EAAE,CAAC,IAAI,EAAE;QACzB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,kBAAkB,EAAE,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAE9B,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,qBAAqB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAE/C,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;IAC7C,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;IAClD,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;IAC3C,iBAAiB,EAAE,MAAM,WAAW,CAAC;IACrC,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CustomLayoutConfig } from 'types/custom-layout';
|
|
1
2
|
import { VisualizerListenersType } from './listeners.type';
|
|
2
3
|
import { OverrideConfigsType } from './overrideConfigs.type';
|
|
3
4
|
import { ProductType } from './product.type';
|
|
@@ -10,5 +11,7 @@ export type VirtualTourVisualizerType = {
|
|
|
10
11
|
config?: OverrideConfigsType;
|
|
11
12
|
listeners?: VisualizerListenersType;
|
|
12
13
|
products?: ProductType[];
|
|
14
|
+
disableDefaultUI?: boolean;
|
|
15
|
+
customLayout?: CustomLayoutConfig;
|
|
13
16
|
};
|
|
14
17
|
//# sourceMappingURL=visualizer.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualizer.type.d.ts","sourceRoot":"","sources":["../../../src/types/SkinLayer/visualizer.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GAAG;IACtC,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,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"visualizer.type.d.ts","sourceRoot":"","sources":["../../../src/types/SkinLayer/visualizer.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GAAG;IACtC,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,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Custom Layout Config - Cho phép override từng component thông qua cấu trúc object lồng nhau.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* customLayout={{
|
|
8
|
+
* Floorplan: {
|
|
9
|
+
* Minimap: {
|
|
10
|
+
* Marker: CustomMarker,
|
|
11
|
+
* Polygon: CustomPolygon,
|
|
12
|
+
* },
|
|
13
|
+
* },
|
|
14
|
+
* }}
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @important Pass component functions, NOT React elements!
|
|
18
|
+
*/
|
|
19
|
+
export type CustomLayoutComponent<T = any> = ComponentType<T>;
|
|
20
|
+
export type CustomLayoutNode = CustomLayoutComponent | {
|
|
21
|
+
[key: string]: CustomLayoutNode;
|
|
22
|
+
};
|
|
23
|
+
export type CustomLayoutConfig = {
|
|
24
|
+
[key: string]: CustomLayoutNode;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Resolve helper để tìm component theo path (ví dụ ['Floorplan', 'Minimap', 'Marker'])
|
|
28
|
+
*/
|
|
29
|
+
export declare const resolveCustomLayoutComponent: (config: CustomLayoutConfig | undefined, path: string[]) => CustomLayoutComponent | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Registry document các component có thể custom layout
|
|
32
|
+
*/
|
|
33
|
+
export declare const CUSTOM_LAYOUT_COMPONENTS: {
|
|
34
|
+
readonly Floorplan: {
|
|
35
|
+
readonly path: "src/components/SkinLayer/Floorplan/index.tsx";
|
|
36
|
+
readonly description: "Main Floorplan container with bottom sheet";
|
|
37
|
+
readonly children: {
|
|
38
|
+
readonly Map: {
|
|
39
|
+
readonly path: "src/components/SkinLayer/Floorplan/Map.tsx";
|
|
40
|
+
readonly description: "Floorplan map wrapper with controls";
|
|
41
|
+
};
|
|
42
|
+
readonly Minimap: {
|
|
43
|
+
readonly path: "src/components/SkinLayer/Floorplan/Minimap/index.tsx";
|
|
44
|
+
readonly description: "Interactive minimap with markers and polygons";
|
|
45
|
+
readonly children: {
|
|
46
|
+
readonly Marker: {
|
|
47
|
+
readonly path: "src/components/SkinLayer/Floorplan/Minimap/MiniMapMarker.tsx";
|
|
48
|
+
readonly description: "Individual marker on minimap";
|
|
49
|
+
};
|
|
50
|
+
readonly Polygon: {
|
|
51
|
+
readonly path: "src/components/SkinLayer/Floorplan/Minimap/MiniMapPolygons/index.tsx";
|
|
52
|
+
readonly description: "Polygon areas on minimap";
|
|
53
|
+
};
|
|
54
|
+
readonly Radar: {
|
|
55
|
+
readonly path: "src/components/SkinLayer/Floorplan/Minimap/index.tsx";
|
|
56
|
+
readonly description: "Radar element inside minimap";
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=custom-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-layout.d.ts","sourceRoot":"","sources":["../../src/types/custom-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,kBAAkB,GAAG,SAAS,EACtC,MAAM,MAAM,EAAE,KACb,qBAAqB,GAAG,SAgD1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC"}
|