@fluid-app/portal-sdk 0.1.70 → 0.1.72
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/{AppDownloadScreen-BXWBVnQM.cjs → AppDownloadScreen-7TQv3Yqk.cjs} +2 -2
- package/dist/{AppDownloadScreen-BXWBVnQM.cjs.map → AppDownloadScreen-7TQv3Yqk.cjs.map} +1 -1
- package/dist/{AppDownloadScreen-BXS02LRb.mjs → AppDownloadScreen-BDkQYUYF.mjs} +2 -2
- package/dist/{AppDownloadScreen-BXS02LRb.mjs.map → AppDownloadScreen-BDkQYUYF.mjs.map} +1 -1
- package/dist/{AppDownloadScreen-BVrUR6lm.mjs → AppDownloadScreen-BRN8j8oq.mjs} +7 -7
- package/dist/{AppDownloadScreen-BtwySuUY.cjs → AppDownloadScreen-Bibphw78.cjs} +7 -7
- package/dist/{CarouselWidget-DgskhtDP.cjs → CarouselWidget-BFYntrZQ.cjs} +2 -2
- package/dist/{CarouselWidget-DgskhtDP.cjs.map → CarouselWidget-BFYntrZQ.cjs.map} +1 -1
- package/dist/{CarouselWidget-BGdjG-xz.mjs → CarouselWidget-Bt1qOfyr.mjs} +2 -2
- package/dist/{CarouselWidget-BGdjG-xz.mjs.map → CarouselWidget-Bt1qOfyr.mjs.map} +1 -1
- package/dist/{CarouselWidget-CC6ZQZ8e.cjs → CarouselWidget-xDuWJsf-.cjs} +2 -2
- package/dist/{ChartWidget-BdNpOMhz.cjs → ChartWidget-BS4O1EOU.cjs} +2 -2
- package/dist/{ChartWidget-DSaru9Bb.mjs → ChartWidget-Cl5tEkUp.mjs} +2 -2
- package/dist/{ChartWidget-DSaru9Bb.mjs.map → ChartWidget-Cl5tEkUp.mjs.map} +1 -1
- package/dist/{ChartWidget-CS600CjN.cjs → ChartWidget-Dj_Rjkb8.cjs} +2 -2
- package/dist/{ChartWidget-CS600CjN.cjs.map → ChartWidget-Dj_Rjkb8.cjs.map} +1 -1
- package/dist/{ContactsScreen-C_c2yy5J.cjs → ContactsScreen-BpWSKKkQ.cjs} +8 -8
- package/dist/{ContactsScreen-B3k1fVQx.cjs → ContactsScreen-BvykfPOl.cjs} +4 -4
- package/dist/{ContactsScreen-B3k1fVQx.cjs.map → ContactsScreen-BvykfPOl.cjs.map} +1 -1
- package/dist/{ContactsScreen-CH6u8cRi.mjs → ContactsScreen-DXmgTj5G.mjs} +4 -4
- package/dist/{ContactsScreen-CH6u8cRi.mjs.map → ContactsScreen-DXmgTj5G.mjs.map} +1 -1
- package/dist/{ContactsScreen-ruymx9Pi.mjs → ContactsScreen-Ds1Tde6r.mjs} +8 -8
- package/dist/{FluidProvider-uuu90TSG.mjs → FluidProvider-BMxf7_8j.mjs} +9 -9
- package/dist/{FluidProvider-uuu90TSG.mjs.map → FluidProvider-BMxf7_8j.mjs.map} +1 -1
- package/dist/{FluidProvider-SnHdl4ww.cjs → FluidProvider-Dqj1m2GK.cjs} +9 -9
- package/dist/{FluidProvider-SnHdl4ww.cjs.map → FluidProvider-Dqj1m2GK.cjs.map} +1 -1
- package/dist/{LinkWidget-Bvw5OZwU.cjs → LinkWidget-9g8PsB_X.cjs} +2 -2
- package/dist/{LinkWidget-Bvw5OZwU.cjs.map → LinkWidget-9g8PsB_X.cjs.map} +1 -1
- package/dist/{LinkWidget-hhWO8yWC.cjs → LinkWidget-A_eWNLdm.cjs} +2 -2
- package/dist/{LinkWidget-dwIVKZD0.mjs → LinkWidget-BSCD6Gnm.mjs} +2 -2
- package/dist/{LinkWidget-dwIVKZD0.mjs.map → LinkWidget-BSCD6Gnm.mjs.map} +1 -1
- package/dist/{MessagingScreen-CGS474IP.mjs → MessagingScreen-85gpbRSW.mjs} +8 -8
- package/dist/{MessagingScreen-C7xDqpLm.cjs → MessagingScreen-BsR-IDc3.cjs} +7 -7
- package/dist/{MessagingScreen-tFbOXFq4.mjs → MessagingScreen-DKOjEkb6.mjs} +5 -5
- package/dist/{MessagingScreen-tFbOXFq4.mjs.map → MessagingScreen-DKOjEkb6.mjs.map} +1 -1
- package/dist/{MessagingScreen-27HyrQ1V.cjs → MessagingScreen-xPClL7GU.cjs} +4 -4
- package/dist/{MessagingScreen-27HyrQ1V.cjs.map → MessagingScreen-xPClL7GU.cjs.map} +1 -1
- package/dist/{MySiteScreen-DR_xY95c.mjs → MySiteScreen-CCJYG1Dy.mjs} +3 -3
- package/dist/{MySiteScreen-DR_xY95c.mjs.map → MySiteScreen-CCJYG1Dy.mjs.map} +1 -1
- package/dist/{MySiteScreen-bUfo9RDR.mjs → MySiteScreen-DALAbAWu.mjs} +7 -7
- package/dist/{MySiteScreen-B_UnnWDX.cjs → MySiteScreen-DobLvICT.cjs} +7 -7
- package/dist/{MySiteScreen-C-cS0_qZ.cjs → MySiteScreen-m22db4Tc.cjs} +3 -3
- package/dist/{MySiteScreen-C-cS0_qZ.cjs.map → MySiteScreen-m22db4Tc.cjs.map} +1 -1
- package/dist/{OrdersScreen-OexJlI4Y.cjs → OrdersScreen-C0gj-cxi.cjs} +5 -5
- package/dist/{OrdersScreen-OexJlI4Y.cjs.map → OrdersScreen-C0gj-cxi.cjs.map} +1 -1
- package/dist/{OrdersScreen-CQzgIEa4.mjs → OrdersScreen-Ci6pbdBP.mjs} +5 -5
- package/dist/{OrdersScreen-CQzgIEa4.mjs.map → OrdersScreen-Ci6pbdBP.mjs.map} +1 -1
- package/dist/{OrdersScreen-CO9vm0Wj.mjs → OrdersScreen-CsQ8UEik.mjs} +8 -8
- package/dist/{OrdersScreen-JCVS__ag.cjs → OrdersScreen-h34Ai_ng.cjs} +8 -8
- package/dist/{ProductsScreen-BcM3LqsG.cjs → ProductsScreen-B2aWFjRn.cjs} +8 -8
- package/dist/{ProductsScreen-BgVl8GAm.cjs → ProductsScreen-CdpOBRnN.cjs} +4 -4
- package/dist/{ProductsScreen-BgVl8GAm.cjs.map → ProductsScreen-CdpOBRnN.cjs.map} +1 -1
- package/dist/{ProductsScreen-GOW8lxiN.mjs → ProductsScreen-DsR5ONUJ.mjs} +9 -9
- package/dist/{ProductsScreen-B0BsPJth.mjs → ProductsScreen-K7snFJkp.mjs} +4 -4
- package/dist/{ProductsScreen-B0BsPJth.mjs.map → ProductsScreen-K7snFJkp.mjs.map} +1 -1
- package/dist/{ProfileScreen-Tcqc5WfU.mjs → ProfileScreen-BFJYYi0q.mjs} +7 -7
- package/dist/{ProfileScreen-e-uj2ulO.cjs → ProfileScreen-B_3gfD_i.cjs} +7 -7
- package/dist/{ProfileScreen-DFM_r4T5.cjs → ProfileScreen-B_LAuEoi.cjs} +4 -4
- package/dist/{ProfileScreen-DFM_r4T5.cjs.map → ProfileScreen-B_LAuEoi.cjs.map} +1 -1
- package/dist/{ProfileScreen-pvpnY0cG.mjs → ProfileScreen-Cp4Mrgux.mjs} +4 -4
- package/dist/{ProfileScreen-pvpnY0cG.mjs.map → ProfileScreen-Cp4Mrgux.mjs.map} +1 -1
- package/dist/{ShareablesScreen-C7M_kGX9.cjs → ShareablesScreen-Bs1GSq4_.cjs} +4 -4
- package/dist/{ShareablesScreen-C7M_kGX9.cjs.map → ShareablesScreen-Bs1GSq4_.cjs.map} +1 -1
- package/dist/{ShareablesScreen-KFwyduqD.mjs → ShareablesScreen-CbJcwq6z.mjs} +9 -9
- package/dist/{ShareablesScreen-8rSANBth.cjs → ShareablesScreen-Dc62JyfM.cjs} +8 -8
- package/dist/{ShareablesScreen-SS9rcLym.mjs → ShareablesScreen-HrBPki3d.mjs} +4 -4
- package/dist/{ShareablesScreen-SS9rcLym.mjs.map → ShareablesScreen-HrBPki3d.mjs.map} +1 -1
- package/dist/{ShopScreen-XGC180Ts.mjs → ShopScreen-BHI08VYS.mjs} +5 -5
- package/dist/{ShopScreen-XGC180Ts.mjs.map → ShopScreen-BHI08VYS.mjs.map} +1 -1
- package/dist/{ShopScreen-CMkEtT1s.mjs → ShopScreen-D6v-JlCL.mjs} +7 -7
- package/dist/{ShopScreen-Bo9Bbpg8.cjs → ShopScreen-DenJE12S.cjs} +7 -7
- package/dist/{ShopScreen-D-1WO4sB.cjs → ShopScreen-uG4ymlNd.cjs} +5 -5
- package/dist/{ShopScreen-D-1WO4sB.cjs.map → ShopScreen-uG4ymlNd.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-Vn6EN634.cjs → SubscriptionsScreen-C5y5f-Y_.cjs} +5 -5
- package/dist/{SubscriptionsScreen-Vn6EN634.cjs.map → SubscriptionsScreen-C5y5f-Y_.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-50w7SgWX.mjs → SubscriptionsScreen-CYS7lSKa.mjs} +5 -5
- package/dist/{SubscriptionsScreen-50w7SgWX.mjs.map → SubscriptionsScreen-CYS7lSKa.mjs.map} +1 -1
- package/dist/{SubscriptionsScreen-BVLHc7-p.mjs → SubscriptionsScreen-D6DbzsKB.mjs} +8 -8
- package/dist/{SubscriptionsScreen-DKI17q_K.cjs → SubscriptionsScreen-x-hG5H0M.cjs} +8 -8
- package/dist/{TableWidget-CcPSLT0B.cjs → TableWidget-3f5y9RqX.cjs} +2 -2
- package/dist/{TableWidget-DjYabx1e.mjs → TableWidget-CWSQnNLl.mjs} +2 -2
- package/dist/{TableWidget-DjYabx1e.mjs.map → TableWidget-CWSQnNLl.mjs.map} +1 -1
- package/dist/{TableWidget-Cri6r5Yr.cjs → TableWidget-rYwoKBuC.cjs} +2 -2
- package/dist/{TableWidget-Cri6r5Yr.cjs.map → TableWidget-rYwoKBuC.cjs.map} +1 -1
- package/dist/{UpgradeScreen-BbP-0Pcg.cjs → UpgradeScreen-BwYEAmkp.cjs} +2 -2
- package/dist/{UpgradeScreen-BbP-0Pcg.cjs.map → UpgradeScreen-BwYEAmkp.cjs.map} +1 -1
- package/dist/{UpgradeScreen-D7LfdVSJ.mjs → UpgradeScreen-DwhybKwu.mjs} +2 -2
- package/dist/{UpgradeScreen-D7LfdVSJ.mjs.map → UpgradeScreen-DwhybKwu.mjs.map} +1 -1
- package/dist/{UpgradeScreen-DJKNVL-O.cjs → UpgradeScreen-Dzeu1jqQ.cjs} +2 -2
- package/dist/{es-CrIkZTQ3.mjs → es-BzmMF_gE.mjs} +2 -2
- package/dist/{es-CrIkZTQ3.mjs.map → es-BzmMF_gE.mjs.map} +1 -1
- package/dist/index.cjs +44 -44
- package/dist/index.mjs +45 -45
- package/dist/{order-detail-DkMYJvzl.mjs → order-detail-C8Qta7xt.mjs} +2 -2
- package/dist/{order-detail-DkMYJvzl.mjs.map → order-detail-C8Qta7xt.mjs.map} +1 -1
- package/dist/{order-detail-JVq0-ps1.cjs → order-detail-S0QZ8p5Z.cjs} +2 -2
- package/dist/{order-detail-JVq0-ps1.cjs.map → order-detail-S0QZ8p5Z.cjs.map} +1 -1
- package/dist/{src-Bh-9OV8i.mjs → src-BPlLx20V.mjs} +18 -18
- package/dist/src-BPlLx20V.mjs.map +1 -0
- package/dist/{src-D1poJLOQ.cjs → src-D6ED_OgR.cjs} +2 -2
- package/dist/{src-D1poJLOQ.cjs.map → src-D6ED_OgR.cjs.map} +1 -1
- package/dist/{src-CzK-t4_m.mjs → src-DQnYIQKC.mjs} +3 -3
- package/dist/{src-CzK-t4_m.mjs.map → src-DQnYIQKC.mjs.map} +1 -1
- package/dist/{src-DqIS-4ns.cjs → src-DdJSkS2k.cjs} +18 -18
- package/dist/src-DdJSkS2k.cjs.map +1 -0
- package/dist/{use-account-clients-Bem920_7.cjs → use-account-clients-DrWcf8IN.cjs} +2 -2
- package/dist/{use-account-clients-Bem920_7.cjs.map → use-account-clients-DrWcf8IN.cjs.map} +1 -1
- package/dist/{use-account-clients-FUcF1B-z.mjs → use-account-clients-iJVMmnbv.mjs} +2 -2
- package/dist/{use-account-clients-FUcF1B-z.mjs.map → use-account-clients-iJVMmnbv.mjs.map} +1 -1
- package/dist/{use-current-user-Bld9wMVT.cjs → use-current-user-B-pNBKKk.cjs} +3 -3
- package/dist/{use-current-user-Bld9wMVT.cjs.map → use-current-user-B-pNBKKk.cjs.map} +1 -1
- package/dist/{use-current-user-DnBpWIw6.mjs → use-current-user-C52Qw6if.mjs} +3 -3
- package/dist/{use-current-user-DnBpWIw6.mjs.map → use-current-user-C52Qw6if.mjs.map} +1 -1
- package/dist/{use-customer-account-Rm2QXJiZ.cjs → use-customer-account-BWhY4Tam.cjs} +3 -3
- package/dist/{use-customer-account-Rm2QXJiZ.cjs.map → use-customer-account-BWhY4Tam.cjs.map} +1 -1
- package/dist/{use-customer-account-Dix8Ja5O.mjs → use-customer-account-C9_Xb6x-.mjs} +3 -3
- package/dist/{use-customer-account-Dix8Ja5O.mjs.map → use-customer-account-C9_Xb6x-.mjs.map} +1 -1
- package/dist/{use-fluid-api-CedscoxF.mjs → use-fluid-api-Cvx_ADUR.mjs} +2 -2
- package/dist/{use-fluid-api-CedscoxF.mjs.map → use-fluid-api-Cvx_ADUR.mjs.map} +1 -1
- package/dist/{use-fluid-api-DyI6LDsV.cjs → use-fluid-api-Ip5de2vH.cjs} +2 -2
- package/dist/{use-fluid-api-DyI6LDsV.cjs.map → use-fluid-api-Ip5de2vH.cjs.map} +1 -1
- package/dist/vite/index.cjs +19 -6
- package/dist/vite/index.cjs.map +1 -1
- package/dist/vite/index.mjs +19 -6
- package/dist/vite/index.mjs.map +1 -1
- package/package.json +15 -15
- package/dist/src-Bh-9OV8i.mjs.map +0 -1
- package/dist/src-DqIS-4ns.cjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require("./chunk-DAgNkxik.cjs");
|
|
2
|
-
const require_use_account_clients = require("./use-account-clients-
|
|
3
|
-
const require_use_current_user = require("./use-current-user-
|
|
2
|
+
const require_use_account_clients = require("./use-account-clients-DrWcf8IN.cjs");
|
|
3
|
+
const require_use_current_user = require("./use-current-user-B-pNBKKk.cjs");
|
|
4
4
|
const require_AppNavigationContext = require("./AppNavigationContext-B88_pXjo.cjs");
|
|
5
|
-
const require_src = require("./src-
|
|
5
|
+
const require_src = require("./src-D6ED_OgR.cjs");
|
|
6
6
|
let react = require("react");
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
//#region ../../file-picker/api-client/src/client.ts
|
|
@@ -142,4 +142,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
144
|
|
|
145
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
145
|
+
//# sourceMappingURL=ShareablesScreen-Bs1GSq4_.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-C7M_kGX9.cjs","names":["useSdkClient","useCurrentUser","useAppNavigation","ShareablesCoreProvider","ShareablesUIProvider","ShareablesApp"],"sources":["../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import type { FetchClientInstance } from \"@fluid-app/api-client-core\";\nimport type { DamAssetCreateResponse } from \"@fluid-app/file-picker-core\";\n\nexport interface DamUploadStrategy {\n uploadFile(params: {\n file: File;\n name: string;\n description?: string;\n tags?: string[];\n onProgress?: (progress: number) => void;\n companyId?: number;\n }): Promise<DamAssetCreateResponse>;\n}\n\nexport interface FilePickerClientConfig {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint?: string; // defaults to \"/api/proxy-url\"\n}\n\nexport interface FilePickerClient {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint: string;\n}\n\nexport function createFilePickerClient(\n config: FilePickerClientConfig,\n): FilePickerClient {\n return {\n fetchClient: config.fetchClient,\n uploadStrategy: config.uploadStrategy,\n unsplashAccessKey: config.unsplashAccessKey,\n proxyEndpoint: config.proxyEndpoint ?? \"/api/proxy-url\",\n };\n}\n","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 { createFilePickerClient } from \"@fluid-app/file-picker-api-client\";\nimport { useCurrentUser } from \"../hooks/use-current-user\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useSdkClient } from \"../account/use-account-clients\";\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 const domainClient = useSdkClient();\n const { data: userData } = useCurrentUser();\n const { currentSlug, navigate } = useAppNavigation();\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 back to the listing for the current screen\n navigate(`share/${screen}`);\n } else {\n // Navigate to the default shareables screen\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n client: domainClient,\n user: userData ? { id: userData.id } : null,\n repContext: true,\n }),\n [domainClient, userData],\n );\n\n const filePickerClient = useMemo(\n () => createFilePickerClient({ fetchClient: domainClient }),\n [domainClient],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: userData\n ? {\n id: userData.id,\n company: userData.company\n ? { logo_url: userData.company.logo_url }\n : null,\n }\n : undefined,\n affiliateId:\n (userData as { affiliate_id?: number } | undefined)?.affiliate_id ??\n null,\n basePath: \"\",\n navigate: (path: string) => {\n // Strip leading slash — cards generate paths like \"/share/product/123\"\n const cleanPath = path.replace(/^\\//, \"\");\n // Ensure share/ prefix — screen components pass relative paths like \"media/new\"\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 filePickerClient,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const affiliateId = (userData as { affiliate_id?: number } | undefined)\n ?.affiliate_id;\n if (!affiliateId) throw new Error(\"No affiliate ID\");\n return domainClient.post<{ is_favorited: boolean }>(\n `/user_companies/${affiliateId}/favorites/toggle.json`,\n {\n favoriteable_id: params.favoriteableId,\n favoriteable_type: params.favoriteableType,\n },\n );\n },\n onDeletePlaylist: async (playlistId: number) => {\n const { playlists: playlistsApi } =\n await import(\"@fluid-app/shareables-api-client\");\n await playlistsApi.deletePlaylist(domainClient, playlistId);\n },\n }),\n [userData, navigate, filePickerClient, domainClient],\n );\n\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={userData?.company?.logo_url}\n countryCode={userData?.country?.iso}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n </div>\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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"}
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-Bs1GSq4_.cjs","names":["useSdkClient","useCurrentUser","useAppNavigation","ShareablesCoreProvider","ShareablesUIProvider","ShareablesApp"],"sources":["../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import type { FetchClientInstance } from \"@fluid-app/api-client-core\";\nimport type { DamAssetCreateResponse } from \"@fluid-app/file-picker-core\";\n\nexport interface DamUploadStrategy {\n uploadFile(params: {\n file: File;\n name: string;\n description?: string;\n tags?: string[];\n onProgress?: (progress: number) => void;\n companyId?: number;\n }): Promise<DamAssetCreateResponse>;\n}\n\nexport interface FilePickerClientConfig {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint?: string; // defaults to \"/api/proxy-url\"\n}\n\nexport interface FilePickerClient {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint: string;\n}\n\nexport function createFilePickerClient(\n config: FilePickerClientConfig,\n): FilePickerClient {\n return {\n fetchClient: config.fetchClient,\n uploadStrategy: config.uploadStrategy,\n unsplashAccessKey: config.unsplashAccessKey,\n proxyEndpoint: config.proxyEndpoint ?? \"/api/proxy-url\",\n };\n}\n","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 { createFilePickerClient } from \"@fluid-app/file-picker-api-client\";\nimport { useCurrentUser } from \"../hooks/use-current-user\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useSdkClient } from \"../account/use-account-clients\";\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 const domainClient = useSdkClient();\n const { data: userData } = useCurrentUser();\n const { currentSlug, navigate } = useAppNavigation();\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 back to the listing for the current screen\n navigate(`share/${screen}`);\n } else {\n // Navigate to the default shareables screen\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n client: domainClient,\n user: userData ? { id: userData.id } : null,\n repContext: true,\n }),\n [domainClient, userData],\n );\n\n const filePickerClient = useMemo(\n () => createFilePickerClient({ fetchClient: domainClient }),\n [domainClient],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: userData\n ? {\n id: userData.id,\n company: userData.company\n ? { logo_url: userData.company.logo_url }\n : null,\n }\n : undefined,\n affiliateId:\n (userData as { affiliate_id?: number } | undefined)?.affiliate_id ??\n null,\n basePath: \"\",\n navigate: (path: string) => {\n // Strip leading slash — cards generate paths like \"/share/product/123\"\n const cleanPath = path.replace(/^\\//, \"\");\n // Ensure share/ prefix — screen components pass relative paths like \"media/new\"\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 filePickerClient,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const affiliateId = (userData as { affiliate_id?: number } | undefined)\n ?.affiliate_id;\n if (!affiliateId) throw new Error(\"No affiliate ID\");\n return domainClient.post<{ is_favorited: boolean }>(\n `/user_companies/${affiliateId}/favorites/toggle.json`,\n {\n favoriteable_id: params.favoriteableId,\n favoriteable_type: params.favoriteableType,\n },\n );\n },\n onDeletePlaylist: async (playlistId: number) => {\n const { playlists: playlistsApi } =\n await import(\"@fluid-app/shareables-api-client\");\n await playlistsApi.deletePlaylist(domainClient, playlistId);\n },\n }),\n [userData, navigate, filePickerClient, domainClient],\n );\n\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={userData?.company?.logo_url}\n countryCode={userData?.country?.iso}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n </div>\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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./FluidProvider-
|
|
1
|
+
import "./FluidProvider-BMxf7_8j.mjs";
|
|
2
2
|
import "./error-state-BGEvTYIh.mjs";
|
|
3
3
|
import "./PointsWidget-DjSC-B2i.mjs";
|
|
4
4
|
import "./ScreenRenderer-CnxT7sYF.mjs";
|
|
@@ -11,16 +11,16 @@ import "./BulletListWidget-C-zNFHY3.mjs";
|
|
|
11
11
|
import "./CalendarWidget-BZ171ZWO.mjs";
|
|
12
12
|
import "./CardWidget-BKk7OtDP.mjs";
|
|
13
13
|
import "./purify.es-BiyaWMrt.mjs";
|
|
14
|
-
import "./src-
|
|
14
|
+
import "./src-BPlLx20V.mjs";
|
|
15
15
|
import "./scroll-arrows-D9DfrbI-.mjs";
|
|
16
16
|
import "./MediaRenderer-B3R-Q6Qt.mjs";
|
|
17
|
-
import "./CarouselWidget-
|
|
17
|
+
import "./CarouselWidget-Bt1qOfyr.mjs";
|
|
18
18
|
import "./CatchUpWidget-BGOAfvS0.mjs";
|
|
19
|
-
import "./ChartWidget-
|
|
19
|
+
import "./ChartWidget-Cl5tEkUp.mjs";
|
|
20
20
|
import "./LayoutWidget-DVqlQga6.mjs";
|
|
21
21
|
import "./ContainerWidget-Dlno2qQ7.mjs";
|
|
22
22
|
import "./ImageWidget-BHwucvLx.mjs";
|
|
23
|
-
import "./LinkWidget-
|
|
23
|
+
import "./LinkWidget-BSCD6Gnm.mjs";
|
|
24
24
|
import "./ListWidget-ZqCYH78q.mjs";
|
|
25
25
|
import "./MySiteWidget-KK2_WF16.mjs";
|
|
26
26
|
import "./NestedWidget-JS_3-isb.mjs";
|
|
@@ -28,14 +28,14 @@ import "./QuickShareWidget-DsBI1JQ_.mjs";
|
|
|
28
28
|
import "./RecentActivityWidget-CuU8Rd77.mjs";
|
|
29
29
|
import "./SeparatorWidget-DQqeYY3c.mjs";
|
|
30
30
|
import "./SpacerWidget-DgVU58BC.mjs";
|
|
31
|
-
import "./TableWidget-
|
|
31
|
+
import "./TableWidget-CWSQnNLl.mjs";
|
|
32
32
|
import "./ToDoWidget-Cmvf7I6c.mjs";
|
|
33
33
|
import "./VideoWidget-51MxnPRZ.mjs";
|
|
34
34
|
import "./ScreenHeaderContext-CrdfLGKk.mjs";
|
|
35
35
|
import "./dist-CMGXkSgZ.mjs";
|
|
36
|
-
import "./es-
|
|
36
|
+
import "./es-BzmMF_gE.mjs";
|
|
37
37
|
import "./dist-Cl4FsM3V.mjs";
|
|
38
|
-
import "./src-
|
|
39
|
-
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
38
|
+
import "./src-DQnYIQKC.mjs";
|
|
39
|
+
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-HrBPki3d.mjs";
|
|
40
40
|
import "./sortable.esm-DreCqRxJ.mjs";
|
|
41
41
|
export { ShareablesScreen, shareablesScreenPropertySchema };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-DAgNkxik.cjs");
|
|
2
|
-
require("./FluidProvider-
|
|
2
|
+
require("./FluidProvider-Dqj1m2GK.cjs");
|
|
3
3
|
require("./error-state-CGCSDJIJ.cjs");
|
|
4
4
|
require("./PointsWidget-Bs74dyFl.cjs");
|
|
5
5
|
require("./ScreenRenderer-D-vpSa-G.cjs");
|
|
@@ -12,16 +12,16 @@ require("./BulletListWidget-DuR5i9jx.cjs");
|
|
|
12
12
|
require("./CalendarWidget-OUSUxRk2.cjs");
|
|
13
13
|
require("./CardWidget-BkLF5NI4.cjs");
|
|
14
14
|
require("./purify.es-BNrhJaiC.cjs");
|
|
15
|
-
require("./src-
|
|
15
|
+
require("./src-DdJSkS2k.cjs");
|
|
16
16
|
require("./scroll-arrows-BNDly6uT.cjs");
|
|
17
17
|
require("./MediaRenderer-CRKJcPD9.cjs");
|
|
18
|
-
require("./CarouselWidget-
|
|
18
|
+
require("./CarouselWidget-BFYntrZQ.cjs");
|
|
19
19
|
require("./CatchUpWidget-DXjW4lrg.cjs");
|
|
20
|
-
require("./ChartWidget-
|
|
20
|
+
require("./ChartWidget-Dj_Rjkb8.cjs");
|
|
21
21
|
require("./LayoutWidget-q4xxJVPn.cjs");
|
|
22
22
|
require("./ContainerWidget-CdUs8OBL.cjs");
|
|
23
23
|
require("./ImageWidget-BRfKvv08.cjs");
|
|
24
|
-
require("./LinkWidget-
|
|
24
|
+
require("./LinkWidget-9g8PsB_X.cjs");
|
|
25
25
|
require("./ListWidget-DAtEwFCR.cjs");
|
|
26
26
|
require("./MySiteWidget-BPp8ZoqT.cjs");
|
|
27
27
|
require("./NestedWidget-cl38JElu.cjs");
|
|
@@ -29,15 +29,15 @@ require("./QuickShareWidget-C5u0Rngd.cjs");
|
|
|
29
29
|
require("./RecentActivityWidget-WmA5W55V.cjs");
|
|
30
30
|
require("./SeparatorWidget-UJrep6Kl.cjs");
|
|
31
31
|
require("./SpacerWidget-Br2IZFFv.cjs");
|
|
32
|
-
require("./TableWidget-
|
|
32
|
+
require("./TableWidget-rYwoKBuC.cjs");
|
|
33
33
|
require("./ToDoWidget-Bv6POc5R.cjs");
|
|
34
34
|
require("./VideoWidget-DnnuIvW1.cjs");
|
|
35
35
|
require("./ScreenHeaderContext-eyKPyDoQ.cjs");
|
|
36
36
|
require("./dist-NpiIdjkL.cjs");
|
|
37
37
|
require("./es-qN_AsxTa.cjs");
|
|
38
38
|
require("./dist-Cs6PV1Tf.cjs");
|
|
39
|
-
require("./src-
|
|
40
|
-
const require_ShareablesScreen = require("./ShareablesScreen-
|
|
39
|
+
require("./src-D6ED_OgR.cjs");
|
|
40
|
+
const require_ShareablesScreen = require("./ShareablesScreen-Bs1GSq4_.cjs");
|
|
41
41
|
require("./dist-oTn1xy1Z.cjs");
|
|
42
42
|
exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
|
|
43
43
|
exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { i as useSdkClient } from "./use-account-clients-
|
|
2
|
-
import { n as useCurrentUser } from "./use-current-user-
|
|
1
|
+
import { i as useSdkClient } from "./use-account-clients-iJVMmnbv.mjs";
|
|
2
|
+
import { n as useCurrentUser } from "./use-current-user-C52Qw6if.mjs";
|
|
3
3
|
import { n as useAppNavigation } from "./AppNavigationContext-DJeNcP4Y.mjs";
|
|
4
|
-
import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-
|
|
4
|
+
import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-DQnYIQKC.mjs";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
//#region ../../file-picker/api-client/src/client.ts
|
|
@@ -130,4 +130,4 @@ const shareablesScreenPropertySchema = {
|
|
|
130
130
|
//#endregion
|
|
131
131
|
export { shareablesScreenPropertySchema as n, ShareablesScreen as t };
|
|
132
132
|
|
|
133
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
133
|
+
//# sourceMappingURL=ShareablesScreen-HrBPki3d.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-HrBPki3d.mjs","names":[],"sources":["../../../file-picker/api-client/src/client.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["import type { FetchClientInstance } from \"@fluid-app/api-client-core\";\nimport type { DamAssetCreateResponse } from \"@fluid-app/file-picker-core\";\n\nexport interface DamUploadStrategy {\n uploadFile(params: {\n file: File;\n name: string;\n description?: string;\n tags?: string[];\n onProgress?: (progress: number) => void;\n companyId?: number;\n }): Promise<DamAssetCreateResponse>;\n}\n\nexport interface FilePickerClientConfig {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint?: string; // defaults to \"/api/proxy-url\"\n}\n\nexport interface FilePickerClient {\n fetchClient: FetchClientInstance;\n uploadStrategy?: DamUploadStrategy;\n unsplashAccessKey?: string;\n proxyEndpoint: string;\n}\n\nexport function createFilePickerClient(\n config: FilePickerClientConfig,\n): FilePickerClient {\n return {\n fetchClient: config.fetchClient,\n uploadStrategy: config.uploadStrategy,\n unsplashAccessKey: config.unsplashAccessKey,\n proxyEndpoint: config.proxyEndpoint ?? \"/api/proxy-url\",\n };\n}\n","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 { createFilePickerClient } from \"@fluid-app/file-picker-api-client\";\nimport { useCurrentUser } from \"../hooks/use-current-user\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useSdkClient } from \"../account/use-account-clients\";\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 const domainClient = useSdkClient();\n const { data: userData } = useCurrentUser();\n const { currentSlug, navigate } = useAppNavigation();\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 back to the listing for the current screen\n navigate(`share/${screen}`);\n } else {\n // Navigate to the default shareables screen\n navigate(\"share/products\");\n }\n }, [navigate, detailId, screen]);\n\n const coreConfig = useMemo(\n () => ({\n client: domainClient,\n user: userData ? { id: userData.id } : null,\n repContext: true,\n }),\n [domainClient, userData],\n );\n\n const filePickerClient = useMemo(\n () => createFilePickerClient({ fetchClient: domainClient }),\n [domainClient],\n );\n\n const uiConfig = useMemo(\n () => ({\n user: userData\n ? {\n id: userData.id,\n company: userData.company\n ? { logo_url: userData.company.logo_url }\n : null,\n }\n : undefined,\n affiliateId:\n (userData as { affiliate_id?: number } | undefined)?.affiliate_id ??\n null,\n basePath: \"\",\n navigate: (path: string) => {\n // Strip leading slash — cards generate paths like \"/share/product/123\"\n const cleanPath = path.replace(/^\\//, \"\");\n // Ensure share/ prefix — screen components pass relative paths like \"media/new\"\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 filePickerClient,\n onToggleFavorite: async (params: {\n favoriteableId: number;\n favoriteableType: string;\n }) => {\n const affiliateId = (userData as { affiliate_id?: number } | undefined)\n ?.affiliate_id;\n if (!affiliateId) throw new Error(\"No affiliate ID\");\n return domainClient.post<{ is_favorited: boolean }>(\n `/user_companies/${affiliateId}/favorites/toggle.json`,\n {\n favoriteable_id: params.favoriteableId,\n favoriteable_type: params.favoriteableType,\n },\n );\n },\n onDeletePlaylist: async (playlistId: number) => {\n const { playlists: playlistsApi } =\n await import(\"@fluid-app/shareables-api-client\");\n await playlistsApi.deletePlaylist(domainClient, playlistId);\n },\n }),\n [userData, navigate, filePickerClient, domainClient],\n );\n\n return (\n <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n <ShareablesCoreProvider config={coreConfig}>\n <ShareablesUIProvider config={uiConfig}>\n <ShareablesApp\n screen={screen}\n detailId={detailId}\n action={action}\n companyLogoUrl={userData?.company?.logo_url}\n countryCode={userData?.country?.iso}\n onNavigate={handleNavigate}\n onBack={handleBack}\n />\n </ShareablesUIProvider>\n </ShareablesCoreProvider>\n </div>\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":";;;;;;;AA4BA,SAAgB,uBACd,QACkB;AAClB,QAAO;EACL,aAAa,OAAO;EACpB,gBAAgB,OAAO;EACvB,mBAAmB,OAAO;EAC1B,eAAe,OAAO,iBAAiB;EACxC;;;;;;;;;;;;;;;;;;ACCH,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;CAC3C,MAAM,eAAe,cAAc;CACnC,MAAM,EAAE,MAAM,aAAa,gBAAgB;CAC3C,MAAM,EAAE,aAAa,aAAa,kBAAkB;CAEpD,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,OAEd,UAAS,SAAS,SAAS;MAG3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;CAEhC,MAAM,aAAa,eACV;EACL,QAAQ;EACR,MAAM,WAAW,EAAE,IAAI,SAAS,IAAI,GAAG;EACvC,YAAY;EACb,GACD,CAAC,cAAc,SAAS,CACzB;CAED,MAAM,mBAAmB,cACjB,uBAAuB,EAAE,aAAa,cAAc,CAAC,EAC3D,CAAC,aAAa,CACf;CAED,MAAM,WAAW,eACR;EACL,MAAM,WACF;GACE,IAAI,SAAS;GACb,SAAS,SAAS,UACd,EAAE,UAAU,SAAS,QAAQ,UAAU,GACvC;GACL,GACD,KAAA;EACJ,aACG,UAAoD,gBACrD;EACF,UAAU;EACV,WAAW,SAAiB;GAE1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAKzC,YAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;EAEpB,YAAY,SAGN;AACJ,WAAQ,KAAK,gBAAgB,KAAK,KAAK,IAAI,KAAK,QAAQ;;EAE1D;EACA,kBAAkB,OAAO,WAGnB;GACJ,MAAM,cAAe,UACjB;AACJ,OAAI,CAAC,YAAa,OAAM,IAAI,MAAM,kBAAkB;AACpD,UAAO,aAAa,KAClB,mBAAmB,YAAY,yBAC/B;IACE,iBAAiB,OAAO;IACxB,mBAAmB,OAAO;IAC3B,CACF;;EAEH,kBAAkB,OAAO,eAAuB;GAC9C,MAAM,EAAE,WAAW,iBACjB,MAAM,OAAO,sBAAA,MAAA,MAAA,EAAA,EAAA;AACf,SAAM,aAAa,eAAe,cAAc,WAAW;;EAE9D,GACD;EAAC;EAAU;EAAU;EAAkB;EAAa,CACrD;AAED,QACE,oBAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,oBAAC,wBAAD;GAAwB,QAAQ;aAC9B,oBAAC,sBAAD;IAAsB,QAAQ;cAC5B,oBAAC,eAAD;KACU;KACE;KACF;KACR,gBAAgB,UAAU,SAAS;KACnC,aAAa,UAAU,SAAS;KAChC,YAAY;KACZ,QAAQ;KACR,CAAA;IACmB,CAAA;GACA,CAAA;EACrB,CAAA;;AAIV,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,EAAE;CACX"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as useFluidContext } from "./FluidProvider-
|
|
2
|
-
import { A as SelectContent, F as RadioGroupItem, I as Input, Kt as Breadcrumb, M as SelectTrigger, N as SelectValue, P as RadioGroup, Xt as BreadcrumbPage, Yt as BreadcrumbList, dn as Button, j as SelectItem, k as Select, qt as BreadcrumbItem, x as Skeleton, xt as Card } from "./src-
|
|
3
|
-
import { i as useSdkClient, o as useFluidAuth } from "./use-account-clients-
|
|
1
|
+
import { n as useFluidContext } from "./FluidProvider-BMxf7_8j.mjs";
|
|
2
|
+
import { A as SelectContent, F as RadioGroupItem, I as Input, Kt as Breadcrumb, M as SelectTrigger, N as SelectValue, P as RadioGroup, Xt as BreadcrumbPage, Yt as BreadcrumbList, dn as Button, j as SelectItem, k as Select, qt as BreadcrumbItem, x as Skeleton, xt as Card } from "./src-BPlLx20V.mjs";
|
|
3
|
+
import { i as useSdkClient, o as useFluidAuth } from "./use-account-clients-iJVMmnbv.mjs";
|
|
4
4
|
import { n as useScreenHeaderActions, r as useScreenHeaderBreadcrumbs } from "./ScreenHeaderContext-CrdfLGKk.mjs";
|
|
5
|
-
import { n as useCurrentUser } from "./use-current-user-
|
|
5
|
+
import { n as useCurrentUser } from "./use-current-user-C52Qw6if.mjs";
|
|
6
6
|
import { n as useAppNavigation } from "./AppNavigationContext-DJeNcP4Y.mjs";
|
|
7
7
|
import { n as listProducts, t as getProduct } from "./products-DCO1hF_Q.mjs";
|
|
8
8
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -1755,4 +1755,4 @@ const shopScreenPropertySchema = {
|
|
|
1755
1755
|
//#endregion
|
|
1756
1756
|
export { shopScreenPropertySchema as n, ShopScreen as t };
|
|
1757
1757
|
|
|
1758
|
-
//# sourceMappingURL=ShopScreen-
|
|
1758
|
+
//# sourceMappingURL=ShopScreen-BHI08VYS.mjs.map
|