@streamscloud/embeddable 12.2.0 → 13.0.0

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 (162) hide show
  1. package/dist/content-player/content-player-config.svelte.d.ts +2 -13
  2. package/dist/content-player/content-player-config.svelte.js +1 -1
  3. package/dist/content-player/content-player-settings.svelte.d.ts +16 -0
  4. package/dist/content-player/content-player-settings.svelte.js +27 -0
  5. package/dist/content-player/index.d.ts +1 -0
  6. package/dist/content-player/index.js +1 -0
  7. package/dist/core/theme/index.d.ts +1 -0
  8. package/dist/core/theme/theme-store.svelte.d.ts +3 -2
  9. package/dist/external-api/data-providers/index.d.ts +6 -0
  10. package/dist/external-api/data-providers/index.js +6 -0
  11. package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.d.ts +15 -0
  12. package/dist/{media-center/config/internal-media-center-config.js → external-api/data-providers/internal-media-center-data-provider.svelte.js} +33 -17
  13. package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.d.ts +1 -1
  14. package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.js +1 -1
  15. package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.d.ts +1 -1
  16. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.d.ts +1 -1
  17. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.js +1 -1
  18. package/dist/{media-center/config → external-api/data-providers}/operations.generated.d.ts +6 -0
  19. package/dist/{media-center/config → external-api/data-providers}/operations.generated.js +13 -0
  20. package/dist/{media-center/config → external-api/data-providers}/operations.graphql +6 -0
  21. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.d.ts +1 -1
  22. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.js +2 -2
  23. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.d.ts +1 -1
  24. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.d.ts +2 -2
  25. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.js +1 -1
  26. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.d.ts +1 -1
  27. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.js +1 -1
  28. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.d.ts +1 -1
  29. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.d.ts +1 -1
  30. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.js +2 -2
  31. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.d.ts +2 -2
  32. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.js +1 -1
  33. package/dist/external-api/index.d.ts +3 -0
  34. package/dist/external-api/index.js +3 -0
  35. package/dist/external-api/media-page/index.d.ts +83 -0
  36. package/dist/external-api/media-page/index.js +82 -0
  37. package/dist/{short-videos → external-api}/short-videos-player/index.d.ts +27 -12
  38. package/dist/{short-videos → external-api}/short-videos-player/index.js +35 -28
  39. package/dist/external-api/streams-player/index.d.ts +105 -0
  40. package/dist/external-api/streams-player/index.js +110 -0
  41. package/dist/media-center/config/types.d.ts +28 -27
  42. package/dist/media-center/index.d.ts +3 -1
  43. package/dist/media-center/media-center/cmp.media-center-proxy.svelte +4 -4
  44. package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +7 -4
  45. package/dist/media-center/media-center/discover/community-features-localization.d.ts +8 -0
  46. package/dist/media-center/media-center/discover/community-features-localization.js +31 -0
  47. package/dist/media-center/media-center/discover/community-features.svelte +171 -0
  48. package/dist/media-center/media-center/discover/community-features.svelte.d.ts +11 -0
  49. package/dist/media-center/media-center/discover/data-loading.d.ts +3 -3
  50. package/dist/media-center/media-center/discover/data-loading.js +5 -5
  51. package/dist/media-center/media-center/discover/discover-header.svelte +7 -56
  52. package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +3 -3
  53. package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +4 -4
  54. package/dist/media-center/media-center/feed/feed-handler.svelte.d.ts +5 -3
  55. package/dist/media-center/media-center/feed/feed-handler.svelte.js +18 -10
  56. package/dist/media-center/media-center/feed/feed-providers-generator.d.ts +11 -5
  57. package/dist/media-center/media-center/feed/feed-providers-generator.js +13 -9
  58. package/dist/media-center/media-center/footer/index.d.ts +1 -0
  59. package/dist/media-center/media-center/footer/index.js +1 -0
  60. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +3 -5
  61. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +16 -13
  62. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +18 -7
  63. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +18 -25
  64. package/dist/media-center/media-center/{header-footer → header}/index.d.ts +0 -1
  65. package/dist/media-center/media-center/{header-footer → header}/index.js +0 -1
  66. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte +133 -28
  67. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte.d.ts +2 -0
  68. package/dist/media-center/media-center/index.d.ts +1 -0
  69. package/dist/media-center/media-center/index.js +1 -0
  70. package/dist/media-center/media-center/media-center-context.svelte.d.ts +15 -9
  71. package/dist/media-center/media-center/media-center-context.svelte.js +57 -19
  72. package/dist/media-center/media-center/media-center-settings.svelte.d.ts +11 -0
  73. package/dist/media-center/media-center/media-center-settings.svelte.js +23 -0
  74. package/dist/media-center/media-center/media-center-view.svelte +11 -3
  75. package/dist/media-center/media-center/media-center-view.svelte.d.ts +2 -0
  76. package/dist/media-center/media-center/menu/category-following-wrapper.svelte.d.ts +1 -1
  77. package/dist/media-center/media-center/menu/menu.svelte +15 -14
  78. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +3 -3
  79. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +4 -4
  80. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +22 -9
  81. package/dist/media-center/media-center/moments/index.d.ts +1 -0
  82. package/dist/media-center/media-center/moments/index.js +1 -0
  83. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.d.ts +26 -0
  84. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.js +49 -0
  85. package/dist/media-center/media-center/moments/moments-state.svelte.d.ts +20 -0
  86. package/dist/media-center/media-center/moments/moments-state.svelte.js +82 -0
  87. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.d.ts +3 -3
  88. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.js +4 -4
  89. package/dist/media-center/media-center/types.d.ts +3 -3
  90. package/dist/media-center/membership/index.d.ts +1 -0
  91. package/dist/media-center/membership/index.js +1 -0
  92. package/dist/media-center/membership/mock-membership-handler.svelte.d.ts +10 -0
  93. package/dist/media-center/membership/mock-membership-handler.svelte.js +21 -0
  94. package/dist/media-center/membership/types.d.ts +10 -0
  95. package/dist/media-center/membership/types.js +1 -0
  96. package/dist/media-center/navigation/index.d.ts +2 -0
  97. package/dist/media-center/navigation/index.js +1 -0
  98. package/dist/media-center/navigation/media-center-state.d.ts +19 -0
  99. package/dist/media-center/navigation/media-center-state.js +1 -0
  100. package/dist/media-center/navigation/mock-navigation-handler.svelte.d.ts +6 -0
  101. package/dist/media-center/navigation/mock-navigation-handler.svelte.js +6 -0
  102. package/dist/media-center/navigation/types.d.ts +5 -0
  103. package/dist/media-center/navigation/types.js +1 -0
  104. package/dist/media-page/cmp.media-page.svelte +10 -4
  105. package/dist/media-page/cmp.media-page.svelte.d.ts +6 -5
  106. package/dist/media-page/index.d.ts +40 -58
  107. package/dist/media-page/index.js +129 -16
  108. package/dist/posts/posts-player/index.d.ts +31 -33
  109. package/dist/posts/posts-player/index.js +90 -35
  110. package/dist/posts/posts-player/posts-player-view.svelte +1 -1
  111. package/dist/posts/posts-player/types.d.ts +2 -1
  112. package/dist/streams/layout/styles-transformer.d.ts +1 -1
  113. package/dist/streams/streams-player/index.d.ts +17 -83
  114. package/dist/streams/streams-player/index.js +84 -64
  115. package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -1
  116. package/dist/streams/streams-player/streams-player-view.svelte +1 -1
  117. package/dist/streams/streams-player/types.d.ts +3 -1
  118. package/dist/ui/button/cmp.options-button.svelte +123 -0
  119. package/dist/ui/button/cmp.options-button.svelte.d.ts +20 -0
  120. package/dist/ui/button/index.d.ts +1 -0
  121. package/dist/ui/button/index.js +1 -0
  122. package/dist/ui/button/resources/button-theme.svelte +16 -2
  123. package/dist/ui/player/colors/index.d.ts +1 -1
  124. package/dist/ui/player/colors/index.js +1 -1
  125. package/dist/ui/player/colors/player-colors.d.ts +14 -1
  126. package/dist/ui/player/colors/player-colors.js +24 -1
  127. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +1 -0
  128. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +7 -1
  129. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +1 -0
  130. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +7 -1
  131. package/dist/ui/player/providers/types.d.ts +3 -1
  132. package/dist/ui/shadow-dom/cmp.shadow-root.svelte +6 -4
  133. package/dist/ui/shadow-dom/colors.scss +6 -4
  134. package/package.json +5 -1
  135. package/dist/content-player/content-player-settings.d.ts +0 -12
  136. package/dist/content-player/content-player-settings.js +0 -23
  137. package/dist/media-center/config/internal-media-center-config.d.ts +0 -14
  138. package/dist/media-center/media-center/discover/discover-header-localization.d.ts +0 -6
  139. package/dist/media-center/media-center/discover/discover-header-localization.js +0 -15
  140. package/dist/posts/handlers/index.d.ts +0 -1
  141. package/dist/posts/handlers/index.js +0 -1
  142. package/dist/short-videos/data-providers/index.d.ts +0 -1
  143. package/dist/short-videos/data-providers/index.js +0 -1
  144. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.d.ts +0 -0
  145. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.js +0 -0
  146. /package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.js +0 -0
  147. /package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.d.ts +0 -0
  148. /package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.js +0 -0
  149. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.d.ts +0 -0
  150. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.js +0 -0
  151. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.js +0 -0
  152. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.graphql +0 -0
  153. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.d.ts +0 -0
  154. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.js +0 -0
  155. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.js +0 -0
  156. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.graphql +0 -0
  157. /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte +0 -0
  158. /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte.d.ts +0 -0
  159. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.d.ts +0 -0
  160. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.js +0 -0
  161. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte +0 -0
  162. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte.d.ts +0 -0
@@ -3,7 +3,7 @@ import type { IPostSocialInteractionsHandler } from '../posts/social-interaction
3
3
  import type { ICloseOrchestrator } from '../ui/player/close-orchestrator';
4
4
  import type { IPlayerBuffer } from '../ui/player/providers';
5
5
  import type { PlayerSliderCallbacks } from '../ui/player/slider/types';
6
- import { ContentPlayerSettings } from './content-player-settings';
6
+ import { ContentPlayerSettings } from './content-player-settings.svelte';
7
7
  import { ContentPlayerUIManager } from './ui-manager.svelte';
8
8
  export declare class ContentPlayerConfig<T extends {
9
9
  id: string;
@@ -28,18 +28,7 @@ export declare class ContentPlayerConfig<T extends {
28
28
  trackingParams?: ContentPlayerTrackingParams | null;
29
29
  closeOrchestrator: ICloseOrchestrator;
30
30
  });
31
- get playerColors(): {
32
- brand: string | null;
33
- button: string | null;
34
- buttonInactive: string | null;
35
- cardButton: string | null;
36
- cardBackground: string | null;
37
- menuBackground: string | null;
38
- playerBackground: string | null;
39
- price: string | null;
40
- salePrice: string | null;
41
- sidebarBackground: string | null;
42
- };
31
+ get playerColors(): import("../ui/player/colors").PlayerColors;
43
32
  get trackingParams(): ContentPlayerConfig<T>['_trackingParams'];
44
33
  itemAsPostViewerModel: (item: T & {
45
34
  mediaIndex?: number;
@@ -1,5 +1,5 @@
1
1
  import { PostModel } from '../posts/model';
2
- import { ContentPlayerSettings } from './content-player-settings';
2
+ import { ContentPlayerSettings } from './content-player-settings.svelte';
3
3
  import { ContentPlayerUIManager } from './ui-manager.svelte';
4
4
  export class ContentPlayerConfig {
5
5
  playerBuffer = $state.raw(null);
@@ -0,0 +1,16 @@
1
+ import type { Locale } from '../core/locale';
2
+ import { type ThemeValue } from '../core/theme';
3
+ import { PlayerColors } from '../ui/player/colors';
4
+ export declare class ContentPlayerSettings {
5
+ locale: Locale;
6
+ showStreamsCloudWatermark: boolean;
7
+ allPlayerColors: Record<ThemeValue, PlayerColors>;
8
+ constructor(init?: IContentPlayerSettings);
9
+ get playerColors(): PlayerColors;
10
+ patch: (settings?: IContentPlayerSettings) => void;
11
+ }
12
+ export type IContentPlayerSettings = {
13
+ locale?: Locale;
14
+ showStreamsCloudWatermark?: boolean;
15
+ playerColors?: Record<ThemeValue, PlayerColors>;
16
+ };
@@ -0,0 +1,27 @@
1
+ import { Theme } from '../core/theme';
2
+ import { PlayerColors } from '../ui/player/colors';
3
+ export class ContentPlayerSettings {
4
+ locale = $state('en');
5
+ showStreamsCloudWatermark = $state(false);
6
+ allPlayerColors = $state.raw({
7
+ light: new PlayerColors(null),
8
+ dark: new PlayerColors(null)
9
+ });
10
+ constructor(init) {
11
+ this.patch(init);
12
+ }
13
+ get playerColors() {
14
+ return this.allPlayerColors[Theme.get()];
15
+ }
16
+ patch = (settings) => {
17
+ if (settings?.locale !== undefined) {
18
+ this.locale = settings.locale;
19
+ }
20
+ if (settings?.showStreamsCloudWatermark !== undefined) {
21
+ this.showStreamsCloudWatermark = settings.showStreamsCloudWatermark;
22
+ }
23
+ if (settings?.playerColors !== undefined) {
24
+ this.allPlayerColors = settings.playerColors;
25
+ }
26
+ };
27
+ }
@@ -1,2 +1,3 @@
1
1
  export { default as ContentPlayer } from './cmp.content-player.svelte';
2
2
  export { ContentPlayerConfig } from './content-player-config.svelte';
3
+ export { ContentPlayerSettings } from './content-player-settings.svelte';
@@ -1,2 +1,3 @@
1
1
  export { default as ContentPlayer } from './cmp.content-player.svelte';
2
2
  export { ContentPlayerConfig } from './content-player-config.svelte';
3
+ export { ContentPlayerSettings } from './content-player-settings.svelte';
@@ -1 +1,2 @@
1
1
  export { Theme } from './theme-store.svelte';
2
+ export type { ThemeValue } from './theme-store.svelte';
@@ -1,5 +1,6 @@
1
1
  export declare const Theme: {
2
- get: () => "dark" | "light";
3
- set: (theme: "dark" | "light") => void;
2
+ get: () => ThemeValue;
3
+ set: (theme: ThemeValue) => void;
4
4
  toggle: () => void;
5
5
  };
6
+ export type ThemeValue = 'dark' | 'light';
@@ -0,0 +1,6 @@
1
+ export { InternalMediaCenterDataProvider } from './internal-media-center-data-provider.svelte.js';
2
+ export { InternalMediaCenterAnalyticsHandler } from './internal-media-center-analytics-handler';
3
+ export { InternalPostAnalyticsHandler } from './internal-post-analytics-handler';
4
+ export { InternalShortVideoPlayerItemsProvider } from './internal-short-video-player-items-provider';
5
+ export { InternalStreamsPlayerDataProvider } from './internal-streams-player-data-provider';
6
+ export { InternalStreamAnalyticsHandler } from './internal-stream-analytics-handler';
@@ -0,0 +1,6 @@
1
+ export { InternalMediaCenterDataProvider } from './internal-media-center-data-provider.svelte.js';
2
+ export { InternalMediaCenterAnalyticsHandler } from './internal-media-center-analytics-handler';
3
+ export { InternalPostAnalyticsHandler } from './internal-post-analytics-handler';
4
+ export { InternalShortVideoPlayerItemsProvider } from './internal-short-video-player-items-provider';
5
+ export { InternalStreamsPlayerDataProvider } from './internal-streams-player-data-provider';
6
+ export { InternalStreamAnalyticsHandler } from './internal-stream-analytics-handler';
@@ -0,0 +1,15 @@
1
+ import type { IMediaCenterDataProvider } from '../../media-center/config/types';
2
+ export declare class InternalMediaCenterDataProvider implements IMediaCenterDataProvider {
3
+ model: IMediaCenterDataProvider['model'];
4
+ postsPlayer: IMediaCenterDataProvider['postsPlayer'];
5
+ streamPlayer: IMediaCenterDataProvider['streamPlayer'];
6
+ handlers: IMediaCenterDataProvider['handlers'];
7
+ fetchModel: IMediaCenterDataProvider['fetchModel'];
8
+ private graphql;
9
+ constructor(input: {
10
+ mediaPageId: string;
11
+ initiator?: string;
12
+ graphqlOrigin?: string;
13
+ testingStuff?: boolean;
14
+ });
15
+ }
@@ -1,28 +1,32 @@
1
1
  import { Status, StreamStatus } from '../../core/enums';
2
2
  import { createLocalGQLClient } from '../../core/graphql';
3
- import { MockCategoryFollowingProvider } from '../categories-following/mock-categories-following-handler.svelte';
4
- import { getPostsCursor } from '../../posts/data-loaders';
3
+ import { MockCategoryFollowingProvider } from '../../media-center/categories-following/mock-categories-following-handler.svelte';
4
+ import { MockMembershipHandler } from '../../media-center/membership/mock-membership-handler.svelte';
5
+ import { MockNavigationHandler } from '../../media-center/navigation/mock-navigation-handler.svelte';
5
6
  import { MockPostSocialInteractionsHandler } from '../../posts/social-interactions/mock-post-social-interactions-handler.svelte';
6
- import { getStreamPagesCursor, getStreamsCursor } from '../../streams/data-loaders';
7
+ import { PlayerColors } from '../../ui/player/colors';
7
8
  import { InternalMediaCenterAnalyticsHandler } from './internal-media-center-analytics-handler';
8
9
  import { GetMediaPageConfigDocument } from './operations.generated';
9
- export class InternalMediaCenterConfig {
10
+ import { getPostsCursor } from './post-data-loaders';
11
+ import { getStreamPagesCursor, getStreamsCursor } from './stream-data-loaders';
12
+ export class InternalMediaCenterDataProvider {
13
+ model = $state.raw(null);
10
14
  postsPlayer;
11
15
  streamPlayer;
12
16
  handlers;
13
- getConfig;
17
+ fetchModel;
14
18
  graphql;
15
19
  constructor(input) {
16
20
  const { mediaPageId, graphqlOrigin, initiator, testingStuff } = input;
17
21
  this.graphql = createLocalGQLClient(graphqlOrigin, initiator ? { 'x-initiator': initiator } : undefined);
18
- this.getConfig = async () => {
22
+ this.fetchModel = async () => {
19
23
  const payload = await this.graphql.query(GetMediaPageConfigDocument, { mediaPageId }).toPromise();
20
24
  if (!payload.data?.embedMediaPage) {
21
- return null;
25
+ this.model = null;
22
26
  }
23
- const config = payload.data.embedMediaPage;
24
- return {
25
- targetData: {
27
+ else {
28
+ const config = payload.data.embedMediaPage;
29
+ this.model = {
26
30
  id: config.id,
27
31
  handle: config.handle,
28
32
  name: config.name,
@@ -30,12 +34,21 @@ export class InternalMediaCenterConfig {
30
34
  image: config.image?.url || null,
31
35
  logo: config.logo?.url || null,
32
36
  banner: config.banner?.url || null,
33
- membersCount: config.membersCount
34
- },
35
- contentCategories: config.menuSettings?.contentCategories || [],
36
- categoryTagAssociations: config.menuSettings?.contentCategoryMenuItems || [],
37
- playerColors: config.playerColors || null
38
- };
37
+ communityFeatures: config.enableCommunityFeatures
38
+ ? {
39
+ membersCount: config.membersCount
40
+ }
41
+ : null,
42
+ contentCategories: config.menuSettings?.contentCategories || [],
43
+ categoryTagAssociations: config.menuSettings?.contentCategoryMenuItems || [],
44
+ playerColors: {
45
+ light: new PlayerColors(null),
46
+ dark: new PlayerColors(config.playerColors)
47
+ },
48
+ moments: config.moments
49
+ };
50
+ }
51
+ return this.model;
39
52
  };
40
53
  this.postsPlayer = {
41
54
  getPostsCursor: async ({ filter, limit, continuationToken }) => {
@@ -45,6 +58,7 @@ export class InternalMediaCenterConfig {
45
58
  types: filter.types,
46
59
  statuses: [Status.Published],
47
60
  categoryId: filter.categoryId,
61
+ ids: filter.includeIds,
48
62
  excludeIds: filter.excludeIds
49
63
  },
50
64
  continuationToken,
@@ -79,7 +93,9 @@ export class InternalMediaCenterConfig {
79
93
  this.handlers = {
80
94
  analyticsHandler: new InternalMediaCenterAnalyticsHandler(graphqlOrigin),
81
95
  categoriesFollowingHandler: testingStuff ? new MockCategoryFollowingProvider() : undefined,
82
- socialInteractionsHandler: testingStuff ? new MockPostSocialInteractionsHandler() : undefined
96
+ socialInteractionsHandler: testingStuff ? new MockPostSocialInteractionsHandler() : undefined,
97
+ membershipHandler: testingStuff ? new MockMembershipHandler() : undefined,
98
+ navigationHandler: testingStuff ? new MockNavigationHandler() : undefined
83
99
  };
84
100
  }
85
101
  }
@@ -1,4 +1,4 @@
1
- import type { IPostAnalyticsHandler } from '../posts-player';
1
+ import type { IPostAnalyticsHandler } from '../../posts/posts-player';
2
2
  export declare class InternalPostAnalyticsHandler implements IPostAnalyticsHandler {
3
3
  constructor(graphqlOrigin: string | undefined);
4
4
  setOrganizationId: (organizationId: string) => void;
@@ -2,8 +2,8 @@ import { PostType } from '../..';
2
2
  import { ContinuationToken } from '../../core/continuation-token';
3
3
  import { CursorDataLoader } from '../../core/data-loaders';
4
4
  import { createLocalGQLClient } from '../../core/graphql';
5
- import { getPostsCursor } from '../../posts/data-loaders';
6
5
  import {} from '../../posts/posts-player';
6
+ import { getPostsCursor } from './post-data-loaders';
7
7
  const CHUNK_SIZE = 20;
8
8
  export class InternalShortVideoPlayerItemsProvider {
9
9
  kind = 'feed';
@@ -1,4 +1,4 @@
1
- import type { IStreamAnalyticsHandler } from './types';
1
+ import type { IStreamAnalyticsHandler } from '../../streams/streams-player/types';
2
2
  export declare class InternalStreamAnalyticsHandler implements IStreamAnalyticsHandler {
3
3
  constructor(graphqlOrigin: string | undefined);
4
4
  setOrganizationId: (organizationId: string) => void;
@@ -1,4 +1,4 @@
1
- import type { IStreamsPlayerDataProvider } from './types';
1
+ import type { IStreamsPlayerDataProvider } from '../../streams/streams-player';
2
2
  export declare class InternalStreamsPlayerDataProvider implements IStreamsPlayerDataProvider {
3
3
  initialData: IStreamsPlayerDataProvider['initialData'];
4
4
  private ids;
@@ -1,7 +1,7 @@
1
1
  import { ContinuationToken } from '../../core/continuation-token';
2
2
  import { CursorDataLoader } from '../../core/data-loaders';
3
3
  import { createLocalGQLClient } from '../../core/graphql';
4
- import { getStreamPagesCursor, getStreamsCursor } from '../data-loaders';
4
+ import { getStreamPagesCursor, getStreamsCursor } from './stream-data-loaders';
5
5
  const CHUNK_SIZE = 5;
6
6
  export class InternalStreamsPlayerDataProvider {
7
7
  initialData;
@@ -9,6 +9,7 @@ export type GetMediaPageConfigQuery = {
9
9
  handle: string;
10
10
  name: string;
11
11
  description: string;
12
+ enableCommunityFeatures: boolean;
12
13
  membersCount: number;
13
14
  image: {
14
15
  url: string;
@@ -47,6 +48,11 @@ export type GetMediaPageConfigQuery = {
47
48
  salePrice: string | null;
48
49
  sidebarBackground: string | null;
49
50
  } | null;
51
+ moments: Array<{
52
+ id: string;
53
+ cover: string;
54
+ isSeen: boolean;
55
+ }>;
50
56
  } | null;
51
57
  };
52
58
  export declare const GetMediaPageConfigDocument: DocumentNode<GetMediaPageConfigQuery, GetMediaPageConfigQueryVariables>;
@@ -52,6 +52,7 @@ export const GetMediaPageConfigDocument = {
52
52
  name: { kind: 'Name', value: 'banner' },
53
53
  selectionSet: { kind: 'SelectionSet', selections: [{ kind: 'Field', name: { kind: 'Name', value: 'url' } }] }
54
54
  },
55
+ { kind: 'Field', name: { kind: 'Name', value: 'enableCommunityFeatures' } },
55
56
  { kind: 'Field', name: { kind: 'Name', value: 'membersCount' } },
56
57
  {
57
58
  kind: 'Field',
@@ -115,6 +116,18 @@ export const GetMediaPageConfigDocument = {
115
116
  { kind: 'Field', name: { kind: 'Name', value: 'sidebarBackground' } }
116
117
  ]
117
118
  }
119
+ },
120
+ {
121
+ kind: 'Field',
122
+ name: { kind: 'Name', value: 'moments' },
123
+ selectionSet: {
124
+ kind: 'SelectionSet',
125
+ selections: [
126
+ { kind: 'Field', name: { kind: 'Name', value: 'id' } },
127
+ { kind: 'Field', name: { kind: 'Name', value: 'cover' } },
128
+ { kind: 'Field', name: { kind: 'Name', value: 'isSeen' } }
129
+ ]
130
+ }
118
131
  }
119
132
  ]
120
133
  }
@@ -13,6 +13,7 @@ query GetMediaPageConfig($mediaPageId: String!) {
13
13
  banner {
14
14
  url
15
15
  }
16
+ enableCommunityFeatures
16
17
  membersCount
17
18
  menuSettings {
18
19
  contentCategories {
@@ -42,5 +43,10 @@ query GetMediaPageConfig($mediaPageId: String!) {
42
43
  salePrice
43
44
  sidebarBackground
44
45
  }
46
+ moments {
47
+ id
48
+ cover
49
+ isSeen
50
+ }
45
51
  }
46
52
  }
@@ -1,3 +1,3 @@
1
- import type { PostPlayerModel } from '../posts-player/types';
1
+ import type { PostPlayerModel } from '../../../posts/posts-player/types';
2
2
  import type { PostsPlayerPayloadFragment } from './operations.generated';
3
3
  export declare const mapToPostPlayerModel: (payload: PostsPlayerPayloadFragment) => PostPlayerModel;
@@ -1,5 +1,5 @@
1
- import { ProfileType } from '../../core/enums';
2
- import { mapToPostModel } from '../post-viewer';
1
+ import { ProfileType } from '../../../core/enums';
2
+ import { mapToPostModel } from '../../../posts/post-viewer';
3
3
  export const mapToPostPlayerModel = (payload) => {
4
4
  const viewerModel = mapToPostModel(payload);
5
5
  return {
@@ -1,4 +1,4 @@
1
- import type * as SchemaTypes from '../../../gql/types';
1
+ import type * as SchemaTypes from '../../../../gql/types';
2
2
  import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
3
3
  export type GetPostsQueryVariables = SchemaTypes.Exact<{
4
4
  input: SchemaTypes.EmbedPostsInput;
@@ -1,5 +1,5 @@
1
- import { PostType, Status } from '../../core/enums';
2
- import type { PostPlayerModel } from '../posts-player/types';
1
+ import { PostType, Status } from '../../../core/enums';
2
+ import type { PostPlayerModel } from '../../../posts/posts-player/types';
3
3
  import type { Client } from '@urql/core';
4
4
  export declare const getPostsCursor: (input: {
5
5
  filter: {
@@ -1,4 +1,4 @@
1
- import { PostType, Status } from '../../core/enums';
1
+ import { PostType, Status } from '../../../core/enums';
2
2
  import { mapToPostPlayerModel } from './mapper';
3
3
  import { GetPostsDocument } from './operations.generated';
4
4
  export const getPostsCursor = async (input) => {
@@ -1,3 +1,3 @@
1
- import type { StreamPlayerModel } from '../streams-player/types';
1
+ import type { StreamPlayerModel } from '../../../streams/streams-player/types';
2
2
  import type { StreamPlayerPayloadFragment } from './operations.generated';
3
3
  export declare const mapToStreamPlayerModel: (payload: StreamPlayerPayloadFragment) => StreamPlayerModel;
@@ -1,4 +1,4 @@
1
- import { ProfileType } from '../../core/enums';
1
+ import { ProfileType } from '../../../core/enums';
2
2
  export const mapToStreamPlayerModel = (payload) => {
3
3
  return {
4
4
  id: payload.id,
@@ -1,4 +1,4 @@
1
- import type * as SchemaTypes from '../../../gql/types';
1
+ import type * as SchemaTypes from '../../../../gql/types';
2
2
  import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
3
3
  export type GetStreamsQueryVariables = SchemaTypes.Exact<{
4
4
  input: SchemaTypes.EmbedStreamsInput;
@@ -1,4 +1,4 @@
1
- import { type StreamPageViewerModel } from '../stream-page-viewer';
1
+ import { type StreamPageViewerModel } from '../../../streams/stream-page-viewer';
2
2
  import type { Client } from '@urql/core';
3
3
  export declare const getStreamPagesCursor: (input: {
4
4
  streamId: string;
@@ -1,5 +1,5 @@
1
- import { ImageScale } from '../..';
2
- import { mapToStreamPageViewerModel } from '../stream-page-viewer';
1
+ import { ImageScale } from '../../..';
2
+ import { mapToStreamPageViewerModel } from '../../../streams/stream-page-viewer';
3
3
  import { GetStreamPagesDocument } from './operations.generated';
4
4
  export const getStreamPagesCursor = async (input) => {
5
5
  const { streamId, continuationToken, graphql } = input;
@@ -1,5 +1,5 @@
1
- import { StreamStatus } from '../../core/enums';
2
- import type { StreamPlayerModel } from '../streams-player/types';
1
+ import { StreamStatus } from '../../../core/enums';
2
+ import type { StreamPlayerModel } from '../../../streams/streams-player/types';
3
3
  import type { Client } from '@urql/core';
4
4
  export declare const getStreamsCursor: (input: {
5
5
  filter: {
@@ -1,4 +1,4 @@
1
- import { EmbedStreamsOrderBy, StreamStatus } from '../../core/enums';
1
+ import { EmbedStreamsOrderBy, StreamStatus } from '../../../core/enums';
2
2
  import { mapToStreamPlayerModel } from './mapper';
3
3
  import { GetStreamsDocument } from './operations.generated';
4
4
  export const getStreamsCursor = async (input) => {
@@ -0,0 +1,3 @@
1
+ export { openMediaPageModal } from './media-page';
2
+ export { openStreamsPlayer } from './streams-player';
3
+ export { openShortVideosPlayer } from './short-videos-player';
@@ -0,0 +1,3 @@
1
+ export { openMediaPageModal } from './media-page';
2
+ export { openStreamsPlayer } from './streams-player';
3
+ export { openShortVideosPlayer } from './short-videos-player';
@@ -0,0 +1,83 @@
1
+ import type { Locale } from '../../core/locale';
2
+ import { type IMediaCenterDataProvider } from '../../media-center/config/types';
3
+ export type { IMediaCenterDataProvider };
4
+ /**
5
+ * Opens the media page modal using an internal media-center configuration.
6
+ *
7
+ * This function is a thin wrapper around the internal `openMediaPageModal`
8
+ * from `$lib/media-page`. It constructs an `InternalMediaCenterDataProvider`
9
+ * from the provided media page ID and GraphQL parameters, then opens
10
+ * the modal with that configuration.
11
+ *
12
+ * @param init Configuration options.
13
+ *
14
+ * @param {string} init.id
15
+ * Media page ID, used to construct an internal media-center config.
16
+ *
17
+ * @param {string} init.initiator
18
+ * Initiator identifier (used for tracking/analytics and GraphQL).
19
+ *
20
+ * @param {string} [init.graphqlOrigin]
21
+ * Optional GraphQL origin (base URL). If omitted, the default origin is
22
+ * determined internally.
23
+ *
24
+ * @param {Object} [init.viewerSettings]
25
+ * Viewer UI and behavior settings passed through to the internal
26
+ * `openMediaPageModal`.
27
+ *
28
+ * Fields of `viewerSettings`:
29
+ * - {boolean} [disableBackground]
30
+ * If true, hides the player's background image.
31
+ * - {boolean} [hideCloseButton]
32
+ * If true, hides the close button.
33
+ * - {Locale} [locale='en']
34
+ * Localization for the player UI. Supported values: 'en' | 'no'.
35
+ * If omitted, the default locale 'en' is used.
36
+ * - {boolean} [showStreamsCloudWatermark]
37
+ * If true, shows the StreamsCloud watermark.
38
+ * - {'light' | 'dark'} [theme]
39
+ * Optional theme for the player UI.
40
+ *
41
+ * @param {{ closed?: () => void }} [init.on]
42
+ * Optional event handlers.
43
+ *
44
+ * @param {() => void} [init.on.closed]
45
+ * Called after the modal is fully closed (after unmount and removal
46
+ * from the DOM).
47
+ *
48
+ * @returns {void}
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { openMediaPageModal } from '@streamscloud/embeddable/media-page';
53
+ *
54
+ * openMediaPageModal({
55
+ * id: 'media-page-123',
56
+ * initiator: 'marketing-campaign',
57
+ * graphqlOrigin: 'https://api.example.com',
58
+ * viewerSettings: {
59
+ * locale: 'en',
60
+ * hideCloseButton: false,
61
+ * theme: 'dark',
62
+ * },
63
+ * on: {
64
+ * closed: () => console.log('Media page modal closed'),
65
+ * },
66
+ * });
67
+ * ```
68
+ */
69
+ export declare function openMediaPageModal(init: {
70
+ id: string;
71
+ initiator: string;
72
+ graphqlOrigin?: string;
73
+ viewerSettings?: {
74
+ disableBackground?: boolean;
75
+ locale?: Locale;
76
+ showStreamsCloudWatermark?: boolean;
77
+ hideCloseButton?: boolean;
78
+ theme?: 'light' | 'dark';
79
+ };
80
+ on?: {
81
+ closed?: () => void;
82
+ };
83
+ }): void;
@@ -0,0 +1,82 @@
1
+ import { InternalMediaCenterDataProvider } from '../data-providers';
2
+ import {} from '../../media-center/config/types';
3
+ import { openMediaPageModal as openMediaPageModalInternal } from '../../media-page';
4
+ /**
5
+ * Opens the media page modal using an internal media-center configuration.
6
+ *
7
+ * This function is a thin wrapper around the internal `openMediaPageModal`
8
+ * from `$lib/media-page`. It constructs an `InternalMediaCenterDataProvider`
9
+ * from the provided media page ID and GraphQL parameters, then opens
10
+ * the modal with that configuration.
11
+ *
12
+ * @param init Configuration options.
13
+ *
14
+ * @param {string} init.id
15
+ * Media page ID, used to construct an internal media-center config.
16
+ *
17
+ * @param {string} init.initiator
18
+ * Initiator identifier (used for tracking/analytics and GraphQL).
19
+ *
20
+ * @param {string} [init.graphqlOrigin]
21
+ * Optional GraphQL origin (base URL). If omitted, the default origin is
22
+ * determined internally.
23
+ *
24
+ * @param {Object} [init.viewerSettings]
25
+ * Viewer UI and behavior settings passed through to the internal
26
+ * `openMediaPageModal`.
27
+ *
28
+ * Fields of `viewerSettings`:
29
+ * - {boolean} [disableBackground]
30
+ * If true, hides the player's background image.
31
+ * - {boolean} [hideCloseButton]
32
+ * If true, hides the close button.
33
+ * - {Locale} [locale='en']
34
+ * Localization for the player UI. Supported values: 'en' | 'no'.
35
+ * If omitted, the default locale 'en' is used.
36
+ * - {boolean} [showStreamsCloudWatermark]
37
+ * If true, shows the StreamsCloud watermark.
38
+ * - {'light' | 'dark'} [theme]
39
+ * Optional theme for the player UI.
40
+ *
41
+ * @param {{ closed?: () => void }} [init.on]
42
+ * Optional event handlers.
43
+ *
44
+ * @param {() => void} [init.on.closed]
45
+ * Called after the modal is fully closed (after unmount and removal
46
+ * from the DOM).
47
+ *
48
+ * @returns {void}
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { openMediaPageModal } from '@streamscloud/embeddable/media-page';
53
+ *
54
+ * openMediaPageModal({
55
+ * id: 'media-page-123',
56
+ * initiator: 'marketing-campaign',
57
+ * graphqlOrigin: 'https://api.example.com',
58
+ * viewerSettings: {
59
+ * locale: 'en',
60
+ * hideCloseButton: false,
61
+ * theme: 'dark',
62
+ * },
63
+ * on: {
64
+ * closed: () => console.log('Media page modal closed'),
65
+ * },
66
+ * });
67
+ * ```
68
+ */
69
+ export function openMediaPageModal(init) {
70
+ const { id, graphqlOrigin, initiator, viewerSettings, on } = init;
71
+ const dataProvider = new InternalMediaCenterDataProvider({ mediaPageId: id, graphqlOrigin, initiator });
72
+ openMediaPageModalInternal({
73
+ dataProvider,
74
+ viewerSettings: {
75
+ hideCloseButton: viewerSettings?.hideCloseButton,
76
+ locale: viewerSettings?.locale,
77
+ showStreamsCloudWatermark: true,
78
+ theme: viewerSettings?.theme
79
+ },
80
+ on
81
+ });
82
+ }