@fluid-app/portal-sdk 0.1.475 → 0.1.477

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.
Files changed (80) hide show
  1. package/authoring/widget-api/sdk/src/widgets/worker.md +3313 -194
  2. package/dist/{FluidProvider-Enp1OrWr.cjs → FluidProvider-23ch3eP8.cjs} +2 -2
  3. package/dist/{FluidProvider-Enp1OrWr.cjs.map → FluidProvider-23ch3eP8.cjs.map} +1 -1
  4. package/dist/{FluidProvider-BNHU_neW.mjs → FluidProvider-DMeeVh2c.mjs} +2 -2
  5. package/dist/{FluidProvider-BNHU_neW.mjs.map → FluidProvider-DMeeVh2c.mjs.map} +1 -1
  6. package/dist/{MessagingScreen-AVfoyaxf.cjs → MessagingScreen-Ci-LJaR2.cjs} +3 -3
  7. package/dist/{MessagingScreen-BQmYbMd-.mjs → MessagingScreen-D3AD01zt.mjs} +3 -3
  8. package/dist/{MessagingScreen-4WZGUGsB.mjs → MessagingScreen-Dp4SiUQS.mjs} +2 -2
  9. package/dist/{MessagingScreen-4WZGUGsB.mjs.map → MessagingScreen-Dp4SiUQS.mjs.map} +1 -1
  10. package/dist/{MessagingScreen-DOjbhTOB.cjs → MessagingScreen-NuVpv-nc.cjs} +2 -2
  11. package/dist/{MessagingScreen-DOjbhTOB.cjs.map → MessagingScreen-NuVpv-nc.cjs.map} +1 -1
  12. package/dist/{OrdersScreen-5VmHwt9p.cjs → OrdersScreen-BHwi-PHP.cjs} +2 -2
  13. package/dist/{OrdersScreen-5VmHwt9p.cjs.map → OrdersScreen-BHwi-PHP.cjs.map} +1 -1
  14. package/dist/{OrdersScreen-CgJs_YwT.mjs → OrdersScreen-C2B9Eqgv.mjs} +3 -3
  15. package/dist/{OrdersScreen-DKH7gRMR.mjs → OrdersScreen-DrevIASH.mjs} +2 -2
  16. package/dist/{OrdersScreen-DKH7gRMR.mjs.map → OrdersScreen-DrevIASH.mjs.map} +1 -1
  17. package/dist/{OrdersScreen-Bu1Xu3rN.cjs → OrdersScreen-ppjcbl-E.cjs} +3 -3
  18. package/dist/{ProfileScreen-BpgrJkH0.mjs → ProfileScreen-BrXQWXXp.mjs} +3 -3
  19. package/dist/{ProfileScreen-BpgrJkH0.mjs.map → ProfileScreen-BrXQWXXp.mjs.map} +1 -1
  20. package/dist/{ProfileScreen-DBwYxpTt.cjs → ProfileScreen-Cyv8PyYg.cjs} +4 -4
  21. package/dist/{ProfileScreen-DLuirgGc.cjs → ProfileScreen-gWeOhTjQ.cjs} +3 -3
  22. package/dist/{ProfileScreen-DLuirgGc.cjs.map → ProfileScreen-gWeOhTjQ.cjs.map} +1 -1
  23. package/dist/{ProfileScreen-cWvrOUKa.mjs → ProfileScreen-vepAcLXw.mjs} +4 -4
  24. package/dist/{SubscriptionsScreen-0S2YmOKZ.mjs → SubscriptionsScreen-BBMYV3Ge.mjs} +4 -4
  25. package/dist/{SubscriptionsScreen-DExbk_Rt.cjs → SubscriptionsScreen-BdirZOBn.cjs} +4 -4
  26. package/dist/{SubscriptionsScreen-_CMNc90t.mjs → SubscriptionsScreen-KUxdCKB-.mjs} +4 -4
  27. package/dist/{SubscriptionsScreen-_CMNc90t.mjs.map → SubscriptionsScreen-KUxdCKB-.mjs.map} +1 -1
  28. package/dist/{SubscriptionsScreen-D4lpU-bC.cjs → SubscriptionsScreen-LXjZ4qKy.cjs} +4 -4
  29. package/dist/{SubscriptionsScreen-D4lpU-bC.cjs.map → SubscriptionsScreen-LXjZ4qKy.cjs.map} +1 -1
  30. package/dist/{build-remote-widget-plugin-manifests-BS2FjZRV.d.cts → build-remote-widget-plugin-manifests-DUfcmkSD.d.cts} +3 -3
  31. package/dist/{build-remote-widget-plugin-manifests-BS2FjZRV.d.cts.map → build-remote-widget-plugin-manifests-DUfcmkSD.d.cts.map} +1 -1
  32. package/dist/{build-remote-widget-plugin-manifests-DxlaOngq.d.mts → build-remote-widget-plugin-manifests-ejOCHU1U.d.mts} +3 -3
  33. package/dist/{build-remote-widget-plugin-manifests-DxlaOngq.d.mts.map → build-remote-widget-plugin-manifests-ejOCHU1U.d.mts.map} +1 -1
  34. package/dist/{build-widget-registry-BvaGCB_P.mjs → build-widget-registry---S4DdG-.mjs} +2 -2
  35. package/dist/{build-widget-registry-BvaGCB_P.mjs.map → build-widget-registry---S4DdG-.mjs.map} +1 -1
  36. package/dist/{build-widget-registry-BuzSME2l.d.mts → build-widget-registry-B4uXvJe_.d.mts} +2 -2
  37. package/dist/{build-widget-registry-BuzSME2l.d.mts.map → build-widget-registry-B4uXvJe_.d.mts.map} +1 -1
  38. package/dist/{build-widget-registry-Dsp9P8gq.d.cts → build-widget-registry-C_uBIhbU.d.cts} +2 -2
  39. package/dist/{build-widget-registry-Dsp9P8gq.d.cts.map → build-widget-registry-C_uBIhbU.d.cts.map} +1 -1
  40. package/dist/{build-widget-registry-B2K6eJ2o.cjs → build-widget-registry-D28CSx4b.cjs} +2 -2
  41. package/dist/{build-widget-registry-B2K6eJ2o.cjs.map → build-widget-registry-D28CSx4b.cjs.map} +1 -1
  42. package/dist/fluid-spacer-widget-Cgsgu8lP.mjs +1265 -0
  43. package/dist/fluid-spacer-widget-Cgsgu8lP.mjs.map +1 -0
  44. package/dist/fluid-spacer-widget-ajsnkeUW.cjs +1805 -0
  45. package/dist/fluid-spacer-widget-ajsnkeUW.cjs.map +1 -0
  46. package/dist/index.cjs +16 -16
  47. package/dist/index.d.cts +3 -3
  48. package/dist/index.d.mts +3 -3
  49. package/dist/index.mjs +16 -16
  50. package/dist/{portal-function-DYWFgeRx.d.cts → portal-function-DUOB0Ykd.d.cts} +52 -1
  51. package/dist/{portal-function-DYWFgeRx.d.cts.map → portal-function-DUOB0Ykd.d.cts.map} +1 -1
  52. package/dist/{portal-function-MTknwZfL.d.mts → portal-function-hOpcnB0R.d.mts} +52 -1
  53. package/dist/{portal-function-MTknwZfL.d.mts.map → portal-function-hOpcnB0R.d.mts.map} +1 -1
  54. package/dist/{use-portal-card-add-3ds-flow-BlrgGoIL.cjs → use-portal-card-add-3ds-flow-ChMcZpwT.cjs} +26 -10
  55. package/dist/use-portal-card-add-3ds-flow-ChMcZpwT.cjs.map +1 -0
  56. package/dist/{use-portal-card-add-3ds-flow-BBIXp3G5.mjs → use-portal-card-add-3ds-flow-Dxz8NvV-.mjs} +26 -10
  57. package/dist/use-portal-card-add-3ds-flow-Dxz8NvV-.mjs.map +1 -0
  58. package/dist/utils/build-remote-widget-plugin-manifests.cjs +1 -1
  59. package/dist/utils/build-remote-widget-plugin-manifests.d.cts +1 -1
  60. package/dist/utils/build-remote-widget-plugin-manifests.d.mts +1 -1
  61. package/dist/utils/build-remote-widget-plugin-manifests.mjs +1 -1
  62. package/dist/utils/build-widget-registry.cjs +1 -1
  63. package/dist/utils/build-widget-registry.d.cts +1 -1
  64. package/dist/utils/build-widget-registry.d.mts +1 -1
  65. package/dist/utils/build-widget-registry.mjs +1 -1
  66. package/dist/widgets/worker.cjs +72 -1
  67. package/dist/widgets/worker.cjs.map +1 -1
  68. package/dist/widgets/worker.d.cts +1193 -329
  69. package/dist/widgets/worker.d.cts.map +1 -1
  70. package/dist/widgets/worker.d.mts +1193 -329
  71. package/dist/widgets/worker.d.mts.map +1 -1
  72. package/dist/widgets/worker.mjs +72 -1
  73. package/dist/widgets/worker.mjs.map +1 -1
  74. package/package.json +16 -16
  75. package/dist/fluid-spacer-widget-C33ayl7j.mjs +0 -547
  76. package/dist/fluid-spacer-widget-C33ayl7j.mjs.map +0 -1
  77. package/dist/fluid-spacer-widget-DoUSdfS_.cjs +0 -1087
  78. package/dist/fluid-spacer-widget-DoUSdfS_.cjs.map +0 -1
  79. package/dist/use-portal-card-add-3ds-flow-BBIXp3G5.mjs.map +0 -1
  80. package/dist/use-portal-card-add-3ds-flow-BlrgGoIL.cjs.map +0 -1
@@ -0,0 +1,1265 @@
1
+ import { RemoteDomCapabilityFunctionError, defineRemoteDomCapabilityFunction, getRemoteDomCapabilityFunctionMetadata } from "@fluid-app/widget-runtime/worker";
2
+ //#region src/widgets/remote/contract/portal-function.ts
3
+ /** Canonical Portal function contract shared by worker and host code. */
4
+ const PORTAL_FUNCTION_METADATA = Symbol.for("@fluid-app/portal-sdk/portal-function-metadata");
5
+ const PORTAL_FUNCTION_ERROR_PREFIX = "PORTAL_FUNCTION_ERROR:";
6
+ const PORTAL_FUNCTION_ERROR_CODES = new Set([
7
+ "NOT_MOUNTED",
8
+ "NOT_DECLARED",
9
+ "INVALID_ARGUMENT",
10
+ "UNAVAILABLE",
11
+ "UNSUPPORTED",
12
+ "HOST_FAILURE",
13
+ "INVALID_RESPONSE"
14
+ ]);
15
+ /** A stable, serializable failure reported by a Portal function call. */
16
+ var PortalFunctionError = class extends Error {
17
+ /** Machine-readable failure classification. */
18
+ code;
19
+ /**
20
+ * Creates an error with a stable code and developer-facing message.
21
+ * @param code - Machine-readable failure classification.
22
+ * @param message - Developer-facing explanation safe to cross the worker boundary.
23
+ * @example throw new PortalFunctionError("INVALID_ARGUMENT", "An id is required.");
24
+ */
25
+ constructor(code, message) {
26
+ super(message);
27
+ this.name = "PortalFunctionError";
28
+ this.code = code;
29
+ }
30
+ };
31
+ /**
32
+ * Defines a typed Portal function backed by a versioned host capability.
33
+ * Widgets must include the returned function in `defineWidget({ uses: [...] })`
34
+ * before calling it. Inputs and outputs must contain only JSON values.
35
+ *
36
+ * @param definition - Stable capability, version, and method identity.
37
+ * @returns An async worker callable that rejects with {@link PortalFunctionError}.
38
+ * @throws {@link PortalFunctionError} when a call is not mounted or declared, has invalid input, is unsupported or unavailable, fails in the host, or returns an invalid response.
39
+ * @remarks Define functions during module initialization. Both input and output types must contain only JSON-compatible values.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const getGreeting = definePortalFunction<string>({
44
+ * capability: "greeting",
45
+ * version: "1",
46
+ * method: "get",
47
+ * });
48
+ * ```
49
+ */
50
+ function definePortalFunction(definition, ..._contractErrors) {
51
+ const remoteFunction = defineRemoteDomCapabilityFunction(definition);
52
+ const portalFunction = (async (...args) => {
53
+ try {
54
+ if (args.length > 1) throw new PortalFunctionError("INVALID_ARGUMENT", `Portal function "${definition.capability}.${definition.method}" accepts at most one argument.`);
55
+ const invoke = remoteFunction;
56
+ return args.length === 0 ? await invoke() : await invoke(args[0]);
57
+ } catch (error) {
58
+ throw toPortalFunctionError(error);
59
+ }
60
+ });
61
+ return attachPortalFunctionMetadata(portalFunction, definition);
62
+ }
63
+ /**
64
+ * Binds a host handler to a function created by {@link definePortalFunction}.
65
+ *
66
+ * @param portalFunction - Defined function whose metadata identifies the capability.
67
+ * @param handler - Host handler with the same input and output contract.
68
+ * @returns The definition, callable, and handler as one implementation record.
69
+ * @throws {@link PortalFunctionError} when `portalFunction` was not created by `definePortalFunction`.
70
+ * @remarks This registration helper is for capability implementations. Widget components call the defined Portal function instead.
71
+ * @example
72
+ * ```ts
73
+ * const implementation = implementPortalFunction(getGreeting, () => "Hello");
74
+ * ```
75
+ */
76
+ function implementPortalFunction(portalFunction, handler) {
77
+ const definition = getPortalFunctionMetadata(portalFunction);
78
+ if (!definition) throw new PortalFunctionError("INVALID_ARGUMENT", "implementPortalFunction requires a function created by definePortalFunction.");
79
+ return {
80
+ definition,
81
+ portalFunction,
82
+ handler
83
+ };
84
+ }
85
+ /** @internal Used to normalize worker declarations and host implementations. */
86
+ function getPortalFunctionMetadata(value) {
87
+ if (typeof value !== "function") return void 0;
88
+ const portalMetadata = Reflect.get(value, PORTAL_FUNCTION_METADATA);
89
+ if (isPortalFunctionDefinition(portalMetadata)) return portalMetadata;
90
+ const runtimeMetadata = getRemoteDomCapabilityFunctionMetadata(value);
91
+ return runtimeMetadata ? toPortalFunctionDefinition(runtimeMetadata) : void 0;
92
+ }
93
+ function attachPortalFunctionMetadata(portalFunction, definition) {
94
+ const stableDefinition = Object.freeze({ ...definition });
95
+ Object.defineProperty(portalFunction, PORTAL_FUNCTION_METADATA, {
96
+ configurable: false,
97
+ enumerable: false,
98
+ writable: false,
99
+ value: stableDefinition
100
+ });
101
+ return portalFunction;
102
+ }
103
+ function toPortalFunctionDefinition(metadata) {
104
+ return {
105
+ capability: metadata.capability,
106
+ version: metadata.version,
107
+ method: metadata.method
108
+ };
109
+ }
110
+ function isPortalFunctionDefinition(value) {
111
+ if (typeof value !== "object" || value === null) return false;
112
+ return "capability" in value && typeof value.capability === "string" && "version" in value && typeof value.version === "string" && "method" in value && typeof value.method === "string";
113
+ }
114
+ function toPortalFunctionError(error) {
115
+ if (error instanceof PortalFunctionError) return error;
116
+ if (error instanceof RemoteDomCapabilityFunctionError) return new PortalFunctionError(error.code, error.message);
117
+ const hostFailure = parseHostFunctionError(error);
118
+ if (hostFailure) return hostFailure;
119
+ return new PortalFunctionError("HOST_FAILURE", "The portal host could not complete this function call.");
120
+ }
121
+ function parseHostFunctionError(error) {
122
+ if (!(error instanceof Error)) return null;
123
+ const prefixIndex = error.message.indexOf(PORTAL_FUNCTION_ERROR_PREFIX);
124
+ if (prefixIndex < 0) return null;
125
+ const encoded = error.message.slice(prefixIndex + 22);
126
+ const separatorIndex = encoded.indexOf(":");
127
+ if (separatorIndex < 0) return null;
128
+ const code = encoded.slice(0, separatorIndex);
129
+ if (!isPortalFunctionErrorCode(code)) return null;
130
+ return new PortalFunctionError(code, encoded.slice(separatorIndex + 1).trim() || "The portal host could not complete this function call.");
131
+ }
132
+ function isPortalFunctionErrorCode(value) {
133
+ return PORTAL_FUNCTION_ERROR_CODES.has(value);
134
+ }
135
+ //#endregion
136
+ //#region src/widgets/remote/contract/capabilities/built-in.ts
137
+ const ACCOUNT_DEFINITION = {
138
+ capability: "account",
139
+ version: "1",
140
+ method: "get"
141
+ };
142
+ const STORE_DEFINITION = {
143
+ capability: "store",
144
+ version: "1",
145
+ method: "get"
146
+ };
147
+ const APP_DEFINITION = {
148
+ capability: "fluidApp",
149
+ version: "1",
150
+ method: "get"
151
+ };
152
+ const PROFILE_DEFINITION = {
153
+ capability: "fluidProfile",
154
+ version: "1",
155
+ method: "get"
156
+ };
157
+ const NAVIGATION_STATE_DEFINITION = {
158
+ capability: "appNavigation",
159
+ version: "1",
160
+ method: "get"
161
+ };
162
+ const BUILD_HREF_DEFINITION = {
163
+ capability: "appNavigation",
164
+ version: "1",
165
+ method: "buildHref"
166
+ };
167
+ const NAVIGATE_DEFINITION = {
168
+ capability: "appNavigation",
169
+ version: "1",
170
+ method: "navigate"
171
+ };
172
+ const FULLSCREEN_STATE_DEFINITION = {
173
+ capability: "fullscreen",
174
+ version: "1",
175
+ method: "get"
176
+ };
177
+ const REQUEST_FULLSCREEN_DEFINITION = {
178
+ capability: "fullscreen",
179
+ version: "1",
180
+ method: "request"
181
+ };
182
+ const EXIT_FULLSCREEN_DEFINITION = {
183
+ capability: "fullscreen",
184
+ version: "1",
185
+ method: "exit"
186
+ };
187
+ const ALLOW_ANCHOR_URL_DEFINITION = {
188
+ capability: "externalNavigation",
189
+ version: "1",
190
+ method: "allowAnchorUrl"
191
+ };
192
+ /**
193
+ * Gets the signed-in account from the mounted Portal host.
194
+ *
195
+ * @returns The current {@link UserAccount}.
196
+ * @throws {@link PortalFunctionError} when the function is undeclared, unavailable, or fails in the host.
197
+ * @remarks Declare `getUserAccount` in the widget's `uses` list. Call it only after the widget mounts.
198
+ * @example const account = await getUserAccount();
199
+ */
200
+ const getUserAccount = definePortalFunction(ACCOUNT_DEFINITION);
201
+ /**
202
+ * Gets the store that owns the mounted Portal.
203
+ * @returns The current {@link PortalStore}.
204
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
205
+ * @remarks Declare `getStore` in `uses` and call it only after mount.
206
+ * @example const store = await getStore();
207
+ */
208
+ const getStore = definePortalFunction(STORE_DEFINITION);
209
+ /**
210
+ * Gets the current Portal Definition summary.
211
+ * @returns The current {@link PortalAppSummary}.
212
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
213
+ * @remarks Declare `getPortalApp` in `uses` and call it only after mount.
214
+ * @example const app = await getPortalApp();
215
+ */
216
+ const getPortalApp = definePortalFunction(APP_DEFINITION);
217
+ /**
218
+ * Gets the active Portal profile summary.
219
+ * @returns The active {@link PortalProfileSummary}.
220
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
221
+ * @remarks Declare `getPortalProfile` in `uses` and call it only after mount.
222
+ * @example const profile = await getPortalProfile();
223
+ */
224
+ const getPortalProfile = definePortalFunction(PROFILE_DEFINITION);
225
+ /**
226
+ * Gets the current route and resolved navigation tree.
227
+ * @returns The current {@link PortalNavigationState}.
228
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
229
+ * @remarks Declare `getNavigationState` in `uses` and call it only after mount.
230
+ * @example const navigation = await getNavigationState();
231
+ */
232
+ const getNavigationState = definePortalFunction(NAVIGATION_STATE_DEFINITION);
233
+ /**
234
+ * Converts a Portal navigation target to an href for the current mount.
235
+ * @param target - Screen slug, href, or shorthand string target.
236
+ * @returns A host-approved href.
237
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
238
+ * @remarks Declare `buildPortalHref` in `uses` and call it only after mount.
239
+ * @example const href = await buildPortalHref({ slug: "shop" });
240
+ */
241
+ const buildPortalHref = definePortalFunction(BUILD_HREF_DEFINITION);
242
+ const navigate = definePortalFunction(NAVIGATE_DEFINITION);
243
+ /**
244
+ * Navigates the mounted Portal to a target.
245
+ * @param target - Screen slug, href, or shorthand string target.
246
+ * @returns A promise that resolves after the host accepts the navigation.
247
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
248
+ * @remarks Declare `navigateTo` in `uses`. It changes host navigation and requires a mounted widget.
249
+ * @example await navigateTo({ slug: "shop" });
250
+ */
251
+ const navigateTo = attachPortalFunctionMetadata(async (target) => {
252
+ await navigate(target);
253
+ }, NAVIGATE_DEFINITION);
254
+ /**
255
+ * Gets fullscreen availability and state for the current widget mount.
256
+ * @returns The current {@link FullscreenState}.
257
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
258
+ * @remarks Declare `getFullscreenState` in `uses` and call it only after mount.
259
+ * @example const state = await getFullscreenState();
260
+ */
261
+ const getFullscreenState = definePortalFunction(FULLSCREEN_STATE_DEFINITION);
262
+ const request = definePortalFunction(REQUEST_FULLSCREEN_DEFINITION);
263
+ /**
264
+ * Requests fullscreen for the current widget mount.
265
+ * @returns A promise that resolves when the host completes the request.
266
+ * @throws {@link PortalFunctionError} when undeclared, unsupported, unavailable, or rejected by the host.
267
+ * @remarks Declare `requestFullscreen` in `uses`. Browser policy can require a user gesture.
268
+ * @example await requestFullscreen();
269
+ */
270
+ const requestFullscreen = attachPortalFunctionMetadata(async () => {
271
+ await request();
272
+ }, REQUEST_FULLSCREEN_DEFINITION);
273
+ const exit = definePortalFunction(EXIT_FULLSCREEN_DEFINITION);
274
+ /**
275
+ * Exits fullscreen for the current widget mount.
276
+ * @returns A promise that resolves when the host completes the request.
277
+ * @throws {@link PortalFunctionError} when undeclared, unsupported, unavailable, or rejected by the host.
278
+ * @remarks Declare `exitFullscreen` in `uses` and call it only after mount.
279
+ * @example await exitFullscreen();
280
+ */
281
+ const exitFullscreen = attachPortalFunctionMetadata(async () => {
282
+ await exit();
283
+ }, EXIT_FULLSCREEN_DEFINITION);
284
+ /**
285
+ * Allows one exact absolute HTTP(S) URL for an anchor in the current mount.
286
+ * Declare this function in `uses` and call it before rendering or changing the link.
287
+ *
288
+ * @param url - Exact absolute URL to allow.
289
+ * @returns The allowed URL for assignment to the anchor.
290
+ * @throws {@link PortalFunctionError} for invalid or disallowed URLs and host failures.
291
+ * @remarks Declare `allowAnchorUrl` in `uses`. Approval is scoped to the current mount and exact URL.
292
+ *
293
+ * @example
294
+ * ```ts
295
+ * const href = await allowAnchorUrl("https://example.com/help");
296
+ * ```
297
+ */
298
+ const allowAnchorUrl = definePortalFunction(ALLOW_ANCHOR_URL_DEFINITION);
299
+ //#endregion
300
+ //#region src/widgets/remote/contract/capabilities/read.ts
301
+ const PORTAL_READ_FUNCTION_DEFINITIONS = {
302
+ listCountries: {
303
+ capability: "localization",
304
+ version: "1",
305
+ method: "listCountries"
306
+ },
307
+ listLanguages: {
308
+ capability: "localization",
309
+ version: "1",
310
+ method: "listLanguages"
311
+ },
312
+ getAddressFields: {
313
+ capability: "localization",
314
+ version: "1",
315
+ method: "getAddressFields"
316
+ },
317
+ listProducts: {
318
+ capability: "products",
319
+ version: "1",
320
+ method: "listProducts"
321
+ },
322
+ getProduct: {
323
+ capability: "products",
324
+ version: "1",
325
+ method: "getProduct"
326
+ },
327
+ searchProducts: {
328
+ capability: "products",
329
+ version: "1",
330
+ method: "searchProducts"
331
+ },
332
+ listProductMedia: {
333
+ capability: "products",
334
+ version: "1",
335
+ method: "listProductMedia"
336
+ },
337
+ listProductMetrics: {
338
+ capability: "products",
339
+ version: "1",
340
+ method: "listProductMetrics"
341
+ },
342
+ listCalendarEvents: {
343
+ capability: "calendar",
344
+ version: "1",
345
+ method: "listCalendarEvents"
346
+ },
347
+ listContentMedia: {
348
+ capability: "content",
349
+ version: "1",
350
+ method: "listMedia"
351
+ },
352
+ getContentMedia: {
353
+ capability: "content",
354
+ version: "1",
355
+ method: "getMedia"
356
+ },
357
+ listPlaylists: {
358
+ capability: "content",
359
+ version: "1",
360
+ method: "listPlaylists"
361
+ },
362
+ getPlaylist: {
363
+ capability: "content",
364
+ version: "1",
365
+ method: "getPlaylist"
366
+ },
367
+ listPlaylistItems: {
368
+ capability: "content",
369
+ version: "1",
370
+ method: "listPlaylistItems"
371
+ },
372
+ listPages: {
373
+ capability: "content",
374
+ version: "1",
375
+ method: "listPages"
376
+ },
377
+ getPage: {
378
+ capability: "content",
379
+ version: "1",
380
+ method: "getPage"
381
+ },
382
+ listEnrollmentPacks: {
383
+ capability: "content",
384
+ version: "1",
385
+ method: "listEnrollmentPacks"
386
+ },
387
+ getEnrollmentPack: {
388
+ capability: "content",
389
+ version: "1",
390
+ method: "getEnrollmentPack"
391
+ },
392
+ listContentMetrics: {
393
+ capability: "content",
394
+ version: "1",
395
+ method: "listMetrics"
396
+ },
397
+ listShares: {
398
+ capability: "content",
399
+ version: "1",
400
+ method: "listShares"
401
+ },
402
+ listDamAssets: {
403
+ capability: "content",
404
+ version: "1",
405
+ method: "listDamAssets"
406
+ },
407
+ listDamAssetPaths: {
408
+ capability: "content",
409
+ version: "1",
410
+ method: "listDamAssetPaths"
411
+ }
412
+ };
413
+ /**
414
+ * Lists countries and their states in the requested language.
415
+ *
416
+ * Declare `listCountries` in the widget's `uses` list before calling it.
417
+ *
418
+ * @param input - Optional localization and cursor pagination.
419
+ * @returns A page of countries and a cursor for the next page.
420
+ * @throws {@link PortalFunctionError} when `listCountries` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.
421
+ *
422
+ * @example
423
+ * ```ts
424
+ * const page = await listCountries({ languageIso: "en", limit: 50 });
425
+ * ```
426
+ */
427
+ const listCountries = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listCountries);
428
+ /**
429
+ * Lists languages available in the current Portal.
430
+ *
431
+ * Declare `listLanguages` in the widget's `uses` list before calling it.
432
+ *
433
+ * @param input - Optional cursor pagination.
434
+ * @returns A page of available languages and a cursor for the next page.
435
+ * @throws {@link PortalFunctionError} when `listLanguages` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.
436
+ *
437
+ * @example
438
+ * ```ts
439
+ * const languages = await listLanguages({ limit: 20 });
440
+ * ```
441
+ */
442
+ const listLanguages = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listLanguages);
443
+ /**
444
+ * Gets the localized address-field configuration for a country.
445
+ *
446
+ * Declare `getAddressFields` in the widget's `uses` list before calling it.
447
+ *
448
+ * @param input - Country code and optional label language.
449
+ * @returns The country and its ordered address fields.
450
+ * @throws {@link PortalFunctionError} when `getAddressFields` is not declared, the input is invalid, the localization capability is unavailable, or the host call or response fails.
451
+ *
452
+ * @example
453
+ * ```ts
454
+ * const address = await getAddressFields({ countryCode: "US", languageIso: "en" });
455
+ * ```
456
+ */
457
+ const getAddressFields = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getAddressFields);
458
+ /**
459
+ * Lists products available in the current Portal.
460
+ *
461
+ * Declare `listProducts` in the widget's `uses` list before calling it.
462
+ *
463
+ * @param input - Optional ordering and cursor pagination.
464
+ * @returns A page of products and a cursor for the next page.
465
+ * @throws {@link PortalFunctionError} when `listProducts` is not declared, the input is invalid, the products capability is unavailable, or the host call or response fails.
466
+ *
467
+ * @example
468
+ * ```ts
469
+ * const products = await listProducts({ sort: "title_asc", limit: 20 });
470
+ * ```
471
+ */
472
+ const listProducts = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listProducts);
473
+ /**
474
+ * Gets one product by identifier.
475
+ *
476
+ * Declare `getProduct` in the widget's `uses` list before calling it.
477
+ *
478
+ * @param input - Product identifier.
479
+ * @returns The requested product.
480
+ * @throws {@link PortalFunctionError} when `getProduct` is not declared, the identifier is invalid or unavailable, the products capability is unavailable, or the host call or response fails.
481
+ *
482
+ * @example
483
+ * ```ts
484
+ * const product = await getProduct({ id: 42 });
485
+ * ```
486
+ */
487
+ const getProduct = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getProduct);
488
+ /**
489
+ * Searches products using Portal product search.
490
+ *
491
+ * Declare `searchProducts` in the widget's `uses` list before calling it.
492
+ *
493
+ * @param input - Search text and optional cursor pagination.
494
+ * @returns A page of matching products and a cursor for the next page.
495
+ * @throws {@link PortalFunctionError} when `searchProducts` is not declared, the input is invalid, product search is unavailable, or the host call or response fails.
496
+ *
497
+ * @example
498
+ * ```ts
499
+ * const matches = await searchProducts({ query: "starter kit", limit: 10 });
500
+ * ```
501
+ */
502
+ const searchProducts = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.searchProducts);
503
+ /**
504
+ * Lists media associated with a product.
505
+ *
506
+ * Declare `listProductMedia` in the widget's `uses` list before calling it.
507
+ *
508
+ * @param input - Product identifier.
509
+ * @returns The product's media items.
510
+ * @throws {@link PortalFunctionError} when `listProductMedia` is not declared, the product identifier is invalid or unavailable, the products capability is unavailable, or the host call or response fails.
511
+ *
512
+ * @example
513
+ * ```ts
514
+ * const media = await listProductMedia({ productId: 42 });
515
+ * ```
516
+ */
517
+ const listProductMedia = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listProductMedia);
518
+ /**
519
+ * Lists visit metrics for products.
520
+ *
521
+ * Declare `listProductMetrics` in the widget's `uses` list before calling it.
522
+ *
523
+ * @param input - Metric kind, optional period, and optional result limit.
524
+ * @returns Metric totals grouped by product.
525
+ * @throws {@link PortalFunctionError} when `listProductMetrics` is not declared, the input is invalid, product metrics are unavailable, or the host call or response fails.
526
+ *
527
+ * @example
528
+ * ```ts
529
+ * const metrics = await listProductMetrics({ kind: "visits", period: "30d" });
530
+ * ```
531
+ */
532
+ const listProductMetrics = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listProductMetrics);
533
+ /**
534
+ * Lists calendar events visible to the signed-in Portal user.
535
+ *
536
+ * Declare `listCalendarEvents` in the widget's `uses` list before calling it.
537
+ *
538
+ * @returns All events supplied by the Portal calendar capability.
539
+ * @throws {@link PortalFunctionError} when `listCalendarEvents` is not declared, the calendar capability is unavailable, or the host call or response fails.
540
+ *
541
+ * @example
542
+ * ```ts
543
+ * const events = await listCalendarEvents();
544
+ * ```
545
+ */
546
+ const listCalendarEvents = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listCalendarEvents);
547
+ /**
548
+ * Lists media from the Portal content library.
549
+ *
550
+ * Declare `listContentMedia` in the widget's `uses` list before calling it.
551
+ *
552
+ * @param input - Optional filters, localization, ordering, and cursor pagination.
553
+ * @returns A page of content media and a cursor for the next page.
554
+ * @throws {@link PortalFunctionError} when `listContentMedia` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.
555
+ *
556
+ * @example
557
+ * ```ts
558
+ * const media = await listContentMedia({ contentFormat: "video", limit: 20 });
559
+ * ```
560
+ */
561
+ const listContentMedia = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listContentMedia);
562
+ /**
563
+ * Gets one content-library media item by identifier.
564
+ *
565
+ * Declare `getContentMedia` in the widget's `uses` list before calling it.
566
+ *
567
+ * @param input - Media identifier and optional content language.
568
+ * @returns The requested media item.
569
+ * @throws {@link PortalFunctionError} when `getContentMedia` is not declared, the input is invalid or unavailable, content access is unavailable, or the host call or response fails.
570
+ *
571
+ * @example
572
+ * ```ts
573
+ * const media = await getContentMedia({ id: 42, languageIso: "en" });
574
+ * ```
575
+ */
576
+ const getContentMedia = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getContentMedia);
577
+ /**
578
+ * Lists playlists from the Portal content library.
579
+ *
580
+ * Declare `listPlaylists` in the widget's `uses` list before calling it.
581
+ *
582
+ * @param input - Optional filters, ordering, and cursor pagination.
583
+ * @returns A page of playlists and a cursor for the next page.
584
+ * @throws {@link PortalFunctionError} when `listPlaylists` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.
585
+ *
586
+ * @example
587
+ * ```ts
588
+ * const playlists = await listPlaylists({ ownership: "company", limit: 20 });
589
+ * ```
590
+ */
591
+ const listPlaylists = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listPlaylists);
592
+ /**
593
+ * Gets one content playlist by identifier.
594
+ *
595
+ * Declare `getPlaylist` in the widget's `uses` list before calling it.
596
+ *
597
+ * @param input - Playlist identifier.
598
+ * @returns The requested playlist.
599
+ * @throws {@link PortalFunctionError} when `getPlaylist` is not declared, the identifier is invalid or unavailable, content access is unavailable, or the host call or response fails.
600
+ *
601
+ * @example
602
+ * ```ts
603
+ * const playlist = await getPlaylist({ id: 42 });
604
+ * ```
605
+ */
606
+ const getPlaylist = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getPlaylist);
607
+ /**
608
+ * Lists the ordered items in a content playlist.
609
+ *
610
+ * Declare `listPlaylistItems` in the widget's `uses` list before calling it.
611
+ *
612
+ * @param input - Playlist identifier, optional language, and cursor pagination.
613
+ * @returns A page of playlist items and a cursor for the next page.
614
+ * @throws {@link PortalFunctionError} when `listPlaylistItems` is not declared, the input is invalid, the playlist is unavailable, content access is unavailable, or the host call or response fails.
615
+ *
616
+ * @example
617
+ * ```ts
618
+ * const items = await listPlaylistItems({ playlistId: 42, limit: 20 });
619
+ * ```
620
+ */
621
+ const listPlaylistItems = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listPlaylistItems);
622
+ /**
623
+ * Lists content pages available to the signed-in Portal user.
624
+ *
625
+ * Declare `listPages` in the widget's `uses` list before calling it.
626
+ *
627
+ * @param input - Optional filters, localization, ordering, and cursor pagination.
628
+ * @returns A page of content-page summaries and a cursor for the next page.
629
+ * @throws {@link PortalFunctionError} when `listPages` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.
630
+ *
631
+ * @example
632
+ * ```ts
633
+ * const pages = await listPages({ sort: "title_asc", limit: 20 });
634
+ * ```
635
+ */
636
+ const listPages = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listPages);
637
+ /**
638
+ * Gets one content page and its share URL.
639
+ *
640
+ * Declare `getPage` in the widget's `uses` list before calling it.
641
+ *
642
+ * @param input - Page identifier and optional content language.
643
+ * @returns The requested page and its share URL.
644
+ * @throws {@link PortalFunctionError} when `getPage` is not declared, the input is invalid or unavailable, content access is unavailable, or the host call or response fails.
645
+ *
646
+ * @example
647
+ * ```ts
648
+ * const detail = await getPage({ id: 42, languageIso: "en" });
649
+ * ```
650
+ */
651
+ const getPage = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getPage);
652
+ /**
653
+ * Lists enrollment packs available in the Portal content library.
654
+ *
655
+ * Declare `listEnrollmentPacks` in the widget's `uses` list before calling it.
656
+ *
657
+ * @param input - Optional cursor pagination.
658
+ * @returns A page of enrollment packs and a cursor for the next page.
659
+ * @throws {@link PortalFunctionError} when `listEnrollmentPacks` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.
660
+ *
661
+ * @example
662
+ * ```ts
663
+ * const packs = await listEnrollmentPacks({ limit: 20 });
664
+ * ```
665
+ */
666
+ const listEnrollmentPacks = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listEnrollmentPacks);
667
+ /**
668
+ * Gets one enrollment pack by identifier.
669
+ *
670
+ * Declare `getEnrollmentPack` in the widget's `uses` list before calling it.
671
+ *
672
+ * @param input - Enrollment-pack identifier.
673
+ * @returns The requested enrollment pack.
674
+ * @throws {@link PortalFunctionError} when `getEnrollmentPack` is not declared, the identifier is invalid or unavailable, content access is unavailable, or the host call or response fails.
675
+ *
676
+ * @example
677
+ * ```ts
678
+ * const pack = await getEnrollmentPack({ id: 42 });
679
+ * ```
680
+ */
681
+ const getEnrollmentPack = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.getEnrollmentPack);
682
+ /**
683
+ * Lists visit metrics for Portal content resources.
684
+ *
685
+ * Declare `listContentMetrics` in the widget's `uses` list before calling it.
686
+ *
687
+ * @param input - Resource, metric kind, and optional aggregation settings.
688
+ * @returns Metric totals grouped by content resource.
689
+ * @throws {@link PortalFunctionError} when `listContentMetrics` is not declared, the input is invalid, content metrics are unavailable, or the host call or response fails.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * const metrics = await listContentMetrics({
694
+ * resource: "media",
695
+ * kind: "shareVisits",
696
+ * period: "30d",
697
+ * });
698
+ * ```
699
+ */
700
+ const listContentMetrics = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listContentMetrics);
701
+ /**
702
+ * Lists share records created by the signed-in Portal user.
703
+ *
704
+ * Declare `listShares` in the widget's `uses` list before calling it.
705
+ *
706
+ * @param input - Optional cursor pagination.
707
+ * @returns A page of share records and a cursor for the next page.
708
+ * @throws {@link PortalFunctionError} when `listShares` is not declared, the input is invalid, content access is unavailable, or the host call or response fails.
709
+ *
710
+ * @example
711
+ * ```ts
712
+ * const shares = await listShares({ limit: 20 });
713
+ * ```
714
+ */
715
+ const listShares = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listShares);
716
+ /**
717
+ * Lists digital assets available from the Portal content library.
718
+ *
719
+ * Declare `listDamAssets` in the widget's `uses` list before calling it.
720
+ *
721
+ * @param input - Optional cursor pagination.
722
+ * @returns A page of digital assets and a cursor for the next page.
723
+ * @throws {@link PortalFunctionError} when `listDamAssets` is not declared, the input is invalid, digital-asset access is unavailable, or the host call or response fails.
724
+ *
725
+ * @example
726
+ * ```ts
727
+ * const assets = await listDamAssets({ limit: 20 });
728
+ * ```
729
+ */
730
+ const listDamAssets = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listDamAssets);
731
+ /**
732
+ * Lists accessible paths for one digital asset.
733
+ *
734
+ * Declare `listDamAssetPaths` in the widget's `uses` list before calling it.
735
+ *
736
+ * @param input - Asset code and optional cursor pagination.
737
+ * @returns A page of asset paths and a cursor for the next page.
738
+ * @throws {@link PortalFunctionError} when `listDamAssetPaths` is not declared, the input or asset code is invalid, digital-asset access is unavailable, or the host call or response fails.
739
+ *
740
+ * @example
741
+ * ```ts
742
+ * const paths = await listDamAssetPaths({ assetCode: "hero-image", limit: 20 });
743
+ * ```
744
+ */
745
+ const listDamAssetPaths = definePortalFunction(PORTAL_READ_FUNCTION_DEFINITIONS.listDamAssetPaths);
746
+ //#endregion
747
+ //#region src/widgets/remote/contract/capabilities/content-mutation.ts
748
+ const PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS = {
749
+ createContentMedia: {
750
+ capability: "content.write",
751
+ version: "1",
752
+ method: "createMedia"
753
+ },
754
+ updateContentMedia: {
755
+ capability: "content.write",
756
+ version: "1",
757
+ method: "updateMedia"
758
+ },
759
+ deleteContentMedia: {
760
+ capability: "content.write",
761
+ version: "1",
762
+ method: "deleteMedia"
763
+ },
764
+ listContentMediaProducts: {
765
+ capability: "content",
766
+ version: "1",
767
+ method: "listMediaProducts"
768
+ },
769
+ addContentMediaProduct: {
770
+ capability: "content.write",
771
+ version: "1",
772
+ method: "addMediaProduct"
773
+ },
774
+ removeContentMediaProduct: {
775
+ capability: "content.write",
776
+ version: "1",
777
+ method: "removeMediaProduct"
778
+ },
779
+ createContentPlaylist: {
780
+ capability: "content.write",
781
+ version: "1",
782
+ method: "createPlaylist"
783
+ },
784
+ updateContentPlaylist: {
785
+ capability: "content.write",
786
+ version: "1",
787
+ method: "updatePlaylist"
788
+ },
789
+ deleteContentPlaylist: {
790
+ capability: "content.write",
791
+ version: "1",
792
+ method: "deletePlaylist"
793
+ },
794
+ addContentPlaylistItem: {
795
+ capability: "content.write",
796
+ version: "1",
797
+ method: "addPlaylistItem"
798
+ },
799
+ removeContentPlaylistItem: {
800
+ capability: "content.write",
801
+ version: "1",
802
+ method: "removePlaylistItem"
803
+ },
804
+ reorderContentPlaylistItems: {
805
+ capability: "content.write",
806
+ version: "1",
807
+ method: "reorderPlaylistItems"
808
+ },
809
+ createContentShare: {
810
+ capability: "content.write",
811
+ version: "1",
812
+ method: "createShare"
813
+ },
814
+ toggleContentFavorite: {
815
+ capability: "content.write",
816
+ version: "1",
817
+ method: "toggleFavorite"
818
+ },
819
+ createDamAsset: {
820
+ capability: "content.write",
821
+ version: "1",
822
+ method: "createDamAsset"
823
+ },
824
+ createDamAssetPath: {
825
+ capability: "content.write",
826
+ version: "1",
827
+ method: "createDamAssetPath"
828
+ },
829
+ discardDamAsset: {
830
+ capability: "content.write",
831
+ version: "1",
832
+ method: "discardDamAsset"
833
+ },
834
+ deleteDamAsset: {
835
+ capability: "content.write",
836
+ version: "1",
837
+ method: "deleteDamAsset"
838
+ }
839
+ };
840
+ /**
841
+ * Creates content media in the Portal host.
842
+ * @param input - Media metadata and optional source URL.
843
+ * @returns The created {@link PortalMedia}.
844
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
845
+ * @remarks Declare `createContentMedia` in `uses`. This mutates host content after mount.
846
+ * @example const media = await createContentMedia({ title: "Guide", mediaType: "document" });
847
+ */
848
+ const createContentMedia = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.createContentMedia);
849
+ /**
850
+ * Updates an existing content-media record.
851
+ * @param input - Media identifier and fields to replace.
852
+ * @returns The updated {@link PortalMedia}.
853
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
854
+ * @remarks Declare `updateContentMedia` in `uses`. This mutates host content after mount.
855
+ * @example const media = await updateContentMedia({ id: 12, title: "Updated guide" });
856
+ */
857
+ const updateContentMedia = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.updateContentMedia);
858
+ /**
859
+ * Deletes a content-media record.
860
+ * @param input - Media identifier to delete.
861
+ * @returns `null` after deletion.
862
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
863
+ * @remarks Declare `deleteContentMedia` in `uses`. This permanently mutates host content after mount.
864
+ * @example await deleteContentMedia({ id: 12 });
865
+ */
866
+ const deleteContentMedia = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.deleteContentMedia);
867
+ /**
868
+ * Lists products associated with one content-media record.
869
+ * @param input - Media identifier, pagination, and optional locale.
870
+ * @returns A page of associated products.
871
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
872
+ * @remarks Declare `listContentMediaProducts` in `uses` and call it only after mount.
873
+ * @example const products = await listContentMediaProducts({ mediaId: 12, limit: 20 });
874
+ */
875
+ const listContentMediaProducts = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.listContentMediaProducts);
876
+ /**
877
+ * Associates a product with content media.
878
+ * @param input - Media and product identifiers.
879
+ * @returns The created {@link PortalMediaProduct} association.
880
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
881
+ * @remarks Declare `addContentMediaProduct` in `uses`. This mutates host content after mount.
882
+ * @example const product = await addContentMediaProduct({ mediaId: 12, productId: 42 });
883
+ */
884
+ const addContentMediaProduct = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.addContentMediaProduct);
885
+ /**
886
+ * Removes a product association from content media.
887
+ * @param input - Media and product identifiers.
888
+ * @returns `null` after removal.
889
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
890
+ * @remarks Declare `removeContentMediaProduct` in `uses`. This mutates host content after mount.
891
+ * @example await removeContentMediaProduct({ mediaId: 12, productId: 42 });
892
+ */
893
+ const removeContentMediaProduct = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.removeContentMediaProduct);
894
+ /**
895
+ * Creates a content playlist.
896
+ * @param input - Playlist title and optional description.
897
+ * @returns The created {@link PortalPlaylist}.
898
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
899
+ * @remarks Declare `createContentPlaylist` in `uses`. This mutates host content after mount.
900
+ * @example const playlist = await createContentPlaylist({ title: "Launch" });
901
+ */
902
+ const createContentPlaylist = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.createContentPlaylist);
903
+ /**
904
+ * Updates a content playlist.
905
+ * @param input - Playlist identifier and fields to replace.
906
+ * @returns The updated {@link PortalPlaylist}.
907
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
908
+ * @remarks Declare `updateContentPlaylist` in `uses`. This mutates host content after mount.
909
+ * @example const playlist = await updateContentPlaylist({ id: 5, title: "New launch" });
910
+ */
911
+ const updateContentPlaylist = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.updateContentPlaylist);
912
+ /**
913
+ * Deletes a content playlist.
914
+ * @param input - Playlist identifier to delete.
915
+ * @returns `null` after deletion.
916
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
917
+ * @remarks Declare `deleteContentPlaylist` in `uses`. This permanently mutates host content after mount.
918
+ * @example await deleteContentPlaylist({ id: 5 });
919
+ */
920
+ const deleteContentPlaylist = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.deleteContentPlaylist);
921
+ /**
922
+ * Adds a content resource to a playlist.
923
+ * @param input - Playlist, resource kind, resource identifier, and optional position.
924
+ * @returns The created {@link PortalPlaylistItem}.
925
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
926
+ * @remarks Declare `addContentPlaylistItem` in `uses`. This mutates host content after mount.
927
+ * @example const item = await addContentPlaylistItem({ playlistId: 5, contentType: "media", contentId: 12 });
928
+ */
929
+ const addContentPlaylistItem = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.addContentPlaylistItem);
930
+ /**
931
+ * Removes an item from a content playlist.
932
+ * @param input - Playlist and playlist-item identifiers.
933
+ * @returns `null` after removal.
934
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
935
+ * @remarks Declare `removeContentPlaylistItem` in `uses`. This mutates host content after mount.
936
+ * @example await removeContentPlaylistItem({ playlistId: 5, itemId: 8 });
937
+ */
938
+ const removeContentPlaylistItem = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.removeContentPlaylistItem);
939
+ /**
940
+ * Replaces the item order of a content playlist.
941
+ * @param input - Playlist identifier and item-order pairs.
942
+ * @returns `null` after reordering.
943
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
944
+ * @remarks Declare `reorderContentPlaylistItems` in `uses`. Send the complete desired order after mount.
945
+ * @example await reorderContentPlaylistItems({ playlistId: 5, items: [{ id: 8, order: 0 }] });
946
+ */
947
+ const reorderContentPlaylistItems = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.reorderContentPlaylistItems);
948
+ /**
949
+ * Creates a share link for a content resource.
950
+ * @param input - Resource kind and identifier to share.
951
+ * @returns The created {@link PortalShare}.
952
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
953
+ * @remarks Declare `createContentShare` in `uses`. This creates host data after mount.
954
+ * @example const share = await createContentShare({ shareableType: "media", shareableId: 12 });
955
+ */
956
+ const createContentShare = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.createContentShare);
957
+ /**
958
+ * Toggles the signed-in member's favorite state for content.
959
+ * @param input - Favorite resource kind and identifier.
960
+ * @returns The resulting {@link PortalContentFavoriteState}.
961
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
962
+ * @remarks Declare `toggleContentFavorite` in `uses`. This mutates host data after mount.
963
+ * @example const state = await toggleContentFavorite({ favoriteableType: "Medium", favoriteableId: 12 });
964
+ */
965
+ const toggleContentFavorite = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.toggleContentFavorite);
966
+ /**
967
+ * Creates a digital-asset record.
968
+ * @param input - Asset name and optional description.
969
+ * @returns The created {@link PortalDamAsset}.
970
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
971
+ * @remarks Declare `createDamAsset` in `uses`. This mutates host content after mount.
972
+ * @example const asset = await createDamAsset({ name: "Hero image" });
973
+ */
974
+ const createDamAsset = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.createDamAsset);
975
+ /**
976
+ * Adds a path to a digital asset.
977
+ * @param input - Stable asset code and path.
978
+ * @returns The created {@link PortalDamAssetPath}.
979
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
980
+ * @remarks Declare `createDamAssetPath` in `uses`. This mutates host content after mount.
981
+ * @example const path = await createDamAssetPath({ assetCode: "hero", path: "/images/hero.png" });
982
+ */
983
+ const createDamAssetPath = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.createDamAssetPath);
984
+ /**
985
+ * Marks a digital asset as discarded.
986
+ * @param input - Stable asset code.
987
+ * @returns The updated {@link PortalDamAsset}.
988
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
989
+ * @remarks Declare `discardDamAsset` in `uses`. This mutates host content after mount.
990
+ * @example const asset = await discardDamAsset({ assetCode: "hero" });
991
+ */
992
+ const discardDamAsset = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.discardDamAsset);
993
+ /**
994
+ * Permanently deletes a digital asset.
995
+ * @param input - Stable asset code.
996
+ * @returns `null` after deletion.
997
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
998
+ * @remarks Declare `deleteDamAsset` in `uses`. This permanently mutates host content after mount.
999
+ * @example await deleteDamAsset({ assetCode: "hero" });
1000
+ */
1001
+ const deleteDamAsset = definePortalFunction(PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS.deleteDamAsset);
1002
+ //#endregion
1003
+ //#region src/widgets/remote/contract/capabilities/self.ts
1004
+ const PORTAL_SELF_FUNCTION_DEFINITIONS = {
1005
+ getMemberAccess: {
1006
+ capability: "account",
1007
+ version: "1",
1008
+ method: "getMemberAccess"
1009
+ },
1010
+ updateUserAccount: {
1011
+ capability: "account.write",
1012
+ version: "1",
1013
+ method: "update"
1014
+ },
1015
+ listTodos: {
1016
+ capability: "todos",
1017
+ version: "1",
1018
+ method: "list"
1019
+ },
1020
+ createTodo: {
1021
+ capability: "todos.write",
1022
+ version: "1",
1023
+ method: "create"
1024
+ },
1025
+ getPointsLedger: {
1026
+ capability: "points",
1027
+ version: "1",
1028
+ method: "get"
1029
+ },
1030
+ getMySiteProfile: {
1031
+ capability: "mySite",
1032
+ version: "1",
1033
+ method: "getProfile"
1034
+ },
1035
+ updateMySiteProfile: {
1036
+ capability: "mySite.write",
1037
+ version: "1",
1038
+ method: "updateProfile"
1039
+ },
1040
+ updateMySiteSettings: {
1041
+ capability: "mySite.write",
1042
+ version: "1",
1043
+ method: "updateSettings"
1044
+ },
1045
+ listMySiteLinks: {
1046
+ capability: "mySite",
1047
+ version: "1",
1048
+ method: "listLinks"
1049
+ },
1050
+ createMySiteLink: {
1051
+ capability: "mySite.write",
1052
+ version: "1",
1053
+ method: "createLink"
1054
+ },
1055
+ updateMySiteLink: {
1056
+ capability: "mySite.write",
1057
+ version: "1",
1058
+ method: "updateLink"
1059
+ },
1060
+ deleteMySiteLink: {
1061
+ capability: "mySite.write",
1062
+ version: "1",
1063
+ method: "deleteLink"
1064
+ },
1065
+ reorderMySiteLinks: {
1066
+ capability: "mySite.write",
1067
+ version: "1",
1068
+ method: "reorderLinks"
1069
+ },
1070
+ listMySiteFavorites: {
1071
+ capability: "mySite",
1072
+ version: "1",
1073
+ method: "listFavorites"
1074
+ },
1075
+ addMySiteFavorite: {
1076
+ capability: "mySite.write",
1077
+ version: "1",
1078
+ method: "addFavorite"
1079
+ },
1080
+ deleteMySiteFavorite: {
1081
+ capability: "mySite.write",
1082
+ version: "1",
1083
+ method: "deleteFavorite"
1084
+ },
1085
+ reorderMySiteFavorites: {
1086
+ capability: "mySite.write",
1087
+ version: "1",
1088
+ method: "reorderFavorites"
1089
+ },
1090
+ listMySiteThemes: {
1091
+ capability: "mySite",
1092
+ version: "1",
1093
+ method: "listThemes"
1094
+ }
1095
+ };
1096
+ /**
1097
+ * Gets access and permissions for the signed-in member.
1098
+ * @returns The current {@link PortalMemberAccess}.
1099
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1100
+ * @remarks Declare `getMemberAccess` in `uses` and call it only after mount.
1101
+ * @example const access = await getMemberAccess();
1102
+ */
1103
+ const getMemberAccess = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.getMemberAccess);
1104
+ /**
1105
+ * Updates editable fields on the signed-in account.
1106
+ * @param input - Account fields to update.
1107
+ * @returns The updated {@link UserAccount}.
1108
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1109
+ * @remarks Declare `updateUserAccount` in `uses`. This mutates host account data after mount.
1110
+ * @example const account = await updateUserAccount({ bio: "Hello" });
1111
+ */
1112
+ const updateUserAccount = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.updateUserAccount);
1113
+ /**
1114
+ * Lists todos for the signed-in member.
1115
+ * @param input - Optional completion-state filter.
1116
+ * @returns Todo summaries matching the filter.
1117
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1118
+ * @remarks Declare `listTodos` in `uses` and call it only after mount.
1119
+ * @example const todos = await listTodos({ state: "incomplete" });
1120
+ */
1121
+ const listTodos = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.listTodos);
1122
+ /**
1123
+ * Creates a todo for the signed-in member.
1124
+ * @param input - Todo text and optional due timestamp.
1125
+ * @returns The created {@link PortalTodo}.
1126
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1127
+ * @remarks Declare `createTodo` in `uses`. This mutates host data after mount.
1128
+ * @example const todo = await createTodo({ body: "Follow up" });
1129
+ */
1130
+ const createTodo = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.createTodo);
1131
+ /**
1132
+ * Gets the reward-points ledger for the signed-in member.
1133
+ * @returns The current {@link PortalPointsLedger}.
1134
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1135
+ * @remarks Declare `getPointsLedger` in `uses` and call it only after mount.
1136
+ * @example const ledger = await getPointsLedger();
1137
+ */
1138
+ const getPointsLedger = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.getPointsLedger);
1139
+ /**
1140
+ * Gets the MySite profile for the signed-in member.
1141
+ * @returns The current {@link PortalMySiteProfile}.
1142
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1143
+ * @remarks Declare `getMySiteProfile` in `uses` and call it only after mount.
1144
+ * @example const profile = await getMySiteProfile();
1145
+ */
1146
+ const getMySiteProfile = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.getMySiteProfile);
1147
+ /**
1148
+ * Updates editable MySite profile fields.
1149
+ * @param input - Profile fields to update.
1150
+ * @returns The updated {@link PortalMySiteProfile}.
1151
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1152
+ * @remarks Declare `updateMySiteProfile` in `uses`. This mutates host data after mount.
1153
+ * @example const profile = await updateMySiteProfile({ displayName: "Ari" });
1154
+ */
1155
+ const updateMySiteProfile = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.updateMySiteProfile);
1156
+ /**
1157
+ * Updates MySite publication settings.
1158
+ * @param input - Theme or public slug settings to update.
1159
+ * @returns `null` after the host applies the settings.
1160
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1161
+ * @remarks Declare `updateMySiteSettings` in `uses`. This mutates host data after mount.
1162
+ * @example await updateMySiteSettings({ themeId: 42 });
1163
+ */
1164
+ const updateMySiteSettings = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.updateMySiteSettings);
1165
+ /**
1166
+ * Lists links on the signed-in member's MySite.
1167
+ * @returns MySite links in display order.
1168
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1169
+ * @remarks Declare `listMySiteLinks` in `uses` and call it only after mount.
1170
+ * @example const links = await listMySiteLinks();
1171
+ */
1172
+ const listMySiteLinks = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.listMySiteLinks);
1173
+ /**
1174
+ * Creates a link on the signed-in member's MySite.
1175
+ * @param input - Destination URL and visible title.
1176
+ * @returns The created {@link PortalMySiteLink}.
1177
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1178
+ * @remarks Declare `createMySiteLink` in `uses`. This mutates host data after mount.
1179
+ * @example const link = await createMySiteLink({ title: "Shop", url: "https://example.com" });
1180
+ */
1181
+ const createMySiteLink = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.createMySiteLink);
1182
+ /**
1183
+ * Updates a link on the signed-in member's MySite.
1184
+ * @param input - Link identifier and fields to replace.
1185
+ * @returns The updated {@link PortalMySiteLink}.
1186
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1187
+ * @remarks Declare `updateMySiteLink` in `uses`. This mutates host data after mount.
1188
+ * @example const link = await updateMySiteLink({ id: 7, title: "New title" });
1189
+ */
1190
+ const updateMySiteLink = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.updateMySiteLink);
1191
+ /**
1192
+ * Deletes a link from the signed-in member's MySite.
1193
+ * @param input - Link identifier to delete.
1194
+ * @returns `null` after deletion.
1195
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1196
+ * @remarks Declare `deleteMySiteLink` in `uses`. This permanently mutates host data after mount.
1197
+ * @example await deleteMySiteLink({ id: 7 });
1198
+ */
1199
+ const deleteMySiteLink = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.deleteMySiteLink);
1200
+ /**
1201
+ * Replaces the display order of all MySite links.
1202
+ * @param input - Link identifiers in the desired order.
1203
+ * @returns Updated links in display order.
1204
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1205
+ * @remarks Declare `reorderMySiteLinks` in `uses`. Supply the complete order after mount.
1206
+ * @example const links = await reorderMySiteLinks({ orderedIds: [7, 3] });
1207
+ */
1208
+ const reorderMySiteLinks = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.reorderMySiteLinks);
1209
+ /**
1210
+ * Lists product favorites on the signed-in member's MySite.
1211
+ * @returns Favorites in display order.
1212
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1213
+ * @remarks Declare `listMySiteFavorites` in `uses` and call it only after mount.
1214
+ * @example const favorites = await listMySiteFavorites();
1215
+ */
1216
+ const listMySiteFavorites = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.listMySiteFavorites);
1217
+ /**
1218
+ * Adds a product to MySite favorites.
1219
+ * @param input - Product identifier to add.
1220
+ * @returns The created {@link PortalMySiteFavorite}.
1221
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1222
+ * @remarks Declare `addMySiteFavorite` in `uses`. This mutates host data after mount.
1223
+ * @example const favorite = await addMySiteFavorite({ productId: 42 });
1224
+ */
1225
+ const addMySiteFavorite = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.addMySiteFavorite);
1226
+ /**
1227
+ * Deletes a MySite favorite.
1228
+ * @param input - Favorite record identifier to delete.
1229
+ * @returns `null` after deletion.
1230
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1231
+ * @remarks Declare `deleteMySiteFavorite` in `uses`. This permanently mutates host data after mount.
1232
+ * @example await deleteMySiteFavorite({ id: 9 });
1233
+ */
1234
+ const deleteMySiteFavorite = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.deleteMySiteFavorite);
1235
+ /**
1236
+ * Replaces the display order of all MySite favorites.
1237
+ * @param input - Favorite identifiers in the desired order.
1238
+ * @returns Updated favorites in display order.
1239
+ * @throws {@link PortalFunctionError} when undeclared, invalid, unavailable, or rejected by the host.
1240
+ * @remarks Declare `reorderMySiteFavorites` in `uses`. Supply the complete order after mount.
1241
+ * @example const favorites = await reorderMySiteFavorites({ orderedIds: [9, 4] });
1242
+ */
1243
+ const reorderMySiteFavorites = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.reorderMySiteFavorites);
1244
+ /**
1245
+ * Lists themes available to the signed-in member's MySite.
1246
+ * @returns Available {@link PortalMySiteTheme} records.
1247
+ * @throws {@link PortalFunctionError} when undeclared, unavailable, or rejected by the host.
1248
+ * @remarks Declare `listMySiteThemes` in `uses` and call it only after mount.
1249
+ * @example const themes = await listMySiteThemes();
1250
+ */
1251
+ const listMySiteThemes = definePortalFunction(PORTAL_SELF_FUNCTION_DEFINITIONS.listMySiteThemes);
1252
+ //#endregion
1253
+ //#region src/widgets/remote/contract/elements/search-sort.ts
1254
+ const FLUID_SEARCH_SORT_TAG_NAME = "fluid-ui-search-sort";
1255
+ const FLUID_SEARCH_SORT_EVENT_NAMES = {
1256
+ searchChange: "search-change",
1257
+ sortChange: "sort-change"
1258
+ };
1259
+ //#endregion
1260
+ //#region src/widgets/remote/contract/elements/fluid-spacer-widget.ts
1261
+ const FLUID_SPACER_WIDGET_TAG_NAME = "fluid-spacer-widget";
1262
+ //#endregion
1263
+ export { listDamAssetPaths as $, createDamAssetPath as A, getUserAccount as At, updateContentMedia as B, PORTAL_CONTENT_MUTATION_FUNCTION_DEFINITIONS as C, buildPortalHref as Ct, createContentPlaylist as D, getPortalApp as Dt, createContentMedia as E, getNavigationState as Et, listContentMediaProducts as F, getPortalFunctionMetadata as Ft, getEnrollmentPack as G, PORTAL_READ_FUNCTION_DEFINITIONS as H, removeContentMediaProduct as I, implementPortalFunction as It, getProduct as J, getPage as K, removeContentPlaylistItem as L, deleteContentPlaylist as M, requestFullscreen as Mt, deleteDamAsset as N, PortalFunctionError as Nt, createContentShare as O, getPortalProfile as Ot, discardDamAsset as P, definePortalFunction as Pt, listCountries as Q, reorderContentPlaylistItems as R, updateUserAccount as S, allowAnchorUrl as St, addContentPlaylistItem as T, getFullscreenState as Tt, getAddressFields as U, updateContentPlaylist as V, getContentMedia as W, listContentMedia as X, listCalendarEvents as Y, listContentMetrics as Z, reorderMySiteFavorites as _, NAVIGATE_DEFINITION as _t, addMySiteFavorite as a, listPlaylists as at, updateMySiteProfile as b, REQUEST_FULLSCREEN_DEFINITION as bt, deleteMySiteFavorite as c, listProducts as ct, getMySiteProfile as d, ACCOUNT_DEFINITION as dt, listDamAssets as et, getPointsLedger as f, ALLOW_ANCHOR_URL_DEFINITION as ft, listTodos as g, FULLSCREEN_STATE_DEFINITION as gt, listMySiteThemes as h, EXIT_FULLSCREEN_DEFINITION as ht, PORTAL_SELF_FUNCTION_DEFINITIONS as i, listPlaylistItems as it, deleteContentMedia as j, navigateTo as jt, createDamAsset as k, getStore as kt, deleteMySiteLink as l, listShares as lt, listMySiteLinks as m, BUILD_HREF_DEFINITION as mt, FLUID_SEARCH_SORT_EVENT_NAMES as n, listLanguages as nt, createMySiteLink as o, listProductMedia as ot, listMySiteFavorites as p, APP_DEFINITION as pt, getPlaylist as q, FLUID_SEARCH_SORT_TAG_NAME as r, listPages as rt, createTodo as s, listProductMetrics as st, FLUID_SPACER_WIDGET_TAG_NAME as t, listEnrollmentPacks as tt, getMemberAccess as u, searchProducts as ut, reorderMySiteLinks as v, NAVIGATION_STATE_DEFINITION as vt, addContentMediaProduct as w, exitFullscreen as wt, updateMySiteSettings as x, STORE_DEFINITION as xt, updateMySiteLink as y, PROFILE_DEFINITION as yt, toggleContentFavorite as z };
1264
+
1265
+ //# sourceMappingURL=fluid-spacer-widget-Cgsgu8lP.mjs.map