@gemx-dev/heatmap-react 3.5.57 → 3.5.58
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/esm/components/VizScrollmap/VizScrollMap.d.ts.map +1 -1
- package/dist/esm/hooks/view-context/useHeatmapViz.d.ts +2 -26
- package/dist/esm/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
- package/dist/esm/hooks/viz-scale/useScaleCalculation.d.ts.map +1 -1
- package/dist/esm/index.js +22 -11
- package/dist/esm/index.mjs +22 -11
- package/dist/umd/components/VizScrollmap/VizScrollMap.d.ts.map +1 -1
- package/dist/umd/hooks/view-context/useHeatmapViz.d.ts +2 -26
- package/dist/umd/hooks/view-context/useHeatmapViz.d.ts.map +1 -1
- package/dist/umd/hooks/viz-scale/useScaleCalculation.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VizScrollMap.d.ts","sourceRoot":"","sources":["../../../src/components/VizScrollmap/VizScrollMap.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC1C;AAGD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"VizScrollMap.d.ts","sourceRoot":"","sources":["../../../src/components/VizScrollmap/VizScrollMap.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC1C;AAGD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyBpD,CAAC"}
|
|
@@ -30,36 +30,12 @@ export type IHeatmapVizResult = IHeatmapVizState & IHeatmapVizActions;
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export declare const useHeatmapViz: {
|
|
33
|
-
<T>(selector: (state: {
|
|
34
|
-
isRenderViz: boolean;
|
|
35
|
-
zoomRatio: number;
|
|
36
|
-
minZoomRatio: number;
|
|
37
|
-
widthScale: number;
|
|
38
|
-
isScaledToFit: boolean;
|
|
39
|
-
} & {
|
|
40
|
-
setIsRenderViz: (value: boolean) => void;
|
|
41
|
-
setZoomRatio: (value: number) => void;
|
|
42
|
-
setMinZoomRatio: (value: number) => void;
|
|
43
|
-
setScale: (value: number) => void;
|
|
44
|
-
setIsScaledToFit: (value: boolean) => void;
|
|
45
|
-
}) => T, props?: {
|
|
33
|
+
<T>(selector: (state: IHeatmapVizState & IHeatmapVizActions) => T, props?: {
|
|
46
34
|
viewId?: string;
|
|
47
35
|
} | undefined): T;
|
|
48
36
|
(props?: {
|
|
49
37
|
viewId?: string;
|
|
50
|
-
} | undefined):
|
|
51
|
-
isRenderViz: boolean;
|
|
52
|
-
zoomRatio: number;
|
|
53
|
-
minZoomRatio: number;
|
|
54
|
-
widthScale: number;
|
|
55
|
-
isScaledToFit: boolean;
|
|
56
|
-
} & {
|
|
57
|
-
setIsRenderViz: (value: boolean) => void;
|
|
58
|
-
setZoomRatio: (value: number) => void;
|
|
59
|
-
setMinZoomRatio: (value: number) => void;
|
|
60
|
-
setScale: (value: number) => void;
|
|
61
|
-
setIsScaledToFit: (value: boolean) => void;
|
|
62
|
-
};
|
|
38
|
+
} | undefined): IHeatmapVizState & IHeatmapVizActions;
|
|
63
39
|
};
|
|
64
40
|
export {};
|
|
65
41
|
//# sourceMappingURL=useHeatmapViz.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHeatmapViz.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapViz.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useHeatmapViz.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapViz.ts"],"names":[],"mappings":"AASA,UAAU,gBAAgB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAMtE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa;;;;;;;CAkBxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScaleCalculation.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-scale/useScaleCalculation.ts"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"useScaleCalculation.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-scale/useScaleCalculation.ts"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,eAAO,MAAM,mBAAmB,GAAI,OAAO,yBAAyB,KAAG,0BA0DtE,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -6566,6 +6566,8 @@ const useObserveIframeHeight = (props) => {
|
|
|
6566
6566
|
return {};
|
|
6567
6567
|
};
|
|
6568
6568
|
|
|
6569
|
+
// Max zoom ratio constant: 100% = fit to width
|
|
6570
|
+
const MAX_ZOOM_RATIO = 100;
|
|
6569
6571
|
const useScaleCalculation = (props) => {
|
|
6570
6572
|
const widthScale = useHeatmapViz((s) => s.widthScale);
|
|
6571
6573
|
const zoomRatio = useHeatmapViz((s) => s.zoomRatio);
|
|
@@ -6577,23 +6579,31 @@ const useScaleCalculation = (props) => {
|
|
|
6577
6579
|
const { containerWidth, containerHeight, contentWidth, contentHeight } = props;
|
|
6578
6580
|
const calculateScaleResult = useCallback(() => {
|
|
6579
6581
|
if (containerWidth > 0 && contentWidth > 0 && containerHeight > 0 && contentHeight > 0) {
|
|
6580
|
-
// 1. Calculate
|
|
6582
|
+
// 1. Calculate available dimensions
|
|
6581
6583
|
const availableWidth = containerWidth - HEATMAP_CONFIG['padding'] * 2;
|
|
6582
|
-
const widthScale = Math.min(availableWidth / contentWidth, 1);
|
|
6583
|
-
// 2. Calculate available height
|
|
6584
6584
|
const toolbarHeight = HEATMAP_CONFIG['heightToolbar'] || 0;
|
|
6585
6585
|
const paddingTotal = HEATMAP_CONFIG['padding'] * 2;
|
|
6586
|
-
const availableHeight = containerHeight - toolbarHeight - paddingTotal;
|
|
6587
|
-
//
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
//
|
|
6592
|
-
|
|
6586
|
+
const availableHeight = containerHeight - toolbarHeight - paddingTotal;
|
|
6587
|
+
// 2. Calculate widthScale (base scale to fit content width into container width)
|
|
6588
|
+
// This represents 100% zoom (fit to width)
|
|
6589
|
+
const widthScale = Math.min(availableWidth / contentWidth, 1);
|
|
6590
|
+
// 3. Calculate minZoomRatio (zoom ratio to fit height)
|
|
6591
|
+
// At minZoomRatio, the content should fit entirely within the container height
|
|
6592
|
+
// Formula: contentHeight * widthScale * (minZoomRatio / 100) = availableHeight
|
|
6593
|
+
// => minZoomRatio = (availableHeight / (contentHeight * widthScale)) * 100
|
|
6594
|
+
const calculatedMinZoomRatio = (availableHeight / (contentHeight * widthScale)) * 100;
|
|
6595
|
+
// Limit minZoomRatio: cannot exceed MAX_ZOOM_RATIO (100%)
|
|
6596
|
+
// and should have a reasonable minimum (e.g., 1%)
|
|
6597
|
+
const finalMinZoomRatio = Math.max(1, Math.min(calculatedMinZoomRatio, MAX_ZOOM_RATIO));
|
|
6598
|
+
// 4. Apply zoom ratio (clamp between min and max)
|
|
6599
|
+
const clampedZoomRatio = Math.max(finalMinZoomRatio, Math.min(zoomRatio, MAX_ZOOM_RATIO));
|
|
6593
6600
|
const zoomMultiplier = clampedZoomRatio / 100;
|
|
6594
6601
|
// 5. Calculate finalScale
|
|
6602
|
+
// finalScale = widthScale * zoomMultiplier
|
|
6603
|
+
// At 100% zoom: finalScale = widthScale (content fits container width)
|
|
6604
|
+
// At minZoomRatio: finalScale fits content entirely in container
|
|
6595
6605
|
const finalScale = widthScale * zoomMultiplier;
|
|
6596
|
-
// 6. Check if it is currently fitted
|
|
6606
|
+
// 6. Check if it is currently fitted (at minimum zoom)
|
|
6597
6607
|
const isCurrentlyFitted = zoomRatio <= finalMinZoomRatio;
|
|
6598
6608
|
// 7. Update store
|
|
6599
6609
|
setScale(finalScale);
|
|
@@ -8353,6 +8363,7 @@ const VizScrollMap = ({ iframeRef, wrapperRef }) => {
|
|
|
8353
8363
|
width: `calc(100% - 4px)`,
|
|
8354
8364
|
height: '100%',
|
|
8355
8365
|
transform: 'translateZ(0)',
|
|
8366
|
+
zIndex: 2,
|
|
8356
8367
|
}, children: [jsx(ScrollmapMarker, { iframeRef: iframeRef, wrapperRef: wrapperRef }), jsx(AverageFoldLine, { iframeRef: iframeRef, wrapperRef: wrapperRef }), jsx(ScrollMapOverlay, { wrapperRef: wrapperRef, iframeRef: iframeRef })] }));
|
|
8357
8368
|
};
|
|
8358
8369
|
|
package/dist/esm/index.mjs
CHANGED
|
@@ -6566,6 +6566,8 @@ const useObserveIframeHeight = (props) => {
|
|
|
6566
6566
|
return {};
|
|
6567
6567
|
};
|
|
6568
6568
|
|
|
6569
|
+
// Max zoom ratio constant: 100% = fit to width
|
|
6570
|
+
const MAX_ZOOM_RATIO = 100;
|
|
6569
6571
|
const useScaleCalculation = (props) => {
|
|
6570
6572
|
const widthScale = useHeatmapViz((s) => s.widthScale);
|
|
6571
6573
|
const zoomRatio = useHeatmapViz((s) => s.zoomRatio);
|
|
@@ -6577,23 +6579,31 @@ const useScaleCalculation = (props) => {
|
|
|
6577
6579
|
const { containerWidth, containerHeight, contentWidth, contentHeight } = props;
|
|
6578
6580
|
const calculateScaleResult = useCallback(() => {
|
|
6579
6581
|
if (containerWidth > 0 && contentWidth > 0 && containerHeight > 0 && contentHeight > 0) {
|
|
6580
|
-
// 1. Calculate
|
|
6582
|
+
// 1. Calculate available dimensions
|
|
6581
6583
|
const availableWidth = containerWidth - HEATMAP_CONFIG['padding'] * 2;
|
|
6582
|
-
const widthScale = Math.min(availableWidth / contentWidth, 1);
|
|
6583
|
-
// 2. Calculate available height
|
|
6584
6584
|
const toolbarHeight = HEATMAP_CONFIG['heightToolbar'] || 0;
|
|
6585
6585
|
const paddingTotal = HEATMAP_CONFIG['padding'] * 2;
|
|
6586
|
-
const availableHeight = containerHeight - toolbarHeight - paddingTotal;
|
|
6587
|
-
//
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
//
|
|
6592
|
-
|
|
6586
|
+
const availableHeight = containerHeight - toolbarHeight - paddingTotal;
|
|
6587
|
+
// 2. Calculate widthScale (base scale to fit content width into container width)
|
|
6588
|
+
// This represents 100% zoom (fit to width)
|
|
6589
|
+
const widthScale = Math.min(availableWidth / contentWidth, 1);
|
|
6590
|
+
// 3. Calculate minZoomRatio (zoom ratio to fit height)
|
|
6591
|
+
// At minZoomRatio, the content should fit entirely within the container height
|
|
6592
|
+
// Formula: contentHeight * widthScale * (minZoomRatio / 100) = availableHeight
|
|
6593
|
+
// => minZoomRatio = (availableHeight / (contentHeight * widthScale)) * 100
|
|
6594
|
+
const calculatedMinZoomRatio = (availableHeight / (contentHeight * widthScale)) * 100;
|
|
6595
|
+
// Limit minZoomRatio: cannot exceed MAX_ZOOM_RATIO (100%)
|
|
6596
|
+
// and should have a reasonable minimum (e.g., 1%)
|
|
6597
|
+
const finalMinZoomRatio = Math.max(1, Math.min(calculatedMinZoomRatio, MAX_ZOOM_RATIO));
|
|
6598
|
+
// 4. Apply zoom ratio (clamp between min and max)
|
|
6599
|
+
const clampedZoomRatio = Math.max(finalMinZoomRatio, Math.min(zoomRatio, MAX_ZOOM_RATIO));
|
|
6593
6600
|
const zoomMultiplier = clampedZoomRatio / 100;
|
|
6594
6601
|
// 5. Calculate finalScale
|
|
6602
|
+
// finalScale = widthScale * zoomMultiplier
|
|
6603
|
+
// At 100% zoom: finalScale = widthScale (content fits container width)
|
|
6604
|
+
// At minZoomRatio: finalScale fits content entirely in container
|
|
6595
6605
|
const finalScale = widthScale * zoomMultiplier;
|
|
6596
|
-
// 6. Check if it is currently fitted
|
|
6606
|
+
// 6. Check if it is currently fitted (at minimum zoom)
|
|
6597
6607
|
const isCurrentlyFitted = zoomRatio <= finalMinZoomRatio;
|
|
6598
6608
|
// 7. Update store
|
|
6599
6609
|
setScale(finalScale);
|
|
@@ -8353,6 +8363,7 @@ const VizScrollMap = ({ iframeRef, wrapperRef }) => {
|
|
|
8353
8363
|
width: `calc(100% - 4px)`,
|
|
8354
8364
|
height: '100%',
|
|
8355
8365
|
transform: 'translateZ(0)',
|
|
8366
|
+
zIndex: 2,
|
|
8356
8367
|
}, children: [jsx(ScrollmapMarker, { iframeRef: iframeRef, wrapperRef: wrapperRef }), jsx(AverageFoldLine, { iframeRef: iframeRef, wrapperRef: wrapperRef }), jsx(ScrollMapOverlay, { wrapperRef: wrapperRef, iframeRef: iframeRef })] }));
|
|
8357
8368
|
};
|
|
8358
8369
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VizScrollMap.d.ts","sourceRoot":"","sources":["../../../src/components/VizScrollmap/VizScrollMap.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC1C;AAGD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"VizScrollMap.d.ts","sourceRoot":"","sources":["../../../src/components/VizScrollmap/VizScrollMap.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC1C;AAGD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyBpD,CAAC"}
|
|
@@ -30,36 +30,12 @@ export type IHeatmapVizResult = IHeatmapVizState & IHeatmapVizActions;
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export declare const useHeatmapViz: {
|
|
33
|
-
<T>(selector: (state: {
|
|
34
|
-
isRenderViz: boolean;
|
|
35
|
-
zoomRatio: number;
|
|
36
|
-
minZoomRatio: number;
|
|
37
|
-
widthScale: number;
|
|
38
|
-
isScaledToFit: boolean;
|
|
39
|
-
} & {
|
|
40
|
-
setIsRenderViz: (value: boolean) => void;
|
|
41
|
-
setZoomRatio: (value: number) => void;
|
|
42
|
-
setMinZoomRatio: (value: number) => void;
|
|
43
|
-
setScale: (value: number) => void;
|
|
44
|
-
setIsScaledToFit: (value: boolean) => void;
|
|
45
|
-
}) => T, props?: {
|
|
33
|
+
<T>(selector: (state: IHeatmapVizState & IHeatmapVizActions) => T, props?: {
|
|
46
34
|
viewId?: string;
|
|
47
35
|
} | undefined): T;
|
|
48
36
|
(props?: {
|
|
49
37
|
viewId?: string;
|
|
50
|
-
} | undefined):
|
|
51
|
-
isRenderViz: boolean;
|
|
52
|
-
zoomRatio: number;
|
|
53
|
-
minZoomRatio: number;
|
|
54
|
-
widthScale: number;
|
|
55
|
-
isScaledToFit: boolean;
|
|
56
|
-
} & {
|
|
57
|
-
setIsRenderViz: (value: boolean) => void;
|
|
58
|
-
setZoomRatio: (value: number) => void;
|
|
59
|
-
setMinZoomRatio: (value: number) => void;
|
|
60
|
-
setScale: (value: number) => void;
|
|
61
|
-
setIsScaledToFit: (value: boolean) => void;
|
|
62
|
-
};
|
|
38
|
+
} | undefined): IHeatmapVizState & IHeatmapVizActions;
|
|
63
39
|
};
|
|
64
40
|
export {};
|
|
65
41
|
//# sourceMappingURL=useHeatmapViz.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHeatmapViz.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapViz.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useHeatmapViz.d.ts","sourceRoot":"","sources":["../../../src/hooks/view-context/useHeatmapViz.ts"],"names":[],"mappings":"AASA,UAAU,gBAAgB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAMtE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa;;;;;;;CAkBxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScaleCalculation.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-scale/useScaleCalculation.ts"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"useScaleCalculation.d.ts","sourceRoot":"","sources":["../../../src/hooks/viz-scale/useScaleCalculation.ts"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,eAAO,MAAM,mBAAmB,GAAI,OAAO,yBAAyB,KAAG,0BA0DtE,CAAC"}
|