@fluid-app/portal-sdk 0.1.46 → 0.1.47
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/{CarouselWidget-Bx5jrthO.cjs → CarouselWidget-BRauT5r7.cjs} +2 -2
- package/dist/{CarouselWidget-Bx5jrthO.cjs.map → CarouselWidget-BRauT5r7.cjs.map} +1 -1
- package/dist/{CarouselWidget-C04z7JxO.mjs → CarouselWidget-C7vsjw7r.mjs} +2 -2
- package/dist/{CarouselWidget-C04z7JxO.mjs.map → CarouselWidget-C7vsjw7r.mjs.map} +1 -1
- package/dist/{CarouselWidget-BcnZwnIh.cjs → CarouselWidget-CE12yIQt.cjs} +2 -2
- package/dist/{ChartWidget-WaLM-zc-.mjs → ChartWidget-BqidaXNw.mjs} +2 -2
- package/dist/{ChartWidget-WaLM-zc-.mjs.map → ChartWidget-BqidaXNw.mjs.map} +1 -1
- package/dist/{ChartWidget-_jzD434L.cjs → ChartWidget-DQvxMlax.cjs} +2 -2
- package/dist/{ChartWidget-DWWeWN0Q.cjs → ChartWidget-pFCP3KBK.cjs} +2 -2
- package/dist/{ChartWidget-DWWeWN0Q.cjs.map → ChartWidget-pFCP3KBK.cjs.map} +1 -1
- package/dist/{ContactsScreen-C0I1_D_a.cjs → ContactsScreen-9G2HgNsy.cjs} +375 -39
- package/dist/ContactsScreen-9G2HgNsy.cjs.map +1 -0
- package/dist/{ContactsScreen-DO7EwobV.cjs → ContactsScreen-BmM91s6y.cjs} +8 -8
- package/dist/{ContactsScreen-B4FZ0Qeu.mjs → ContactsScreen-Cx3DlL9d.mjs} +8 -8
- package/dist/{ContactsScreen-CoFB7EM3.mjs → ContactsScreen-VftTRDXR.mjs} +376 -40
- package/dist/ContactsScreen-VftTRDXR.mjs.map +1 -0
- package/dist/{FluidProvider-DzrMOFXn.cjs → FluidProvider-CsIC3HL2.cjs} +9 -9
- package/dist/{FluidProvider-DzrMOFXn.cjs.map → FluidProvider-CsIC3HL2.cjs.map} +1 -1
- package/dist/{FluidProvider-iYl6DSax.mjs → FluidProvider-Dj4ToywG.mjs} +9 -9
- package/dist/{FluidProvider-iYl6DSax.mjs.map → FluidProvider-Dj4ToywG.mjs.map} +1 -1
- package/dist/{LinkWidget-DFApxWIK.cjs → LinkWidget-CHTbeWcV.cjs} +2 -2
- package/dist/{LinkWidget-CJKveS10.cjs → LinkWidget-Dk_01CMC.cjs} +2 -2
- package/dist/{LinkWidget-CJKveS10.cjs.map → LinkWidget-Dk_01CMC.cjs.map} +1 -1
- package/dist/{LinkWidget-NR2OqU4Y.mjs → LinkWidget-sDGQRCy9.mjs} +2 -2
- package/dist/{LinkWidget-NR2OqU4Y.mjs.map → LinkWidget-sDGQRCy9.mjs.map} +1 -1
- package/dist/{MessagingScreen-CUBOR0qo.cjs → MessagingScreen-4tFoITCO.cjs} +4 -4
- package/dist/{MessagingScreen-CUBOR0qo.cjs.map → MessagingScreen-4tFoITCO.cjs.map} +1 -1
- package/dist/{MessagingScreen-kP-1EJZ5.mjs → MessagingScreen-C24TYBXX.mjs} +8 -8
- package/dist/{MessagingScreen-CfbkE7H-.cjs → MessagingScreen-D5xc9XPU.cjs} +7 -7
- package/dist/{MessagingScreen-DgvqyD7k.mjs → MessagingScreen-DbJPeyhA.mjs} +5 -5
- package/dist/{MessagingScreen-DgvqyD7k.mjs.map → MessagingScreen-DbJPeyhA.mjs.map} +1 -1
- package/dist/{MySiteScreen-jE2m5qP6.cjs → MySiteScreen-Bjt-TIOI.cjs} +7 -7
- package/dist/{MySiteScreen-CvyqpzJd.mjs → MySiteScreen-CgsOL37h.mjs} +3 -3
- package/dist/{MySiteScreen-CvyqpzJd.mjs.map → MySiteScreen-CgsOL37h.mjs.map} +1 -1
- package/dist/{MySiteScreen-DUMMPU6X.mjs → MySiteScreen-CsdcTxTp.mjs} +7 -7
- package/dist/{MySiteScreen-NJSRcmI-.cjs → MySiteScreen-ohuek6np.cjs} +3 -3
- package/dist/{MySiteScreen-NJSRcmI-.cjs.map → MySiteScreen-ohuek6np.cjs.map} +1 -1
- package/dist/{OrdersScreen-BTJAhLgs.mjs → OrdersScreen-BZEcJ0Hb.mjs} +8 -8
- package/dist/{OrdersScreen-B2ErpU4b.mjs → OrdersScreen-Bhll_o_2.mjs} +4 -4
- package/dist/{OrdersScreen-B2ErpU4b.mjs.map → OrdersScreen-Bhll_o_2.mjs.map} +1 -1
- package/dist/{OrdersScreen-CE0GMwfC.cjs → OrdersScreen-DZBPD4Qu.cjs} +8 -8
- package/dist/{OrdersScreen-DvqljQVk.cjs → OrdersScreen-mRGgujQ-.cjs} +4 -4
- package/dist/{OrdersScreen-DvqljQVk.cjs.map → OrdersScreen-mRGgujQ-.cjs.map} +1 -1
- package/dist/{ProductsScreen-CBVy5Zyi.mjs → ProductsScreen-9c89IHiX.mjs} +4 -4
- package/dist/{ProductsScreen-CBVy5Zyi.mjs.map → ProductsScreen-9c89IHiX.mjs.map} +1 -1
- package/dist/{ProductsScreen-DdX6HMHt.cjs → ProductsScreen-BtgPVLUi.cjs} +4 -4
- package/dist/{ProductsScreen-DdX6HMHt.cjs.map → ProductsScreen-BtgPVLUi.cjs.map} +1 -1
- package/dist/{ProductsScreen-HIV2lQ9Z.cjs → ProductsScreen-CYs8q165.cjs} +8 -8
- package/dist/{ProductsScreen-Bb5icf74.mjs → ProductsScreen-Dy-cmEiB.mjs} +9 -9
- package/dist/{ProfileScreen-LmGvJwTb.cjs → ProfileScreen-CLM8iOmL.cjs} +4 -4
- package/dist/{ProfileScreen-LmGvJwTb.cjs.map → ProfileScreen-CLM8iOmL.cjs.map} +1 -1
- package/dist/{ProfileScreen-DAFrOHW1.cjs → ProfileScreen-DCCZN8zU.cjs} +7 -7
- package/dist/{ProfileScreen-BpJ41w20.mjs → ProfileScreen-DPtpl6j3.mjs} +7 -7
- package/dist/{ProfileScreen-r8ceJSGs.mjs → ProfileScreen-s8S3JVIE.mjs} +4 -4
- package/dist/{ProfileScreen-r8ceJSGs.mjs.map → ProfileScreen-s8S3JVIE.mjs.map} +1 -1
- package/dist/{ShareablesScreen-CBw3gH0u.cjs → ShareablesScreen-BN3uztrI.cjs} +8 -8
- package/dist/{ShareablesScreen-Dfa0LM6R.cjs → ShareablesScreen-D1Ouqir1.cjs} +4 -4
- package/dist/{ShareablesScreen-Dfa0LM6R.cjs.map → ShareablesScreen-D1Ouqir1.cjs.map} +1 -1
- package/dist/{ShareablesScreen-0JcyLc7i.mjs → ShareablesScreen-DR6219-z.mjs} +4 -4
- package/dist/{ShareablesScreen-0JcyLc7i.mjs.map → ShareablesScreen-DR6219-z.mjs.map} +1 -1
- package/dist/{ShareablesScreen-Riod6fjb.mjs → ShareablesScreen-nhOckVQr.mjs} +9 -9
- package/dist/{ShopScreen-DMDSD4gF.mjs → ShopScreen-CUaZmX4U.mjs} +5 -5
- package/dist/{ShopScreen-DMDSD4gF.mjs.map → ShopScreen-CUaZmX4U.mjs.map} +1 -1
- package/dist/{ShopScreen-CET9016G.cjs → ShopScreen-D8hz0Io1.cjs} +7 -7
- package/dist/{ShopScreen-C73ARj6e.cjs → ShopScreen-Ds7FGtOi.cjs} +5 -5
- package/dist/{ShopScreen-C73ARj6e.cjs.map → ShopScreen-Ds7FGtOi.cjs.map} +1 -1
- package/dist/{ShopScreen-Ddrw43gs.mjs → ShopScreen-Dz-gzUFw.mjs} +7 -7
- package/dist/{SubscriptionsScreen-CPXCoeeu.cjs → SubscriptionsScreen-Bt6RDwDB.cjs} +8 -8
- package/dist/{SubscriptionsScreen-BMjdIyWT.mjs → SubscriptionsScreen-CX3uLV-Y.mjs} +8 -8
- package/dist/{SubscriptionsScreen-CpvMZaU0.cjs → SubscriptionsScreen-sixWFqS0.cjs} +5 -5
- package/dist/{SubscriptionsScreen-CpvMZaU0.cjs.map → SubscriptionsScreen-sixWFqS0.cjs.map} +1 -1
- package/dist/{SubscriptionsScreen-BLrScFQV.mjs → SubscriptionsScreen-wfQjDMiz.mjs} +5 -5
- package/dist/{SubscriptionsScreen-BLrScFQV.mjs.map → SubscriptionsScreen-wfQjDMiz.mjs.map} +1 -1
- package/dist/{TableWidget-aZUcob2U.mjs → TableWidget-DF5i7arL.mjs} +2 -2
- package/dist/{TableWidget-aZUcob2U.mjs.map → TableWidget-DF5i7arL.mjs.map} +1 -1
- package/dist/{TableWidget-DFWfQIWv.cjs → TableWidget-DFpr7R3o.cjs} +2 -2
- package/dist/{TableWidget-DFWfQIWv.cjs.map → TableWidget-DFpr7R3o.cjs.map} +1 -1
- package/dist/{TableWidget-WB7hx4Hb.cjs → TableWidget-blS7QRfo.cjs} +2 -2
- package/dist/{es-CE6ELtdT.mjs → es-D5TTjbe7.mjs} +2 -2
- package/dist/{es-CE6ELtdT.mjs.map → es-D5TTjbe7.mjs.map} +1 -1
- package/dist/index.cjs +38 -38
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +39 -39
- package/dist/{products-DOCuAQDz.mjs → products-BHmOUNfQ.mjs} +3 -3
- package/dist/{products-DOCuAQDz.mjs.map → products-BHmOUNfQ.mjs.map} +1 -1
- package/dist/{products-zutaVs48.cjs → products-jXnAQoTU.cjs} +3 -3
- package/dist/{products-zutaVs48.cjs.map → products-jXnAQoTU.cjs.map} +1 -1
- package/dist/{src-Dd1iRW7j.mjs → src-BtBYwiNS.mjs} +2 -2
- package/dist/{src-Dd1iRW7j.mjs.map → src-BtBYwiNS.mjs.map} +1 -1
- package/dist/{src-CIhTbou2.mjs → src-CnrUO5fh.mjs} +4 -4
- package/dist/{src-CIhTbou2.mjs.map → src-CnrUO5fh.mjs.map} +1 -1
- package/dist/{src-CXGrnE7x.cjs → src-CpNCyVxq.cjs} +3 -3
- package/dist/{src-CXGrnE7x.cjs.map → src-CpNCyVxq.cjs.map} +1 -1
- package/dist/{src-CWGmmrLZ.cjs → src-Da7I1fqK.cjs} +17 -3
- package/dist/src-Da7I1fqK.cjs.map +1 -0
- package/dist/{src-COTid97-.cjs → src-DecFyd_1.cjs} +2 -2
- package/dist/{src-COTid97-.cjs.map → src-DecFyd_1.cjs.map} +1 -1
- package/dist/{src-BVkLGnwV.mjs → src-DvSsESTu.mjs} +12 -4
- package/dist/src-DvSsESTu.mjs.map +1 -0
- package/dist/{use-account-clients-BOwgvZok.cjs → use-account-clients-C0ioK2n_.cjs} +2 -2
- package/dist/{use-account-clients-BOwgvZok.cjs.map → use-account-clients-C0ioK2n_.cjs.map} +1 -1
- package/dist/{use-account-clients-EEcG-B1B.mjs → use-account-clients-D9HGyaK9.mjs} +2 -2
- package/dist/{use-account-clients-EEcG-B1B.mjs.map → use-account-clients-D9HGyaK9.mjs.map} +1 -1
- package/dist/{use-customer-account-TLWo3z05.mjs → use-customer-account-BwXCw2H3.mjs} +3 -3
- package/dist/{use-customer-account-TLWo3z05.mjs.map → use-customer-account-BwXCw2H3.mjs.map} +1 -1
- package/dist/{use-customer-account-BxoVi8ak.cjs → use-customer-account-CRcU8yDx.cjs} +3 -3
- package/dist/{use-customer-account-BxoVi8ak.cjs.map → use-customer-account-CRcU8yDx.cjs.map} +1 -1
- package/dist/{use-fluid-api-CU_r0Gu9.cjs → use-fluid-api-Bb3qgqYS.cjs} +2 -2
- package/dist/{use-fluid-api-CU_r0Gu9.cjs.map → use-fluid-api-Bb3qgqYS.cjs.map} +1 -1
- package/dist/{use-fluid-api-DH8hTTPQ.mjs → use-fluid-api-Chd3dSwr.mjs} +2 -2
- package/dist/{use-fluid-api-DH8hTTPQ.mjs.map → use-fluid-api-Chd3dSwr.mjs.map} +1 -1
- package/package.json +15 -15
- package/dist/ContactsScreen-C0I1_D_a.cjs.map +0 -1
- package/dist/ContactsScreen-CoFB7EM3.mjs.map +0 -1
- package/dist/src-BVkLGnwV.mjs.map +0 -1
- package/dist/src-CWGmmrLZ.cjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("./chunk-DAgNkxik.cjs");
|
|
2
|
-
require("./FluidProvider-
|
|
2
|
+
require("./FluidProvider-CsIC3HL2.cjs");
|
|
3
3
|
require("./error-state-CGCSDJIJ.cjs");
|
|
4
4
|
require("./ScreenRenderer-C-H-ju1C.cjs");
|
|
5
5
|
require("./WidgetInteractionContext-ywxCBIMm.cjs");
|
|
@@ -11,16 +11,16 @@ require("./BulletListWidget-BUMq15V1.cjs");
|
|
|
11
11
|
require("./CalendarWidget-DLkcnQVx.cjs");
|
|
12
12
|
require("./CardWidget-B4cJHq6g.cjs");
|
|
13
13
|
require("./purify.es-CmsCRU2T.cjs");
|
|
14
|
-
require("./src-
|
|
14
|
+
require("./src-Da7I1fqK.cjs");
|
|
15
15
|
require("./scroll-arrows-Dw7eLYdG.cjs");
|
|
16
16
|
require("./MediaRenderer-CEV-eeB-.cjs");
|
|
17
|
-
require("./CarouselWidget-
|
|
17
|
+
require("./CarouselWidget-BRauT5r7.cjs");
|
|
18
18
|
require("./CatchUpWidget-CFL4REYX.cjs");
|
|
19
|
-
require("./ChartWidget-
|
|
19
|
+
require("./ChartWidget-pFCP3KBK.cjs");
|
|
20
20
|
require("./LayoutWidget-CsdItxHF.cjs");
|
|
21
21
|
require("./ContainerWidget-DZXzmDZl.cjs");
|
|
22
22
|
require("./ImageWidget-DwM4H6SC.cjs");
|
|
23
|
-
require("./LinkWidget-
|
|
23
|
+
require("./LinkWidget-Dk_01CMC.cjs");
|
|
24
24
|
require("./ListWidget-D8yMrpa5.cjs");
|
|
25
25
|
require("./MySiteWidget-DeAwyK5y.cjs");
|
|
26
26
|
require("./NestedWidget-CZuN2QY2.cjs");
|
|
@@ -28,14 +28,14 @@ require("./QuickShareWidget-CIfXUWCx.cjs");
|
|
|
28
28
|
require("./RecentActivityWidget-kRfjO1IV.cjs");
|
|
29
29
|
require("./SeparatorWidget-BUXIxV-F.cjs");
|
|
30
30
|
require("./SpacerWidget-DW_7QXrs.cjs");
|
|
31
|
-
require("./TableWidget-
|
|
31
|
+
require("./TableWidget-DFpr7R3o.cjs");
|
|
32
32
|
require("./ToDoWidget-GmeRwP_0.cjs");
|
|
33
33
|
require("./VideoWidget-CN8nMeGP.cjs");
|
|
34
|
-
require("./src-
|
|
34
|
+
require("./src-CpNCyVxq.cjs");
|
|
35
35
|
require("./dist-CtcLRHrv.cjs");
|
|
36
36
|
require("./es-BZa0y3qY.cjs");
|
|
37
37
|
require("./dist-BUWkpuUk.cjs");
|
|
38
|
-
const require_ShareablesScreen = require("./ShareablesScreen-
|
|
38
|
+
const require_ShareablesScreen = require("./ShareablesScreen-D1Ouqir1.cjs");
|
|
39
39
|
require("./dist-DqYiTOfX.cjs");
|
|
40
40
|
exports.ShareablesScreen = require_ShareablesScreen.ShareablesScreen;
|
|
41
41
|
exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("./chunk-DAgNkxik.cjs");
|
|
2
|
-
const require_use_account_clients = require("./use-account-clients-
|
|
3
|
-
const require_src = require("./src-
|
|
4
|
-
const require_products = require("./products-
|
|
2
|
+
const require_use_account_clients = require("./use-account-clients-C0ioK2n_.cjs");
|
|
3
|
+
const require_src = require("./src-CpNCyVxq.cjs");
|
|
4
|
+
const require_products = require("./products-jXnAQoTU.cjs");
|
|
5
5
|
const require_AppNavigationContext = require("./AppNavigationContext-CbWjJMoI.cjs");
|
|
6
6
|
let react = require("react");
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -142,4 +142,4 @@ Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
144
|
|
|
145
|
-
//# sourceMappingURL=ShareablesScreen-
|
|
145
|
+
//# sourceMappingURL=ShareablesScreen-D1Ouqir1.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-Dfa0LM6R.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-D1Ouqir1.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,6 +1,6 @@
|
|
|
1
|
-
import { i as useSdkClient } from "./use-account-clients-
|
|
2
|
-
import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-
|
|
3
|
-
import { i as useCurrentUser } from "./products-
|
|
1
|
+
import { i as useSdkClient } from "./use-account-clients-D9HGyaK9.mjs";
|
|
2
|
+
import { i as ShareablesCoreProvider, n as ShareablesApp, r as ShareablesUIProvider } from "./src-CnrUO5fh.mjs";
|
|
3
|
+
import { i as useCurrentUser } from "./products-BHmOUNfQ.mjs";
|
|
4
4
|
import { n as useAppNavigation } from "./AppNavigationContext-CcRZ_LqM.mjs";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -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-DR6219-z.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareablesScreen-
|
|
1
|
+
{"version":3,"file":"ShareablesScreen-DR6219-z.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,4 +1,4 @@
|
|
|
1
|
-
import "./FluidProvider-
|
|
1
|
+
import "./FluidProvider-Dj4ToywG.mjs";
|
|
2
2
|
import "./error-state-BGEvTYIh.mjs";
|
|
3
3
|
import "./ScreenRenderer-Dt-Qrx9w.mjs";
|
|
4
4
|
import "./WidgetInteractionContext-DAN31Alw.mjs";
|
|
@@ -10,16 +10,16 @@ import "./BulletListWidget-riFNn47D.mjs";
|
|
|
10
10
|
import "./CalendarWidget-B9I__jsL.mjs";
|
|
11
11
|
import "./CardWidget-CzRI-odk.mjs";
|
|
12
12
|
import "./purify.es-CKZbQnR8.mjs";
|
|
13
|
-
import "./src-
|
|
13
|
+
import "./src-DvSsESTu.mjs";
|
|
14
14
|
import "./scroll-arrows-E2JL1tu6.mjs";
|
|
15
15
|
import "./MediaRenderer-CI67k-ti.mjs";
|
|
16
|
-
import "./CarouselWidget-
|
|
16
|
+
import "./CarouselWidget-C7vsjw7r.mjs";
|
|
17
17
|
import "./CatchUpWidget-Cb0B0G90.mjs";
|
|
18
|
-
import "./ChartWidget-
|
|
18
|
+
import "./ChartWidget-BqidaXNw.mjs";
|
|
19
19
|
import "./LayoutWidget-pS3AMhD7.mjs";
|
|
20
20
|
import "./ContainerWidget-PNfcrIfV.mjs";
|
|
21
21
|
import "./ImageWidget-CvRlDtEa.mjs";
|
|
22
|
-
import "./LinkWidget-
|
|
22
|
+
import "./LinkWidget-sDGQRCy9.mjs";
|
|
23
23
|
import "./ListWidget-Dl2vSYmI.mjs";
|
|
24
24
|
import "./MySiteWidget-CD1fK3lT.mjs";
|
|
25
25
|
import "./NestedWidget-DjZumiak.mjs";
|
|
@@ -27,13 +27,13 @@ import "./QuickShareWidget-CvdvBmEn.mjs";
|
|
|
27
27
|
import "./RecentActivityWidget-uegOsG5c.mjs";
|
|
28
28
|
import "./SeparatorWidget-CkFIxxkI.mjs";
|
|
29
29
|
import "./SpacerWidget-CilIbCTV.mjs";
|
|
30
|
-
import "./TableWidget-
|
|
30
|
+
import "./TableWidget-DF5i7arL.mjs";
|
|
31
31
|
import "./ToDoWidget-iiVItJrO.mjs";
|
|
32
32
|
import "./VideoWidget-BAxtPtq5.mjs";
|
|
33
|
-
import "./src-
|
|
33
|
+
import "./src-CnrUO5fh.mjs";
|
|
34
34
|
import "./dist-NMbUD0qE.mjs";
|
|
35
|
-
import "./es-
|
|
35
|
+
import "./es-D5TTjbe7.mjs";
|
|
36
36
|
import "./dist-_HuMD-TB.mjs";
|
|
37
|
-
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-
|
|
37
|
+
import { n as shareablesScreenPropertySchema, t as ShareablesScreen } from "./ShareablesScreen-DR6219-z.mjs";
|
|
38
38
|
import "./sortable.esm-Cz-CP2N8.mjs";
|
|
39
39
|
export { ShareablesScreen, shareablesScreenPropertySchema };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as useFluidContext } from "./FluidProvider-
|
|
2
|
-
import { A as SelectContent, F as RadioGroupItem, I as Input, M as SelectTrigger, N as SelectValue, P as RadioGroup, j as SelectItem, k as Select,
|
|
3
|
-
import { i as useSdkClient } from "./use-account-clients-
|
|
4
|
-
import { i as useCurrentUser, n as listProducts, t as getProduct } from "./products-
|
|
1
|
+
import { n as useFluidContext } from "./FluidProvider-Dj4ToywG.mjs";
|
|
2
|
+
import { A as SelectContent, F as RadioGroupItem, I as Input, M as SelectTrigger, N as SelectValue, P as RadioGroup, j as SelectItem, k as Select, sn as Button, vt as Card, x as Skeleton } from "./src-DvSsESTu.mjs";
|
|
3
|
+
import { i as useSdkClient } from "./use-account-clients-D9HGyaK9.mjs";
|
|
4
|
+
import { i as useCurrentUser, n as listProducts, t as getProduct } from "./products-BHmOUNfQ.mjs";
|
|
5
5
|
import { n as useAppNavigation } from "./AppNavigationContext-CcRZ_LqM.mjs";
|
|
6
6
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
7
|
import { useInfiniteQuery, useQuery } from "@tanstack/react-query";
|
|
@@ -1582,4 +1582,4 @@ const shopScreenPropertySchema = {
|
|
|
1582
1582
|
//#endregion
|
|
1583
1583
|
export { shopScreenPropertySchema as n, ShopScreen as t };
|
|
1584
1584
|
|
|
1585
|
-
//# sourceMappingURL=ShopScreen-
|
|
1585
|
+
//# sourceMappingURL=ShopScreen-CUaZmX4U.mjs.map
|