avada-components-seoon 2.0.1 → 2.1.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/CrossAppBanner/BannerCard.d.ts +5 -0
- package/dist/components/CrossAppBanner/BannerCard.d.ts.map +1 -1
- package/dist/components/CrossAppBanner/BannerCard.js +7 -2
- package/dist/components/CrossAppBanner/BannerCard.js.map +1 -1
- package/dist/components/CrossAppBanner/BannerCarousel.d.ts +23 -0
- package/dist/components/CrossAppBanner/BannerCarousel.d.ts.map +1 -0
- package/dist/components/CrossAppBanner/BannerCarousel.js +30 -0
- package/dist/components/CrossAppBanner/BannerCarousel.js.map +1 -0
- package/dist/components/CrossAppBanner/helpers.d.ts +6 -0
- package/dist/components/CrossAppBanner/helpers.d.ts.map +1 -1
- package/dist/components/CrossAppBanner/helpers.js +12 -0
- package/dist/components/CrossAppBanner/helpers.js.map +1 -1
- package/dist/components/CrossAppBanner/index.d.ts.map +1 -1
- package/dist/components/CrossAppBanner/index.js +29 -3
- package/dist/components/CrossAppBanner/index.js.map +1 -1
- package/dist/components/CrossAppBanner/index.scss +84 -0
- package/dist/components/CrossAppBanner/types.d.ts +8 -0
- package/dist/components/CrossAppBanner/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -9,5 +9,10 @@ export interface BannerCardProps {
|
|
|
9
9
|
onInstallClick?: () => void;
|
|
10
10
|
locale?: string;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* The card without its own AppProvider, so a caller rendering several of them
|
|
14
|
+
* (BannerCarousel) can wrap the whole set in a single provider.
|
|
15
|
+
*/
|
|
16
|
+
export declare const BannerCardContent: React.FC<BannerCardProps>;
|
|
12
17
|
export declare const BannerCard: React.FC<BannerCardProps>;
|
|
13
18
|
//# sourceMappingURL=BannerCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerCard.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,aAAa,EAA0B,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"BannerCard.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,aAAa,EAA0B,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoCvD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAIhD,CAAC"}
|
|
@@ -4,12 +4,17 @@ import { XIcon } from '@shopify/polaris-icons';
|
|
|
4
4
|
import { v4 as uuidV4 } from 'uuid';
|
|
5
5
|
import { getUTMParams } from '../../helpers/getProxyEndPoint';
|
|
6
6
|
import { resolveLocalizedString } from '../../hooks/useFetchBannerData';
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* The card without its own AppProvider, so a caller rendering several of them
|
|
9
|
+
* (BannerCarousel) can wrap the whole set in a single provider.
|
|
10
|
+
*/
|
|
11
|
+
export const BannerCardContent = ({ app, appId, isOutsideApp = false, onDismiss, onInstallClick, locale = 'en', }) => {
|
|
8
12
|
const handleInstallClick = () => {
|
|
9
13
|
const url = isOutsideApp ? `${app.url}&utm_source=${getUTMParams(window.location.origin)}` : app.url;
|
|
10
14
|
window.open(`${url}&search_id=${uuidV4()}`);
|
|
11
15
|
onInstallClick?.();
|
|
12
16
|
};
|
|
13
|
-
return (_jsx(
|
|
17
|
+
return (_jsx(LegacyCard, { sectioned: true, children: _jsxs("div", { className: "AC-CrossAppBanner", children: [_jsx("div", { className: "AC-CrossAppBanner__Thumbnail", children: _jsx(Thumbnail, { size: "small", source: app.image, alt: "" }) }), _jsxs("div", { className: "AC-CrossAppBanner__Content", children: [_jsx(Text, { variant: "headingMd", as: "strong", children: resolveLocalizedString(app.title, locale) }), _jsx("br", {}), _jsx("div", { dangerouslySetInnerHTML: { __html: resolveLocalizedString(app.description, locale) } })] }), _jsx("div", { className: "AC-CrossAppBanner__Install", children: _jsx(Button, { onClick: handleInstallClick, children: resolveLocalizedString(app.actionLabel, locale) }) }), _jsx("div", { className: "AC-CrossAppBanner__Close", children: _jsx(Button, { icon: XIcon, variant: "tertiary", onClick: () => onDismiss(appId) }) })] }) }));
|
|
14
18
|
};
|
|
19
|
+
export const BannerCard = props => (_jsx(AppProvider, { i18n: {}, children: _jsx(BannerCardContent, { ...props }) }));
|
|
15
20
|
//# sourceMappingURL=BannerCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerCard.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAiB,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAYvF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"BannerCard.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAiB,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAYvF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,EAC3D,GAAG,EACH,KAAK,EACL,YAAY,GAAG,KAAK,EACpB,SAAS,EACT,cAAc,EACd,MAAM,GAAG,IAAI,GACd,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,eAAe,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACrG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,cAAc,EAAE,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,kBACnB,eAAK,SAAS,EAAC,mBAAmB,aAChC,cAAK,SAAS,EAAC,8BAA8B,YAC3C,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAC,EAAE,GAAG,GAChD,EACN,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,EAAE,EAAC,QAAQ,YAClC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GACrC,EACP,cAAM,EACN,cAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAI,IACzF,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,MAAM,IAAC,OAAO,EAAE,kBAAkB,YAAG,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,GAAU,GAC3F,EACN,cAAK,SAAS,EAAC,0BAA0B,YACvC,KAAC,MAAM,IAAC,IAAI,EAAE,KAA4B,EAAE,OAAO,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAI,GAC9F,IACF,GACK,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA8B,KAAK,CAAC,EAAE,CAAC,CAC5D,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,YACnB,KAAC,iBAAiB,OAAK,KAAK,GAAI,GACpB,CACf,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AppBannerItem } from '../../hooks/useFetchBannerData';
|
|
3
|
+
import { AppIdKeys } from './types';
|
|
4
|
+
export interface CarouselBannerItem {
|
|
5
|
+
app: AppBannerItem;
|
|
6
|
+
appId: AppIdKeys;
|
|
7
|
+
isOutsideApp: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface BannerCarouselProps {
|
|
10
|
+
items: CarouselBannerItem[];
|
|
11
|
+
onDismiss: (appId: AppIdKeys) => void;
|
|
12
|
+
onInstallClick?: () => void;
|
|
13
|
+
locale?: string;
|
|
14
|
+
/** Milliseconds a slide stays before it fades to the next */
|
|
15
|
+
autoPlaySpeed?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Auto-rotating cross-app banners, one visible at a time, crossfading in place.
|
|
19
|
+
* Rotation stops while the pointer or keyboard focus is inside the carousel so a merchant
|
|
20
|
+
* never loses the banner they are reading or about to click.
|
|
21
|
+
*/
|
|
22
|
+
export declare const BannerCarousel: React.FC<BannerCarouselProps>;
|
|
23
|
+
//# sourceMappingURL=BannerCarousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerCarousel.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCarousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgFxD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { AppProvider } from '@shopify/polaris';
|
|
4
|
+
import { BannerCardContent } from './BannerCard';
|
|
5
|
+
const DEFAULT_AUTOPLAY_SPEED = 5000;
|
|
6
|
+
/**
|
|
7
|
+
* Auto-rotating cross-app banners, one visible at a time, crossfading in place.
|
|
8
|
+
* Rotation stops while the pointer or keyboard focus is inside the carousel so a merchant
|
|
9
|
+
* never loses the banner they are reading or about to click.
|
|
10
|
+
*/
|
|
11
|
+
export const BannerCarousel = ({ items, onDismiss, onInstallClick, locale = 'en', autoPlaySpeed = DEFAULT_AUTOPLAY_SPEED, }) => {
|
|
12
|
+
const [index, setIndex] = useState(0);
|
|
13
|
+
const [isPaused, setIsPaused] = useState(false);
|
|
14
|
+
const total = items.length;
|
|
15
|
+
const activeIndex = total ? Math.min(index, total - 1) : 0;
|
|
16
|
+
// Dismissing a banner shortens the list, which can leave the index past its end.
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
setIndex(prev => (total ? Math.min(prev, total - 1) : 0));
|
|
19
|
+
}, [total]);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (total < 2 || isPaused)
|
|
22
|
+
return undefined;
|
|
23
|
+
const timer = window.setInterval(() => setIndex(prev => (prev + 1) % total), autoPlaySpeed);
|
|
24
|
+
return () => window.clearInterval(timer);
|
|
25
|
+
}, [total, isPaused, autoPlaySpeed]);
|
|
26
|
+
if (!total)
|
|
27
|
+
return null;
|
|
28
|
+
return (_jsx(AppProvider, { i18n: {}, children: _jsxs("div", { className: "AC-CrossAppBannerCarousel", "aria-roledescription": "carousel", onMouseEnter: () => setIsPaused(true), onMouseLeave: () => setIsPaused(false), onFocus: () => setIsPaused(true), onBlur: () => setIsPaused(false), children: [_jsx("div", { className: "AC-CrossAppBannerCarousel__Stage", children: items.map((item, slideIndex) => (_jsx("div", { className: "AC-CrossAppBannerCarousel__Slide", "data-active": slideIndex === activeIndex, "aria-hidden": slideIndex !== activeIndex, children: _jsx(BannerCardContent, { app: item.app, appId: item.appId, isOutsideApp: item.isOutsideApp, onDismiss: onDismiss, onInstallClick: onInstallClick, locale: locale }) }, item.app.key))) }), total > 1 && (_jsxs("div", { className: "AC-CrossAppBannerCarousel__Nav", children: [_jsx("div", { className: "AC-CrossAppBannerCarousel__Dots", role: "tablist", children: items.map((item, dotIndex) => (_jsx("button", { type: "button", role: "tab", className: "AC-CrossAppBannerCarousel__Dot", "aria-selected": dotIndex === activeIndex, "aria-label": `Banner ${dotIndex + 1}`, onClick: () => setIndex(dotIndex) }, item.app.key))) }), _jsxs("span", { className: "AC-CrossAppBannerCarousel__Counter", children: [activeIndex + 1, " / ", total] })] }))] }) }));
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=BannerCarousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerCarousel.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCarousel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAkBjD,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,KAAK,EACL,SAAS,EACT,cAAc,EACd,MAAM,GAAG,IAAI,EACb,aAAa,GAAG,sBAAsB,GACvC,EAAE,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,iFAAiF;IACjF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ;YAAE,OAAO,SAAS,CAAC;QAE5C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5F,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,YACnB,eACE,SAAS,EAAC,2BAA2B,0BAChB,UAAU,EAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EACrC,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,aAEhC,cAAK,SAAS,EAAC,kCAAkC,YAC9C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAC/B,cAEE,SAAS,EAAC,kCAAkC,iBAC/B,UAAU,KAAK,WAAW,iBAC1B,UAAU,KAAK,WAAW,YAEvC,KAAC,iBAAiB,IAChB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,GACd,IAZG,IAAI,CAAC,GAAG,CAAC,GAAG,CAab,CACP,CAAC,GACE,EAEL,KAAK,GAAG,CAAC,IAAI,CACZ,eAAK,SAAS,EAAC,gCAAgC,aAC7C,cAAK,SAAS,EAAC,iCAAiC,EAAC,IAAI,EAAC,SAAS,YAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAC7B,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,SAAS,EAAC,gCAAgC,mBAC3B,QAAQ,KAAK,WAAW,gBAC3B,UAAU,QAAQ,GAAG,CAAC,EAAE,EACpC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAN5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAOjB,CACH,CAAC,GACE,EACN,gBAAM,SAAS,EAAC,oCAAoC,aACjD,WAAW,GAAG,CAAC,SAAK,KAAK,IACrB,IACH,CACP,IACG,GACM,CACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AppBannerItem, BannerSeoAppData } from '../../hooks/useFetchBannerData';
|
|
1
2
|
import { AppIdKeys, AppIdValues, CheckInstalledResponse } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* Create initial dismissed state for all app IDs
|
|
@@ -19,4 +20,9 @@ export declare const getStorageKey: (appId: AppIdKeys) => string;
|
|
|
19
20
|
* Check if app is installed based on the response data
|
|
20
21
|
*/
|
|
21
22
|
export declare const checkIfAppInstalled: (currentAppId: AppIdKeys, data: CheckInstalledResponse) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve one app id from settingApp to its banner. Outside-SEO apps win over appSeoon, and an
|
|
25
|
+
* appSeoon entry may be keyed either by the app id itself or by its APP_IDS alias.
|
|
26
|
+
*/
|
|
27
|
+
export declare const findBannerForAppId: (bannerData: BannerSeoAppData, appId: AppIdKeys) => AppBannerItem | null;
|
|
22
28
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAwB,MAAM,SAAS,CAAC;AAE/F;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAEvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,KAAG,MAIhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,cAAc,SAAS,EAAE,MAAM,sBAAsB,KAAG,OAG3F,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAwB,MAAM,SAAS,CAAC;AAE/F;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAEvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,KAAG,MAIhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,cAAc,SAAS,EAAE,MAAM,sBAAsB,KAAG,OAG3F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,gBAAgB,EAC5B,OAAO,SAAS,KACf,aAAa,GAAG,IAUlB,CAAC"}
|
|
@@ -34,4 +34,16 @@ export const checkIfAppInstalled = (currentAppId, data) => {
|
|
|
34
34
|
const isSeoOrBlogApp = currentAppId === 'avada-seo-suite' || currentAppId === 'seoon-blog';
|
|
35
35
|
return isSeoOrBlogApp ? data.userType === 'user' : !!data.isInstalled;
|
|
36
36
|
};
|
|
37
|
+
/**
|
|
38
|
+
* Resolve one app id from settingApp to its banner. Outside-SEO apps win over appSeoon, and an
|
|
39
|
+
* appSeoon entry may be keyed either by the app id itself or by its APP_IDS alias.
|
|
40
|
+
*/
|
|
41
|
+
export const findBannerForAppId = (bannerData, appId) => {
|
|
42
|
+
const outsideApp = bannerData.appOutSide?.find(app => app.key === appId);
|
|
43
|
+
if (outsideApp)
|
|
44
|
+
return outsideApp;
|
|
45
|
+
const mappedKey = APP_IDS[appId];
|
|
46
|
+
const seoApp = bannerData.appSeoon?.find(app => app.key === appId || (mappedKey && app.key === mappedKey));
|
|
47
|
+
return seoApp ?? null;
|
|
48
|
+
};
|
|
37
49
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAkD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/F;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAA+B,EAAE;IAC1E,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAA+B,CAAC;AAChG,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAiC,EAAE;IAC5E,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAG5E,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAU,EAAE;IACxD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,8BAA8B,WAAW,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAuB,EAAE,IAA4B,EAAW,EAAE;IACpG,MAAM,cAAc,GAAG,YAAY,KAAK,iBAAiB,IAAI,YAAY,KAAK,YAAY,CAAC;IAC3F,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AACxE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,UAA4B,EAC5B,KAAgB,EACM,EAAE;IACxB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IACzE,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CACtC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CACjE,CAAC;IAEF,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,OAAO,EACL,mBAAmB,EAGnB,uBAAuB,EAIxB,MAAM,SAAS,CAAC;AACjB,OAAO,cAAc,CAAC;AAEtB,eAAO,MAAM,cAAc,EAAE,uBAgM5B,CAAC;;AAEF,wBAA0C"}
|
|
@@ -4,11 +4,12 @@ import { isEmpty } from '../../helpers/isEmpty';
|
|
|
4
4
|
import { useCheckAppInstalled } from '../../hooks/useCheckAppInstalled';
|
|
5
5
|
import useFetchBannerData from '../../hooks/useFetchBannerData';
|
|
6
6
|
import { BannerCard } from './BannerCard';
|
|
7
|
+
import { BannerCarousel } from './BannerCarousel';
|
|
7
8
|
import { BannerLoadingSkeleton } from './BannerLoadingSkeleton';
|
|
8
|
-
import { createInitialDismissedState, createInitialInstalledState, getStorageKey, checkIfAppInstalled, } from './helpers';
|
|
9
|
+
import { createInitialDismissedState, createInitialInstalledState, findBannerForAppId, getStorageKey, checkIfAppInstalled, } from './helpers';
|
|
9
10
|
import { APP_IDS, APP_ID_KEYS, } from './types';
|
|
10
11
|
import './index.scss';
|
|
11
|
-
export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propAppIds, urlJson = '', appName, position, locale = 'en', }) => {
|
|
12
|
+
export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propAppIds, urlJson = '', appName, position, locale = 'en', carousel = false, autoPlaySpeed, }) => {
|
|
12
13
|
const { bannerData, isLoadingBannerData } = useFetchBannerData({ url: urlJson });
|
|
13
14
|
const getAppIdsFromConfig = () => {
|
|
14
15
|
if (appName && position && bannerData?.settingApp?.[appName]?.[position]) {
|
|
@@ -41,7 +42,7 @@ export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propA
|
|
|
41
42
|
const { installedData, isCheckingInstalled } = useCheckAppInstalled({
|
|
42
43
|
appId: currentAppId,
|
|
43
44
|
shopDomain,
|
|
44
|
-
shouldCheck: shouldCheckCurrentApp && !isDismissed,
|
|
45
|
+
shouldCheck: !carousel && shouldCheckCurrentApp && !isDismissed,
|
|
45
46
|
});
|
|
46
47
|
// Effect to handle installation check result
|
|
47
48
|
useEffect(() => {
|
|
@@ -62,8 +63,25 @@ export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propA
|
|
|
62
63
|
}, [isDismissed, shouldCheckCurrentApp]);
|
|
63
64
|
const handleDismiss = (appId) => {
|
|
64
65
|
localStorage.setItem(getStorageKey(appId), 'true');
|
|
66
|
+
if (carousel) {
|
|
67
|
+
setDismissedApps(prev => ({ ...prev, [appId]: true }));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
65
70
|
setIsBannerDismissed(true);
|
|
66
71
|
};
|
|
72
|
+
const getCarouselItems = () => appIds
|
|
73
|
+
.filter(appId => !dismissedApps[appId])
|
|
74
|
+
.map(appId => {
|
|
75
|
+
const app = findBannerForAppId(bannerData, appId);
|
|
76
|
+
if (!app)
|
|
77
|
+
return null;
|
|
78
|
+
return {
|
|
79
|
+
app,
|
|
80
|
+
appId,
|
|
81
|
+
isOutsideApp: bannerData.appOutSide?.some(outsideApp => outsideApp.key === app.key) ?? false,
|
|
82
|
+
};
|
|
83
|
+
})
|
|
84
|
+
.filter((item) => item !== null);
|
|
67
85
|
const getFirstNonInstalledApp = () => {
|
|
68
86
|
if (isBannerDismissed || isEmpty(bannerData) || isLoadingBannerData)
|
|
69
87
|
return null;
|
|
@@ -96,6 +114,14 @@ export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds: propA
|
|
|
96
114
|
if (isLoadingBannerData || isCheckingInstalled) {
|
|
97
115
|
return _jsx(BannerLoadingSkeleton, {});
|
|
98
116
|
}
|
|
117
|
+
if (carousel) {
|
|
118
|
+
if (isEmpty(bannerData))
|
|
119
|
+
return null;
|
|
120
|
+
const carouselItems = getCarouselItems();
|
|
121
|
+
if (!carouselItems.length)
|
|
122
|
+
return null;
|
|
123
|
+
return (_jsx(BannerCarousel, { items: carouselItems, onDismiss: handleDismiss, onInstallClick: clickInstallCallback, locale: locale, autoPlaySpeed: autoPlaySpeed }));
|
|
124
|
+
}
|
|
99
125
|
const appToShow = getFirstNonInstalledApp();
|
|
100
126
|
if (!appToShow || isBannerDismissed || isEmpty(bannerData)) {
|
|
101
127
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -45,3 +45,87 @@
|
|
|
45
45
|
flex-direction: column;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
.AC-CrossAppBannerCarousel {
|
|
50
|
+
position: relative;
|
|
51
|
+
|
|
52
|
+
&__Stage {
|
|
53
|
+
position: relative;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&__Slide {
|
|
57
|
+
// visibility (not just opacity) so an inactive slide keeps its buttons out of the tab order
|
|
58
|
+
transition: opacity 300ms ease, visibility 0s linear 300ms;
|
|
59
|
+
|
|
60
|
+
&[data-active='false'] {
|
|
61
|
+
position: absolute;
|
|
62
|
+
inset: 0;
|
|
63
|
+
opacity: 0;
|
|
64
|
+
visibility: hidden;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&[data-active='true'] {
|
|
68
|
+
position: relative;
|
|
69
|
+
opacity: 1;
|
|
70
|
+
visibility: visible;
|
|
71
|
+
transition-delay: 0s;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&__Nav {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
gap: 10px;
|
|
80
|
+
padding-top: 12px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&__Dots {
|
|
84
|
+
display: flex;
|
|
85
|
+
align-items: center;
|
|
86
|
+
gap: 6px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&__Dot {
|
|
90
|
+
width: 7px;
|
|
91
|
+
height: 7px;
|
|
92
|
+
padding: 0;
|
|
93
|
+
border: none;
|
|
94
|
+
border-radius: 50%;
|
|
95
|
+
background: var(--p-color-text-disabled, #b5b5b5);
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
transition: background 160ms ease, width 220ms cubic-bezier(0.4, 0.22, 0.28, 1);
|
|
98
|
+
|
|
99
|
+
&:hover {
|
|
100
|
+
background: var(--p-color-icon-secondary, #8a8a8a);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&[aria-selected='true'] {
|
|
104
|
+
width: 18px;
|
|
105
|
+
border-radius: 9999px;
|
|
106
|
+
background: var(--p-color-text, #303030);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&:focus-visible {
|
|
110
|
+
outline: var(--p-border-width-050, 2px) solid var(--p-color-border-focus, #005bd3);
|
|
111
|
+
outline-offset: 2px;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&__Counter {
|
|
116
|
+
font-size: 12px;
|
|
117
|
+
line-height: 16px;
|
|
118
|
+
color: var(--p-color-text-secondary, #616161);
|
|
119
|
+
font-variant-numeric: tabular-nums;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@media (prefers-reduced-motion: reduce) {
|
|
123
|
+
&__Slide {
|
|
124
|
+
transition: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
&__Dot {
|
|
128
|
+
transition: none;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -54,6 +54,14 @@ interface BaseCrossAppBannerProps {
|
|
|
54
54
|
urlJson?: string;
|
|
55
55
|
/** Locale for multi-language support (e.g., 'en', 'vi', 'DDDDDD'). Defaults to 'en' */
|
|
56
56
|
locale?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Rotate every non-dismissed app in a carousel instead of showing only the first
|
|
59
|
+
* non-installed one. This mode skips the install check entirely, so a merchant who already
|
|
60
|
+
* has an app can still be shown its banner. Defaults to false.
|
|
61
|
+
*/
|
|
62
|
+
carousel?: boolean;
|
|
63
|
+
/** Milliseconds a slide stays before it fades to the next. Carousel mode only. Defaults to 5000 */
|
|
64
|
+
autoPlaySpeed?: number;
|
|
57
65
|
}
|
|
58
66
|
/** Legacy configuration with explicit appIds */
|
|
59
67
|
interface LegacyCrossAppBannerProps extends BaseCrossAppBannerProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,oBAAoB,CAAC;AACzC,eAAO,MAAM,QAAQ,eAAe,CAAC;AACrC,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,WAAW,UASvB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,wBAAwB,UAAuD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,eAAe,GACtB,OAAO,UAAU,GACjB,OAAO,qBAAqB,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CASlD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,oBAAoB,CAAC;AACzC,eAAO,MAAM,QAAQ,eAAe,CAAC;AACrC,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,UAAU,cAAc,CAAC;AACtC,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,WAAW,UASvB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,wBAAwB,UAAuD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,KAAK,GACL,MAAM,GACN,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,eAAe,GACtB,OAAO,UAAU,GACjB,OAAO,qBAAqB,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CASlD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mGAAmG;IACnG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gDAAgD;AAChD,UAAU,yBAA0B,SAAQ,uBAAuB;IACjE,iDAAiD;IACjD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,kEAAkE;AAClE,UAAU,0BAA2B,SAAQ,uBAAuB;IAClE,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,6DAA6D;AAC7D,UAAU,0BAA2B,SAAQ,uBAAuB;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAC3B,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC"}
|