@pipelinesolucoes/menu 1.0.3-beta.2 → 1.0.3-beta.4
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/README.md
CHANGED
|
@@ -29,6 +29,9 @@ A biblioteca inclui os seguintes componentes:
|
|
|
29
29
|
Componente de menu vertical que renderiza uma lista de itens de menu empilhados em coluna utilizando `flexbox`.
|
|
30
30
|
|
|
31
31
|
- **SideNav**
|
|
32
|
+
Componente de navegação lateral com área de conteúdo associada.
|
|
33
|
+
Permite alternar entre diferentes seções de conteúdo através de um menu vertical.
|
|
34
|
+
Cada item do menu pode possuir um conteúdo associado que será exibido na área principal ao ser selecionado.
|
|
32
35
|
|
|
33
36
|
- **DrawerResponsive**
|
|
34
37
|
DrawerResponsive é um layout de navegação responsivo que:
|
|
@@ -3,7 +3,8 @@ import { TypographyVariant } from "@mui/material";
|
|
|
3
3
|
import { NavItem } from "../types/NavItem";
|
|
4
4
|
interface SideNavProps {
|
|
5
5
|
items: NavItem[];
|
|
6
|
-
|
|
6
|
+
indexItemSelecionado?: number;
|
|
7
|
+
menuWidth?: number | string;
|
|
7
8
|
itemMenuBackgroundColorSemContent?: string;
|
|
8
9
|
itemMenuColorSemContent?: string;
|
|
9
10
|
itemMenuVariantSemContent?: TypographyVariant;
|
|
@@ -14,31 +15,16 @@ interface SideNavProps {
|
|
|
14
15
|
itemMenuColor?: string;
|
|
15
16
|
itemMenuColorSelected?: string;
|
|
16
17
|
itemMenuVariant?: TypographyVariant;
|
|
17
|
-
borderRadius?: string;
|
|
18
|
-
itemMenuBorderRadius?: string;
|
|
18
|
+
borderRadius?: string | number;
|
|
19
|
+
itemMenuBorderRadius?: string | number;
|
|
19
20
|
contentBackground?: string;
|
|
20
21
|
height?: string | number;
|
|
21
22
|
renderTopMenu?: ReactNode;
|
|
22
23
|
renderBottomMenu?: ReactNode;
|
|
23
|
-
contentGap?: number;
|
|
24
|
-
}
|
|
25
|
-
export declare const SideNavContent: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
|
|
26
24
|
contentGap?: number | string;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}, {}, {}>;
|
|
31
|
-
/**
|
|
32
|
-
* Componente SideNav
|
|
33
|
-
*
|
|
34
|
-
* Um menu lateral com itens clicáveis que alteram o conteúdo exibido em um container ao lado.
|
|
35
|
-
* Cada item possui um `label` e `content` que será renderizado no container.
|
|
36
|
-
*
|
|
37
|
-
* Agora suporta:
|
|
38
|
-
* - conteúdo no topo do menu (`renderTopMenu`)
|
|
39
|
-
* - conteúdo fixado na base do menu (`renderBottomMenu`)
|
|
40
|
-
*/
|
|
41
|
-
declare function SideNav({ items, menuWidth, itemMenuBackgroundColorSemContent, itemMenuColorSemContent, itemMenuVariantSemContent, menuBackground, borderRadius, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected, itemMenuColor, itemMenuColorSelected, itemMenuVariant, contentBackground, renderTopMenu, renderBottomMenu, height, contentGap, }: SideNavProps): import("react/jsx-runtime").JSX.Element | null;
|
|
25
|
+
marginDivider?: string | number;
|
|
26
|
+
}
|
|
27
|
+
declare function SideNav({ items, indexItemSelecionado, menuWidth, itemMenuBackgroundColorSemContent, itemMenuColorSemContent, itemMenuVariantSemContent, menuBackground, borderRadius, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected, itemMenuColor, itemMenuColorSelected, itemMenuVariant, contentBackground, renderTopMenu, renderBottomMenu, height, contentGap, marginDivider, }: SideNavProps): import("react/jsx-runtime").JSX.Element | null;
|
|
42
28
|
declare namespace SideNav {
|
|
43
29
|
var displayName: string;
|
|
44
30
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
"use client";
|
|
2
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
4
3
|
import { Box, Divider, styled } from "@mui/material";
|
|
5
4
|
import { motion, AnimatePresence } from "framer-motion";
|
|
6
5
|
const Container = styled("div")(() => ({
|
|
@@ -16,7 +15,7 @@ const SideNavContainer = styled(Box, {
|
|
|
16
15
|
minHeight: height,
|
|
17
16
|
maxHeight: height,
|
|
18
17
|
backgroundColor: menuBackground,
|
|
19
|
-
borderRadius
|
|
18
|
+
borderRadius,
|
|
20
19
|
display: "flex",
|
|
21
20
|
flexDirection: "column",
|
|
22
21
|
justifyContent: "space-between",
|
|
@@ -33,14 +32,14 @@ const MenuItemBox = styled(Box, {
|
|
|
33
32
|
"itemMenuColorSelected",
|
|
34
33
|
"typographyVariant",
|
|
35
34
|
].includes(prop),
|
|
36
|
-
})(({ theme, active, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorSelected, itemMenuBackgroundColorHover, itemMenuColor, itemMenuColorSelected, typographyVariant }) => (Object.assign(Object.assign({ cursor: "pointer", padding: "8px 16px", borderRadius: itemMenuBorderRadius, backgroundColor: active
|
|
35
|
+
})(({ theme, active, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorSelected, itemMenuBackgroundColorHover, itemMenuColor, itemMenuColorSelected, typographyVariant, }) => (Object.assign(Object.assign({ cursor: "pointer", padding: "8px 16px", borderRadius: itemMenuBorderRadius, backgroundColor: active
|
|
37
36
|
? itemMenuBackgroundColorSelected
|
|
38
37
|
: itemMenuBackgroundColor, color: active ? itemMenuColorSelected : itemMenuColor, width: "100%", transition: "all 0.2s ease", userSelect: "none" }, (typographyVariant && theme.typography[typographyVariant])), { "&:hover": {
|
|
39
38
|
backgroundColor: active
|
|
40
39
|
? itemMenuBackgroundColorSelected
|
|
41
40
|
: itemMenuBackgroundColorHover,
|
|
42
41
|
} })));
|
|
43
|
-
|
|
42
|
+
const SideNavContent = styled(Box, {
|
|
44
43
|
shouldForwardProp: (prop) => !["contentGap", "contentBackground", "borderRadius", "height"].includes(prop),
|
|
45
44
|
})(({ contentGap = 2, contentBackground = "transparent", borderRadius = 2, height = "100%", }) => ({
|
|
46
45
|
width: "auto",
|
|
@@ -48,38 +47,36 @@ export const SideNavContent = styled(Box, {
|
|
|
48
47
|
marginLeft: contentGap,
|
|
49
48
|
padding: 16,
|
|
50
49
|
backgroundColor: contentBackground,
|
|
51
|
-
borderRadius
|
|
50
|
+
borderRadius,
|
|
52
51
|
minHeight: height,
|
|
53
52
|
maxHeight: height,
|
|
54
53
|
position: "relative",
|
|
55
54
|
overflowY: "auto",
|
|
56
55
|
}));
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
* Agora suporta:
|
|
64
|
-
* - conteúdo no topo do menu (`renderTopMenu`)
|
|
65
|
-
* - conteúdo fixado na base do menu (`renderBottomMenu`)
|
|
66
|
-
*/
|
|
67
|
-
export default function SideNav({ items, menuWidth = 180, itemMenuBackgroundColorSemContent = "transparent", itemMenuColorSemContent = "black", itemMenuVariantSemContent = "body1", menuBackground = "transparent", borderRadius = "0", itemMenuBorderRadius = "16px", itemMenuBackgroundColor = "transparent", itemMenuBackgroundColorHover = "grey.300", itemMenuBackgroundColorSelected = "primary.main", itemMenuColor = "black", itemMenuColorSelected = "black", itemMenuVariant = "body1", contentBackground = "grey.50", renderTopMenu, renderBottomMenu, height = "500px", contentGap = 2, }) {
|
|
56
|
+
const getValidIndex = (index, itemsLength) => {
|
|
57
|
+
if (index >= 0 && index < itemsLength)
|
|
58
|
+
return index;
|
|
59
|
+
return 0;
|
|
60
|
+
};
|
|
61
|
+
export default function SideNav({ items, indexItemSelecionado = 0, menuWidth = 180, itemMenuBackgroundColorSemContent = "transparent", itemMenuColorSemContent = "black", itemMenuVariantSemContent = "body1", menuBackground = "transparent", borderRadius = "0", itemMenuBorderRadius = "16px", itemMenuBackgroundColor = "transparent", itemMenuBackgroundColorHover = "grey.300", itemMenuBackgroundColorSelected = "primary.main", itemMenuColor = "black", itemMenuColorSelected = "black", itemMenuVariant = "body1", contentBackground = "grey.50", renderTopMenu, renderBottomMenu, height = "500px", contentGap = 2, marginDivider = "8px 0", }) {
|
|
68
62
|
var _a;
|
|
69
|
-
const [activeIndex, setActiveIndex] = useState(0);
|
|
70
63
|
if (!items || items.length === 0) {
|
|
71
64
|
return null;
|
|
72
65
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
const [activeIndex, setActiveIndex] = useState(getValidIndex(indexItemSelecionado, items.length));
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
setActiveIndex(getValidIndex(indexItemSelecionado, items.length));
|
|
69
|
+
}, [indexItemSelecionado, items.length]);
|
|
70
|
+
return (_jsxs(Container, { children: [_jsxs(SideNavContainer, { height: height, menuWidth: menuWidth, menuBackground: menuBackground, borderRadius: borderRadius, children: [_jsxs(Box, { children: [renderTopMenu && _jsx(Box, { children: renderTopMenu }), _jsx(Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: items.map((item, idx) => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (!item.content) {
|
|
73
|
+
if (((_a = item.label) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === "DIVIDER") {
|
|
74
|
+
return (_jsx(Divider, { sx: { margin: marginDivider } }, `divider-${idx}`));
|
|
75
|
+
}
|
|
76
|
+
return (_jsx(MenuItemBox, { typographyVariant: itemMenuVariantSemContent, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColorSemContent, itemMenuColor: itemMenuColorSemContent, sx: { cursor: "default" }, children: item.label }, `${item.label}-${idx}`));
|
|
77
|
+
}
|
|
78
|
+
return (_jsx(MenuItemBox, { active: activeIndex === idx, typographyVariant: itemMenuVariant, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColor, itemMenuBackgroundColorHover: itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected: itemMenuBackgroundColorSelected, itemMenuColor: itemMenuColor, itemMenuColorSelected: itemMenuColorSelected, onClick: () => setActiveIndex(idx), children: item.label }, `${item.label}-${idx}`));
|
|
79
|
+
}) })] }), renderBottomMenu && (_jsx(Box, { sx: { mt: 2, pt: 2, flexShrink: 0 }, children: renderBottomMenu }))] }), _jsx(SideNavContent, { contentBackground: contentBackground, contentGap: contentGap, height: height, borderRadius: borderRadius, children: _jsx(AnimatePresence, { mode: "wait", children: _jsx(motion.div, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, style: { width: "100%" }, children: (_a = items[activeIndex]) === null || _a === void 0 ? void 0 : _a.content }, activeIndex) }) })] }));
|
|
83
80
|
}
|
|
84
81
|
SideNav.displayName = "SideNav";
|
|
85
82
|
//# sourceMappingURL=SideNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.js","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"SideNav.js","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA2BxD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM;IACf,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,CAAC;CACX,CAAC,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC,QAAQ,CACjE,IAAc,CACf;CACJ,CAAC,CAKC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,cAAc;IAC/B,YAAY;IACZ,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,eAAe;IAC/B,QAAQ,EAAE,QAAQ;CACnB,CAAC,CAAC,CAAC;AAEJ,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE;IAC9B,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,CAAC;QACC,QAAQ;QACR,sBAAsB;QACtB,yBAAyB;QACzB,iCAAiC;QACjC,8BAA8B;QAC9B,eAAe;QACf,uBAAuB;QACvB,mBAAmB;KACpB,CAAC,QAAQ,CAAC,IAAc,CAAC;CAC7B,CAAC,CAUA,CAAC,EACC,KAAK,EACL,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,EAC5B,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,EAAE,EAAE,CAAC,+BACJ,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,oBAAoB,EAClC,eAAe,EAAE,MAAM;QACrB,CAAC,CAAC,+BAA+B;QACjC,CAAC,CAAC,uBAAuB,EAC3B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,EACrD,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,IACf,CAAC,iBAAiB,IAAI,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,KAE7D,SAAS,EAAE;QACT,eAAe,EAAE,MAAM;YACrB,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,4BAA4B;KACjC,IACD,CACH,CAAC;AAEF,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,EAAE;IACjC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,CAAC,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,QAAQ,CACrE,IAAc,CACf;CACJ,CAAC,CAMA,CAAC,EACC,UAAU,GAAG,CAAC,EACd,iBAAiB,GAAG,aAAa,EACjC,YAAY,GAAG,CAAC,EAChB,MAAM,GAAG,MAAM,GAChB,EAAE,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,EAAE;IACX,eAAe,EAAE,iBAAiB;IAClC,YAAY;IACZ,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,MAAM;CAClB,CAAC,CACH,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,WAAmB,EAAE,EAAE;IAC3D,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,WAAW;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,KAAK,EACL,oBAAoB,GAAG,CAAC,EACxB,SAAS,GAAG,GAAG,EACf,iCAAiC,GAAG,aAAa,EACjD,uBAAuB,GAAG,OAAO,EACjC,yBAAyB,GAAG,OAAO,EACnC,cAAc,GAAG,aAAa,EAC9B,YAAY,GAAG,GAAG,EAClB,oBAAoB,GAAG,MAAM,EAC7B,uBAAuB,GAAG,aAAa,EACvC,4BAA4B,GAAG,UAAU,EACzC,+BAA+B,GAAG,cAAc,EAChD,aAAa,GAAG,OAAO,EACvB,qBAAqB,GAAG,OAAO,EAC/B,eAAe,GAAG,OAAO,EACzB,iBAAiB,GAAG,SAAS,EAC7B,aAAa,EACb,gBAAgB,EAChB,MAAM,GAAG,OAAO,EAChB,UAAU,GAAG,CAAC,EACd,aAAa,GAAG,OAAO,GACV;;IACb,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC5C,aAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAClD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,aAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzC,OAAO,CACL,MAAC,SAAS,eACR,MAAC,gBAAgB,IACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,aAE1B,MAAC,GAAG,eACD,aAAa,IAAI,KAAC,GAAG,cAAE,aAAa,GAAO,EAE5C,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,YAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;;oCACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;wCAClB,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,MAAK,SAAS,EAAE,CAAC;4CAC5C,OAAO,CACL,KAAC,OAAO,IAEN,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,IADxB,WAAW,GAAG,EAAE,CAErB,CACH,CAAC;wCACJ,CAAC;wCAED,OAAO,CACL,KAAC,WAAW,IAEV,iBAAiB,EAAE,yBAAyB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,uBAAuB,EAAE,iCAAiC,EAC1D,aAAa,EAAE,uBAAuB,EACtC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAExB,IAAI,CAAC,KAAK,IAPN,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAQf,CACf,CAAC;oCACJ,CAAC;oCAED,OAAO,CACL,KAAC,WAAW,IAEV,MAAM,EAAE,WAAW,KAAK,GAAG,EAC3B,iBAAiB,EAAE,eAAe,EAClC,oBAAoB,EAAE,oBAAoB,EAC1C,uBAAuB,EAAE,uBAAuB,EAChD,4BAA4B,EAAE,4BAA4B,EAC1D,+BAA+B,EAC7B,+BAA+B,EAEjC,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB,EAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,YAEjC,IAAI,CAAC,KAAK,IAbN,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAcf,CACf,CAAC;gCACJ,CAAC,CAAC,GACE,IACF,EAEL,gBAAgB,IAAI,CACnB,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YACrC,gBAAgB,GACb,CACP,IACgB,EAEnB,KAAC,cAAc,IACb,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,YAE1B,KAAC,eAAe,IAAC,IAAI,EAAC,MAAM,YAC1B,KAAC,MAAM,CAAC,GAAG,IAET,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAC9B,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAC7B,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAC5B,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAEvB,MAAA,KAAK,CAAC,WAAW,CAAC,0CAAE,OAAO,IAPvB,WAAW,CAQL,GACG,GACH,IACP,CACb,CAAC;AACJ,CAAC;AAED,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC"}
|