@clikvn/showroom-visualizer 0.2.2-dev-13 → 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.
Files changed (48) hide show
  1. package/.claude/settings.local.json +19 -0
  2. package/README.md +31 -31
  3. package/base.json +21 -21
  4. package/dist/components/SkinLayer/DefaultLayout/index.d.ts +8 -0
  5. package/dist/components/SkinLayer/DefaultLayout/index.d.ts.map +1 -0
  6. package/dist/components/SkinLayer/PoiMovingPreview/index.d.ts.map +1 -1
  7. package/dist/context/CustomLayoutContext.d.ts +20 -0
  8. package/dist/context/CustomLayoutContext.d.ts.map +1 -0
  9. package/dist/context/SwizzleContext.d.ts +21 -0
  10. package/dist/context/SwizzleContext.d.ts.map +1 -0
  11. package/dist/fonts/icomoon.svg +633 -633
  12. package/dist/hooks/headless/index.d.ts +150 -0
  13. package/dist/hooks/headless/index.d.ts.map +1 -0
  14. package/dist/hooks/headless/useFloorplanControl.d.ts +18 -0
  15. package/dist/hooks/headless/useFloorplanControl.d.ts.map +1 -0
  16. package/dist/hooks/headless/usePOIInteraction.d.ts +23 -0
  17. package/dist/hooks/headless/usePOIInteraction.d.ts.map +1 -0
  18. package/dist/hooks/headless/useScenarioControl.d.ts +22 -0
  19. package/dist/hooks/headless/useScenarioControl.d.ts.map +1 -0
  20. package/dist/hooks/headless/useSceneNavigation.d.ts +26 -0
  21. package/dist/hooks/headless/useSceneNavigation.d.ts.map +1 -0
  22. package/dist/hooks/headless/useTourCore.d.ts +23 -0
  23. package/dist/hooks/headless/useTourCore.d.ts.map +1 -0
  24. package/dist/hooks/headless/useViewportControl.d.ts +22 -0
  25. package/dist/hooks/headless/useViewportControl.d.ts.map +1 -0
  26. package/dist/index.html +85 -10
  27. package/dist/index.js +1 -0
  28. package/dist/types/custom-layout.d.ts +63 -0
  29. package/dist/types/custom-layout.d.ts.map +1 -0
  30. package/dist/types/swizzle.d.ts +59 -0
  31. package/dist/types/swizzle.d.ts.map +1 -0
  32. package/dist/web.d.ts.map +1 -1
  33. package/dist/web.js +1 -1
  34. package/package.json +124 -124
  35. package/rollup.config.js +97 -97
  36. package/tailwind.config.cjs +151 -151
  37. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts +0 -16
  38. package/dist/components/SkinLayer/Drawer/PoiHeader/index.d.ts.map +0 -1
  39. package/dist/components/SkinLayer/Drawer/index.d.ts +0 -29
  40. package/dist/components/SkinLayer/Drawer/index.d.ts.map +0 -1
  41. package/dist/components/SkinLayer/PlayAll/index.d.ts +0 -8
  42. package/dist/components/SkinLayer/PlayAll/index.d.ts.map +0 -1
  43. package/dist/features/VirtualTourVisualizer/index.d.ts +0 -20
  44. package/dist/features/VirtualTourVisualizer/index.d.ts.map +0 -1
  45. package/dist/features/VirtualTourVisualizerUI/index.d.ts +0 -17
  46. package/dist/features/VirtualTourVisualizerUI/index.d.ts.map +0 -1
  47. /package/dist/features/ShowroomVisualizer/{cssStyles.d.ts → CssStyles.d.ts} +0 -0
  48. /package/dist/features/ShowroomVisualizer/{cssStyles.d.ts.map → CssStyles.d.ts.map} +0 -0
@@ -1,151 +1,151 @@
1
- // eslint-disable-next-line @typescript-eslint/no-var-requires
2
- const defaultTheme = require('tailwindcss/defaultTheme');
3
- const plugin = require('tailwindcss/plugin');
4
-
5
- function rem2px(input, fontSize = 16) {
6
- if (input == null) {
7
- return input;
8
- }
9
- switch (typeof input) {
10
- case 'object':
11
- if (Array.isArray(input)) {
12
- return input.map((val) => rem2px(val, fontSize));
13
- }
14
- // eslint-disable-next-line no-case-declarations
15
- const ret = {};
16
- for (const key in input) {
17
- ret[key] = rem2px(input[key], fontSize);
18
- }
19
- return ret;
20
- case 'string':
21
- return input.replace(
22
- /(\d*\.?\d+)rem$/,
23
- (_, val) => `${parseFloat(val) * fontSize}px`
24
- );
25
- case 'function':
26
- return eval(
27
- input
28
- .toString()
29
- .replace(
30
- /(\d*\.?\d+)rem/g,
31
- (_, val) => `${parseFloat(val) * fontSize}px`
32
- )
33
- );
34
- default:
35
- return input;
36
- }
37
- }
38
-
39
- /** @type {import('tailwindcss').Config} */
40
- module.exports = {
41
- darkMode: ['class'],
42
- content: ['./src/**/*.{js,jsx,ts,tsx}'],
43
- theme: {
44
- ...rem2px(defaultTheme),
45
- fontFamily: {
46
- sans: ['Be Vietnam Pro', 'sans-serif'],
47
- mono: ['Be Vietnam Pro', 'sans-serif'],
48
- },
49
- extend: {
50
- keyframes: {
51
- 'fade-in': {
52
- '0%': {
53
- opacity: '0',
54
- },
55
- '100%': {
56
- opacity: '1',
57
- },
58
- },
59
- 'poi-item-info-bg-animation': {
60
- '0%': {
61
- 'background-color': 'rgba(0, 0, 0, 0)',
62
- },
63
- '100%': {
64
- 'background-color': 'rgba(0, 0, 0, 0.48)',
65
- },
66
- },
67
- 'poi-item-info-animation': {
68
- '0%': {
69
- width: '0',
70
- },
71
- '100%': {
72
- width: '100%',
73
- },
74
- },
75
- },
76
- /*animation: {
77
- 'fade-in': 'fade-in 0.3s ease-out',
78
- },
79
- borderRadius: {
80
- lg: 'var(--radius)',
81
- md: 'calc(var(--radius) - 2px)',
82
- sm: 'calc(var(--radius) - 4px)',
83
- },*/
84
- colors: {
85
- background: 'var(--background)',
86
- foreground: 'var(--foreground)',
87
- card: {
88
- DEFAULT: 'var(--card)',
89
- foreground: 'var(--card-foreground)',
90
- },
91
- popover: {
92
- DEFAULT: 'var(--popover)',
93
- foreground: 'var(--popover-foreground)',
94
- },
95
- primary: {
96
- DEFAULT: 'var(--primary)',
97
- foreground: 'var(--primary-foreground)',
98
- },
99
- secondary: {
100
- DEFAULT: 'var(--secondary)',
101
- foreground: 'var(--secondary-foreground)',
102
- },
103
- muted: {
104
- DEFAULT: 'var(--muted)',
105
- foreground: 'var(--muted-foreground)',
106
- },
107
- accent: {
108
- DEFAULT: 'var(--accent)',
109
- foreground: 'var(--accent-foreground)',
110
- },
111
- destructive: {
112
- DEFAULT: 'var(--destructive)',
113
- foreground: 'var(--destructive-foreground)',
114
- },
115
- border: 'var(--border)',
116
- input: 'var(--input)',
117
- ring: 'var(--ring)',
118
- rating: 'var(--rating)',
119
- chart: {
120
- 1: 'var(--chart-1)',
121
- 2: 'var(--chart-2)',
122
- 3: 'var(--chart-3)',
123
- 4: 'var(--chart-4)',
124
- 5: 'var(--chart-5)',
125
- },
126
- sidebar: {
127
- DEFAULT: 'var(--sidebar)',
128
- foreground: 'var(--sidebar-foreground)',
129
- primary: 'var(--sidebar-primary)',
130
- 'primary-foreground': 'var(--sidebar-primary-foreground)',
131
- accent: 'var(--sidebar-accent)',
132
- 'accent-foreground': 'var(--sidebar-accent-foreground)',
133
- border: 'var(--sidebar-border)',
134
- ring: 'var(--sidebar-ring)',
135
- },
136
- base: 'var(--base)',
137
- },
138
- },
139
- },
140
- plugins: [
141
- require('tailwindcss-animate'),
142
- require('@tailwindcss/typography'),
143
- plugin(function ({ addVariant }) {
144
- addVariant('wrapped', ({ container }) => {
145
- container.walkRules((rule) => {
146
- rule.selector = `.clik-chatbot-wrapper ${rule.selector}`;
147
- });
148
- });
149
- }),
150
- ],
151
- };
1
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
2
+ const defaultTheme = require('tailwindcss/defaultTheme');
3
+ const plugin = require('tailwindcss/plugin');
4
+
5
+ function rem2px(input, fontSize = 16) {
6
+ if (input == null) {
7
+ return input;
8
+ }
9
+ switch (typeof input) {
10
+ case 'object':
11
+ if (Array.isArray(input)) {
12
+ return input.map((val) => rem2px(val, fontSize));
13
+ }
14
+ // eslint-disable-next-line no-case-declarations
15
+ const ret = {};
16
+ for (const key in input) {
17
+ ret[key] = rem2px(input[key], fontSize);
18
+ }
19
+ return ret;
20
+ case 'string':
21
+ return input.replace(
22
+ /(\d*\.?\d+)rem$/,
23
+ (_, val) => `${parseFloat(val) * fontSize}px`
24
+ );
25
+ case 'function':
26
+ return eval(
27
+ input
28
+ .toString()
29
+ .replace(
30
+ /(\d*\.?\d+)rem/g,
31
+ (_, val) => `${parseFloat(val) * fontSize}px`
32
+ )
33
+ );
34
+ default:
35
+ return input;
36
+ }
37
+ }
38
+
39
+ /** @type {import('tailwindcss').Config} */
40
+ module.exports = {
41
+ darkMode: ['class'],
42
+ content: ['./src/**/*.{js,jsx,ts,tsx}'],
43
+ theme: {
44
+ ...rem2px(defaultTheme),
45
+ fontFamily: {
46
+ sans: ['Be Vietnam Pro', 'sans-serif'],
47
+ mono: ['Be Vietnam Pro', 'sans-serif'],
48
+ },
49
+ extend: {
50
+ keyframes: {
51
+ 'fade-in': {
52
+ '0%': {
53
+ opacity: '0',
54
+ },
55
+ '100%': {
56
+ opacity: '1',
57
+ },
58
+ },
59
+ 'poi-item-info-bg-animation': {
60
+ '0%': {
61
+ 'background-color': 'rgba(0, 0, 0, 0)',
62
+ },
63
+ '100%': {
64
+ 'background-color': 'rgba(0, 0, 0, 0.48)',
65
+ },
66
+ },
67
+ 'poi-item-info-animation': {
68
+ '0%': {
69
+ width: '0',
70
+ },
71
+ '100%': {
72
+ width: '100%',
73
+ },
74
+ },
75
+ },
76
+ /*animation: {
77
+ 'fade-in': 'fade-in 0.3s ease-out',
78
+ },
79
+ borderRadius: {
80
+ lg: 'var(--radius)',
81
+ md: 'calc(var(--radius) - 2px)',
82
+ sm: 'calc(var(--radius) - 4px)',
83
+ },*/
84
+ colors: {
85
+ background: 'var(--background)',
86
+ foreground: 'var(--foreground)',
87
+ card: {
88
+ DEFAULT: 'var(--card)',
89
+ foreground: 'var(--card-foreground)',
90
+ },
91
+ popover: {
92
+ DEFAULT: 'var(--popover)',
93
+ foreground: 'var(--popover-foreground)',
94
+ },
95
+ primary: {
96
+ DEFAULT: 'var(--primary)',
97
+ foreground: 'var(--primary-foreground)',
98
+ },
99
+ secondary: {
100
+ DEFAULT: 'var(--secondary)',
101
+ foreground: 'var(--secondary-foreground)',
102
+ },
103
+ muted: {
104
+ DEFAULT: 'var(--muted)',
105
+ foreground: 'var(--muted-foreground)',
106
+ },
107
+ accent: {
108
+ DEFAULT: 'var(--accent)',
109
+ foreground: 'var(--accent-foreground)',
110
+ },
111
+ destructive: {
112
+ DEFAULT: 'var(--destructive)',
113
+ foreground: 'var(--destructive-foreground)',
114
+ },
115
+ border: 'var(--border)',
116
+ input: 'var(--input)',
117
+ ring: 'var(--ring)',
118
+ rating: 'var(--rating)',
119
+ chart: {
120
+ 1: 'var(--chart-1)',
121
+ 2: 'var(--chart-2)',
122
+ 3: 'var(--chart-3)',
123
+ 4: 'var(--chart-4)',
124
+ 5: 'var(--chart-5)',
125
+ },
126
+ sidebar: {
127
+ DEFAULT: 'var(--sidebar)',
128
+ foreground: 'var(--sidebar-foreground)',
129
+ primary: 'var(--sidebar-primary)',
130
+ 'primary-foreground': 'var(--sidebar-primary-foreground)',
131
+ accent: 'var(--sidebar-accent)',
132
+ 'accent-foreground': 'var(--sidebar-accent-foreground)',
133
+ border: 'var(--sidebar-border)',
134
+ ring: 'var(--sidebar-ring)',
135
+ },
136
+ base: 'var(--base)',
137
+ },
138
+ },
139
+ },
140
+ plugins: [
141
+ require('tailwindcss-animate'),
142
+ require('@tailwindcss/typography'),
143
+ plugin(function ({ addVariant }) {
144
+ addVariant('wrapped', ({ container }) => {
145
+ container.walkRules((rule) => {
146
+ rule.selector = `.clik-chatbot-wrapper ${rule.selector}`;
147
+ });
148
+ });
149
+ }),
150
+ ],
151
+ };
@@ -1,16 +0,0 @@
1
- import { FC } from 'react';
2
- type PoiHeaderPropsTypes = {
3
- title: string;
4
- brand?: string;
5
- rating?: number;
6
- price?: number;
7
- salePrice?: number;
8
- currencyUnit?: string;
9
- unit?: string;
10
- onShare?: () => void;
11
- onClose?: () => void;
12
- onPlay?: () => void;
13
- };
14
- declare const PoiHeader: FC<PoiHeaderPropsTypes>;
15
- export default PoiHeader;
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/Drawer/PoiHeader/index.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAQlC,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAwGtC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,29 +0,0 @@
1
- import { DrawerProps } from 'antd/lib/drawer';
2
- import { CSSProperties, ReactNode } from 'react';
3
- export type CommandTypes = {
4
- icon: string;
5
- onClick: () => void;
6
- };
7
- /**
8
- * commands is actions list on side-in header
9
- */
10
- interface DrawerPropsType extends DrawerProps {
11
- enableAutoPlay?: boolean;
12
- enableShare?: boolean;
13
- title?: string;
14
- children?: ReactNode;
15
- header?: ReactNode;
16
- subHeader?: ReactNode;
17
- loadingScenario?: boolean;
18
- commands?: CommandTypes[] | null;
19
- showHeader?: boolean;
20
- closeStyle?: CSSProperties;
21
- onBack?: () => void;
22
- onClose?: () => void;
23
- onClickAutoPlay?: () => void;
24
- onClickShare?: () => void;
25
- onClickContainer?: () => void;
26
- }
27
- declare const _default: import("react").NamedExoticComponent<DrawerPropsType>;
28
- export default _default;
29
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/Drawer/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAY,SAAS,EAAoB,MAAM,OAAO,CAAC;AAI7E,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEjE;;GAEG;AACH,UAAU,eAAgB,SAAQ,WAAW;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;;AA4ND,wBAAqC"}
@@ -1,8 +0,0 @@
1
- import { FC } from 'react';
2
- export type PlayAllPropsType = {
3
- onClickAutoPlay?: () => void;
4
- loading?: boolean;
5
- };
6
- declare const PlayAll: FC<PlayAllPropsType>;
7
- export default PlayAll;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PlayAll/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF,QAAA,MAAM,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAoCjC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,20 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,17 +0,0 @@
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
@@ -1 +0,0 @@
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"}