@fluid-app/portal-sdk 0.1.219 → 0.1.220
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-CZ0EOIZ5.mjs → AppDownloadScreen-Bhix461K.mjs} +1 -1
- package/dist/{AppDownloadScreen-CZ0EOIZ5.mjs.map → AppDownloadScreen-Bhix461K.mjs.map} +1 -1
- package/dist/{AppDownloadScreen-CBoC31wL.cjs → AppDownloadScreen-DwBzuPcF.cjs} +1 -1
- package/dist/{AppDownloadScreen-CBoC31wL.cjs.map → AppDownloadScreen-DwBzuPcF.cjs.map} +1 -1
- package/dist/{MySiteScreen-CyzM9hX3.mjs → MySiteScreen-BAPWqDfm.mjs} +2 -3
- package/dist/{MySiteScreen-CyzM9hX3.mjs.map → MySiteScreen-BAPWqDfm.mjs.map} +1 -1
- package/dist/{MySiteScreen-DPQ66oRs.cjs → MySiteScreen-CEX1qxdj.cjs} +2 -3
- package/dist/{MySiteScreen-DxLcG3-S.cjs → MySiteScreen-DaNlmVSi.cjs} +15 -16
- package/dist/{MySiteScreen-DxLcG3-S.cjs.map → MySiteScreen-DaNlmVSi.cjs.map} +1 -1
- package/dist/{PortalProductsApiProvider-CE71zDj9.mjs → PortalProductsApiProvider-BwIRudl_.mjs} +1 -1
- package/dist/{PortalProductsApiProvider-CE71zDj9.mjs.map → PortalProductsApiProvider-BwIRudl_.mjs.map} +1 -1
- package/dist/{PortalProductsApiProvider-Ca1oeTtJ.cjs → PortalProductsApiProvider-CRaocswH.cjs} +1 -1
- package/dist/{PortalProductsApiProvider-Ca1oeTtJ.cjs.map → PortalProductsApiProvider-CRaocswH.cjs.map} +1 -1
- package/dist/{ShareablesScreen-YlMqyP-B.cjs → ShareablesScreen-CqvPzH1v.cjs} +3 -5
- package/dist/{PortalContentApiProvider-x81DXmOR.mjs → ShareablesScreen-DV2nikzp.mjs} +188 -38
- package/dist/ShareablesScreen-DV2nikzp.mjs.map +1 -0
- package/dist/{PortalContentApiProvider-DXnplIOD.cjs → ShareablesScreen-DwnMBftJ.cjs} +185 -75
- package/dist/ShareablesScreen-DwnMBftJ.cjs.map +1 -0
- package/dist/{ShopScreen-BOjri6Dm.cjs → ShopScreen-C-Ki6fuh.cjs} +2 -2
- package/dist/{ShopScreen-B4afB5sE.mjs → ShopScreen-C2K1C2tt.mjs} +2 -2
- package/dist/{ShopScreen-B4afB5sE.mjs.map → ShopScreen-C2K1C2tt.mjs.map} +1 -1
- package/dist/{ShopScreen-Untg6XBY.cjs → ShopScreen-smzNn37E.cjs} +2 -2
- package/dist/{ShopScreen-Untg6XBY.cjs.map → ShopScreen-smzNn37E.cjs.map} +1 -1
- package/dist/{UpgradeScreen-BdY0rCoF.cjs → UpgradeScreen-CNXQ1hcP.cjs} +1 -1
- package/dist/{UpgradeScreen-Dau5Elx4.mjs → UpgradeScreen-ChLiVSf7.mjs} +1 -1
- package/dist/{UpgradeScreen-Dau5Elx4.mjs.map → UpgradeScreen-ChLiVSf7.mjs.map} +1 -1
- package/dist/{UpgradeScreen-DrBa2uzD.cjs → UpgradeScreen-DMJUK4dl.cjs} +1 -1
- package/dist/{UpgradeScreen-DrBa2uzD.cjs.map → UpgradeScreen-DMJUK4dl.cjs.map} +1 -1
- package/dist/{dist-DWs3-WOI.cjs → dist-Bxa9x0H9.cjs} +218 -1
- package/dist/{dist-DWs3-WOI.cjs.map → dist-Bxa9x0H9.cjs.map} +1 -1
- package/dist/index.cjs +17 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -20
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -20
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +18 -45
- package/dist/index.mjs.map +1 -1
- package/dist/{sortable.esm-CJLSD-Ce.mjs → sortable.esm-fSGrAZU2.mjs} +141 -2
- package/dist/sortable.esm-fSGrAZU2.mjs.map +1 -0
- package/package.json +12 -12
- package/dist/PortalContentApiProvider-DXnplIOD.cjs.map +0 -1
- package/dist/PortalContentApiProvider-x81DXmOR.mjs.map +0 -1
- package/dist/ProductsScreen-3yjIMjYY.cjs +0 -15
- package/dist/ProductsScreen-BVyLOe2K.mjs +0 -13
- package/dist/ProductsScreen-R0MfWYZJ.cjs +0 -103
- package/dist/ProductsScreen-R0MfWYZJ.cjs.map +0 -1
- package/dist/ProductsScreen-z9hXfFeJ.mjs +0 -91
- package/dist/ProductsScreen-z9hXfFeJ.mjs.map +0 -1
- package/dist/ShareablesScreen-Co_gFZva.cjs +0 -200
- package/dist/ShareablesScreen-Co_gFZva.cjs.map +0 -1
- package/dist/ShareablesScreen-DpwFh0ky.mjs +0 -15
- package/dist/ShareablesScreen-tkaf9R5N.mjs +0 -188
- package/dist/ShareablesScreen-tkaf9R5N.mjs.map +0 -1
- package/dist/sortable.esm-CJLSD-Ce.mjs.map +0 -1
- package/dist/use-mysite-portal-D29HLD1z.mjs +0 -142
- package/dist/use-mysite-portal-D29HLD1z.mjs.map +0 -1
- package/dist/use-mysite-portal-DxNQ3uTi.cjs +0 -220
- package/dist/use-mysite-portal-DxNQ3uTi.cjs.map +0 -1
|
@@ -3,12 +3,15 @@ const require_portal_tenant_content = require("./portal_tenant_content-BvYxmADB.
|
|
|
3
3
|
const require_PortalTenantClientProvider = require("./PortalTenantClientProvider-CVv-4rQ9.cjs");
|
|
4
4
|
const require_src = require("./src-aItPhUAR.cjs");
|
|
5
5
|
const require_ScreenHeaderContext = require("./ScreenHeaderContext-BXgWydjB.cjs");
|
|
6
|
+
const require_use_account = require("./use-account-C5QI6NSe.cjs");
|
|
7
|
+
const require_use_store = require("./use-store-BLcehk1A.cjs");
|
|
8
|
+
const require_AppNavigationContext = require("./AppNavigationContext-CbK8uCjS.cjs");
|
|
6
9
|
const require_dist$3 = require("./dist-CGuUUVNt.cjs");
|
|
7
10
|
const require_es = require("./es-DHLLltoR.cjs");
|
|
8
11
|
const require_SearchSort = require("./SearchSort-DHDDqero.cjs");
|
|
9
12
|
const require_dist$4 = require("./dist-DDZMFlal.cjs");
|
|
10
|
-
const require_dist$5 = require("./dist-
|
|
11
|
-
const require_PortalProductsApiProvider = require("./PortalProductsApiProvider-
|
|
13
|
+
const require_dist$5 = require("./dist-Bxa9x0H9.cjs");
|
|
14
|
+
const require_PortalProductsApiProvider = require("./PortalProductsApiProvider-CRaocswH.cjs");
|
|
12
15
|
let react = require("react");
|
|
13
16
|
react = require_chunk.__toESM(react);
|
|
14
17
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
@@ -10380,13 +10383,7 @@ function PlaylistItemsSection({ playlistId }) {
|
|
|
10380
10383
|
type: "success"
|
|
10381
10384
|
});
|
|
10382
10385
|
} catch {}
|
|
10383
|
-
else
|
|
10384
|
-
addItem(newItem);
|
|
10385
|
-
showToast({
|
|
10386
|
-
title: "Item added. Save the playlist to persist these items.",
|
|
10387
|
-
type: "warning"
|
|
10388
|
-
});
|
|
10389
|
-
}
|
|
10386
|
+
else addItem(newItem);
|
|
10390
10387
|
}
|
|
10391
10388
|
};
|
|
10392
10389
|
const filePickerContextValue = (0, react.useMemo)(() => {
|
|
@@ -10988,31 +10985,6 @@ function ShareablesApp({ screen, detailId, action, onNavigate, onBack, countryCo
|
|
|
10988
10985
|
return content;
|
|
10989
10986
|
}
|
|
10990
10987
|
//#endregion
|
|
10991
|
-
//#region ../../shareables/ui/src/components/ProductsApp.tsx
|
|
10992
|
-
function ProductsApp({ countryCode, companyLogoUrl, fetchProducts, fetchProduct, productId: controlledProductId, onSelectProduct: onSelectProductProp, onBack: onBackProp }) {
|
|
10993
|
-
const [internalProductId, setInternalProductId] = (0, react.useState)(null);
|
|
10994
|
-
const activeProductId = controlledProductId !== void 0 ? controlledProductId : internalProductId;
|
|
10995
|
-
const handleSelectProduct = onSelectProductProp ?? setInternalProductId;
|
|
10996
|
-
const handleBack = onBackProp ?? (() => setInternalProductId(null));
|
|
10997
|
-
const handleNavigate = (screen, detailId) => {
|
|
10998
|
-
if (screen === "products" && detailId) handleSelectProduct(detailId);
|
|
10999
|
-
};
|
|
11000
|
-
if (activeProductId) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductDetailScreen, {
|
|
11001
|
-
productId: activeProductId,
|
|
11002
|
-
countryCode,
|
|
11003
|
-
fetchProduct,
|
|
11004
|
-
onNavigate: handleNavigate,
|
|
11005
|
-
onBack: handleBack
|
|
11006
|
-
});
|
|
11007
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProductsScreen, {
|
|
11008
|
-
countryCode,
|
|
11009
|
-
fetchProducts,
|
|
11010
|
-
onNavigate: (screen, detailId) => {
|
|
11011
|
-
if (detailId) handleSelectProduct(detailId);
|
|
11012
|
-
}
|
|
11013
|
-
});
|
|
11014
|
-
}
|
|
11015
|
-
//#endregion
|
|
11016
10988
|
//#region ../../file-picker/api-client/src/api/url-proxy.ts
|
|
11017
10989
|
const urlProxyResponseSchema = zod.z.object({
|
|
11018
10990
|
data: zod.z.string(),
|
|
@@ -12047,53 +12019,191 @@ function PortalContentApiProvider({ children }) {
|
|
|
12047
12019
|
});
|
|
12048
12020
|
}
|
|
12049
12021
|
//#endregion
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
|
|
12074
|
-
|
|
12075
|
-
|
|
12076
|
-
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
})
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
}
|
|
12085
|
-
}
|
|
12086
|
-
|
|
12022
|
+
//#region src/screens/ShareablesScreen.tsx
|
|
12023
|
+
/**
|
|
12024
|
+
* Parse the current shareables sub-route from the full slug.
|
|
12025
|
+
*
|
|
12026
|
+
* System nav slugs are "share/products", "share/media", "share/playlists".
|
|
12027
|
+
* Detail pages append an ID: "share/products/123", "share/media/456".
|
|
12028
|
+
*
|
|
12029
|
+
* "share/products" → screen="products", detailId=null
|
|
12030
|
+
* "share/products/123" → screen="products", detailId="123"
|
|
12031
|
+
* "share/media/456" → screen="media", detailId="456"
|
|
12032
|
+
* "share/playlists" → screen="playlists", detailId=null
|
|
12033
|
+
* "share/playlists/789" → screen="playlists", detailId="789"
|
|
12034
|
+
* "share/files" → screen="files", detailId=null
|
|
12035
|
+
* "share" → screen=null (default to products)
|
|
12036
|
+
*/
|
|
12037
|
+
function parseShareablesRoute(currentSlug) {
|
|
12038
|
+
const slugWithoutPrefix = currentSlug.replace(/^share\/?/, "");
|
|
12039
|
+
if (!slugWithoutPrefix) return {
|
|
12040
|
+
screen: null,
|
|
12041
|
+
detailId: null,
|
|
12042
|
+
action: null
|
|
12043
|
+
};
|
|
12044
|
+
const parts = slugWithoutPrefix.split("/");
|
|
12045
|
+
return {
|
|
12046
|
+
screen: parts[0] || null,
|
|
12047
|
+
detailId: parts[1] || null,
|
|
12048
|
+
action: parts[2] || null
|
|
12049
|
+
};
|
|
12050
|
+
}
|
|
12051
|
+
function ShareablesScreen({ background, textColor, accentColor, padding, borderRadius, ...divProps }) {
|
|
12052
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
12053
|
+
...divProps,
|
|
12054
|
+
className: `h-full ${divProps.className ?? ""}`,
|
|
12055
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PortalProductsApiProvider.PortalProductsApiProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PortalContentApiProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShareablesScreenContent, {}) }) })
|
|
12056
|
+
});
|
|
12057
|
+
}
|
|
12058
|
+
/** Inner component rendered inside providers so hooks can access context. */
|
|
12059
|
+
function ShareablesScreenContent() {
|
|
12060
|
+
const shareablesCtx = usePortalContentContext();
|
|
12061
|
+
const { productsApi: portalProductsApi } = shareablesCtx;
|
|
12062
|
+
const filePickerApi = useFilePickerApi();
|
|
12063
|
+
const { data: account } = require_use_account.useAccount();
|
|
12064
|
+
const { data: store } = require_use_store.useStore();
|
|
12065
|
+
const { currentSlug, navigate } = require_AppNavigationContext.useAppNavigation();
|
|
12066
|
+
const isCustomer = account?.member_type === "customer";
|
|
12067
|
+
const client = require_PortalTenantClientProvider.usePortalTenantClient();
|
|
12068
|
+
const queryClient = (0, _tanstack_react_query.useQueryClient)();
|
|
12069
|
+
const fetchProducts = (0, react.useCallback)(async (search, cursor, limit, sort) => {
|
|
12070
|
+
if (search) return portalProductsApi.searchProducts(search, {
|
|
12071
|
+
cursor,
|
|
12072
|
+
limit
|
|
12073
|
+
});
|
|
12074
|
+
return portalProductsApi.listProducts({
|
|
12075
|
+
cursor,
|
|
12076
|
+
limit,
|
|
12077
|
+
sort
|
|
12078
|
+
});
|
|
12079
|
+
}, [portalProductsApi]);
|
|
12080
|
+
const fetchProduct = (0, react.useCallback)(async (id) => portalProductsApi.getProduct(id), [portalProductsApi]);
|
|
12081
|
+
const { screen, detailId, action } = parseShareablesRoute(currentSlug);
|
|
12082
|
+
const handleNavigate = (0, react.useCallback)((subScreen, id) => {
|
|
12083
|
+
navigate(id ? `share/${subScreen}/${id}` : `share/${subScreen}`);
|
|
12084
|
+
}, [navigate]);
|
|
12085
|
+
const handleBack = (0, react.useCallback)(() => {
|
|
12086
|
+
if (detailId && screen) navigate(`share/${screen}`);
|
|
12087
|
+
else navigate("share/products");
|
|
12088
|
+
}, [
|
|
12089
|
+
navigate,
|
|
12090
|
+
detailId,
|
|
12091
|
+
screen
|
|
12092
|
+
]);
|
|
12093
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShareablesCoreProvider, {
|
|
12094
|
+
config: (0, react.useMemo)(() => ({
|
|
12095
|
+
user: account ? { id: account.id } : null,
|
|
12096
|
+
repContext: true
|
|
12097
|
+
}), [account]),
|
|
12098
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShareablesUIProvider, {
|
|
12099
|
+
config: (0, react.useMemo)(() => ({
|
|
12100
|
+
user: account ? {
|
|
12101
|
+
id: account.id,
|
|
12102
|
+
company: { logo_url: store?.logo_url ?? null }
|
|
12103
|
+
} : void 0,
|
|
12104
|
+
affiliateId: null,
|
|
12105
|
+
basePath: "",
|
|
12106
|
+
navigate: (path) => {
|
|
12107
|
+
const cleanPath = path.replace(/^\//, "");
|
|
12108
|
+
navigate(cleanPath.startsWith("share/") ? cleanPath : `share/${cleanPath}`);
|
|
12109
|
+
},
|
|
12110
|
+
showToast: (opts) => {
|
|
12111
|
+
require_src.fluidToast({
|
|
12112
|
+
title: opts.title,
|
|
12113
|
+
type: opts.type
|
|
12114
|
+
});
|
|
12115
|
+
if (opts.error) console.error("[Shareables]", opts.error);
|
|
12116
|
+
},
|
|
12117
|
+
filePickerApi,
|
|
12118
|
+
onToggleFavorite: async (params) => {
|
|
12119
|
+
const result = await toggleFavorite(client, params.favoriteableId, params.favoriteableType);
|
|
12120
|
+
queryClient.invalidateQueries({ queryKey: require_dist$5.PORTAL_MYSITE_KEYS.favorites() });
|
|
12121
|
+
return result;
|
|
12122
|
+
},
|
|
12123
|
+
onMySiteShare: async (params) => {
|
|
12124
|
+
await toggleFavorite(client, params.relateable_id, params.relateable_type);
|
|
12125
|
+
queryClient.invalidateQueries({ queryKey: require_dist$5.PORTAL_MYSITE_KEYS.favorites() });
|
|
12126
|
+
},
|
|
12127
|
+
onDeletePlaylist: isCustomer ? void 0 : async (playlistId) => {
|
|
12128
|
+
await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);
|
|
12129
|
+
},
|
|
12130
|
+
mediaProductsApi: isCustomer ? void 0 : shareablesCtx.mediaProductsAdapter,
|
|
12131
|
+
searchProducts: isCustomer ? void 0 : async (query, options) => {
|
|
12132
|
+
const limit = options?.limit ?? 25;
|
|
12133
|
+
const cursor = options?.cursor ?? void 0;
|
|
12134
|
+
const result = query.trim().length > 0 ? await portalProductsApi.searchProducts(query, {
|
|
12135
|
+
cursor,
|
|
12136
|
+
limit
|
|
12137
|
+
}) : await portalProductsApi.listProducts({
|
|
12138
|
+
cursor,
|
|
12139
|
+
limit
|
|
12140
|
+
});
|
|
12141
|
+
return {
|
|
12142
|
+
products: (result.products ?? []).map((p) => p.id != null ? {
|
|
12143
|
+
id: p.id,
|
|
12144
|
+
name: p.name ?? p.title ?? "Untitled",
|
|
12145
|
+
image_url: p.image_url ?? null,
|
|
12146
|
+
price: p.price ?? null
|
|
12147
|
+
} : null).filter((p) => p !== null),
|
|
12148
|
+
nextCursor: result.meta?.pagination?.next_cursor ?? null
|
|
12149
|
+
};
|
|
12150
|
+
},
|
|
12151
|
+
readOnly: isCustomer,
|
|
12152
|
+
uploadThumbnail: isCustomer ? void 0 : async (blob, filename) => {
|
|
12153
|
+
const formData = new FormData();
|
|
12154
|
+
formData.append("asset[name]", filename);
|
|
12155
|
+
formData.append("asset[file]", blob, filename);
|
|
12156
|
+
const url = (await client.requestWithFormData("/api/content/dam/assets", formData)).asset?.default_variant_url;
|
|
12157
|
+
if (!url) throw new Error("Thumbnail upload succeeded but no URL returned");
|
|
12158
|
+
return url;
|
|
12159
|
+
}
|
|
12160
|
+
}), [
|
|
12161
|
+
account,
|
|
12162
|
+
store,
|
|
12163
|
+
navigate,
|
|
12164
|
+
filePickerApi,
|
|
12165
|
+
isCustomer,
|
|
12166
|
+
shareablesCtx.playlistsAdapter,
|
|
12167
|
+
shareablesCtx.mediaProductsAdapter,
|
|
12168
|
+
portalProductsApi,
|
|
12169
|
+
client,
|
|
12170
|
+
queryClient
|
|
12171
|
+
]),
|
|
12172
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ShareablesApp, {
|
|
12173
|
+
screen,
|
|
12174
|
+
detailId,
|
|
12175
|
+
action,
|
|
12176
|
+
companyLogoUrl: void 0,
|
|
12177
|
+
countryCode: void 0,
|
|
12178
|
+
fetchProducts,
|
|
12179
|
+
fetchProduct,
|
|
12180
|
+
onNavigate: handleNavigate,
|
|
12181
|
+
onBack: handleBack
|
|
12182
|
+
})
|
|
12183
|
+
})
|
|
12184
|
+
});
|
|
12185
|
+
}
|
|
12186
|
+
const shareablesScreenPropertySchema = {
|
|
12187
|
+
widgetType: "ShareablesScreen",
|
|
12188
|
+
displayName: "Shareables Screen",
|
|
12189
|
+
tabsConfig: [{
|
|
12190
|
+
id: "styling",
|
|
12191
|
+
label: "Styling"
|
|
12192
|
+
}],
|
|
12193
|
+
fields: []
|
|
12194
|
+
};
|
|
12195
|
+
//#endregion
|
|
12196
|
+
Object.defineProperty(exports, "ShareablesScreen", {
|
|
12087
12197
|
enumerable: true,
|
|
12088
12198
|
get: function() {
|
|
12089
|
-
return
|
|
12199
|
+
return ShareablesScreen;
|
|
12090
12200
|
}
|
|
12091
12201
|
});
|
|
12092
|
-
Object.defineProperty(exports, "
|
|
12202
|
+
Object.defineProperty(exports, "shareablesScreenPropertySchema", {
|
|
12093
12203
|
enumerable: true,
|
|
12094
12204
|
get: function() {
|
|
12095
|
-
return
|
|
12205
|
+
return shareablesScreenPropertySchema;
|
|
12096
12206
|
}
|
|
12097
12207
|
});
|
|
12098
12208
|
|
|
12099
|
-
//# sourceMappingURL=
|
|
12209
|
+
//# sourceMappingURL=ShareablesScreen-DwnMBftJ.cjs.map
|