@powered-by-array/ui 1.84.0 → 1.85.0
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/dist/components/SideSheet/SideSheet.d.ts +6 -4
- package/dist/components/SideSheet/SideSheet.d.ts.map +1 -1
- package/dist/components/SideSheet/SideSheet.js +13 -6
- package/dist/components/SideSheet/SideSheet.js.map +1 -1
- package/dist/components/SideSheet/SideSheet.variants.d.ts +4 -1
- package/dist/components/SideSheet/SideSheet.variants.d.ts.map +1 -1
- package/dist/components/SideSheet/SideSheet.variants.js +9 -1
- package/dist/components/SideSheet/SideSheet.variants.js.map +1 -1
- package/dist/components/SideSheet/hooks/useSideSheetResize.d.ts +14 -0
- package/dist/components/SideSheet/hooks/useSideSheetResize.d.ts.map +1 -0
- package/dist/components/SideSheet/hooks/useSideSheetResize.js +52 -0
- package/dist/components/SideSheet/hooks/useSideSheetResize.js.map +1 -0
- package/package.json +1 -1
|
@@ -9,10 +9,12 @@ import { SideSheetHeader } from "./SideSheetHeader/index.js";
|
|
|
9
9
|
* provided (omit it to hide the close button). With a `SideSheet.Header` it
|
|
10
10
|
* lives in its own column on the right of the header, so header content can
|
|
11
11
|
* never overlap it. Without a header it lives at the top-right of the scrollable
|
|
12
|
-
* `SideSheet.Content` and scrolls away with it. The panel
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* `SideSheet.Content` and scrolls away with it. The panel opens to a width
|
|
13
|
+
* selected by the `size` prop (`default` = 34% of the screen, `wide` = 40%) and
|
|
14
|
+
* can then be resized by dragging the handle on its left edge (clamped between
|
|
15
|
+
* 25% and 60% of the viewport); the dragged width persists while the panel
|
|
16
|
+
* stays mounted. The consuming app supplies the portal slot and "push" padding —
|
|
17
|
+
* this component is only the visual panel.
|
|
16
18
|
*/
|
|
17
19
|
declare function SideSheet({ isOpen, children, title, onClose, size }: SideSheetProps): import("react/jsx-runtime").JSX.Element;
|
|
18
20
|
declare namespace SideSheet {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.d.ts","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SideSheet.d.ts","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D;;;;;;;;;;;;;GAaG;AACH,iBAAS,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAgB,EAAE,EAAE,cAAc,2CAuCxF;kBAvCQ,SAAS;;;;;AA6ClB,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { cn } from "../../lib/cn.js";
|
|
5
5
|
import { sideSheetOpenWidth, sideSheetSlotVariants as sv } from "./SideSheet.variants.js";
|
|
@@ -7,6 +7,7 @@ import { SideSheetContent } from "./SideSheetContent/index.js";
|
|
|
7
7
|
import { SideSheetContext } from "./SideSheetContext.js";
|
|
8
8
|
import { SideSheetFooter } from "./SideSheetFooter/index.js";
|
|
9
9
|
import { SideSheetHeader } from "./SideSheetHeader/index.js";
|
|
10
|
+
import { useSideSheetResize } from "./hooks/useSideSheetResize.js";
|
|
10
11
|
/**
|
|
11
12
|
* Docked side sheet for master-detail layouts.
|
|
12
13
|
*
|
|
@@ -14,15 +15,21 @@ import { SideSheetHeader } from "./SideSheetHeader/index.js";
|
|
|
14
15
|
* provided (omit it to hide the close button). With a `SideSheet.Header` it
|
|
15
16
|
* lives in its own column on the right of the header, so header content can
|
|
16
17
|
* never overlap it. Without a header it lives at the top-right of the scrollable
|
|
17
|
-
* `SideSheet.Content` and scrolls away with it. The panel
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* `SideSheet.Content` and scrolls away with it. The panel opens to a width
|
|
19
|
+
* selected by the `size` prop (`default` = 34% of the screen, `wide` = 40%) and
|
|
20
|
+
* can then be resized by dragging the handle on its left edge (clamped between
|
|
21
|
+
* 25% and 60% of the viewport); the dragged width persists while the panel
|
|
22
|
+
* stays mounted. The consuming app supplies the portal slot and "push" padding —
|
|
23
|
+
* this component is only the visual panel.
|
|
21
24
|
*/
|
|
22
25
|
function SideSheet({ isOpen, children, title, onClose, size = "default" }) {
|
|
23
26
|
const hasHeader = React.Children.toArray(children).some((child) => React.isValidElement(child) && child.type === SideSheetHeader);
|
|
24
27
|
const openWidth = sideSheetOpenWidth[size];
|
|
25
|
-
|
|
28
|
+
const resize = useSideSheetResize();
|
|
29
|
+
return (_jsx(SideSheetContext.Provider, { value: { onClose, hasHeader }, children: _jsx("div", { ref: resize.panelRef, "data-slot": "side-sheet", className: cn(sv.root), style: {
|
|
30
|
+
width: isOpen ? (resize.width ?? openWidth) : "0px",
|
|
31
|
+
transition: resize.isResizing ? "none" : undefined,
|
|
32
|
+
}, "aria-hidden": !isOpen, "aria-label": title, children: isOpen && (_jsxs(_Fragment, { children: [_jsx("div", { "data-slot": "side-sheet-body", className: cn(sv.body), children: children }), _jsx("div", { "data-slot": "side-sheet-resize-handle", role: "separator", "aria-orientation": "vertical", "aria-label": "Resize side sheet", className: cn(sv.resizeHandle), ...resize.handleProps })] })) }) }));
|
|
26
33
|
}
|
|
27
34
|
SideSheet.Header = SideSheetHeader;
|
|
28
35
|
SideSheet.Content = SideSheetContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.js","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,IAAI,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SideSheet.js","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,IAAI,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE;;;;;;;;;;;;;GAaG;AACH,SAAS,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,EAAkB;IACvF,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CACzE,CAAC;IAEF,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,YACtD,cACE,GAAG,EAAE,MAAM,CAAC,QAAQ,eACV,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EACtB,KAAK,EAAE;gBACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;gBACnD,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aACnD,iBACY,CAAC,MAAM,gBACR,KAAK,YAEhB,MAAM,IAAI,CACT,8BACE,2BAAe,iBAAiB,EAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YACpD,QAAQ,GACL,EACN,2BACY,0BAA0B,EACpC,IAAI,EAAC,WAAW,sBACC,UAAU,gBAChB,mBAAmB,EAC9B,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAC1B,MAAM,CAAC,WAAW,GACtB,IACD,CACJ,GACG,GACoB,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AACnC,SAAS,CAAC,OAAO,GAAG,gBAAgB,CAAC;AACrC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { SideSheetSize } from "./SideSheet.types.js";
|
|
2
2
|
export declare const sideSheetSlotVariants: {
|
|
3
|
-
readonly root: readonly ["flex h-full shrink-0 flex-col overflow-hidden", "bg-[var(--color-semantic-side-sheet-bg)]", "transition-[width] duration-300 ease-out"];
|
|
3
|
+
readonly root: readonly ["relative flex h-full shrink-0 flex-col overflow-hidden", "bg-[var(--color-semantic-side-sheet-bg)]", "transition-[width] duration-300 ease-out"];
|
|
4
4
|
readonly body: "relative flex h-full min-h-0 flex-col overflow-hidden";
|
|
5
|
+
readonly resizeHandle: readonly ["absolute inset-y-0 left-0 z-20 w-[6px]", "cursor-col-resize touch-none select-none", "bg-transparent hover:bg-[var(--color-semantic-side-sheet-border)]", "transition-colors"];
|
|
5
6
|
};
|
|
6
7
|
/** Open width per `size`, as a share of the viewport. */
|
|
7
8
|
export declare const sideSheetOpenWidth: Record<SideSheetSize, string>;
|
|
9
|
+
export declare const sideSheetMinWidth = "25vw";
|
|
10
|
+
export declare const sideSheetMaxWidth = "60vw";
|
|
8
11
|
//# sourceMappingURL=SideSheet.variants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.variants.d.ts","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"SideSheet.variants.d.ts","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;CAaxB,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAG5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,SAAS,CAAC"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
export const sideSheetSlotVariants = {
|
|
2
2
|
root: [
|
|
3
|
-
"flex h-full shrink-0 flex-col overflow-hidden",
|
|
3
|
+
"relative flex h-full shrink-0 flex-col overflow-hidden",
|
|
4
4
|
"bg-[var(--color-semantic-side-sheet-bg)]",
|
|
5
5
|
"transition-[width] duration-300 ease-out",
|
|
6
6
|
],
|
|
7
7
|
body: "relative flex h-full min-h-0 flex-col overflow-hidden",
|
|
8
|
+
resizeHandle: [
|
|
9
|
+
"absolute inset-y-0 left-0 z-20 w-[6px]",
|
|
10
|
+
"cursor-col-resize touch-none select-none",
|
|
11
|
+
"bg-transparent hover:bg-[var(--color-semantic-side-sheet-border)]",
|
|
12
|
+
"transition-colors",
|
|
13
|
+
],
|
|
8
14
|
};
|
|
9
15
|
/** Open width per `size`, as a share of the viewport. */
|
|
10
16
|
export const sideSheetOpenWidth = {
|
|
11
17
|
default: "34vw",
|
|
12
18
|
wide: "40vw",
|
|
13
19
|
};
|
|
20
|
+
export const sideSheetMinWidth = "25vw";
|
|
21
|
+
export const sideSheetMaxWidth = "60vw";
|
|
14
22
|
//# sourceMappingURL=SideSheet.variants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.variants.js","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.variants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE;QACJ
|
|
1
|
+
{"version":3,"file":"SideSheet.variants.js","sourceRoot":"","sources":["../../../src/components/SideSheet/SideSheet.variants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE;QACJ,wDAAwD;QACxD,0CAA0C;QAC1C,0CAA0C;KAC3C;IACD,IAAI,EAAE,uDAAuD;IAC7D,YAAY,EAAE;QACZ,wCAAwC;QACxC,0CAA0C;QAC1C,mEAAmE;QACnE,mBAAmB;KACpB;CACO,CAAC;AAEX,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface UseSideSheetResizeResult {
|
|
3
|
+
panelRef: React.RefObject<HTMLDivElement | null>;
|
|
4
|
+
width: string | null;
|
|
5
|
+
isResizing: boolean;
|
|
6
|
+
handleProps: {
|
|
7
|
+
onPointerDown: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
8
|
+
onPointerMove: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
9
|
+
onPointerUp: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
10
|
+
onPointerCancel: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function useSideSheetResize(): UseSideSheetResizeResult;
|
|
14
|
+
//# sourceMappingURL=useSideSheetResize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSideSheetResize.d.ts","sourceRoot":"","sources":["../../../../src/components/SideSheet/hooks/useSideSheetResize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE;QACX,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;QACnE,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;QACnE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;QACjE,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;KACtE,CAAC;CACH;AAED,wBAAgB,kBAAkB,IAAI,wBAAwB,CAyC7D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { sideSheetMaxWidth, sideSheetMinWidth } from "../SideSheet.variants.js";
|
|
3
|
+
function vwToPx(vw) {
|
|
4
|
+
return (vw / 100) * window.innerWidth;
|
|
5
|
+
}
|
|
6
|
+
function clampWidth(px) {
|
|
7
|
+
const min = vwToPx(Number.parseFloat(sideSheetMinWidth));
|
|
8
|
+
const max = vwToPx(Number.parseFloat(sideSheetMaxWidth));
|
|
9
|
+
return Math.min(Math.max(px, min), max);
|
|
10
|
+
}
|
|
11
|
+
export function useSideSheetResize() {
|
|
12
|
+
const panelRef = React.useRef(null);
|
|
13
|
+
const dragRef = React.useRef(null);
|
|
14
|
+
const [widthPx, setWidthPx] = React.useState(null);
|
|
15
|
+
const [isResizing, setIsResizing] = React.useState(false);
|
|
16
|
+
const onPointerDown = (event) => {
|
|
17
|
+
const panel = panelRef.current;
|
|
18
|
+
if (!panel)
|
|
19
|
+
return;
|
|
20
|
+
event.preventDefault();
|
|
21
|
+
event.currentTarget.setPointerCapture?.(event.pointerId);
|
|
22
|
+
dragRef.current = { startX: event.clientX, startWidth: panel.getBoundingClientRect().width };
|
|
23
|
+
setIsResizing(true);
|
|
24
|
+
};
|
|
25
|
+
const onPointerMove = (event) => {
|
|
26
|
+
const drag = dragRef.current;
|
|
27
|
+
if (!drag)
|
|
28
|
+
return;
|
|
29
|
+
setWidthPx(clampWidth(drag.startWidth + (drag.startX - event.clientX)));
|
|
30
|
+
};
|
|
31
|
+
const endResize = (event) => {
|
|
32
|
+
if (!dragRef.current)
|
|
33
|
+
return;
|
|
34
|
+
dragRef.current = null;
|
|
35
|
+
setIsResizing(false);
|
|
36
|
+
if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {
|
|
37
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
panelRef,
|
|
42
|
+
width: widthPx === null ? null : `${widthPx}px`,
|
|
43
|
+
isResizing,
|
|
44
|
+
handleProps: {
|
|
45
|
+
onPointerDown,
|
|
46
|
+
onPointerMove,
|
|
47
|
+
onPointerUp: endResize,
|
|
48
|
+
onPointerCancel: endResize,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=useSideSheetResize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSideSheetResize.js","sourceRoot":"","sources":["../../../../src/components/SideSheet/hooks/useSideSheetResize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,SAAS,MAAM,CAAC,EAAU;IACxB,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC;AAcD,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAgD,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,CAAC,KAAyC,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7F,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAyC,EAAE,EAAE;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAyC,EAAE,EAAE;QAC9D,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAC7B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI;QAC/C,UAAU;QACV,WAAW,EAAE;YACX,aAAa;YACb,aAAa;YACb,WAAW,EAAE,SAAS;YACtB,eAAe,EAAE,SAAS;SAC3B;KACF,CAAC;AACJ,CAAC"}
|