@streamscloud/embeddable 10.1.2 → 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 (204) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +30 -10
  2. package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +7 -0
  3. package/dist/content-player/cmp.content-player.svelte +67 -142
  4. package/dist/content-player/content-player-config.svelte.d.ts +14 -10
  5. package/dist/content-player/content-player-config.svelte.js +5 -20
  6. package/dist/content-player/content-player-settings.d.ts +7 -9
  7. package/dist/content-player/content-player-settings.js +12 -4
  8. package/dist/content-player/controls-and-attachments.svelte +63 -58
  9. package/dist/content-player/overview-panel.svelte +32 -74
  10. package/dist/content-player/overview-panel.svelte.d.ts +34 -7
  11. package/dist/content-player/ui-manager.svelte.d.ts +2 -6
  12. package/dist/content-player/ui-manager.svelte.js +3 -7
  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 -23
  15. package/dist/media-center/config/operations.generated.d.ts +23 -3
  16. package/dist/media-center/config/operations.generated.js +37 -6
  17. package/dist/media-center/config/operations.graphql +24 -4
  18. package/dist/media-center/config/types.d.ts +18 -2
  19. package/dist/media-center/media-center/cmp.media-center.svelte +213 -398
  20. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +2 -17
  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-view.svelte.d.ts +15 -0
  33. package/dist/media-center/media-center/discover/index.d.ts +2 -0
  34. package/dist/media-center/media-center/discover/index.js +2 -0
  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 +27 -0
  45. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +39 -0
  46. package/dist/media-center/media-center/handlers/index.d.ts +2 -0
  47. package/dist/media-center/media-center/handlers/index.js +2 -0
  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/index.d.ts +3 -0
  51. package/dist/media-center/media-center/header-footer/index.js +3 -0
  52. package/dist/media-center/media-center/header-footer/media-center-footer.svelte +73 -0
  53. package/dist/media-center/media-center/header-footer/media-center-footer.svelte.d.ts +7 -0
  54. package/dist/media-center/media-center/header-footer/media-center-header-localization.d.ts +13 -0
  55. package/dist/media-center/media-center/header-footer/media-center-header-localization.js +46 -0
  56. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +80 -0
  57. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte.d.ts +12 -0
  58. package/dist/media-center/media-center/header-footer/media-center-header.svelte +313 -0
  59. package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +12 -0
  60. package/dist/media-center/media-center/media-center-context.svelte.d.ts +68 -0
  61. package/dist/media-center/media-center/media-center-context.svelte.js +134 -0
  62. package/dist/media-center/media-center/{category-following-wrapper.svelte → menu/category-following-wrapper.svelte} +3 -2
  63. package/dist/media-center/media-center/{category-following-wrapper.svelte.d.ts → menu/category-following-wrapper.svelte.d.ts} +2 -2
  64. package/dist/media-center/media-center/menu/index.d.ts +2 -0
  65. package/dist/media-center/media-center/menu/index.js +2 -0
  66. package/dist/media-center/media-center/menu/menu-localization.d.ts +10 -0
  67. package/dist/media-center/media-center/menu/menu-localization.js +39 -0
  68. package/dist/media-center/media-center/menu/menu.svelte +353 -0
  69. package/dist/media-center/media-center/menu/menu.svelte.d.ts +14 -0
  70. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +10 -0
  71. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +23 -0
  72. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +41 -0
  73. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte.d.ts +7 -0
  74. package/dist/media-center/media-center/moments/index.d.ts +1 -0
  75. package/dist/media-center/media-center/moments/index.js +1 -0
  76. package/dist/media-center/media-center/streams-in-category/index.d.ts +2 -0
  77. package/dist/media-center/media-center/streams-in-category/index.js +2 -0
  78. package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.d.ts → streams-in-category/streams-in-category-panel-handler.svelte.d.ts} +5 -5
  79. package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.js → streams-in-category/streams-in-category-panel-handler.svelte.js} +5 -5
  80. package/dist/media-center/media-center/{streams-in-category-panel.svelte → streams-in-category/streams-in-category-panel.svelte} +1 -1
  81. package/dist/media-center/media-center/{streams-in-category-panel.svelte.d.ts → streams-in-category/streams-in-category-panel.svelte.d.ts} +1 -1
  82. package/dist/media-center/media-center/types.d.ts +44 -1
  83. package/dist/media-page/index.d.ts +121 -0
  84. package/dist/media-page/index.js +43 -0
  85. package/dist/posts/attachments/cmp.attachments.svelte +6 -3
  86. package/dist/posts/attachments/cmp.attachments.svelte.d.ts +6 -0
  87. package/dist/posts/controls/cmp.controls.svelte +51 -14
  88. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  89. package/dist/posts/data-loaders/operations.generated.d.ts +4 -0
  90. package/dist/posts/data-loaders/operations.generated.js +6 -2
  91. package/dist/posts/model/types.d.ts +2 -0
  92. package/dist/posts/post-viewer/cmp.post-viewer.svelte +29 -19
  93. package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +4 -0
  94. package/dist/posts/post-viewer/mapper.js +2 -0
  95. package/dist/posts/post-viewer/operations.generated.d.ts +2 -0
  96. package/dist/posts/post-viewer/operations.generated.js +3 -1
  97. package/dist/posts/post-viewer/operations.graphql +2 -0
  98. package/dist/posts/post-viewer/post-texts.svelte +3 -3
  99. package/dist/posts/posts-player/cmp.posts-player.svelte +20 -6
  100. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +18 -2
  101. package/dist/posts/posts-player/index.d.ts +18 -3
  102. package/dist/posts/posts-player/index.js +42 -89
  103. package/dist/posts/posts-player/posts-player-proxy.svelte +19 -0
  104. package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +22 -0
  105. package/dist/posts/posts-player/posts-player-view.svelte +20 -34
  106. package/dist/posts/posts-player/posts-player-view.svelte.d.ts +2 -6
  107. package/dist/posts/posts-player/types.d.ts +19 -6
  108. package/dist/products/product-card/cmp.product-card.svelte +39 -15
  109. package/dist/products/product-card/cmp.product-card.svelte.d.ts +6 -1
  110. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +160 -19
  111. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte.d.ts +2 -1
  112. package/dist/short-videos/short-video-card/localization.d.ts +5 -0
  113. package/dist/short-videos/short-video-card/localization.js +13 -0
  114. package/dist/short-videos/short-video-card/types.d.ts +4 -0
  115. package/dist/short-videos/short-videos-player/index.js +26 -33
  116. package/dist/streams/data-loaders/mapper.js +0 -5
  117. package/dist/streams/data-loaders/operations.generated.d.ts +0 -12
  118. package/dist/streams/data-loaders/operations.generated.js +0 -26
  119. package/dist/streams/data-loaders/operations.graphql +0 -6
  120. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +2 -1
  121. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte.d.ts +4 -0
  122. package/dist/streams/layout/element-views/cmp.stream-element.svelte +2 -2
  123. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte +7 -3
  124. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte.d.ts +2 -0
  125. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte +7 -3
  126. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte.d.ts +2 -0
  127. package/dist/streams/layout/element-views/price-element-view.svelte +2 -2
  128. package/dist/streams/layout/element-views/price-stream-element-localization.d.ts +1 -1
  129. package/dist/streams/layout/element-views/price-stream-element-localization.js +2 -2
  130. package/dist/streams/layout/models/mapper.js +2 -0
  131. package/dist/streams/stream-card/cmp.stream-card.svelte +5 -5
  132. package/dist/streams/streams-player/index.d.ts +21 -2
  133. package/dist/streams/streams-player/index.js +49 -24
  134. package/dist/streams/streams-player/stream-overview.svelte +6 -96
  135. package/dist/streams/streams-player/stream-overview.svelte.d.ts +0 -4
  136. package/dist/streams/streams-player/stream-player-localization.d.ts +0 -1
  137. package/dist/streams/streams-player/stream-player-localization.js +0 -6
  138. package/dist/streams/streams-player/streams-player-buffer.svelte.d.ts +1 -3
  139. package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -2
  140. package/dist/streams/streams-player/streams-player-view.svelte +25 -23
  141. package/dist/streams/streams-player/streams-player-view.svelte.d.ts +1 -5
  142. package/dist/streams/streams-player/types.d.ts +18 -8
  143. package/dist/ui/icon/cmp.icon.svelte +3 -2
  144. package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte +119 -0
  145. package/dist/ui/line-clamp/cmp.line-clamp-auto.svelte.d.ts +10 -0
  146. package/dist/ui/line-clamp/cmp.line-clamp.svelte +44 -72
  147. package/dist/ui/line-clamp/cmp.line-clamp.svelte.d.ts +3 -4
  148. package/dist/ui/line-clamp/index.d.ts +1 -0
  149. package/dist/ui/line-clamp/index.js +1 -0
  150. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +44 -0
  151. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +7 -0
  152. package/dist/ui/player/button/cmp.player-button.svelte +16 -5
  153. package/dist/ui/player/button/cmp.player-button.svelte.d.ts +3 -0
  154. package/dist/ui/player/button/cmp.player-buttons-group.svelte +27 -8
  155. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -0
  156. package/dist/ui/player/button/index.d.ts +1 -0
  157. package/dist/ui/player/button/index.js +1 -0
  158. package/dist/ui/player/close-orchestrator/close-orchestrator.svelte.d.ts +18 -0
  159. package/dist/ui/player/close-orchestrator/close-orchestrator.svelte.js +58 -0
  160. package/dist/ui/player/close-orchestrator/index.d.ts +2 -0
  161. package/dist/ui/player/close-orchestrator/index.js +1 -0
  162. package/dist/ui/player/close-orchestrator/types.d.ts +9 -0
  163. package/dist/ui/player/close-orchestrator/types.js +1 -0
  164. package/dist/ui/player/colors/index.d.ts +1 -0
  165. package/dist/ui/player/colors/index.js +1 -0
  166. package/dist/ui/player/colors/player-colors.d.ts +11 -0
  167. package/dist/ui/player/colors/player-colors.js +1 -0
  168. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.d.ts +2 -6
  169. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +11 -11
  170. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +2 -3
  171. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +5 -5
  172. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +3 -4
  173. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +16 -9
  174. package/dist/ui/player/providers/service.d.ts +2 -0
  175. package/dist/ui/player/providers/service.js +13 -0
  176. package/dist/ui/player/providers/types.d.ts +1 -0
  177. package/dist/ui/with-background/cmp.with-background.svelte +86 -0
  178. package/dist/ui/with-background/cmp.with-background.svelte.d.ts +10 -0
  179. package/dist/ui/with-background/index.d.ts +1 -0
  180. package/dist/ui/with-background/index.js +1 -0
  181. package/package.json +5 -1
  182. package/dist/content-player/content-player-localization.d.ts +0 -6
  183. package/dist/content-player/content-player-localization.js +0 -15
  184. package/dist/content-player/fade-mixins.scss +0 -12
  185. package/dist/content-player/header.svelte +0 -137
  186. package/dist/content-player/header.svelte.d.ts +0 -32
  187. package/dist/media-center/media-center/desktop-categories-selector.svelte +0 -132
  188. package/dist/media-center/media-center/desktop-categories-selector.svelte.d.ts +0 -12
  189. package/dist/media-center/media-center/discover-panel-handler.svelte.d.ts +0 -32
  190. package/dist/media-center/media-center/discover-panel-handler.svelte.js +0 -101
  191. package/dist/media-center/media-center/discover-panel.svelte +0 -133
  192. package/dist/media-center/media-center/discover-panel.svelte.d.ts +0 -15
  193. package/dist/media-center/media-center/media-center-handler.svelte.d.ts +0 -28
  194. package/dist/media-center/media-center/media-center-handler.svelte.js +0 -73
  195. package/dist/media-center/media-center/media-center-localization.d.ts +0 -10
  196. package/dist/media-center/media-center/media-center-localization.js +0 -39
  197. package/dist/media-center/media-center/mobile-controls-panel.svelte +0 -268
  198. package/dist/media-center/media-center/mobile-controls-panel.svelte.d.ts +0 -20
  199. package/dist/media-center/media-center/post-player-provider-generator.d.ts +0 -8
  200. package/dist/media-center/media-center/post-player-provider-generator.js +0 -32
  201. package/dist/media-center/media-center/streams-player-provider-generator.d.ts +0 -8
  202. package/dist/media-center/media-center/streams-player-provider-generator.js +0 -36
  203. package/dist/media-center/model/types.d.ts +0 -16
  204. /package/dist/media-center/{model → media-center/feed}/types.js +0 -0
@@ -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: 'stream',
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
  }
@@ -1,47 +1,9 @@
1
- <script lang="ts">import { Image, ImageRound } from '../../ui/image';
1
+ <script lang="ts">import { Image } from '../../ui/image';
2
2
  import { InfiniteScrolling } from '../../ui/infinite-scrolling';
3
- import { LineClamp } from '../../ui/line-clamp';
4
3
  import { ProportionalContainer } from '../../ui/proportional-container';
5
- import { TimeAgo } from '../../ui/time-ago';
6
- import { StreamPlayerLocalization } from './stream-player-localization';
7
- let { model, buffer, activePageId, on, localization } = $props();
4
+ let { buffer, activePageId, on } = $props();
8
5
  </script>
9
6
 
10
- <div class="stream-overview-info">
11
- <div class="stream-overview-owner">
12
- <div class="stream-overview-owner__image">
13
- <ImageRound src={model.header.image} />
14
- </div>
15
- <div class="stream-overview-owner__body">
16
- <div class="stream-overview-owner__name">
17
- <LineClamp maxLines={1}>
18
- {model.header.name}
19
- </LineClamp>
20
- </div>
21
- <div class="stream-overview-owner__meta">
22
- <LineClamp maxLines={1}>
23
- <TimeAgo date={model.publishedAt || model.createdAt} locale={localization.locale} />
24
- </LineClamp>
25
- </div>
26
- </div>
27
- </div>
28
- <div class="stream-overview-info__title">
29
- <LineClamp maxLines={2}>
30
- {model.title}
31
- </LineClamp>
32
- </div>
33
- {#if model.subTitle}
34
- <div class="stream-overview-info__subtitle">
35
- <LineClamp maxLines={3}>
36
- {model.subTitle}
37
- </LineClamp>
38
- </div>
39
- {/if}
40
- <div class="stream-overview-info__pages">
41
- {localization.pagesCount(model.pagesCount)}
42
- </div>
43
- </div>
44
-
45
7
  <div class="stream-overview-pages">
46
8
  {#if buffer.activeChunk}
47
9
  <InfiniteScrolling loadMore={buffer.activeChunk.loadMore}>
@@ -73,34 +35,14 @@ let { model, buffer, activePageId, on, localization } = $props();
73
35
  opacity: 1;
74
36
  }
75
37
  }
76
- .stream-overview-info {
77
- padding: 1rem;
78
- }
79
- .stream-overview-info__title {
80
- font-size: 1.125rem;
81
- line-height: 1.55;
82
- font-weight: 600;
83
- color: #ffffff;
84
- }
85
- .stream-overview-info__subtitle {
86
- font-size: 0.875rem;
87
- color: #ffffff;
88
- }
89
- .stream-overview-info__pages {
90
- font-size: 0.625rem;
91
- line-height: 1;
92
- font-weight: 400;
93
- letter-spacing: -0.0125rem;
94
- color: #999999;
95
- }
96
-
97
38
  .stream-overview-pages {
98
39
  display: flex;
99
40
  flex: 1;
100
41
  justify-content: center;
101
42
  overflow-y: auto;
102
43
  overscroll-behavior: contain;
103
- padding: 0.9375rem 0.9375rem 0;
44
+ padding-block: 0.9375rem 0;
45
+ padding-inline: 0.9375rem;
104
46
  --_cross-browser-scrollbar--thumb-color: transparent;
105
47
  --_cross-browser-scrollbar--track-color: transparent;
106
48
  }
@@ -137,7 +79,7 @@ let { model, buffer, activePageId, on, localization } = $props();
137
79
  .stream-overview-pages__grid {
138
80
  display: grid;
139
81
  width: 100%;
140
- grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr));
82
+ grid-template-columns: repeat(auto-fill, minmax(6.25rem, 1fr));
141
83
  gap: 1.25rem;
142
84
  }
143
85
  }
@@ -153,37 +95,5 @@ let { model, buffer, activePageId, on, localization } = $props();
153
95
  }
154
96
  }
155
97
  .stream-overview-pages__page--active {
156
- outline: 2px solid #5a8dec;
157
- }
158
-
159
- .stream-overview-owner {
160
- display: flex;
161
- gap: 0.5rem;
162
- margin-bottom: 0.5rem;
163
- }
164
- .stream-overview-owner__image {
165
- width: 2rem;
166
- min-width: 2rem;
167
- max-width: 2rem;
168
- height: 2rem;
169
- min-height: 2rem;
170
- max-height: 2rem;
171
- --image--rounded--inner--border-width: 0;
172
- --image--rounded--outer--border-color: #f2f2f3;
173
- --image--rounded--outer--border-width: 1px;
174
- }
175
- .stream-overview-owner__body {
176
- display: flex;
177
- flex-direction: column;
178
- justify-content: center;
179
- color: #ffffff;
180
- }
181
- .stream-overview-owner__name {
182
- font-size: 0.75rem;
183
- font-weight: 500;
184
- letter-spacing: -0.015625rem;
185
- }
186
- .stream-overview-owner__meta {
187
- font-size: 0.625rem;
188
- letter-spacing: -0.0125rem;
98
+ outline: 2px solid var(--brand-color, #5a8dec);
189
99
  }</style>
@@ -1,11 +1,7 @@
1
- import { StreamPlayerLocalization } from './stream-player-localization';
2
1
  import type { StreamsPlayerBuffer } from './streams-player-buffer.svelte';
3
- import type { StreamPlayerModel } from './types';
4
2
  type Props = {
5
- model: StreamPlayerModel;
6
3
  buffer: StreamsPlayerBuffer;
7
4
  activePageId: string;
8
- localization: StreamPlayerLocalization;
9
5
  on: {
10
6
  setCurrentItem: (index: number) => void;
11
7
  };
@@ -1,7 +1,6 @@
1
1
  import { type Locale } from '../../core/locale';
2
2
  export declare class StreamPlayerLocalization {
3
3
  streamNotFound: string;
4
- pagesCount: (count: number) => string;
5
4
  locale: Locale;
6
5
  constructor(locale: Locale);
7
6
  }
@@ -1,11 +1,9 @@
1
1
  import {} from '../../core/locale';
2
2
  export class StreamPlayerLocalization {
3
3
  streamNotFound;
4
- pagesCount;
5
4
  locale;
6
5
  constructor(locale) {
7
6
  this.streamNotFound = loc.streamNotFound[locale];
8
- this.pagesCount = loc.pagesCount[locale];
9
7
  this.locale = locale;
10
8
  }
11
9
  }
@@ -13,9 +11,5 @@ const loc = {
13
11
  streamNotFound: {
14
12
  en: 'Stream not found',
15
13
  no: 'Stream ikke funnet'
16
- },
17
- pagesCount: {
18
- en: (count) => (count === 1 ? '1 page' : `${count} pages`),
19
- no: (count) => (count === 1 ? '1 side' : `${count} sider`)
20
14
  }
21
15
  };
@@ -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) {
@@ -238,10 +242,8 @@ const stopActivityTracking = () => {
238
242
  {#snippet overviewPanelContent()}
239
243
  {#if contentPlayerConfig.playerBuffer && buffer && currentStreamModel}
240
244
  <Overview
241
- model={currentStreamModel}
242
245
  buffer={buffer}
243
246
  activePageId={activePageId}
244
- localization={localization}
245
247
  on={{
246
248
  setCurrentItem: handleChangePage
247
249
  }} />
@@ -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;
@@ -9,27 +12,34 @@ export type StreamPlayerModel = {
9
12
  createdAt: string;
10
13
  publishedAt: string | null;
11
14
  organizationId: string | null;
12
- header: {
13
- image: string | null;
14
- name: string;
15
- };
16
15
  pagesCount: number;
17
16
  };
18
17
  export type StreamsPlayerProps = {
19
- dataProvider: IStreamsPlayerDataProvider;
18
+ dataProvider: {
19
+ type: 'buffer';
20
+ buffer: StreamsPlayerBuffer;
21
+ } | {
22
+ type: 'provider';
23
+ provider: IStreamsPlayerDataProvider;
24
+ };
20
25
  postSocialInteractionsHandler?: IPostSocialInteractionsHandler;
21
26
  analyticsHandler?: IStreamAnalyticsHandler;
22
27
  amplificationParameters?: StreamAmplificationParameters;
23
28
  playerSettings?: StreamsPlayerSettings;
29
+ closeOrchestrator: ICloseOrchestrator;
24
30
  on?: {
25
31
  streamActivated?: (data: {
26
32
  title: string;
27
33
  image: string | null;
28
34
  }) => void;
29
- playerClosed?: () => void;
35
+ backgroundImageLoaded?: (imageUrl: string | null) => void;
30
36
  };
31
37
  };
32
- export type StreamsPlayerSettings = Pick<IContentPlayerSettingsInitializer, 'disableBackground' | 'hideCloseButton' | 'locale' | 'showStreamsCloudWatermark'>;
38
+ export type StreamsPlayerSettings = {
39
+ locale?: Locale;
40
+ showStreamsCloudWatermark?: boolean;
41
+ playerColors?: PlayerColors;
42
+ };
33
43
  export type StreamAmplificationParameters = {
34
44
  campaignId: string;
35
45
  campaignName: string;
@@ -30,6 +30,7 @@ let { src, color = null } = $props();
30
30
  .icon {
31
31
  --_icon--color: var(--icon--color);
32
32
  --_icon--size: var(--icon--size, 1.25em);
33
+ --_icon--stroke-color: var(--icon--stroke-color);
33
34
  --_icon--stroke-width: var(--icon--stroke-width, 0);
34
35
  --_icon--filter: var(--icon--filter, none);
35
36
  display: contents;
@@ -89,10 +90,10 @@ let { src, color = null } = $props();
89
90
  max-width: var(--_icon--size);
90
91
  }
91
92
  .icon :global(path) {
92
- stroke: var(--_icon--color);
93
+ stroke: var(--_icon--stroke-color, var(--_icon--color));
93
94
  stroke-width: var(--_icon--stroke-width);
94
95
  }
95
96
  :global([data-theme="dark"]) .icon :global(path) {
96
- stroke: var(--_icon--color);
97
+ stroke: var(--_icon--stroke-color, var(--_icon--color));
97
98
  stroke-width: var(--_icon--stroke-width);
98
99
  }</style>
@@ -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>
@@ -0,0 +1,10 @@
1
+ import type { Locale } from '../../core/locale';
2
+ import { type Snippet } from 'svelte';
3
+ type Props = {
4
+ enableShowMore?: boolean;
5
+ locale?: Locale;
6
+ children: Snippet;
7
+ };
8
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
9
+ type Cmp = ReturnType<typeof Cmp>;
10
+ export default Cmp;