@fluid-app/portal-sdk 0.1.165 → 0.1.167
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/{FluidProvider-DbLFKavY.cjs → FluidProvider-DMFD--HI.cjs} +16 -270
- package/dist/FluidProvider-DMFD--HI.cjs.map +1 -0
- package/dist/{FluidProvider-BfATASw-.mjs → FluidProvider-qmTRBp3-.mjs} +17 -259
- package/dist/FluidProvider-qmTRBp3-.mjs.map +1 -0
- package/dist/{MessagingScreen-Dhg3eu32.mjs → MessagingScreen-B78wJC_8.mjs} +2 -2
- package/dist/{MessagingScreen-Dhg3eu32.mjs.map → MessagingScreen-B78wJC_8.mjs.map} +1 -1
- package/dist/{MessagingScreen-lFvwnAU6.cjs → MessagingScreen-BlCjptc6.cjs} +3 -3
- package/dist/{MessagingScreen-lFvwnAU6.cjs.map → MessagingScreen-BlCjptc6.cjs.map} +1 -1
- package/dist/{MessagingScreen-Dd0EBrre.cjs → MessagingScreen-DRD8xnXj.cjs} +2 -2
- package/dist/{PortalContentApiProvider-Di5emtYd.cjs → PortalContentApiProvider-BMflGLYQ.cjs} +10 -1
- package/dist/{PortalContentApiProvider-Di5emtYd.cjs.map → PortalContentApiProvider-BMflGLYQ.cjs.map} +1 -1
- package/dist/{PortalContentApiProvider-CW0ADhPi.mjs → PortalContentApiProvider-CBm0adwh.mjs} +10 -1
- package/dist/{PortalContentApiProvider-CW0ADhPi.mjs.map → PortalContentApiProvider-CBm0adwh.mjs.map} +1 -1
- package/dist/{ProductsScreen-C6eNgxjP.cjs → ProductsScreen-CYRCTRvW.cjs} +2 -2
- package/dist/{ProductsScreen-nHmUftQn.mjs → ProductsScreen-D810-dkz.mjs} +2 -2
- package/dist/{ProductsScreen-KjjhlDGo.cjs → ProductsScreen-DOn1eC4t.cjs} +2 -2
- package/dist/{ProductsScreen-KjjhlDGo.cjs.map → ProductsScreen-DOn1eC4t.cjs.map} +1 -1
- package/dist/{ProductsScreen-CVNJudq9.mjs → ProductsScreen-DWrE0FKE.mjs} +2 -2
- package/dist/{ProductsScreen-CVNJudq9.mjs.map → ProductsScreen-DWrE0FKE.mjs.map} +1 -1
- package/dist/{ProfileScreen-DUj4bkhx.cjs → ProfileScreen-CfHE4Ded.cjs} +2 -2
- package/dist/{ProfileScreen-DUj4bkhx.cjs.map → ProfileScreen-CfHE4Ded.cjs.map} +1 -1
- package/dist/{ProfileScreen-BuIxKbXC.mjs → ProfileScreen-Ct-m03oC.mjs} +2 -2
- package/dist/{ProfileScreen-BuIxKbXC.mjs.map → ProfileScreen-Ct-m03oC.mjs.map} +1 -1
- package/dist/{ProfileScreen-uAud2ErT.cjs → ProfileScreen-hD0bjuys.cjs} +2 -2
- package/dist/{ShareablesScreen-Dz8w2l3e.cjs → ShareablesScreen-C3_fEMc0.cjs} +2 -2
- package/dist/{ShareablesScreen-Dz8w2l3e.cjs.map → ShareablesScreen-C3_fEMc0.cjs.map} +1 -1
- package/dist/{ShareablesScreen-DUzo8kRi.cjs → ShareablesScreen-ChpDLh7n.cjs} +2 -2
- package/dist/{ShareablesScreen-CdTyyDRO.mjs → ShareablesScreen-CxWuxuGd.mjs} +2 -2
- package/dist/{ShareablesScreen-DpEP_6u0.mjs → ShareablesScreen-eCUiJFdU.mjs} +2 -2
- package/dist/{ShareablesScreen-DpEP_6u0.mjs.map → ShareablesScreen-eCUiJFdU.mjs.map} +1 -1
- package/dist/{ShopScreen-BUXUtEuj.cjs → ShopScreen-D9clGspu.cjs} +2 -2
- package/dist/{ShopScreen-BUXUtEuj.cjs.map → ShopScreen-D9clGspu.cjs.map} +1 -1
- package/dist/{ShopScreen-BH6zQndJ.mjs → ShopScreen-DW0puWGa.mjs} +2 -2
- package/dist/{ShopScreen-BH6zQndJ.mjs.map → ShopScreen-DW0puWGa.mjs.map} +1 -1
- package/dist/{ShopScreen-BbucUNI7.cjs → ShopScreen-Dvsz_wyc.cjs} +2 -2
- package/dist/index.cjs +17 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -161
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +24 -161
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +18 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -18
- package/dist/FluidProvider-BfATASw-.mjs.map +0 -1
- package/dist/FluidProvider-DbLFKavY.cjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-9hOWP6kD.cjs");
|
|
2
|
-
require("./FluidProvider-
|
|
2
|
+
require("./FluidProvider-DMFD--HI.cjs");
|
|
3
3
|
require("./account-api-context-pr_NLnGy.cjs");
|
|
4
4
|
require("./mysite-api-context-BTt-_urb.cjs");
|
|
5
5
|
require("./countries-api-context-CwUkJTdy.cjs");
|
|
@@ -37,6 +37,6 @@ require("./TableWidget-B0sM8v9V.cjs");
|
|
|
37
37
|
require("./ToDoWidget-DFoPleS_.cjs");
|
|
38
38
|
require("./VideoWidget-D2yvdDrT.cjs");
|
|
39
39
|
require("./ScreenHeaderContext-DRIKmM2G.cjs");
|
|
40
|
-
const require_ProfileScreen = require("./ProfileScreen-
|
|
40
|
+
const require_ProfileScreen = require("./ProfileScreen-CfHE4Ded.cjs");
|
|
41
41
|
exports.ProfileScreen = require_ProfileScreen.ProfileScreen;
|
|
42
42
|
exports.profileScreenPropertySchema = require_ProfileScreen.profileScreenPropertySchema;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("./chunk-9hOWP6kD.cjs");
|
|
2
2
|
const require_use_account = require("./use-account-CrgtI83z.cjs");
|
|
3
3
|
const require_AppNavigationContext = require("./AppNavigationContext-BiYNDj_X.cjs");
|
|
4
|
-
const require_PortalContentApiProvider = require("./PortalContentApiProvider-
|
|
4
|
+
const require_PortalContentApiProvider = require("./PortalContentApiProvider-BMflGLYQ.cjs");
|
|
5
5
|
const require_PortalProductsApiProvider = require("./PortalProductsApiProvider-BquMHwvt.cjs");
|
|
6
6
|
let react = require("react");
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -141,4 +141,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
|
|
144
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
144
|
+
//# sourceMappingURL=ShareablesScreen-C3_fEMc0.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-C3_fEMc0.cjs","names":["PortalProductsApiProvider","PortalContentApiProvider","usePortalContentContext","useAccount","useAppNavigation","ShareablesCoreProvider","ShareablesUIProvider","ShareablesApp"],"sources":["../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { ShareablesCoreProvider } from \"@fluid-app/shareables-core\";\nimport { ShareablesUIProvider, ShareablesApp } from \"@fluid-app/shareables-ui\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useAccount } from \"../hooks/use-account\";\nimport { PortalProductsApiProvider } from \"../products/PortalProductsApiProvider\";\nimport {\n PortalContentApiProvider,\n usePortalContentContext,\n} from \"../content/PortalContentApiProvider\";\n\ntype ShareablesScreenProps = ComponentProps<\"div\"> & {\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\n/**\n * Parse the current shareables sub-route from the full slug.\n *\n * System nav slugs are \"share/products\", \"share/media\", \"share/playlists\".\n * Detail pages append an ID: \"share/products/123\", \"share/media/456\".\n *\n * \"share/products\" → screen=\"products\", detailId=null\n * \"share/products/123\" → screen=\"products\", detailId=\"123\"\n * \"share/media/456\" → screen=\"media\", detailId=\"456\"\n * \"share/playlists\" → screen=\"playlists\", detailId=null\n * \"share/playlists/789\" → screen=\"playlists\", detailId=\"789\"\n * \"share/files\" → screen=\"files\", detailId=null\n * \"share\" → screen=null (default to products)\n */\nfunction parseShareablesRoute(currentSlug: string): {\n screen: string | null;\n detailId: string | null;\n action: string | null;\n} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null, action: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n const action = parts[2] || null;\n return { screen, detailId, action };\n}\n\nexport function ShareablesScreen({\n /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n background,\n textColor,\n accentColor,\n padding,\n borderRadius,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...divProps\n}: ShareablesScreenProps): React.JSX.Element {\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <PortalProductsApiProvider>\n <PortalContentApiProvider>\n <ShareablesScreenContent />\n </PortalContentApiProvider>\n </PortalProductsApiProvider>\n </div>\n );\n}\n\n/** Inner component rendered inside providers so hooks can access context. */\nfunction ShareablesScreenContent(): React.JSX.Element {\n const shareablesCtx = usePortalContentContext();\n const { productsApi: portalProductsApi } = shareablesCtx;\n const { data: account } = useAccount();\n const { currentSlug, navigate } = useAppNavigation();\n const isCustomer = account?.member_type === \"customer\";\n\n const fetchProducts = useCallback(\n async (search: string, cursor?: string, limit?: number) => {\n if (search) {\n return portalProductsApi.searchProducts(search, { cursor, limit });\n }\n return portalProductsApi.listProducts({ cursor, limit });\n },\n [portalProductsApi],\n );\n\n const fetchProduct = useCallback(\n async (id: string | number) => portalProductsApi.getProduct(id),\n [portalProductsApi],\n );\n\n const { screen, detailId, action } = parseShareablesRoute(currentSlug);\n\n const handleNavigate = useCallback(\n (subScreen: string, id?: string) => {\n const path = id ? `share/${subScreen}/${id}` : `share/${subScreen}`;\n navigate(path);\n },\n [navigate],\n );\n\n const handleBack = useCallback(() => {\n if (detailId && screen) {\n navigate(`share/${screen}`);\n } else {\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n user: account ? { id: account.id } : null,\n repContext: true,\n }),\n [account],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: account\n ? {\n id: account.id,\n company: null, // TODO(portal-tenant): company branding not available from /api/account\n }\n : undefined,\n // TODO(portal-tenant): affiliate_id not available from /api/account\n affiliateId: null,\n basePath: \"\",\n navigate: (path: string) => {\n const cleanPath = path.replace(/^\\//, \"\");\n const prefixed = cleanPath.startsWith(\"share/\")\n ? cleanPath\n : `share/${cleanPath}`;\n navigate(prefixed);\n },\n showToast: (opts: {\n title: string;\n type: \"success\" | \"error\" | \"warning\";\n }) => {\n console.warn(`[Shareables] ${opts.type}: ${opts.title}`);\n },\n filePickerApi: shareablesCtx.filePickerApi,\n // TODO(portal-tenant): affiliate_id not available from /api/account; favorites disabled\n onToggleFavorite: undefined,\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);\n },\n readOnly: isCustomer,\n }),\n [\n account,\n navigate,\n shareablesCtx.filePickerApi,\n isCustomer,\n shareablesCtx.playlistsAdapter,\n ],\n );\n\n return (\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={undefined}\n countryCode={undefined}\n fetchProducts={fetchProducts}\n fetchProduct={fetchProduct}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n );\n}\n\nexport const shareablesScreenPropertySchema: WidgetPropertySchema = {\n widgetType: \"ShareablesScreen\",\n displayName: \"Shareables Screen\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@ require("./dist-thaj08s5.cjs");
|
|
|
6
6
|
require("./es-xQF-WIMq.cjs");
|
|
7
7
|
require("./SearchSort-CYhjl8tC.cjs");
|
|
8
8
|
require("./dist-BSKQ_GoC.cjs");
|
|
9
|
-
require("./PortalContentApiProvider-
|
|
9
|
+
require("./PortalContentApiProvider-BMflGLYQ.cjs");
|
|
10
10
|
require("./dist-BF_4vk1z.cjs");
|
|
11
11
|
require("./PortalProductsApiProvider-BquMHwvt.cjs");
|
|
12
|
-
const require_ShareablesScreen = require("./ShareablesScreen-
|
|
12
|
+
const require_ShareablesScreen = require("./ShareablesScreen-C3_fEMc0.cjs");
|
|
13
13
|
exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
|
|
14
14
|
exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
|
|
@@ -5,8 +5,8 @@ import "./ScreenHeaderContext-DjSO5A8k.mjs";
|
|
|
5
5
|
import "./dist-CkIGP8my.mjs";
|
|
6
6
|
import "./SearchSort-Br8J8JS8.mjs";
|
|
7
7
|
import "./dist-C9vpl_rR.mjs";
|
|
8
|
-
import "./PortalContentApiProvider-
|
|
8
|
+
import "./PortalContentApiProvider-CBm0adwh.mjs";
|
|
9
9
|
import "./sortable.esm-E6JdQn7I.mjs";
|
|
10
10
|
import "./PortalProductsApiProvider-BCXX9NGK.mjs";
|
|
11
|
-
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
11
|
+
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-eCUiJFdU.mjs";
|
|
12
12
|
export { ShareablesScreen, shareablesScreenPropertySchema };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as useAccount } from "./use-account-BJhzTl2j.mjs";
|
|
2
2
|
import { n as useAppNavigation } from "./AppNavigationContext-D29xW9Ua.mjs";
|
|
3
|
-
import { a as ShareablesUIProvider, i as ShareablesApp, n as usePortalContentContext, o as ShareablesCoreProvider, t as PortalContentApiProvider } from "./PortalContentApiProvider-
|
|
3
|
+
import { a as ShareablesUIProvider, i as ShareablesApp, n as usePortalContentContext, o as ShareablesCoreProvider, t as PortalContentApiProvider } from "./PortalContentApiProvider-CBm0adwh.mjs";
|
|
4
4
|
import { t as PortalProductsApiProvider } from "./PortalProductsApiProvider-BCXX9NGK.mjs";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -129,4 +129,4 @@ const shareablesScreenPropertySchema = {
|
|
|
129
129
|
//#endregion
|
|
130
130
|
export { shareablesScreenPropertySchema as n, ShareablesScreen as t };
|
|
131
131
|
|
|
132
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
132
|
+
//# sourceMappingURL=ShareablesScreen-eCUiJFdU.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-eCUiJFdU.mjs","names":[],"sources":["../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import { useCallback, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { ShareablesCoreProvider } from \"@fluid-app/shareables-core\";\nimport { ShareablesUIProvider, ShareablesApp } from \"@fluid-app/shareables-ui\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useAccount } from \"../hooks/use-account\";\nimport { PortalProductsApiProvider } from \"../products/PortalProductsApiProvider\";\nimport {\n PortalContentApiProvider,\n usePortalContentContext,\n} from \"../content/PortalContentApiProvider\";\n\ntype ShareablesScreenProps = ComponentProps<\"div\"> & {\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\n/**\n * Parse the current shareables sub-route from the full slug.\n *\n * System nav slugs are \"share/products\", \"share/media\", \"share/playlists\".\n * Detail pages append an ID: \"share/products/123\", \"share/media/456\".\n *\n * \"share/products\" → screen=\"products\", detailId=null\n * \"share/products/123\" → screen=\"products\", detailId=\"123\"\n * \"share/media/456\" → screen=\"media\", detailId=\"456\"\n * \"share/playlists\" → screen=\"playlists\", detailId=null\n * \"share/playlists/789\" → screen=\"playlists\", detailId=\"789\"\n * \"share/files\" → screen=\"files\", detailId=null\n * \"share\" → screen=null (default to products)\n */\nfunction parseShareablesRoute(currentSlug: string): {\n screen: string | null;\n detailId: string | null;\n action: string | null;\n} {\n // Strip the \"share\" prefix\n const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n if (!slugWithoutPrefix) {\n return { screen: null, detailId: null, action: null };\n }\n\n const parts = slugWithoutPrefix.split(\"/\");\n const screen = parts[0] || null;\n const detailId = parts[1] || null;\n const action = parts[2] || null;\n return { screen, detailId, action };\n}\n\nexport function ShareablesScreen({\n /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n background,\n textColor,\n accentColor,\n padding,\n borderRadius,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...divProps\n}: ShareablesScreenProps): React.JSX.Element {\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <PortalProductsApiProvider>\n <PortalContentApiProvider>\n <ShareablesScreenContent />\n </PortalContentApiProvider>\n </PortalProductsApiProvider>\n </div>\n );\n}\n\n/** Inner component rendered inside providers so hooks can access context. */\nfunction ShareablesScreenContent(): React.JSX.Element {\n const shareablesCtx = usePortalContentContext();\n const { productsApi: portalProductsApi } = shareablesCtx;\n const { data: account } = useAccount();\n const { currentSlug, navigate } = useAppNavigation();\n const isCustomer = account?.member_type === \"customer\";\n\n const fetchProducts = useCallback(\n async (search: string, cursor?: string, limit?: number) => {\n if (search) {\n return portalProductsApi.searchProducts(search, { cursor, limit });\n }\n return portalProductsApi.listProducts({ cursor, limit });\n },\n [portalProductsApi],\n );\n\n const fetchProduct = useCallback(\n async (id: string | number) => portalProductsApi.getProduct(id),\n [portalProductsApi],\n );\n\n const { screen, detailId, action } = parseShareablesRoute(currentSlug);\n\n const handleNavigate = useCallback(\n (subScreen: string, id?: string) => {\n const path = id ? `share/${subScreen}/${id}` : `share/${subScreen}`;\n navigate(path);\n },\n [navigate],\n );\n\n const handleBack = useCallback(() => {\n if (detailId && screen) {\n navigate(`share/${screen}`);\n } else {\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n user: account ? { id: account.id } : null,\n repContext: true,\n }),\n [account],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: account\n ? {\n id: account.id,\n company: null, // TODO(portal-tenant): company branding not available from /api/account\n }\n : undefined,\n // TODO(portal-tenant): affiliate_id not available from /api/account\n affiliateId: null,\n basePath: \"\",\n navigate: (path: string) => {\n const cleanPath = path.replace(/^\\//, \"\");\n const prefixed = cleanPath.startsWith(\"share/\")\n ? cleanPath\n : `share/${cleanPath}`;\n navigate(prefixed);\n },\n showToast: (opts: {\n title: string;\n type: \"success\" | \"error\" | \"warning\";\n }) => {\n console.warn(`[Shareables] ${opts.type}: ${opts.title}`);\n },\n filePickerApi: shareablesCtx.filePickerApi,\n // TODO(portal-tenant): affiliate_id not available from /api/account; favorites disabled\n onToggleFavorite: undefined,\n onDeletePlaylist: isCustomer\n ? undefined\n : async (playlistId: number) => {\n await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);\n },\n readOnly: isCustomer,\n }),\n [\n account,\n navigate,\n shareablesCtx.filePickerApi,\n isCustomer,\n shareablesCtx.playlistsAdapter,\n ],\n );\n\n return (\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={undefined}\n countryCode={undefined}\n fetchProducts={fetchProducts}\n fetchProduct={fetchProduct}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n );\n}\n\nexport const shareablesScreenPropertySchema: WidgetPropertySchema = {\n widgetType: \"ShareablesScreen\",\n displayName: \"Shareables Screen\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwCA,SAAS,qBAAqB,aAI5B;CAEA,MAAM,oBAAoB,YAAY,QAAQ,aAAa,GAAG;AAC9D,KAAI,CAAC,kBACH,QAAO;EAAE,QAAQ;EAAM,UAAU;EAAM,QAAQ;EAAM;CAGvD,MAAM,QAAQ,kBAAkB,MAAM,IAAI;AAI1C,QAAO;EAAE,QAHM,MAAM,MAAM;EAGV,UAFA,MAAM,MAAM;EAEF,QADZ,MAAM,MAAM;EACQ;;AAGrC,SAAgB,iBAAiB,EAE/B,YACA,WACA,aACA,SACA,cAEA,GAAG,YACwC;AAC3C,QACE,oBAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,oBAAC,2BAAD,EAAA,UACE,oBAAC,0BAAD,EAAA,UACE,oBAAC,yBAAD,EAA2B,CAAA,EACF,CAAA,EACD,CAAA;EACxB,CAAA;;;AAKV,SAAS,0BAA6C;CACpD,MAAM,gBAAgB,yBAAyB;CAC/C,MAAM,EAAE,aAAa,sBAAsB;CAC3C,MAAM,EAAE,MAAM,YAAY,YAAY;CACtC,MAAM,EAAE,aAAa,aAAa,kBAAkB;CACpD,MAAM,aAAa,SAAS,gBAAgB;CAE5C,MAAM,gBAAgB,YACpB,OAAO,QAAgB,QAAiB,UAAmB;AACzD,MAAI,OACF,QAAO,kBAAkB,eAAe,QAAQ;GAAE;GAAQ;GAAO,CAAC;AAEpE,SAAO,kBAAkB,aAAa;GAAE;GAAQ;GAAO,CAAC;IAE1D,CAAC,kBAAkB,CACpB;CAED,MAAM,eAAe,YACnB,OAAO,OAAwB,kBAAkB,WAAW,GAAG,EAC/D,CAAC,kBAAkB,CACpB;CAED,MAAM,EAAE,QAAQ,UAAU,WAAW,qBAAqB,YAAY;CAEtE,MAAM,iBAAiB,aACpB,WAAmB,OAAgB;AAElC,WADa,KAAK,SAAS,UAAU,GAAG,OAAO,SAAS,YAC1C;IAEhB,CAAC,SAAS,CACX;CAED,MAAM,aAAa,kBAAkB;AACnC,MAAI,YAAY,OACd,UAAS,SAAS,SAAS;MAE3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;AAqDhC,QACE,oBAAC,wBAAD;EAAwB,QApDP,eACV;GACL,MAAM,UAAU,EAAE,IAAI,QAAQ,IAAI,GAAG;GACrC,YAAY;GACb,GACD,CAAC,QAAQ,CACV;YA+CG,oBAAC,sBAAD;GAAsB,QA7CT,eACR;IACL,MAAM,UACF;KACE,IAAI,QAAQ;KACZ,SAAS;KACV,GACD,KAAA;IAEJ,aAAa;IACb,UAAU;IACV,WAAW,SAAiB;KAC1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAIzC,cAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;IAEpB,YAAY,SAGN;AACJ,aAAQ,KAAK,gBAAgB,KAAK,KAAK,IAAI,KAAK,QAAQ;;IAE1D,eAAe,cAAc;IAE7B,kBAAkB,KAAA;IAClB,kBAAkB,aACd,KAAA,IACA,OAAO,eAAuB;AAC5B,WAAM,cAAc,iBAAiB,eAAe,WAAW;;IAErE,UAAU;IACX,GACD;IACE;IACA;IACA,cAAc;IACd;IACA,cAAc;IACf,CACF;aAKK,oBAAC,eAAD;IACU;IACE;IACF;IACR,gBAAgB,KAAA;IAChB,aAAa,KAAA;IACE;IACD;IACd,YAAY;IACZ,QAAQ;IACR,CAAA;GACmB,CAAA;EACA,CAAA;;AAI7B,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,EAAE;CACX"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-9hOWP6kD.cjs");
|
|
2
|
-
const require_FluidProvider = require("./FluidProvider-
|
|
2
|
+
const require_FluidProvider = require("./FluidProvider-DMFD--HI.cjs");
|
|
3
3
|
const require_src = require("./src-BvDb-3SK.cjs");
|
|
4
4
|
const require_ScreenHeaderContext = require("./ScreenHeaderContext-DRIKmM2G.cjs");
|
|
5
5
|
const require_AppNavigationContext = require("./AppNavigationContext-BiYNDj_X.cjs");
|
|
@@ -1158,4 +1158,4 @@ Object.defineProperty(exports, "shopScreenPropertySchema", {
|
|
|
1158
1158
|
}
|
|
1159
1159
|
});
|
|
1160
1160
|
|
|
1161
|
-
//# sourceMappingURL=ShopScreen-
|
|
1161
|
+
//# sourceMappingURL=ShopScreen-D9clGspu.cjs.map
|