@streamscloud/embeddable 11.0.0 → 12.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 (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 +27 -24
  15. package/dist/media-center/config/operations.generated.d.ts +10 -3
  16. package/dist/media-center/config/operations.generated.js +17 -6
  17. package/dist/media-center/config/operations.graphql +11 -4
  18. package/dist/media-center/config/types.d.ts +5 -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 +9 -3
  45. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +7 -4
  46. package/dist/media-center/media-center/handlers/index.d.ts +1 -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 +3 -7
  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 +31 -23
  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
@@ -1,10 +1,8 @@
1
1
  import { InternalMediaCenterConfig } from '../../media-center/config/internal-media-center-config';
2
2
  import {} from '../../media-center/config/types';
3
- import { MediaCenter } from '../../media-center/media-center';
4
3
  import { InternalPostAnalyticsHandler } from '../../posts/handlers';
4
+ import { openPostsPlayer } from '../../posts/posts-player';
5
5
  import { InternalShortVideoPlayerItemsProvider } from '../data-providers';
6
- import { ModalShadowHost } from '../../ui/shadow-dom';
7
- import { mount, unmount } from 'svelte';
8
6
  /**
9
7
  * Opens the short videos player modal.
10
8
  *
@@ -71,35 +69,30 @@ import { mount, unmount } from 'svelte';
71
69
  export async function openShortVideosPlayer(init) {
72
70
  const { ids, graphqlOrigin, initialId, initiator, playerSettings, on } = init;
73
71
  const dataProvider = new InternalShortVideoPlayerItemsProvider({ ids, graphqlOrigin, initialId, initiator });
74
- const mediaCenterConfig = init.mediaPageId ? new InternalMediaCenterConfig(init.mediaPageId, graphqlOrigin) : undefined;
72
+ const mediaCenterConfig = init.mediaPageId ? new InternalMediaCenterConfig({ mediaPageId: init.mediaPageId, graphqlOrigin, initiator }) : undefined;
75
73
  const analyticsHandler = new InternalPostAnalyticsHandler(graphqlOrigin);
76
- const shadowHost = new ModalShadowHost();
77
- const mounted = mount(MediaCenter, {
78
- target: shadowHost.shadowRoot,
79
- props: {
80
- config: mediaCenterConfig || null,
81
- playerProps: {
82
- mode: 'posts',
83
- props: {
84
- dataProvider,
85
- analyticsHandler,
86
- playerSettings: {
87
- hideCloseButton: playerSettings?.hideCloseButton,
88
- locale: playerSettings?.locale,
89
- showStreamsCloudWatermark: true
90
- },
91
- on: {
92
- playerClosed: async () => {
93
- await unmount(mounted);
94
- shadowHost.remove();
95
- if (on?.playerClosed) {
96
- on.playerClosed();
97
- }
98
- }
99
- }
100
- }
101
- }
102
- }
103
- });
104
- shadowHost.attachToBody();
74
+ if (mediaCenterConfig) {
75
+ openPostsPlayer({
76
+ postsProvider: dataProvider,
77
+ mediaCenterConfig,
78
+ playerSettings: {
79
+ hideCloseButton: playerSettings?.hideCloseButton,
80
+ locale: playerSettings?.locale,
81
+ showStreamsCloudWatermark: true
82
+ },
83
+ on
84
+ });
85
+ }
86
+ else {
87
+ openPostsPlayer({
88
+ postsProvider: dataProvider,
89
+ analyticsHandler,
90
+ playerSettings: {
91
+ hideCloseButton: playerSettings?.hideCloseButton,
92
+ locale: playerSettings?.locale,
93
+ showStreamsCloudWatermark: true
94
+ },
95
+ on
96
+ });
97
+ }
105
98
  }
@@ -70,9 +70,9 @@ const productModel = $derived.by(() => {
70
70
  {:else if model.type === StreamElementType.Stock}
71
71
  <StockStreamElementView model={model} locale={locale} />
72
72
  {:else if model.type === StreamElementType.Text}
73
- <TextStreamElementView model={model} />
73
+ <TextStreamElementView model={model} locale={locale} />
74
74
  {:else if model.type === StreamElementType.TextRef && data}
75
- <TextRefStreamElementView model={model} data={data} />
75
+ <TextRefStreamElementView model={model} data={data} locale={locale} />
76
76
  {:else if model.type === StreamElementType.WebView}
77
77
  <WebViewStreamElementView model={model} />
78
78
  {/if}
@@ -1,7 +1,7 @@
1
- <script lang="ts">import { LineClamp } from '../../../ui/line-clamp';
1
+ <script lang="ts">import { LineClamp, LineClampAuto } from '../../../ui/line-clamp';
2
2
  import { getStringValueByKey } from './data-by-key-accessor';
3
3
  import { generateTextStyles } from '../styles-transformer';
4
- let { model, data } = $props();
4
+ let { model, data, locale } = $props();
5
5
  const value = $derived.by(() => {
6
6
  const values = [];
7
7
  const value = getStringValueByKey(data, model.key);
@@ -19,5 +19,9 @@ const value = $derived.by(() => {
19
19
  </script>
20
20
 
21
21
  <div class="text-ref-stream-element" style={generateTextStyles(model.styles)}>
22
- <LineClamp value={value} maxLines={model.styles?.maxLines || 'auto'} />
22
+ {#if model.styles?.maxLines}
23
+ <LineClamp maxLines={model.styles?.maxLines} locale={locale}>{value}</LineClamp>
24
+ {:else}
25
+ <LineClampAuto locale={locale}>{value}</LineClampAuto>
26
+ {/if}
23
27
  </div>
@@ -1,8 +1,10 @@
1
+ import type { Locale } from '../../../core/locale';
1
2
  import type { TextRefStreamElementModel } from '../elements';
2
3
  import type { StreamSlotDataRef } from '../slot-data-ref';
3
4
  type Props = {
4
5
  model: TextRefStreamElementModel;
5
6
  data: StreamSlotDataRef;
7
+ locale: Locale;
6
8
  };
7
9
  declare const Cmp: import("svelte").Component<Props, {}, "">;
8
10
  type Cmp = ReturnType<typeof Cmp>;
@@ -1,11 +1,15 @@
1
- <script lang="ts">import { LineClamp } from '../../../ui/line-clamp';
1
+ <script lang="ts">import { LineClamp, LineClampAuto } from '../../../ui/line-clamp';
2
2
  import { generateTextStyles } from '../styles-transformer';
3
- let { model, placeholder } = $props();
3
+ let { model, locale, placeholder } = $props();
4
4
  </script>
5
5
 
6
6
  <div class="text-stream-element" style={generateTextStyles(model.styles)}>
7
7
  {#if model.value}
8
- <LineClamp value={model.value} maxLines={model.styles?.maxLines || 'auto'} />
8
+ {#if model.styles?.maxLines}
9
+ <LineClamp maxLines={model.styles?.maxLines} locale={locale}>{model.value}</LineClamp>
10
+ {:else}
11
+ <LineClampAuto locale={locale}>{model.value}</LineClampAuto>
12
+ {/if}
9
13
  {:else if placeholder}
10
14
  {@render placeholder()}
11
15
  {/if}
@@ -1,8 +1,10 @@
1
+ import type { Locale } from '../../../core/locale';
1
2
  import type { TextStreamElementModel } from '../elements';
2
3
  import type { Snippet } from 'svelte';
3
4
  type Props = {
4
5
  model: TextStreamElementModel;
5
6
  placeholder?: Snippet;
7
+ locale: Locale;
6
8
  };
7
9
  declare const Cmp: import("svelte").Component<Props, {}, "">;
8
10
  type Cmp = ReturnType<typeof Cmp>;
@@ -138,12 +138,12 @@ $effect(() => {
138
138
  {/if}
139
139
  {#if model.textAfter}
140
140
  <div class="price-stream-element__text-after" style={textAfterCustomStyles}>
141
- <LineClamp value={model.textAfter} maxLines={1} />
141
+ <LineClamp maxLines={1} locale={localization.locale}>{model.textAfter}</LineClamp>
142
142
  </div>
143
143
  {/if}
144
144
  </div>
145
145
  {#if model.stock}
146
- <StockElementView model={model.stock} heightOverrideDdu={stockElementHeight} locale={localization.stockLocalization} />
146
+ <StockElementView model={model.stock} heightOverrideDdu={stockElementHeight} locale={localization.locale} />
147
147
  {/if}
148
148
  </div>
149
149
 
@@ -2,6 +2,6 @@ import { type Locale } from '../../../core/locale';
2
2
  export declare class PriceStreamElementLocalization {
3
3
  saveValue: (value: string | number) => string;
4
4
  beforeValue: (value: string) => string;
5
- stockLocalization: Locale;
5
+ locale: Locale;
6
6
  constructor(locale: Locale);
7
7
  }
@@ -2,11 +2,11 @@ import {} from '../../../core/locale';
2
2
  export class PriceStreamElementLocalization {
3
3
  saveValue;
4
4
  beforeValue;
5
- stockLocalization;
5
+ locale;
6
6
  constructor(locale) {
7
7
  this.saveValue = loc.saveValue[locale];
8
8
  this.beforeValue = loc.beforeValue[locale];
9
- this.stockLocalization = locale;
9
+ this.locale = locale;
10
10
  }
11
11
  }
12
12
  const loc = {
@@ -13,6 +13,8 @@ export const mapToPostModel = (model) => {
13
13
  kicker: null,
14
14
  title: null,
15
15
  text: model.text,
16
+ viewsCount: model.header?.postViewsCount ?? 0,
17
+ displayDate: model.header?.postDisplayDate ?? '',
16
18
  heading: model.header && {
17
19
  image: model.header.sourceImage,
18
20
  name: model.header.sourceName,
@@ -1,7 +1,8 @@
1
+ import type { Locale } from '../../core/locale';
1
2
  import { type IMediaCenterConfig } from '../../media-center/config/types';
2
3
  import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
3
4
  import type { StreamPageViewerModel } from '../stream-page-viewer/types';
4
- import type { IStreamAnalyticsHandler, IStreamsPlayerDataProvider, StreamAmplificationParameters, StreamPlayerModel, StreamsPlayerSettings } from './types';
5
+ import type { IStreamAnalyticsHandler, IStreamsPlayerDataProvider, StreamAmplificationParameters, StreamPlayerModel } from './types';
5
6
  export { type StreamPlayerModel, type StreamPageViewerModel };
6
7
  export { mapToStreamPlayerModel } from '../data-loaders/mapper';
7
8
  export type { IStreamsPlayerDataProvider, IStreamAnalyticsHandler, IMediaCenterConfig };
@@ -110,7 +111,19 @@ export type { IStreamsPlayerDataProvider, IStreamAnalyticsHandler, IMediaCenterC
110
111
  */
111
112
  export declare function openStreamsPlayer(init: {
112
113
  dataProvider: IStreamsPlayerDataProvider;
113
- mediaCenterConfig?: IMediaCenterConfig;
114
+ mediaCenterConfig: IMediaCenterConfig;
115
+ amplificationParameters?: StreamAmplificationParameters;
116
+ playerSettings?: StreamsPlayerSettings;
117
+ on?: {
118
+ streamActivated?: (data: {
119
+ title: string;
120
+ image: string | null;
121
+ }) => void;
122
+ playerClosed?: () => void;
123
+ };
124
+ }): void;
125
+ export declare function openStreamsPlayer(init: {
126
+ dataProvider: IStreamsPlayerDataProvider;
114
127
  postSocialInteractionsHandler?: IPostSocialInteractionsHandler;
115
128
  analyticsHandler?: IStreamAnalyticsHandler;
116
129
  amplificationParameters?: StreamAmplificationParameters;
@@ -139,3 +152,9 @@ export declare function openStreamsPlayer(init: {
139
152
  playerClosed?: () => void;
140
153
  };
141
154
  }): void;
155
+ export type StreamsPlayerSettings = {
156
+ disableBackground?: boolean;
157
+ locale?: Locale;
158
+ showStreamsCloudWatermark?: boolean;
159
+ hideCloseButton?: boolean;
160
+ };
@@ -2,9 +2,11 @@ import { toastrWarning } from '../../core/toastr';
2
2
  import { InternalMediaCenterConfig } from '../../media-center/config/internal-media-center-config';
3
3
  import {} from '../../media-center/config/types';
4
4
  import { MediaCenter } from '../../media-center/media-center';
5
+ import { CloseOrchestrator } from '../../ui/player/close-orchestrator';
5
6
  import { ModalShadowHost } from '../../ui/shadow-dom';
6
7
  import { InternalStreamAnalyticsHandler } from './internal-stream-analytics-handler';
7
8
  import { InternalStreamsPlayerDataProvider } from './internal-streams-player-data-provider';
9
+ import { default as StreamsPlayerView } from './streams-player-view.svelte';
8
10
  import { mount, unmount } from 'svelte';
9
11
  export {};
10
12
  export { mapToStreamPlayerModel } from '../data-loaders/mapper';
@@ -20,7 +22,7 @@ export function openStreamsPlayer(init) {
20
22
  }
21
23
  let mediaCenterConfig = init.mediaCenterConfig;
22
24
  if (!mediaCenterConfig && init.mediaPageId) {
23
- mediaCenterConfig = new InternalMediaCenterConfig(init.mediaPageId, graphqlOrigin);
25
+ mediaCenterConfig = new InternalMediaCenterConfig({ mediaPageId: init.mediaPageId, graphqlOrigin, initiator });
24
26
  }
25
27
  let analyticsHandler = init.analyticsHandler;
26
28
  if (!analyticsHandler && !init.dataProvider) {
@@ -28,35 +30,58 @@ export function openStreamsPlayer(init) {
28
30
  analyticsHandler = new InternalStreamAnalyticsHandler(graphqlOrigin);
29
31
  }
30
32
  const shadowHost = new ModalShadowHost();
31
- const mounted = mount(MediaCenter, {
32
- target: shadowHost.shadowRoot,
33
- props: {
34
- config: mediaCenterConfig || null,
35
- playerProps: {
36
- mode: 'streams',
37
- props: {
38
- dataProvider,
39
- analyticsHandler,
40
- amplificationParameters,
41
- playerSettings,
42
- postSocialInteractionsHandler,
43
- on: {
44
- streamActivated: (data) => {
33
+ let mounted;
34
+ const makeCloseOrchestrator = () => new CloseOrchestrator({
35
+ closeFn: async () => {
36
+ await unmount(mounted);
37
+ shadowHost.remove();
38
+ if (on?.playerClosed) {
39
+ on.playerClosed();
40
+ }
41
+ },
42
+ canClose: !playerSettings?.hideCloseButton
43
+ });
44
+ if (mediaCenterConfig) {
45
+ mounted = mount(MediaCenter, {
46
+ target: shadowHost.shadowRoot,
47
+ props: {
48
+ config: mediaCenterConfig,
49
+ settings: playerSettings,
50
+ modeProps: {
51
+ mode: 'streams',
52
+ props: {
53
+ dataProvider,
54
+ amplificationParameters,
55
+ onStreamActivated: (data) => {
45
56
  if (init.on?.streamActivated) {
46
57
  init.on.streamActivated({ title: data.title, image: data.image });
47
58
  }
48
- },
49
- playerClosed: async () => {
50
- await unmount(mounted);
51
- shadowHost.remove();
52
- if (on?.playerClosed) {
53
- on.playerClosed();
54
- }
59
+ }
60
+ }
61
+ },
62
+ closeOrchestrator: makeCloseOrchestrator()
63
+ }
64
+ });
65
+ }
66
+ else {
67
+ mounted = mount(StreamsPlayerView, {
68
+ target: shadowHost.shadowRoot,
69
+ props: {
70
+ dataProvider: { type: 'provider', provider: dataProvider },
71
+ analyticsHandler,
72
+ amplificationParameters,
73
+ playerSettings,
74
+ postSocialInteractionsHandler,
75
+ closeOrchestrator: makeCloseOrchestrator(),
76
+ on: {
77
+ streamActivated: (data) => {
78
+ if (init.on?.streamActivated) {
79
+ init.on.streamActivated({ title: data.title, image: data.image });
55
80
  }
56
81
  }
57
82
  }
58
83
  }
59
- }
60
- });
84
+ });
85
+ }
61
86
  shadowHost.attachToBody();
62
87
  }
@@ -42,7 +42,7 @@ let { buffer, activePageId, on } = $props();
42
42
  overflow-y: auto;
43
43
  overscroll-behavior: contain;
44
44
  padding-block: 0.9375rem 0;
45
- padding-inline: 0.9375rem 1.3125rem;
45
+ padding-inline: 0.9375rem;
46
46
  --_cross-browser-scrollbar--thumb-color: transparent;
47
47
  --_cross-browser-scrollbar--track-color: transparent;
48
48
  }
@@ -2,7 +2,5 @@ import type { StreamPageViewerModel } from '../stream-page-viewer';
2
2
  import { DefaultChunksPlayerBuffer } from '../../ui/player/providers';
3
3
  import type { IStreamsPlayerDataProvider, StreamPlayerModel } from './types';
4
4
  export declare class StreamsPlayerBuffer extends DefaultChunksPlayerBuffer<StreamPageViewerModel, StreamPlayerModel> {
5
- constructor(provider: IStreamsPlayerDataProvider, on?: {
6
- preloaded?: (self: StreamsPlayerBuffer) => void;
7
- });
5
+ constructor(provider: IStreamsPlayerDataProvider);
8
6
  }
@@ -1,6 +1,6 @@
1
1
  import { DefaultChunksPlayerBuffer } from '../../ui/player/providers';
2
2
  export class StreamsPlayerBuffer extends DefaultChunksPlayerBuffer {
3
- constructor(provider, on) {
3
+ constructor(provider) {
4
4
  super({
5
5
  kind: 'chunks',
6
6
  initialData: {
@@ -10,6 +10,6 @@ export class StreamsPlayerBuffer extends DefaultChunksPlayerBuffer {
10
10
  return await provider.loadMoreStreams();
11
11
  },
12
12
  loadChunkItems: provider.getStreamPages
13
- }, on);
13
+ });
14
14
  }
15
15
  }
@@ -17,7 +17,7 @@ import { default as Overview } from './stream-overview.svelte';
17
17
  import { StreamPlayerLocalization } from './stream-player-localization';
18
18
  import { StreamsPlayerBuffer } from './streams-player-buffer.svelte';
19
19
  import { untrack } from 'svelte';
20
- let { dataProvider, analyticsHandler, postSocialInteractionsHandler, amplificationParameters, playerSettings, on, mediaCenterData } = $props();
20
+ let { dataProvider, analyticsHandler, postSocialInteractionsHandler, amplificationParameters, playerSettings, closeOrchestrator, on } = $props();
21
21
  const localization = $derived(new StreamPlayerLocalization((_a = playerSettings === null || playerSettings === void 0 ? void 0 : playerSettings.locale) !== null && _a !== void 0 ? _a : 'en'));
22
22
  let currentStreamModel = $state(null);
23
23
  let activePageId = $derived.by(() => { var _a, _b; return (_b = (_a = buffer === null || buffer === void 0 ? void 0 : buffer.current) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : ''; });
@@ -33,11 +33,10 @@ $effect(() => {
33
33
  untrack(() => {
34
34
  buffer = null;
35
35
  contentPlayerConfig.playerBuffer = null;
36
- initPlayerBuffer();
36
+ initPlayerBuffer(dataProvider);
37
37
  });
38
38
  return () => { };
39
39
  });
40
- $effect(() => contentPlayerConfig.updateMediaCenterData(mediaCenterData));
41
40
  $effect(() => contentPlayerConfig.updateTrackingParams(currentStreamModel
42
41
  ? {
43
42
  streamId: currentStreamModel.id,
@@ -45,7 +44,8 @@ $effect(() => contentPlayerConfig.updateTrackingParams(currentStreamModel
45
44
  }
46
45
  : null));
47
46
  $effect(() => {
48
- const stream = buffer === null || buffer === void 0 ? void 0 : buffer.activeChunk.model;
47
+ var _a;
48
+ const stream = (_a = buffer === null || buffer === void 0 ? void 0 : buffer.activeChunk) === null || _a === void 0 ? void 0 : _a.model;
49
49
  untrack(() => {
50
50
  var _a;
51
51
  if (stream) {
@@ -77,20 +77,23 @@ const streamTrackingParams = $derived.by(() => {
77
77
  }
78
78
  : false;
79
79
  });
80
- const initPlayerBuffer = () => __awaiter(void 0, void 0, void 0, function* () {
81
- new StreamsPlayerBuffer(dataProvider, {
82
- preloaded: (instance) => __awaiter(void 0, void 0, void 0, function* () {
83
- if (instance.loaded.length) {
84
- const coverUrl = instance.loaded[0].cover;
85
- if (coverUrl) {
86
- yield preloadImage(coverUrl);
87
- }
88
- contentPlayerConfig.setBackgroundImageUrl(coverUrl);
89
- }
90
- buffer = instance;
91
- contentPlayerConfig.playerBuffer = instance;
92
- })
93
- });
80
+ const initPlayerBuffer = (dataProvider) => __awaiter(void 0, void 0, void 0, function* () {
81
+ let newBuffer;
82
+ if (dataProvider.type === 'buffer') {
83
+ newBuffer = dataProvider.buffer;
84
+ }
85
+ else {
86
+ newBuffer = new StreamsPlayerBuffer(dataProvider.provider);
87
+ }
88
+ if (newBuffer.loaded.length && (on === null || on === void 0 ? void 0 : on.backgroundImageLoaded)) {
89
+ const coverUrl = newBuffer.loaded[0].cover;
90
+ if (coverUrl) {
91
+ yield preloadImage(coverUrl);
92
+ }
93
+ on.backgroundImageLoaded(coverUrl);
94
+ }
95
+ buffer = newBuffer;
96
+ contentPlayerConfig.playerBuffer = newBuffer;
94
97
  });
95
98
  const contentPlayerConfig = new ContentPlayerConfig({
96
99
  playerBuffer: null,
@@ -103,10 +106,9 @@ const contentPlayerConfig = new ContentPlayerConfig({
103
106
  }
104
107
  },
105
108
  socialInteractionsHandler: postSocialInteractionsHandler,
106
- mediaCenterData,
107
109
  settings: new ContentPlayerSettings(playerSettings),
110
+ closeOrchestrator,
108
111
  callbacks: {
109
- close: on === null || on === void 0 ? void 0 : on.playerClosed,
110
112
  videoProgress: (pageId, videoId, progress) => {
111
113
  onProgress(pageId, videoId, progress);
112
114
  },
@@ -144,7 +146,9 @@ const onPageActivated = (id) => {
144
146
  return;
145
147
  }
146
148
  const page = activeChunk.items.find((x) => x.id === id);
147
- contentPlayerConfig.setBackgroundImageUrl((page === null || page === void 0 ? void 0 : page.cover) || null);
149
+ if (on === null || on === void 0 ? void 0 : on.backgroundImageLoaded) {
150
+ on.backgroundImageLoaded((page === null || page === void 0 ? void 0 : page.cover) || null);
151
+ }
148
152
  if (page) {
149
153
  analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackStreamPageView(id, activeChunk.model.id);
150
154
  if (page.type === 'short-video' && page.shortVideo) {
@@ -1,8 +1,4 @@
1
- import type { MediaCenterData } from '../../media-center/model/types';
2
1
  import type { StreamsPlayerProps } from './types';
3
- type $$ComponentProps = StreamsPlayerProps & {
4
- mediaCenterData?: MediaCenterData;
5
- };
6
- declare const StreamsPlayerView: import("svelte").Component<$$ComponentProps, {}, "">;
2
+ declare const StreamsPlayerView: import("svelte").Component<StreamsPlayerProps, {}, "">;
7
3
  type StreamsPlayerView = ReturnType<typeof StreamsPlayerView>;
8
4
  export default StreamsPlayerView;
@@ -1,6 +1,9 @@
1
- import type { IContentPlayerSettingsInitializer } from '../../content-player/content-player-settings';
1
+ import type { Locale } from '../../core/locale';
2
2
  import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
3
3
  import type { StreamPageViewerModel } from '../stream-page-viewer';
4
+ import type { ICloseOrchestrator } from '../../ui/player/close-orchestrator';
5
+ import type { PlayerColors } from '../../ui/player/colors';
6
+ import type { StreamsPlayerBuffer } from './streams-player-buffer.svelte';
4
7
  export type StreamPlayerModel = {
5
8
  id: string;
6
9
  title: string;
@@ -12,20 +15,31 @@ export type StreamPlayerModel = {
12
15
  pagesCount: number;
13
16
  };
14
17
  export type StreamsPlayerProps = {
15
- dataProvider: IStreamsPlayerDataProvider;
18
+ dataProvider: {
19
+ type: 'buffer';
20
+ buffer: StreamsPlayerBuffer;
21
+ } | {
22
+ type: 'provider';
23
+ provider: IStreamsPlayerDataProvider;
24
+ };
16
25
  postSocialInteractionsHandler?: IPostSocialInteractionsHandler;
17
26
  analyticsHandler?: IStreamAnalyticsHandler;
18
27
  amplificationParameters?: StreamAmplificationParameters;
19
28
  playerSettings?: StreamsPlayerSettings;
29
+ closeOrchestrator: ICloseOrchestrator;
20
30
  on?: {
21
31
  streamActivated?: (data: {
22
32
  title: string;
23
33
  image: string | null;
24
34
  }) => void;
25
- playerClosed?: () => void;
35
+ backgroundImageLoaded?: (imageUrl: string | null) => void;
26
36
  };
27
37
  };
28
- export type StreamsPlayerSettings = Pick<IContentPlayerSettingsInitializer, 'disableBackground' | 'hideCloseButton' | 'locale' | 'showStreamsCloudWatermark'>;
38
+ export type StreamsPlayerSettings = {
39
+ locale?: Locale;
40
+ showStreamsCloudWatermark?: boolean;
41
+ playerColors?: PlayerColors;
42
+ };
29
43
  export type StreamAmplificationParameters = {
30
44
  campaignId: string;
31
45
  campaignName: string;
@@ -0,0 +1,119 @@
1
+ <script lang="ts">import { LineClampLocalization } from './line-clamp-localization';
2
+ import { LineClampUtils } from './line-clamp-utils';
3
+ import { onDestroy, onMount } from 'svelte';
4
+ let { locale, enableShowMore = false, children } = $props();
5
+ const localization = $derived(new LineClampLocalization(locale !== null && locale !== void 0 ? locale : 'en'));
6
+ let parent;
7
+ let element;
8
+ let clampWrapperRef;
9
+ let isTruncated = $state(false);
10
+ let showingAllText = $state(false);
11
+ let resizeObserver = null;
12
+ const canShowMore = $derived(enableShowMore && isTruncated && !showingAllText);
13
+ onMount(() => {
14
+ let parentElement = element.parentElement;
15
+ if (!parentElement || !('clientHeight' in parentElement)) {
16
+ console.error('Unsupported parent for multiline clamper');
17
+ }
18
+ else {
19
+ parent = parentElement;
20
+ clamp();
21
+ resizeObserver = new ResizeObserver(clamp);
22
+ resizeObserver.observe(parent);
23
+ }
24
+ });
25
+ onDestroy(() => {
26
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
27
+ resizeObserver = null;
28
+ });
29
+ const clamp = () => {
30
+ isTruncated = clampWrapperRef.scrollHeight > clampWrapperRef.offsetHeight;
31
+ if (showingAllText) {
32
+ setClampValue('unset');
33
+ }
34
+ else {
35
+ const clampValue = LineClampUtils.calculateClampValue(parent);
36
+ setClampValue(clampValue.toString());
37
+ }
38
+ };
39
+ const setClampValue = (value) => {
40
+ clampWrapperRef.style.setProperty('-webkit-line-clamp', value);
41
+ };
42
+ const toggleShowMore = () => {
43
+ showingAllText = !showingAllText;
44
+ clamp();
45
+ };
46
+ </script>
47
+
48
+ <div
49
+ class="line-clamp"
50
+ class:line-clamp--clickable={canShowMore}
51
+ bind:this={element}
52
+ onclick={() => canShowMore && toggleShowMore()}
53
+ onmousedown={() => {}}
54
+ role="none">
55
+ <div class="line-clamp__wrapper-container">
56
+ <div class="line-clamp__wrapper" bind:this={clampWrapperRef}>
57
+ {@render children()}
58
+ </div>
59
+ <!--Testing new concept-->
60
+ <!--{#if enableShowMore && isTruncated && !showingAllText}
61
+ <button type="button" class="line-clamp__show-more-button line-clamp__show-more-button&#45;&#45;inline" onclick={toggleShowMore}>
62
+ {localization.showMore}
63
+ </button>
64
+ {/if}-->
65
+ </div>
66
+
67
+ {#if enableShowMore && showingAllText}
68
+ <button type="button" class="line-clamp__show-more-button" onclick={toggleShowMore}>
69
+ {localization.showLess}
70
+ </button>
71
+ {/if}
72
+ </div>
73
+
74
+ <style>.line-clamp {
75
+ width: 100%;
76
+ height: 100%;
77
+ display: flex;
78
+ flex-direction: column;
79
+ }
80
+ .line-clamp--clickable {
81
+ cursor: pointer;
82
+ pointer-events: auto;
83
+ }
84
+ .line-clamp__wrapper-container {
85
+ position: relative;
86
+ }
87
+ .line-clamp__wrapper {
88
+ display: -webkit-box;
89
+ overflow: hidden;
90
+ word-break: break-word;
91
+ white-space: var(--line-clamp-white-space, pre-line);
92
+ -webkit-box-orient: vertical;
93
+ }
94
+ .line-clamp__show-more-button {
95
+ font-size: 0.9em;
96
+ font-style: italic;
97
+ pointer-events: auto;
98
+ /*Testing new concept*/
99
+ /*&--inline {
100
+ position: absolute;
101
+ bottom: 0;
102
+ right: 0;
103
+ padding-left: 1em;
104
+
105
+ backdrop-filter:
106
+ brightness(2)
107
+ contrast(0.3)
108
+ saturate(0);
109
+
110
+ &::after {
111
+ content: '...';
112
+ position: absolute;
113
+ left: 0;
114
+ }
115
+ }*/
116
+ }
117
+ .line-clamp__show-more-button:not(.line-clamp__show-more-button--inline) {
118
+ margin-top: 0.5em;
119
+ }</style>