@streamscloud/embeddable 11.0.0 → 12.1.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 (174) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +4 -4
  2. package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +2 -0
  3. package/dist/content-player/cmp.content-player.svelte +63 -128
  4. package/dist/content-player/content-player-config.svelte.d.ts +3 -10
  5. package/dist/content-player/content-player-config.svelte.js +3 -21
  6. package/dist/content-player/content-player-settings.d.ts +7 -21
  7. package/dist/content-player/content-player-settings.js +0 -4
  8. package/dist/content-player/controls-and-attachments.svelte +39 -5
  9. package/dist/content-player/overview-panel.svelte +14 -6
  10. package/dist/content-player/overview-panel.svelte.d.ts +5 -1
  11. package/dist/content-player/ui-manager.svelte.d.ts +0 -2
  12. package/dist/content-player/ui-manager.svelte.js +0 -2
  13. package/dist/media-center/config/internal-media-center-config.d.ts +7 -3
  14. package/dist/media-center/config/internal-media-center-config.js +28 -24
  15. package/dist/media-center/config/operations.generated.d.ts +36 -23
  16. package/dist/media-center/config/operations.generated.js +53 -33
  17. package/dist/media-center/config/operations.graphql +34 -21
  18. package/dist/media-center/config/types.d.ts +13 -2
  19. package/dist/media-center/media-center/cmp.media-center.svelte +195 -149
  20. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +2 -19
  21. package/dist/media-center/media-center/discover/data-loading.d.ts +8 -0
  22. package/dist/media-center/media-center/discover/data-loading.js +35 -0
  23. package/dist/media-center/media-center/discover/discover-header-localization.d.ts +6 -0
  24. package/dist/media-center/media-center/discover/discover-header-localization.js +15 -0
  25. package/dist/media-center/media-center/discover/discover-header.svelte +214 -0
  26. package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +9 -0
  27. package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +28 -0
  28. package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +101 -0
  29. package/dist/media-center/media-center/discover/discover-view-localization.d.ts +6 -0
  30. package/dist/media-center/media-center/discover/discover-view-localization.js +15 -0
  31. package/dist/media-center/media-center/discover/discover-view.svelte +238 -0
  32. package/dist/media-center/media-center/discover/{discover-panel.svelte.d.ts → discover-view.svelte.d.ts} +4 -4
  33. package/dist/media-center/media-center/discover/index.d.ts +2 -2
  34. package/dist/media-center/media-center/discover/index.js +2 -2
  35. package/dist/media-center/media-center/discover/types.svelte.d.ts +20 -0
  36. package/dist/media-center/media-center/discover/types.svelte.js +20 -0
  37. package/dist/media-center/media-center/feed/feed-handler.svelte.d.ts +50 -0
  38. package/dist/media-center/media-center/feed/feed-handler.svelte.js +84 -0
  39. package/dist/media-center/media-center/feed/feed-providers-generator.d.ts +11 -0
  40. package/dist/media-center/media-center/feed/feed-providers-generator.js +79 -0
  41. package/dist/media-center/media-center/feed/index.d.ts +1 -0
  42. package/dist/media-center/media-center/feed/index.js +1 -0
  43. package/dist/media-center/media-center/feed/types.d.ts +12 -0
  44. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +29 -10
  45. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +25 -7
  46. package/dist/media-center/media-center/handlers/index.d.ts +2 -1
  47. package/dist/media-center/media-center/handlers/index.js +1 -1
  48. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +19 -0
  49. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +26 -0
  50. package/dist/media-center/media-center/header-footer/media-center-footer.svelte +4 -8
  51. package/dist/media-center/media-center/header-footer/media-center-header-localization.d.ts +1 -0
  52. package/dist/media-center/media-center/header-footer/media-center-header-localization.js +6 -0
  53. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +25 -36
  54. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte.d.ts +2 -1
  55. package/dist/media-center/media-center/header-footer/media-center-header.svelte +14 -11
  56. package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +1 -2
  57. package/dist/media-center/media-center/media-center-context.svelte.d.ts +31 -13
  58. package/dist/media-center/media-center/media-center-context.svelte.js +71 -35
  59. package/dist/media-center/media-center/menu/menu-localization.d.ts +2 -11
  60. package/dist/media-center/media-center/menu/menu-localization.js +6 -45
  61. package/dist/media-center/media-center/menu/menu.svelte +94 -93
  62. package/dist/media-center/media-center/menu/menu.svelte.d.ts +1 -1
  63. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +1 -1
  64. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +0 -3
  65. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +41 -0
  66. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte.d.ts +7 -0
  67. package/dist/media-center/media-center/moments/index.d.ts +1 -0
  68. package/dist/media-center/media-center/moments/index.js +1 -0
  69. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.d.ts +1 -1
  70. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.js +1 -1
  71. package/dist/media-center/media-center/types.d.ts +44 -1
  72. package/dist/media-page/index.d.ts +121 -0
  73. package/dist/media-page/index.js +43 -0
  74. package/dist/posts/attachments/cmp.attachments.svelte +1 -0
  75. package/dist/posts/controls/cmp.controls.svelte +50 -13
  76. package/dist/posts/data-loaders/operations.generated.d.ts +4 -0
  77. package/dist/posts/data-loaders/operations.generated.js +6 -2
  78. package/dist/posts/model/types.d.ts +2 -0
  79. package/dist/posts/post-viewer/cmp.post-viewer.svelte +26 -18
  80. package/dist/posts/post-viewer/mapper.js +2 -0
  81. package/dist/posts/post-viewer/operations.generated.d.ts +2 -0
  82. package/dist/posts/post-viewer/operations.generated.js +3 -1
  83. package/dist/posts/post-viewer/operations.graphql +2 -0
  84. package/dist/posts/post-viewer/post-texts.svelte +3 -3
  85. package/dist/posts/posts-player/cmp.posts-player.svelte +20 -6
  86. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +18 -2
  87. package/dist/posts/posts-player/index.d.ts +18 -3
  88. package/dist/posts/posts-player/index.js +42 -89
  89. package/dist/posts/posts-player/posts-player-proxy.svelte +19 -0
  90. package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +22 -0
  91. package/dist/posts/posts-player/posts-player-view.svelte +20 -34
  92. package/dist/posts/posts-player/posts-player-view.svelte.d.ts +2 -6
  93. package/dist/posts/posts-player/types.d.ts +19 -6
  94. package/dist/products/product-card/cmp.product-card.svelte +5 -5
  95. package/dist/products/product-card/cmp.product-card.svelte.d.ts +1 -1
  96. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +160 -19
  97. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte.d.ts +2 -1
  98. package/dist/short-videos/short-video-card/localization.d.ts +5 -0
  99. package/dist/short-videos/short-video-card/localization.js +13 -0
  100. package/dist/short-videos/short-video-card/types.d.ts +4 -0
  101. package/dist/short-videos/short-videos-player/index.js +26 -33
  102. package/dist/streams/layout/element-views/cmp.stream-element.svelte +2 -2
  103. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte +7 -3
  104. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte.d.ts +2 -0
  105. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte +7 -3
  106. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte.d.ts +2 -0
  107. package/dist/streams/layout/element-views/price-element-view.svelte +2 -2
  108. package/dist/streams/layout/element-views/price-stream-element-localization.d.ts +1 -1
  109. package/dist/streams/layout/element-views/price-stream-element-localization.js +2 -2
  110. package/dist/streams/layout/models/mapper.js +2 -0
  111. package/dist/streams/streams-player/index.d.ts +21 -2
  112. package/dist/streams/streams-player/index.js +49 -24
  113. package/dist/streams/streams-player/stream-overview.svelte +1 -1
  114. package/dist/streams/streams-player/streams-player-buffer.svelte.d.ts +1 -3
  115. package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -2
  116. package/dist/streams/streams-player/streams-player-view.svelte +25 -21
  117. package/dist/streams/streams-player/streams-player-view.svelte.d.ts +1 -5
  118. package/dist/streams/streams-player/types.d.ts +18 -4
  119. package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte +119 -0
  120. package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte.d.ts +10 -0
  121. package/dist/ui/line-clamp/cmp.line-clamp.svelte +44 -72
  122. package/dist/ui/line-clamp/cmp.line-clamp.svelte.d.ts +3 -4
  123. package/dist/ui/line-clamp/index.d.ts +1 -0
  124. package/dist/ui/line-clamp/index.js +1 -0
  125. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +44 -0
  126. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +7 -0
  127. package/dist/ui/player/button/cmp.player-button.svelte +0 -1
  128. package/dist/ui/player/button/cmp.player-buttons-group.svelte +15 -11
  129. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +1 -1
  130. package/dist/ui/player/button/index.d.ts +1 -0
  131. package/dist/ui/player/button/index.js +1 -0
  132. package/dist/ui/player/button/types.d.ts +0 -2
  133. package/dist/ui/player/close-orchestrator/close-orchestrator.svelte.d.ts +18 -0
  134. package/dist/ui/player/close-orchestrator/close-orchestrator.svelte.js +58 -0
  135. package/dist/ui/player/close-orchestrator/index.d.ts +2 -0
  136. package/dist/ui/player/close-orchestrator/index.js +1 -0
  137. package/dist/ui/player/close-orchestrator/types.d.ts +9 -0
  138. package/dist/ui/player/close-orchestrator/types.js +1 -0
  139. package/dist/ui/player/colors/index.d.ts +1 -0
  140. package/dist/ui/player/colors/index.js +1 -0
  141. package/dist/ui/player/colors/player-colors.d.ts +11 -0
  142. package/dist/ui/player/colors/player-colors.js +1 -0
  143. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.d.ts +2 -6
  144. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +11 -11
  145. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +2 -3
  146. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +5 -5
  147. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +3 -4
  148. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +16 -9
  149. package/dist/ui/player/providers/service.d.ts +2 -0
  150. package/dist/ui/player/providers/service.js +13 -0
  151. package/dist/ui/player/providers/types.d.ts +1 -0
  152. package/dist/ui/with-background/cmp.with-background.svelte +86 -0
  153. package/dist/ui/with-background/cmp.with-background.svelte.d.ts +10 -0
  154. package/dist/ui/with-background/index.d.ts +1 -0
  155. package/dist/ui/with-background/index.js +1 -0
  156. package/package.json +5 -1
  157. package/dist/content-player/fade-mixins.scss +0 -12
  158. package/dist/content-player/header.svelte +0 -15
  159. package/dist/content-player/header.svelte.d.ts +0 -28
  160. package/dist/media-center/media-center/discover/discover-panel-handler.svelte.d.ts +0 -31
  161. package/dist/media-center/media-center/discover/discover-panel-handler.svelte.js +0 -94
  162. package/dist/media-center/media-center/discover/discover-panel-localization.d.ts +0 -19
  163. package/dist/media-center/media-center/discover/discover-panel-localization.js +0 -78
  164. package/dist/media-center/media-center/discover/discover-panel.svelte +0 -142
  165. package/dist/media-center/media-center/handlers/feed-handler.svelte.d.ts +0 -6
  166. package/dist/media-center/media-center/handlers/feed-handler.svelte.js +0 -12
  167. package/dist/media-center/media-center/providers/index.d.ts +0 -2
  168. package/dist/media-center/media-center/providers/index.js +0 -2
  169. package/dist/media-center/media-center/providers/post-player-provider-generator.d.ts +0 -8
  170. package/dist/media-center/media-center/providers/post-player-provider-generator.js +0 -32
  171. package/dist/media-center/media-center/providers/streams-player-provider-generator.d.ts +0 -8
  172. package/dist/media-center/media-center/providers/streams-player-provider-generator.js +0 -36
  173. package/dist/media-center/model/types.d.ts +0 -17
  174. /package/dist/media-center/{model → media-center/feed}/types.js +0 -0
@@ -10,7 +10,7 @@ import IconReOrderDotsHorizontal from '@fluentui/svg-icons/icons/re_order_dots_h
10
10
  import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
11
11
  import IconSearch from '@fluentui/svg-icons/icons/search_20_regular.svg?raw';
12
12
  const SCROLL_MASK_OFFSET = 32;
13
- let { context, locale, closeFn, on } = $props();
13
+ let { context, locale = 'en', on } = $props();
14
14
  const localization = $derived(new MediaCenterHeaderLocalization(locale));
15
15
  let scrollAreaRef = $state(null);
16
16
  const headerMounted = (node) => {
@@ -66,9 +66,9 @@ const styles = $derived.by(() => {
66
66
 
67
67
  <div class="media-center-header-container" use:headerMounted>
68
68
  <div class="media-center-header" style={styles}>
69
- {#if context.logo}
69
+ {#if context.targetData?.logo}
70
70
  <div class="media-center-header__logo-wrap">
71
- <img src={context.logo} class="media-center-header__logo" alt={context.targetData?.name} />
71
+ <img src={context.targetData.logo} class="media-center-header__logo" alt={context.targetData?.name} />
72
72
  </div>
73
73
  {/if}
74
74
  <button type="button" class="control-button control-button--trigger" class:control-button--active={context.menuActive} onclick={context.toggleMenu}>
@@ -78,7 +78,7 @@ const styles = $derived.by(() => {
78
78
  </button>
79
79
  <div class="media-center-header__scroll-area" use:onScrollMounted use:horizontalWheelScroll onscroll={handleScrollingAreaScroll}>
80
80
  <div class="media-center-header__scroll-area-block">
81
- <button type="button" class="control-button" class:control-button--active={context.feedHandler.active} onclick={() => context.activateFeed()}>
81
+ <button type="button" class="control-button" class:control-button--active={context.feedHandler.active} onclick={() => context.playRootFeed()}>
82
82
  <span class="control-button__icon" class:control-button__icon--active={context.feedHandler.active}>
83
83
  <Icon src={IconPhone} />
84
84
  </span>
@@ -86,7 +86,11 @@ const styles = $derived.by(() => {
86
86
  {localization.buttons.feed}
87
87
  </span>
88
88
  </button>
89
- <button type="button" class="control-button" class:control-button--active={context.discoverHandler.activated} onclick={context.activateDiscover}>
89
+ <button
90
+ type="button"
91
+ class="control-button"
92
+ class:control-button--active={context.discoverHandler.activated}
93
+ onclick={() => context.activateDiscover({ categoryId: null })}>
90
94
  <span class="control-button__icon" class:control-button__icon--active={context.discoverHandler.activated}>
91
95
  <Icon src={IconScreenSearch} />
92
96
  </span>
@@ -134,14 +138,14 @@ const styles = $derived.by(() => {
134
138
  </div>
135
139
  </div>
136
140
  </div>
137
- {#if closeFn}
141
+ {#if context.closeOrchestrator.closeTriggerVisible}
138
142
  <div class="close-button">
139
143
  <PlayerButton
140
144
  icon={IconDismiss}
141
145
  zoom={0.8}
142
146
  activeColor={context.playerColors?.button ?? null}
143
147
  inactiveColor={context.playerColors?.buttonInactive ?? null}
144
- on={{ click: closeFn }} />
148
+ on={{ click: context.closeOrchestrator.requestClose }} />
145
149
  </div>
146
150
  {/if}
147
151
  </div>
@@ -192,10 +196,11 @@ const styles = $derived.by(() => {
192
196
  display: flex;
193
197
  align-items: center;
194
198
  justify-content: center;
195
- height: 3.125rem;
199
+ height: 2.9375rem;
196
200
  max-width: 11.25rem;
197
201
  min-width: 0;
198
202
  overflow: hidden;
203
+ flex-shrink: 0;
199
204
  }
200
205
  .media-center-header__logo {
201
206
  width: auto;
@@ -217,8 +222,7 @@ const styles = $derived.by(() => {
217
222
  flex-wrap: nowrap;
218
223
  mask-image: none;
219
224
  scrollbar-width: none;
220
- padding: 0.5rem 0.625rem;
221
- padding-left: 0;
225
+ padding-block: 0.5rem;
222
226
  --_scroll-area--mask-offset--left: var(--scroll-area--mask-offset);
223
227
  --_scroll-area--mask-offset--right: calc(100% - var(--scroll-area--mask-offset));
224
228
  }
@@ -275,7 +279,6 @@ const styles = $derived.by(() => {
275
279
  .control-button--active {
276
280
  background-color: var(--_media-center-header--button-color);
277
281
  color: #ffffff;
278
- text-shadow: 0.001em 0 0 currentColor, -0.001em 0 0 currentColor, 0 0.001em 0 currentColor, 0 -0.001em 0 currentColor;
279
282
  }
280
283
  .control-button:hover:not(.control-button--active) {
281
284
  background-color: var(--_media-center-header--button-color);
@@ -2,8 +2,7 @@ import type { Locale } from '../../../core/locale';
2
2
  import type { MediaCenterContext } from '../media-center-context.svelte';
3
3
  type Props = {
4
4
  context: MediaCenterContext;
5
- locale: Locale;
6
- closeFn: (() => void) | null;
5
+ locale?: Locale;
7
6
  on: {
8
7
  headerHeightChanged: (height: number) => void;
9
8
  };
@@ -1,28 +1,32 @@
1
1
  import type { IContentCategoryFollowingHandler } from '../categories-following/types';
2
2
  import type { IMediaCenterConfig } from '../config/types';
3
- import { DiscoverPanelHandler } from './discover';
4
- import { CategoriesHandler, FeedHandler } from './handlers';
3
+ import type { ICloseOrchestrator } from '../../ui/player/close-orchestrator';
4
+ import { DiscoverViewHandler } from './discover';
5
+ import { FeedHandler } from './feed';
6
+ import { CategoriesHandler, MediaCenterSettingsHandler } from './handlers';
5
7
  import { PopularStreamsPanelHandler } from './menu';
6
8
  import { StreamsInCategoryPanelHandler } from './streams-in-category';
9
+ import type { MediaCenterMode, MediaCenterSettings } from './types';
7
10
  export declare class MediaCenterContext {
8
11
  initializing: boolean;
12
+ initialized: boolean;
13
+ readonly mediaCenterMode: MediaCenterMode;
9
14
  menuActive: boolean;
10
15
  categoriesHandler: CategoriesHandler;
11
16
  feedHandler: FeedHandler;
12
- discoverHandler: DiscoverPanelHandler;
17
+ discoverHandler: DiscoverViewHandler;
13
18
  popularStreamsHandler: PopularStreamsPanelHandler;
14
19
  streamsInCategoryHandler: StreamsInCategoryPanelHandler;
15
20
  categoryFollowingHandler: IContentCategoryFollowingHandler | null;
21
+ settingsHandler: MediaCenterSettingsHandler;
22
+ closeOrchestrator: ICloseOrchestrator;
16
23
  private _mediaCenterConfig;
17
24
  constructor(data: {
18
- config: IMediaCenterConfig | null;
19
- followingHandler: IContentCategoryFollowingHandler | null | undefined;
20
- on: {
21
- initialized: () => void;
22
- };
25
+ config: IMediaCenterConfig;
26
+ closeOrchestrator: ICloseOrchestrator;
27
+ settings?: MediaCenterSettings;
28
+ on: MediaCenterContextInitializationCallbacks;
23
29
  });
24
- get mediaCenterEffective(): boolean;
25
- get logo(): string | null;
26
30
  get targetData(): import("../config/types").MediaCenterTargetDataModel | null;
27
31
  get playerColors(): {
28
32
  brand: string | null;
@@ -38,13 +42,27 @@ export declare class MediaCenterContext {
38
42
  } | null;
39
43
  get loading(): boolean;
40
44
  get overlayIsActive(): boolean;
45
+ get backgroundWrapperProps(): {
46
+ backgroundDisabled: boolean;
47
+ backgroundImageUrl: string | null;
48
+ backgroundColor?: string | null;
49
+ };
50
+ get feedPlayerProps(): import("./types").PlayerProps | null;
41
51
  toggleMenu: () => void;
42
52
  showMenu: () => void;
43
53
  hideMenu: () => void;
44
- activateDiscover: () => Promise<void>;
45
- activateFeed: (options?: {
46
- categoryId?: string | null;
54
+ activateDiscover: (options: {
55
+ categoryId: string | null;
47
56
  }) => Promise<void>;
57
+ playPostsFeed: (options: Parameters<FeedHandler["activatePostsFeed"]>[0]) => Promise<void>;
58
+ playStreamsFeed: (options: Parameters<FeedHandler["activateStreamsFeed"]>[0]) => Promise<void>;
59
+ playRootFeed: () => Promise<void>;
48
60
  tryActivateStreamsInCategory: (categoryId: string) => Promise<void>;
61
+ private deactivateOtherThanFeed;
49
62
  private init;
50
63
  }
64
+ type MediaCenterContextInitializationCallbacks = {
65
+ initialized: (instance: MediaCenterContext) => void;
66
+ failed: () => void;
67
+ };
68
+ export {};
@@ -1,30 +1,38 @@
1
- import { DiscoverPanelHandler } from './discover';
2
- import { CategoriesHandler, FeedHandler } from './handlers';
1
+ import { DiscoverViewHandler } from './discover';
2
+ import { FeedHandler } from './feed';
3
+ import { CategoriesHandler, MediaCenterSettingsHandler } from './handlers';
3
4
  import { PopularStreamsPanelHandler } from './menu';
4
5
  import { StreamsInCategoryPanelHandler } from './streams-in-category';
5
6
  export class MediaCenterContext {
6
7
  initializing = $state(true);
8
+ initialized = $state(false);
9
+ mediaCenterMode = $derived.by(() => {
10
+ if (this.discoverHandler.activated) {
11
+ return 'discover';
12
+ }
13
+ return 'feed';
14
+ });
7
15
  menuActive = $state(false);
8
16
  categoriesHandler = new CategoriesHandler();
9
- feedHandler = new FeedHandler();
17
+ feedHandler;
10
18
  discoverHandler;
11
19
  popularStreamsHandler;
12
20
  streamsInCategoryHandler;
13
21
  categoryFollowingHandler = $state.raw(null);
22
+ settingsHandler;
23
+ closeOrchestrator;
14
24
  _mediaCenterConfig = $state.raw(null);
15
25
  constructor(data) {
16
- const { config, followingHandler, on } = data;
17
- this.discoverHandler = new DiscoverPanelHandler(config);
26
+ const { config, closeOrchestrator, settings, on } = data;
27
+ this.closeOrchestrator = closeOrchestrator;
28
+ this.closeOrchestrator.setCloseTriggerAttached(true);
29
+ this.settingsHandler = new MediaCenterSettingsHandler(settings);
30
+ this.feedHandler = new FeedHandler({ config, mediaCenterSettingsHandler: this.settingsHandler, closeOrchestrator });
31
+ this.discoverHandler = new DiscoverViewHandler(config);
18
32
  this.popularStreamsHandler = new PopularStreamsPanelHandler(config);
19
33
  this.streamsInCategoryHandler = new StreamsInCategoryPanelHandler(config);
20
- this.categoryFollowingHandler = followingHandler || null;
21
- this.init(config, on.initialized);
22
- }
23
- get mediaCenterEffective() {
24
- return !this.initializing && this.categoriesHandler.categories.length > 0;
25
- }
26
- get logo() {
27
- return this._mediaCenterConfig?.logo || null;
34
+ this.categoryFollowingHandler = config.handlers?.categoriesFollowingHandler ?? null;
35
+ this.init(config, on);
28
36
  }
29
37
  get targetData() {
30
38
  return this._mediaCenterConfig?.targetData || null;
@@ -36,7 +44,13 @@ export class MediaCenterContext {
36
44
  return this.discoverHandler.loading || this.streamsInCategoryHandler.loading;
37
45
  }
38
46
  get overlayIsActive() {
39
- return this.discoverHandler.activated || this.streamsInCategoryHandler.activated;
47
+ return this.streamsInCategoryHandler.activated;
48
+ }
49
+ get backgroundWrapperProps() {
50
+ return this.settingsHandler.backgroundWrapperProps;
51
+ }
52
+ get feedPlayerProps() {
53
+ return this.feedHandler.feedPlayerProps;
40
54
  }
41
55
  toggleMenu = () => {
42
56
  if (this.menuActive) {
@@ -53,26 +67,39 @@ export class MediaCenterContext {
53
67
  hideMenu = () => {
54
68
  this.menuActive = false;
55
69
  };
56
- activateDiscover = async () => {
70
+ activateDiscover = async (options) => {
71
+ this.settingsHandler.updateBackgroundImageUrl('not-applicable');
57
72
  this.hideMenu();
58
73
  this.feedHandler.deactivate();
59
74
  this.streamsInCategoryHandler.deactivate();
60
- await this.discoverHandler.activate();
75
+ this.categoriesHandler.selectedCategoryId = options.categoryId;
76
+ const childCategories = this.categoriesHandler.allCategories.filter((c) => c.parentId === this.categoriesHandler.selectedCategoryId);
77
+ await this.discoverHandler.activate({
78
+ activeCategoryId: this.categoriesHandler.selectedCategoryId,
79
+ childCategories: childCategories.map((c) => ({ id: c.id, name: c.name }))
80
+ });
61
81
  };
62
- activateFeed = async (options) => {
63
- this.hideMenu();
64
- this.feedHandler.activate();
65
- this.discoverHandler.deactivate();
66
- this.streamsInCategoryHandler.deactivate();
67
- if (options?.categoryId !== undefined) {
68
- this.categoriesHandler.selectedCategoryId = options.categoryId;
82
+ playPostsFeed = async (options) => {
83
+ this.deactivateOtherThanFeed();
84
+ this.categoriesHandler.selectedCategoryId = options.filter?.categoryId ?? null;
85
+ this.feedHandler.activatePostsFeed(options);
86
+ };
87
+ playStreamsFeed = async (options) => {
88
+ this.deactivateOtherThanFeed();
89
+ this.categoriesHandler.selectedCategoryId = options.filter?.categoryId ?? null;
90
+ this.feedHandler.activateStreamsFeed(options);
91
+ };
92
+ playRootFeed = async () => {
93
+ this.deactivateOtherThanFeed();
94
+ this.categoriesHandler.selectedCategoryId = null;
95
+ if (this.feedPlayerProps?.type === 'streams') {
96
+ this.feedHandler.activateStreamsFeed({});
97
+ }
98
+ else {
99
+ this.feedHandler.activatePostsFeed({});
69
100
  }
70
101
  };
71
102
  tryActivateStreamsInCategory = async (categoryId) => {
72
- if (this.categoriesHandler.selectedCategoryId === categoryId) {
73
- this.activateFeed({ categoryId: null });
74
- return;
75
- }
76
103
  const selectedCategoryData = this.categoriesHandler.getCategoryData(categoryId);
77
104
  await this.streamsInCategoryHandler.activate(selectedCategoryData);
78
105
  this.hideMenu();
@@ -80,19 +107,28 @@ export class MediaCenterContext {
80
107
  this.discoverHandler.deactivate();
81
108
  this.categoriesHandler.selectedCategoryId = categoryId;
82
109
  };
83
- init = async (config, onInitilized) => {
84
- if (!config) {
85
- this.initializing = false;
86
- onInitilized();
87
- return;
88
- }
110
+ deactivateOtherThanFeed = () => {
111
+ this.hideMenu();
112
+ this.discoverHandler.deactivate();
113
+ this.streamsInCategoryHandler.deactivate();
114
+ };
115
+ init = async (config, on) => {
89
116
  try {
90
117
  this._mediaCenterConfig = await config.getConfig();
91
- this.categoriesHandler.init(this._mediaCenterConfig?.contentCategories || []);
118
+ if (!this._mediaCenterConfig) {
119
+ on.failed();
120
+ return;
121
+ }
122
+ this.categoriesHandler.init({ categories: this._mediaCenterConfig.contentCategories, tagAssociations: this._mediaCenterConfig.categoryTagAssociations });
123
+ this.settingsHandler.updatePlayerColors(this._mediaCenterConfig.playerColors);
124
+ on.initialized(this);
125
+ this.initialized = true;
126
+ }
127
+ catch {
128
+ on.failed();
92
129
  }
93
130
  finally {
94
131
  this.initializing = false;
95
- onInitilized();
96
132
  }
97
133
  };
98
134
  }
@@ -1,18 +1,9 @@
1
1
  import { type Locale } from '../../../core/locale';
2
2
  export declare class MenuLocalization {
3
- buttons: {
4
- cart: string;
5
- discover: string;
6
- feed: string;
7
- login: string;
8
- moments: string;
9
- webpage: string;
10
- };
11
- shortVideosSectionTitle: string;
12
3
  interestsSectionTitle: string;
13
- latestStreamsSectionTitle: string;
14
4
  popularStreamsSectionTitle: string;
15
- overviewLabel: string;
5
+ discoverLabel: string;
6
+ feedLabel: string;
16
7
  membersLabel: (count: number) => string;
17
8
  locale: Locale;
18
9
  constructor(locale: Locale);
@@ -1,76 +1,37 @@
1
1
  import {} from '../../../core/locale';
2
2
  export class MenuLocalization {
3
- buttons;
4
- shortVideosSectionTitle;
5
3
  interestsSectionTitle;
6
- latestStreamsSectionTitle;
7
4
  popularStreamsSectionTitle;
8
- overviewLabel;
5
+ discoverLabel;
6
+ feedLabel;
9
7
  membersLabel;
10
8
  locale;
11
9
  constructor(locale) {
12
- this.shortVideosSectionTitle = loc.shortVideosSectionTitle[locale];
13
10
  this.interestsSectionTitle = loc.interestsSectionTitle[locale];
14
- this.latestStreamsSectionTitle = loc.streamsSectionTitle[locale];
15
11
  this.popularStreamsSectionTitle = loc.popularStreamsSectionTitle[locale];
16
- this.overviewLabel = loc.overviewLabel[locale];
17
- this.buttons = {
18
- cart: loc.cartButton[locale],
19
- discover: loc.discoverButton[locale],
20
- feed: loc.feedButton[locale],
21
- login: loc.loginButton[locale],
22
- moments: loc.momentsButton[locale],
23
- webpage: loc.webpageButton[locale]
24
- };
12
+ this.discoverLabel = loc.discoverLabel[locale];
13
+ this.feedLabel = loc.feedLabel[locale];
25
14
  this.membersLabel = loc.membersLabel[locale];
26
15
  this.locale = locale;
27
16
  }
28
17
  }
29
18
  const loc = {
30
- shortVideosSectionTitle: {
31
- en: 'Popular Short Videos',
32
- no: 'Populære korte videoer'
33
- },
34
19
  popularStreamsSectionTitle: {
35
20
  en: 'Popular Streams',
36
21
  no: 'Populære Streams'
37
22
  },
38
- streamsSectionTitle: {
39
- en: 'Latest Streams',
40
- no: 'Siste Streams'
41
- },
42
23
  interestsSectionTitle: {
43
24
  en: 'Interest Channels',
44
25
  no: 'Interessekanaler'
45
26
  },
46
- overviewLabel: {
47
- en: 'Overview',
48
- no: 'Oversikt'
49
- },
50
- discoverButton: {
27
+ discoverLabel: {
51
28
  en: 'Discover',
52
29
  no: 'Oppdag'
53
30
  },
54
- feedButton: {
31
+ feedLabel: {
55
32
  en: 'Feed',
56
33
  no: 'Feed'
57
34
  },
58
- cartButton: {
59
- en: 'Cart',
60
- no: 'Handlekurv'
61
- },
62
- loginButton: {
63
- en: 'Login',
64
- no: 'Logg inn'
65
- },
66
- momentsButton: {
67
- en: 'Moments',
68
- no: 'Øyeblikk'
69
- },
70
- webpageButton: {
71
- en: 'Webpage',
72
- no: 'Nettside'
73
- },
74
35
  membersLabel: {
75
36
  en: (count) => (count === 1 ? `Member` : `Members`),
76
37
  no: (count) => (count === 1 ? `Medlem` : `Medlemmer`)