@streamscloud/embeddable 12.1.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 (219) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +4 -16
  2. package/dist/content-player/cmp.content-player.svelte +1 -1
  3. package/dist/content-player/content-player-config.svelte.d.ts +2 -12
  4. package/dist/content-player/content-player-config.svelte.js +1 -1
  5. package/dist/content-player/content-player-settings.svelte.d.ts +16 -0
  6. package/dist/content-player/content-player-settings.svelte.js +27 -0
  7. package/dist/content-player/controls-and-attachments.svelte +32 -2
  8. package/dist/content-player/controls-and-attachments.svelte.d.ts +1 -0
  9. package/dist/content-player/index.d.ts +1 -0
  10. package/dist/content-player/index.js +1 -0
  11. package/dist/content-player/overview-panel.svelte +2 -2
  12. package/dist/content-player/ui-manager.svelte.d.ts +2 -1
  13. package/dist/content-player/ui-manager.svelte.js +2 -1
  14. package/dist/core/enums.d.ts +3 -0
  15. package/dist/core/enums.js +4 -0
  16. package/dist/core/theme/index.d.ts +2 -0
  17. package/dist/core/theme/index.js +1 -0
  18. package/dist/core/theme/theme-store.svelte.d.ts +6 -0
  19. package/dist/core/theme/theme-store.svelte.js +10 -0
  20. package/dist/external-api/data-providers/index.d.ts +6 -0
  21. package/dist/external-api/data-providers/index.js +6 -0
  22. package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.d.ts +15 -0
  23. package/dist/{media-center/config/internal-media-center-config.js → external-api/data-providers/internal-media-center-data-provider.svelte.js} +33 -17
  24. package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.d.ts +1 -1
  25. package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.js +1 -1
  26. package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.d.ts +1 -1
  27. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.d.ts +1 -1
  28. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.js +1 -1
  29. package/dist/{media-center/config → external-api/data-providers}/operations.generated.d.ts +6 -0
  30. package/dist/{media-center/config → external-api/data-providers}/operations.generated.js +13 -0
  31. package/dist/{media-center/config → external-api/data-providers}/operations.graphql +6 -0
  32. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.d.ts +1 -1
  33. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.js +2 -2
  34. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.d.ts +1 -1
  35. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.d.ts +2 -2
  36. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.js +1 -1
  37. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.d.ts +1 -1
  38. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.js +1 -1
  39. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.d.ts +1 -1
  40. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.d.ts +1 -1
  41. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.js +2 -2
  42. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.d.ts +2 -2
  43. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.js +6 -2
  44. package/dist/external-api/index.d.ts +3 -0
  45. package/dist/external-api/index.js +3 -0
  46. package/dist/external-api/media-page/index.d.ts +83 -0
  47. package/dist/external-api/media-page/index.js +82 -0
  48. package/dist/{short-videos → external-api}/short-videos-player/index.d.ts +27 -12
  49. package/dist/{short-videos → external-api}/short-videos-player/index.js +35 -28
  50. package/dist/external-api/streams-player/index.d.ts +105 -0
  51. package/dist/external-api/streams-player/index.js +110 -0
  52. package/dist/media-center/config/types.d.ts +28 -27
  53. package/dist/media-center/index.d.ts +3 -1
  54. package/dist/media-center/media-center/cmp.media-center-proxy.svelte +59 -0
  55. package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +15 -0
  56. package/dist/media-center/media-center/discover/community-features-localization.d.ts +8 -0
  57. package/dist/media-center/media-center/discover/community-features-localization.js +31 -0
  58. package/dist/media-center/media-center/discover/community-features.svelte +171 -0
  59. package/dist/media-center/media-center/discover/community-features.svelte.d.ts +11 -0
  60. package/dist/media-center/media-center/discover/data-loading.d.ts +3 -3
  61. package/dist/media-center/media-center/discover/data-loading.js +5 -5
  62. package/dist/media-center/media-center/discover/discover-header.svelte +13 -65
  63. package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +0 -2
  64. package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +3 -3
  65. package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +4 -4
  66. package/dist/media-center/media-center/discover/discover-view.svelte +6 -6
  67. package/dist/media-center/media-center/discover/discover-view.svelte.d.ts +0 -2
  68. package/dist/media-center/media-center/feed/feed-handler.svelte.d.ts +5 -3
  69. package/dist/media-center/media-center/feed/feed-handler.svelte.js +18 -10
  70. package/dist/media-center/media-center/feed/feed-providers-generator.d.ts +11 -5
  71. package/dist/media-center/media-center/feed/feed-providers-generator.js +13 -9
  72. package/dist/media-center/media-center/footer/index.d.ts +1 -0
  73. package/dist/media-center/media-center/footer/index.js +1 -0
  74. package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte +5 -5
  75. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +3 -5
  76. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +16 -13
  77. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +18 -5
  78. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +21 -9
  79. package/dist/media-center/media-center/{header-footer → header}/index.d.ts +0 -1
  80. package/dist/media-center/media-center/{header-footer → header}/index.js +0 -1
  81. package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte +5 -4
  82. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte +138 -35
  83. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte.d.ts +2 -2
  84. package/dist/media-center/media-center/index.d.ts +2 -1
  85. package/dist/media-center/media-center/index.js +2 -1
  86. package/dist/media-center/media-center/media-center-context.svelte.d.ts +16 -20
  87. package/dist/media-center/media-center/media-center-context.svelte.js +61 -19
  88. package/dist/media-center/media-center/media-center-settings.svelte.d.ts +11 -0
  89. package/dist/media-center/media-center/media-center-settings.svelte.js +23 -0
  90. package/dist/media-center/media-center/{cmp.media-center.svelte → media-center-view.svelte} +65 -108
  91. package/dist/media-center/media-center/media-center-view.svelte.d.ts +9 -0
  92. package/dist/media-center/media-center/menu/category-following-wrapper.svelte.d.ts +1 -1
  93. package/dist/media-center/media-center/menu/menu.svelte +40 -35
  94. package/dist/media-center/media-center/menu/menu.svelte.d.ts +0 -2
  95. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +3 -3
  96. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +4 -4
  97. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +24 -7
  98. package/dist/media-center/media-center/moments/index.d.ts +1 -0
  99. package/dist/media-center/media-center/moments/index.js +1 -0
  100. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.d.ts +26 -0
  101. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.js +49 -0
  102. package/dist/media-center/media-center/moments/moments-state.svelte.d.ts +20 -0
  103. package/dist/media-center/media-center/moments/moments-state.svelte.js +82 -0
  104. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.d.ts +3 -3
  105. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.js +4 -4
  106. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel.svelte +2 -3
  107. package/dist/media-center/media-center/types.d.ts +4 -11
  108. package/dist/media-center/membership/index.d.ts +1 -0
  109. package/dist/media-center/membership/index.js +1 -0
  110. package/dist/media-center/membership/mock-membership-handler.svelte.d.ts +10 -0
  111. package/dist/media-center/membership/mock-membership-handler.svelte.js +21 -0
  112. package/dist/media-center/membership/types.d.ts +10 -0
  113. package/dist/media-center/membership/types.js +1 -0
  114. package/dist/media-center/navigation/index.d.ts +2 -0
  115. package/dist/media-center/navigation/index.js +1 -0
  116. package/dist/media-center/navigation/media-center-state.d.ts +19 -0
  117. package/dist/media-center/navigation/media-center-state.js +1 -0
  118. package/dist/media-center/navigation/mock-navigation-handler.svelte.d.ts +6 -0
  119. package/dist/media-center/navigation/mock-navigation-handler.svelte.js +6 -0
  120. package/dist/media-center/navigation/types.d.ts +5 -0
  121. package/dist/media-center/navigation/types.js +1 -0
  122. package/dist/media-page/cmp.media-page.svelte +45 -0
  123. package/dist/media-page/cmp.media-page.svelte.d.ts +11 -0
  124. package/dist/media-page/index.d.ts +42 -58
  125. package/dist/media-page/index.js +131 -17
  126. package/dist/posts/attachments/cmp.attachments.svelte +1 -1
  127. package/dist/posts/controls/cmp.controls.svelte +4 -1
  128. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  129. package/dist/posts/post-viewer/attachments-horizontal.svelte +4 -12
  130. package/dist/posts/post-viewer/heading.svelte +4 -4
  131. package/dist/posts/post-viewer/media/post-media.svelte +1 -1
  132. package/dist/posts/post-viewer/post-texts.svelte +2 -2
  133. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +1 -0
  134. package/dist/posts/posts-player/index.d.ts +31 -32
  135. package/dist/posts/posts-player/index.js +90 -35
  136. package/dist/posts/posts-player/posts-player-proxy.svelte +13 -4
  137. package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +1 -0
  138. package/dist/posts/posts-player/posts-player-view.svelte +1 -1
  139. package/dist/posts/posts-player/types.d.ts +2 -1
  140. package/dist/products/product-card/cmp.product-card.svelte +4 -16
  141. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +6 -6
  142. package/dist/streams/layout/styles-transformer.d.ts +1 -1
  143. package/dist/streams/stream-card/cmp.stream-card.svelte +1 -1
  144. package/dist/streams/streams-player/cmp.streams-player.svelte +42 -0
  145. package/dist/streams/streams-player/cmp.streams-player.svelte.d.ts +24 -0
  146. package/dist/streams/streams-player/index.d.ts +18 -83
  147. package/dist/streams/streams-player/index.js +85 -65
  148. package/dist/streams/streams-player/stream-overview.svelte +1 -1
  149. package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -1
  150. package/dist/streams/streams-player/streams-player-proxy.svelte +32 -0
  151. package/dist/streams/streams-player/streams-player-proxy.svelte.d.ts +26 -0
  152. package/dist/streams/streams-player/streams-player-view.svelte +1 -1
  153. package/dist/streams/streams-player/types.d.ts +3 -1
  154. package/dist/ui/button/cmp.options-button.svelte +123 -0
  155. package/dist/ui/button/cmp.options-button.svelte.d.ts +20 -0
  156. package/dist/ui/button/index.d.ts +1 -0
  157. package/dist/ui/button/index.js +1 -0
  158. package/dist/ui/button/resources/button-theme.svelte +6 -143
  159. package/dist/ui/button/resources/button-types.d.ts +0 -1
  160. package/dist/ui/button/resources/button-types.js +0 -1
  161. package/dist/ui/icon/cmp.icon.svelte +8 -28
  162. package/dist/ui/image/cmp.image-rounded.svelte +3 -10
  163. package/dist/ui/image/cmp.image-stub.svelte +1 -4
  164. package/dist/ui/image/cmp.image.svelte +1 -4
  165. package/dist/ui/loading/cmp.loading.svelte +1 -4
  166. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +2 -2
  167. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +2 -2
  168. package/dist/ui/player/button/cmp.player-button.svelte +7 -3
  169. package/dist/ui/player/button/cmp.player-buttons-group.svelte +4 -3
  170. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -2
  171. package/dist/ui/player/button/index.d.ts +1 -1
  172. package/dist/ui/player/button/types.d.ts +1 -1
  173. package/dist/ui/player/colors/index.d.ts +1 -1
  174. package/dist/ui/player/colors/index.js +1 -1
  175. package/dist/ui/player/colors/player-colors.d.ts +15 -1
  176. package/dist/ui/player/colors/player-colors.js +24 -1
  177. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +1 -0
  178. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +7 -1
  179. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +1 -0
  180. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +7 -1
  181. package/dist/ui/player/providers/types.d.ts +3 -1
  182. package/dist/ui/shadow-dom/cmp.shadow-root.svelte +158 -0
  183. package/dist/ui/shadow-dom/colors.scss +74 -0
  184. package/dist/ui/shadow-dom/index.d.ts +1 -0
  185. package/dist/ui/shadow-dom/index.js +1 -0
  186. package/dist/ui/shadow-dom/shadow-root-service.js +0 -4
  187. package/dist/ui/slider/cmp.slider.svelte +5 -5
  188. package/package.json +5 -1
  189. package/dist/content-player/content-player-settings.d.ts +0 -12
  190. package/dist/content-player/content-player-settings.js +0 -22
  191. package/dist/media-center/config/internal-media-center-config.d.ts +0 -14
  192. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +0 -4
  193. package/dist/media-center/media-center/discover/discover-header-localization.d.ts +0 -6
  194. package/dist/media-center/media-center/discover/discover-header-localization.js +0 -15
  195. package/dist/posts/handlers/index.d.ts +0 -1
  196. package/dist/posts/handlers/index.js +0 -1
  197. package/dist/short-videos/data-providers/index.d.ts +0 -1
  198. package/dist/short-videos/data-providers/index.js +0 -1
  199. package/dist/ui/with-background/cmp.with-background.svelte +0 -86
  200. package/dist/ui/with-background/index.d.ts +0 -1
  201. package/dist/ui/with-background/index.js +0 -1
  202. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.d.ts +0 -0
  203. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.js +0 -0
  204. /package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.js +0 -0
  205. /package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.d.ts +0 -0
  206. /package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.js +0 -0
  207. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.d.ts +0 -0
  208. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.js +0 -0
  209. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.js +0 -0
  210. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.graphql +0 -0
  211. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.d.ts +0 -0
  212. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.js +0 -0
  213. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.js +0 -0
  214. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.graphql +0 -0
  215. /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte.d.ts +0 -0
  216. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.d.ts +0 -0
  217. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.js +0 -0
  218. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte.d.ts +0 -0
  219. /package/dist/ui/{with-background/cmp.with-background.svelte.d.ts → shadow-dom/cmp.shadow-root.svelte.d.ts} +0 -0
@@ -1,10 +1,8 @@
1
- import type { Locale } from '../../../core/locale';
2
1
  import type { PostPlayerModel } from '../../../posts/posts-player/types';
3
2
  import type { StreamPlayerModel } from '../../../streams/streams-player';
4
3
  import type { MediaCenterContext } from '../media-center-context.svelte';
5
4
  type Props = {
6
5
  context: MediaCenterContext;
7
- locale?: Locale;
8
6
  on: {
9
7
  shortVideoSelected: (shortVideo: PostPlayerModel) => void;
10
8
  streamSelected: (stream: StreamPlayerModel) => void;
@@ -1,4 +1,4 @@
1
- import type { IMediaCenterConfig } from '../..';
1
+ import type { IMediaCenterDataProvider } from '../..';
2
2
  import type { PostPlayerModel } from '../../../posts/posts-player';
3
3
  import type { IStreamsPlayerDataProvider } from '../../../streams/streams-player';
4
4
  import type { ICloseOrchestrator } from '../../../ui/player/close-orchestrator';
@@ -10,13 +10,15 @@ export declare class FeedHandler {
10
10
  private _active;
11
11
  private _providersGenerator;
12
12
  private _feedPlayerProps;
13
- private _externalHandlers;
13
+ private _dataProvider;
14
14
  private _mediaCenterSettingsHandler;
15
15
  private _closeOrchestrator;
16
+ private _onPlayerReachedEnd;
16
17
  constructor(data: {
17
- config: IMediaCenterConfig;
18
+ dataProvider: IMediaCenterDataProvider;
18
19
  mediaCenterSettingsHandler: MediaCenterSettingsHandler;
19
20
  closeOrchestrator: ICloseOrchestrator;
21
+ onPlayerReachedEnd: () => void;
20
22
  });
21
23
  get active(): boolean;
22
24
  get feedPlayerProps(): PlayerProps | null;
@@ -6,15 +6,17 @@ export class FeedHandler {
6
6
  _active = $state(false);
7
7
  _providersGenerator;
8
8
  _feedPlayerProps = $state.raw(null);
9
- _externalHandlers;
9
+ _dataProvider;
10
10
  _mediaCenterSettingsHandler;
11
11
  _closeOrchestrator;
12
+ _onPlayerReachedEnd;
12
13
  constructor(data) {
13
- const { config, mediaCenterSettingsHandler, closeOrchestrator } = data;
14
- this._providersGenerator = new FeedProvidersGenerator(config);
14
+ const { dataProvider, mediaCenterSettingsHandler, closeOrchestrator, onPlayerReachedEnd } = data;
15
+ this._providersGenerator = new FeedProvidersGenerator(dataProvider);
15
16
  this._mediaCenterSettingsHandler = mediaCenterSettingsHandler;
16
- this._externalHandlers = config.handlers;
17
+ this._dataProvider = dataProvider;
17
18
  this._closeOrchestrator = closeOrchestrator;
19
+ this._onPlayerReachedEnd = onPlayerReachedEnd;
18
20
  }
19
21
  get active() {
20
22
  return this._active;
@@ -28,10 +30,13 @@ export class FeedHandler {
28
30
  activatePostsFeed = async (options) => {
29
31
  const { dataProvider, filter, onPostActivated } = options;
30
32
  if (dataProvider) {
33
+ if (!dataProvider.onEndReached) {
34
+ dataProvider.onEndReached = this._onPlayerReachedEnd;
35
+ }
31
36
  this._feedPlayerProps = this.makePostsPlayerProps({ dataProvider, onPostActivated });
32
37
  }
33
38
  else {
34
- const dataProvider = this._providersGenerator.makePostPlayerItemsProvider(filter);
39
+ const dataProvider = this._providersGenerator.makePostPlayerItemsProvider({ filter, onEndReached: this._onPlayerReachedEnd });
35
40
  this._feedPlayerProps = this.makePostsPlayerProps({ dataProvider, onPostActivated });
36
41
  }
37
42
  this._active = true;
@@ -39,10 +44,13 @@ export class FeedHandler {
39
44
  activateStreamsFeed = async (options) => {
40
45
  const { dataProvider, filter, onStreamActivated } = options;
41
46
  if (dataProvider) {
47
+ if (!dataProvider.onEndReached) {
48
+ dataProvider.onEndReached = this._onPlayerReachedEnd;
49
+ }
42
50
  this._feedPlayerProps = this.makeStreamsPlayerProps({ dataProvider, onStreamActivated });
43
51
  }
44
52
  else {
45
- const dataProvider = this._providersGenerator.makeStreamsPlayerDataProvider(filter);
53
+ const dataProvider = this._providersGenerator.makeStreamsPlayerDataProvider({ filter, onEndReached: this._onPlayerReachedEnd });
46
54
  this._feedPlayerProps = this.makeStreamsPlayerProps({ dataProvider, onStreamActivated });
47
55
  }
48
56
  this._active = true;
@@ -53,8 +61,8 @@ export class FeedHandler {
53
61
  type: 'posts',
54
62
  props: {
55
63
  dataProvider: { type: 'buffer', buffer: initBufferFromProvider(dataProvider) },
56
- socialInteractionsHandler: this._externalHandlers?.socialInteractionsHandler,
57
- analyticsHandler: this._externalHandlers?.analyticsHandler,
64
+ socialInteractionsHandler: this._dataProvider.handlers?.socialInteractionsHandler,
65
+ analyticsHandler: this._dataProvider.handlers?.analyticsHandler,
58
66
  playerSettings: this._mediaCenterSettingsHandler.playerSettings,
59
67
  closeOrchestrator: this._closeOrchestrator,
60
68
  on: {
@@ -70,8 +78,8 @@ export class FeedHandler {
70
78
  type: 'streams',
71
79
  props: {
72
80
  dataProvider: { type: 'buffer', buffer: new StreamsPlayerBuffer(dataProvider) },
73
- analyticsHandler: this._externalHandlers?.analyticsHandler,
74
- postSocialInteractionsHandler: this._externalHandlers?.socialInteractionsHandler,
81
+ analyticsHandler: this._dataProvider.handlers?.analyticsHandler,
82
+ postSocialInteractionsHandler: this._dataProvider.handlers?.socialInteractionsHandler,
75
83
  playerSettings: this._mediaCenterSettingsHandler.playerSettings,
76
84
  closeOrchestrator: this._closeOrchestrator,
77
85
  on: {
@@ -1,11 +1,17 @@
1
- import type { IMediaCenterConfig } from '../../config/types';
1
+ import type { IMediaCenterDataProvider } from '../../config/types';
2
2
  import type { PostPlayerModel } from '../../../posts/posts-player/types';
3
3
  import type { IStreamsPlayerDataProvider } from '../../../streams/streams-player/types';
4
4
  import type { IFeedPlayerDataProvider } from '../../../ui/player/providers';
5
5
  import type { PostsDataProviderFilter, StreamsDataProviderFilter } from './types';
6
6
  export declare class FeedProvidersGenerator {
7
- private config;
8
- constructor(config: IMediaCenterConfig);
9
- makePostPlayerItemsProvider: (filter?: PostsDataProviderFilter) => IFeedPlayerDataProvider<PostPlayerModel>;
10
- makeStreamsPlayerDataProvider: (filter?: StreamsDataProviderFilter) => IStreamsPlayerDataProvider;
7
+ private dataProvider;
8
+ constructor(dataProvider: IMediaCenterDataProvider);
9
+ makePostPlayerItemsProvider: (data: {
10
+ filter?: PostsDataProviderFilter;
11
+ onEndReached: () => void;
12
+ }) => IFeedPlayerDataProvider<PostPlayerModel>;
13
+ makeStreamsPlayerDataProvider: (data: {
14
+ filter?: StreamsDataProviderFilter;
15
+ onEndReached: () => void;
16
+ }) => IStreamsPlayerDataProvider;
11
17
  }
@@ -2,15 +2,16 @@ import { ContinuationToken } from '../../../core/continuation-token';
2
2
  import { CursorDataLoader } from '../../../core/data-loaders';
3
3
  import { PostType } from '../../../core/enums';
4
4
  export class FeedProvidersGenerator {
5
- config;
6
- constructor(config) {
7
- this.config = config;
5
+ dataProvider;
6
+ constructor(dataProvider) {
7
+ this.dataProvider = dataProvider;
8
8
  }
9
- makePostPlayerItemsProvider = (filter) => {
9
+ makePostPlayerItemsProvider = (data) => {
10
+ const { filter, onEndReached } = data;
10
11
  const { categoryId, prefetchedItems: initialPrefetchedItems = [], initialPostId } = filter || {};
11
12
  const loader = new CursorDataLoader({
12
13
  loadPage: async (continuationToken) => {
13
- const result = await this.config.postsPlayer.getPostsCursor({
14
+ const result = await this.dataProvider.postsPlayer.getPostsCursor({
14
15
  filter: {
15
16
  types: [PostType.Article, PostType.Media, PostType.ShortVideo, PostType.Video],
16
17
  categoryId,
@@ -39,14 +40,16 @@ export class FeedProvidersGenerator {
39
40
  prefetchedItems,
40
41
  startIndex: prefetchedItems.length ? 0 : -1
41
42
  },
42
- loadMore: loader.loadMore
43
+ loadMore: loader.loadMore,
44
+ onEndReached
43
45
  };
44
46
  };
45
- makeStreamsPlayerDataProvider = (filter) => {
47
+ makeStreamsPlayerDataProvider = (data) => {
48
+ const { filter, onEndReached } = data;
46
49
  const { categoryId, prefetchedStreams: initialPrefetchedStreams = [], initialStreamId } = filter || {};
47
50
  const loader = new CursorDataLoader({
48
51
  loadPage: async (continuationToken) => {
49
- const result = await this.config.streamPlayer.getStreamsCursor({
52
+ const result = await this.dataProvider.streamPlayer.getStreamsCursor({
50
53
  filter: {
51
54
  categoryId,
52
55
  excludeIds: initialPrefetchedStreams.length ? initialPrefetchedStreams.map((i) => i.id) : undefined
@@ -73,7 +76,8 @@ export class FeedProvidersGenerator {
73
76
  prefetchedStreams
74
77
  },
75
78
  loadMoreStreams: loader.loadMore,
76
- getStreamPages: this.config.streamPlayer.getStreamPages
79
+ getStreamPages: this.dataProvider.streamPlayer.getStreamPages,
80
+ onEndReached
77
81
  };
78
82
  };
79
83
  }
@@ -0,0 +1 @@
1
+ export { default as MediaCenterFooter } from './media-center-footer.svelte';
@@ -0,0 +1 @@
1
+ export { default as MediaCenterFooter } from './media-center-footer.svelte';
@@ -6,7 +6,7 @@ import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular
6
6
  let { context } = $props();
7
7
  </script>
8
8
 
9
- <div class="media-center-footer">
9
+ <div class="media-center-footer" data-theme="dark">
10
10
  <div class="media-center-footer__spacer"></div>
11
11
  <button
12
12
  type="button"
@@ -52,9 +52,9 @@ let { context } = $props();
52
52
  justify-content: space-between;
53
53
  pointer-events: auto;
54
54
  z-index: 1;
55
- background: #000000;
56
55
  padding-top: 0.5rem;
57
56
  padding-bottom: 1.25rem;
57
+ background: var(--sc-mc-color--bg-panel);
58
58
  }
59
59
  .media-center-footer__button {
60
60
  position: relative;
@@ -64,10 +64,10 @@ let { context } = $props();
64
64
  justify-content: center;
65
65
  align-items: center;
66
66
  --icon--size: 1.5rem;
67
- --icon--color: #f2f2f2;
67
+ --icon--color: var(--sc-mc-color--text-secondary);
68
68
  line-height: 0;
69
69
  }
70
70
  .media-center-footer__button--active {
71
- --icon--color: #ffffff;
72
- --icon--stroke-width: 0.6;
71
+ --icon--color: var(--sc-mc-color--text-primary);
72
+ --icon--stroke-width: 0.3;
73
73
  }</style>
@@ -1,9 +1,11 @@
1
- import type { MediaCenterConfigModel } from '../../config/types';
1
+ import type { IMediaCenterDataProvider } from '../../config/types';
2
2
  import type { MediaCenterCategoryData } from '../types';
3
3
  export declare class CategoriesHandler {
4
+ private readonly dataProvider;
4
5
  private _allCateogories;
5
6
  private _tagAssociations;
6
7
  private _selectedCategoryId;
8
+ constructor(dataProvider: IMediaCenterDataProvider);
7
9
  get allCategories(): {
8
10
  id: string;
9
11
  name: string;
@@ -14,10 +16,6 @@ export declare class CategoriesHandler {
14
16
  get selectedCategoryId(): string | null;
15
17
  set selectedCategoryId(value: string | null);
16
18
  getCategoryData: (categoryId: string) => MediaCenterCategoryData | null;
17
- init: (data: {
18
- categories: MediaCenterConfigModel["contentCategories"];
19
- tagAssociations: MediaCenterConfigModel["categoryTagAssociations"];
20
- }) => Promise<void>;
21
19
  }
22
20
  export type MediaCenterCategoryModel = {
23
21
  id: string;
@@ -1,7 +1,21 @@
1
1
  export class CategoriesHandler {
2
- _allCateogories = $state.raw([]);
3
- _tagAssociations = $state.raw(new Map());
2
+ dataProvider;
3
+ _allCateogories = $derived.by(() => this.dataProvider.model?.contentCategories ?? []);
4
+ _tagAssociations = $derived.by(() => {
5
+ const newTagAssociations = new Map();
6
+ if (this.dataProvider.model?.categoryTagAssociations) {
7
+ for (const assoc of this.dataProvider.model.categoryTagAssociations) {
8
+ if (assoc.tag) {
9
+ newTagAssociations.set(assoc.id, assoc.tag);
10
+ }
11
+ }
12
+ }
13
+ return newTagAssociations;
14
+ });
4
15
  _selectedCategoryId = $state.raw(null);
16
+ constructor(dataProvider) {
17
+ this.dataProvider = dataProvider;
18
+ }
5
19
  get allCategories() {
6
20
  return this._allCateogories;
7
21
  }
@@ -40,15 +54,4 @@ export class CategoriesHandler {
40
54
  };
41
55
  return selectedCategoryData;
42
56
  };
43
- init = async (data) => {
44
- const { categories, tagAssociations } = data;
45
- this._allCateogories = categories;
46
- const newTagAssociations = new Map();
47
- for (const assoc of tagAssociations) {
48
- if (assoc.tag) {
49
- newTagAssociations.set(assoc.id, assoc.tag);
50
- }
51
- }
52
- this._tagAssociations = newTagAssociations;
53
- };
54
57
  }
@@ -1,10 +1,24 @@
1
- import type { PlayerColors } from '../../../ui/player/colors';
2
- import type { MediaCenterSettings } from '../types';
1
+ import type { Locale } from '../../../core/locale';
2
+ import { type ThemeValue } from '../../../core/theme';
3
+ import type { IMediaCenterDataProvider } from '../../config/types';
4
+ import { PlayerColors } from '../../../ui/player/colors';
5
+ import type { MediaCenterSettings } from '../media-center-settings.svelte';
3
6
  export declare class MediaCenterSettingsHandler {
4
7
  private _backgroundImageUrl;
8
+ private _mediaCenterSettings;
9
+ private _dataProvider;
5
10
  private _contentPlayerSettings;
6
- constructor(settings?: MediaCenterSettings);
7
- get playerSettings(): MediaCenterSettingsWithColors;
11
+ constructor(init: {
12
+ readonly dataProvider: IMediaCenterDataProvider;
13
+ settings: MediaCenterSettings;
14
+ });
15
+ get playerSettings(): {
16
+ locale?: Locale;
17
+ showStreamsCloudWatermark?: boolean;
18
+ playerColors?: Record<ThemeValue, PlayerColors>;
19
+ };
20
+ get actualMediaCenterColors(): PlayerColors;
21
+ get locale(): Locale;
8
22
  get backgroundWrapperProps(): {
9
23
  backgroundDisabled: boolean;
10
24
  backgroundImageUrl: string | null;
@@ -12,7 +26,6 @@ export declare class MediaCenterSettingsHandler {
12
26
  };
13
27
  get backgroundImageLoadedHandler(): ((url: string | null) => void) | undefined;
14
28
  updateBackgroundImageUrl: (url: string | null | "not-applicable") => void;
15
- updatePlayerColors: (colors: PlayerColors) => void;
16
29
  }
17
30
  export type MediaCenterSettingsWithColors = MediaCenterSettings & {
18
31
  playerColors?: PlayerColors;
@@ -1,26 +1,38 @@
1
+ import { Theme } from '../../../core/theme';
2
+ import { PlayerColors } from '../../../ui/player/colors';
1
3
  export class MediaCenterSettingsHandler {
2
4
  _backgroundImageUrl = $state(null);
3
- _contentPlayerSettings = $state({});
4
- constructor(settings) {
5
- this._contentPlayerSettings = settings ?? {};
5
+ _mediaCenterSettings;
6
+ _dataProvider;
7
+ _contentPlayerSettings = $derived.by(() => ({
8
+ locale: this._mediaCenterSettings.locale,
9
+ playerColors: this._dataProvider.model?.playerColors,
10
+ showStreamsCloudWatermark: this._mediaCenterSettings.showStreamsCloudWatermark
11
+ }));
12
+ constructor(init) {
13
+ this._mediaCenterSettings = init.settings;
14
+ this._dataProvider = init.dataProvider;
6
15
  }
7
16
  get playerSettings() {
8
17
  return this._contentPlayerSettings;
9
18
  }
19
+ get actualMediaCenterColors() {
20
+ return this._dataProvider.model?.playerColors?.[Theme.get()] || new PlayerColors(null);
21
+ }
22
+ get locale() {
23
+ return this._mediaCenterSettings.locale;
24
+ }
10
25
  get backgroundWrapperProps() {
11
26
  return {
12
- backgroundDisabled: this._contentPlayerSettings.disableBackground === true,
27
+ backgroundDisabled: this._mediaCenterSettings.disableBackground,
13
28
  backgroundImageUrl: this._backgroundImageUrl,
14
- backgroundColor: this._contentPlayerSettings.playerColors?.playerBackground
29
+ backgroundColor: this.actualMediaCenterColors.playerBackground
15
30
  };
16
31
  }
17
32
  get backgroundImageLoadedHandler() {
18
- return this._contentPlayerSettings.disableBackground === true ? undefined : (url) => this.updateBackgroundImageUrl(url);
33
+ return this._mediaCenterSettings.disableBackground ? undefined : (url) => this.updateBackgroundImageUrl(url);
19
34
  }
20
35
  updateBackgroundImageUrl = (url) => {
21
36
  this._backgroundImageUrl = url;
22
37
  };
23
- updatePlayerColors = (colors) => {
24
- this._contentPlayerSettings.playerColors = colors;
25
- };
26
38
  }
@@ -1,3 +1,2 @@
1
- export { default as MediaCenterFooter } from './media-center-footer.svelte';
2
1
  export { default as MediaCenterHeaderMobile } from './media-center-header-mobile.svelte';
3
2
  export { default as MediaCenterHeader } from './media-center-header.svelte';
@@ -1,3 +1,2 @@
1
- export { default as MediaCenterFooter } from './media-center-footer.svelte';
2
1
  export { default as MediaCenterHeaderMobile } from './media-center-header-mobile.svelte';
3
2
  export { default as MediaCenterHeader } from './media-center-header.svelte';
@@ -64,7 +64,8 @@ const headerMounted = (node) => {
64
64
  font-size: 1.125rem;
65
65
  font-weight: 600;
66
66
  line-height: 1.4;
67
- color: #ffffff;
67
+ color: var(--sc-mc-color--text-white);
68
+ text-shadow: var(--sc-mc-color--text-white-shadow);
68
69
  }
69
70
  .media-center-header-mobile__button {
70
71
  pointer-events: auto;
@@ -73,8 +74,8 @@ const headerMounted = (node) => {
73
74
  display: flex;
74
75
  justify-content: center;
75
76
  align-items: center;
76
- --icon--size: 1.5rem;
77
- --icon--color: #ffffff;
78
- --icon--filter: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
77
+ --icon--size: 1.625rem;
78
+ --icon--color: var(--sc-mc-color--icon-overlay);
79
+ --icon--filter: var(--sc-mc-color--icon-overlay-shadow);
79
80
  line-height: 0;
80
81
  }</style>