@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
@@ -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>
@@ -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;
@@ -1,70 +1,44 @@
1
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 { value = undefined, maxLines = 3, 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;
2
+ import {} from 'svelte';
3
+ let { maxLines, locale, enableShowMore = false, children } = $props();
4
+ const localization = $derived(new LineClampLocalization(locale));
9
5
  let isTruncated = $state(false);
10
6
  let showingAllText = $state(false);
11
- let resizeObserver = null;
12
- onMount(() => {
13
- let parentElement = element.parentElement;
14
- if (!parentElement || !('clientHeight' in parentElement)) {
15
- console.error('Unsupported parent for multiline clamper');
16
- }
17
- else {
18
- parent = parentElement;
19
- clamp();
20
- resizeObserver = new ResizeObserver(clamp);
21
- resizeObserver.observe(parent);
22
- }
23
- });
24
- onDestroy(() => {
25
- resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
26
- resizeObserver = null;
27
- });
28
- const clamp = () => {
29
- isTruncated = clampWrapperRef.scrollHeight > clampWrapperRef.offsetHeight;
30
- if (showingAllText) {
31
- setClampValue('unset');
32
- }
33
- else {
34
- let clampValue;
35
- if (maxLines === 'auto') {
36
- clampValue = LineClampUtils.calculateClampValue(parent);
37
- }
38
- else {
39
- clampValue = maxLines;
40
- }
41
- setClampValue(clampValue.toString());
42
- }
43
- };
44
- const setClampValue = (value) => {
45
- clampWrapperRef.style.setProperty('-webkit-line-clamp', value);
46
- };
7
+ const canShowMore = $derived(enableShowMore && isTruncated && !showingAllText);
47
8
  const toggleShowMore = () => {
48
9
  showingAllText = !showingAllText;
49
- clamp();
50
10
  };
11
+ const trackTruncatatedState = (node) => {
12
+ const resizeObserver = new ResizeObserver(() => {
13
+ isTruncated = node.scrollHeight > node.offsetHeight;
14
+ });
15
+ resizeObserver.observe(node);
16
+ return {
17
+ destroy() {
18
+ resizeObserver.disconnect();
19
+ }
20
+ };
21
+ };
22
+ const styles = $derived.by(() => {
23
+ const values = [];
24
+ if (maxLines) {
25
+ values.push(`--line-clamp--line-clamp: ${maxLines}`);
26
+ }
27
+ return values.join(';');
28
+ });
51
29
  </script>
52
30
 
53
- <div class="line-clamp" bind:this={element}>
31
+ <div
32
+ class="line-clamp"
33
+ class:line-clamp--clickable={canShowMore}
34
+ style={styles}
35
+ onclick={() => canShowMore && toggleShowMore()}
36
+ onmousedown={() => {}}
37
+ role="none">
54
38
  <div class="line-clamp__wrapper-container">
55
- <div class="line-clamp__wrapper" bind:this={clampWrapperRef}>
56
- {#if children}
57
- {@render children()}
58
- {:else if value}
59
- {@html value}
60
- {/if}
39
+ <div class="line-clamp__wrapper" class:line-clamp__wrapper--showing-all={showingAllText} use:trackTruncatatedState>
40
+ {@render children()}
61
41
  </div>
62
-
63
- {#if enableShowMore && isTruncated && !showingAllText}
64
- <button type="button" class="line-clamp__show-more-button line-clamp__show-more-button--inline" onclick={toggleShowMore}>
65
- {localization.showMore}
66
- </button>
67
- {/if}
68
42
  </div>
69
43
 
70
44
  {#if enableShowMore && showingAllText}
@@ -75,11 +49,17 @@ const toggleShowMore = () => {
75
49
  </div>
76
50
 
77
51
  <style>.line-clamp {
52
+ --_line-clamp--white-space: var(--line-clamp--white-space, pre-line);
53
+ --_line-clamp--line-clamp: var(--line-clamp--line-clamp, 0);
78
54
  width: 100%;
79
55
  height: 100%;
80
56
  display: flex;
81
57
  flex-direction: column;
82
58
  }
59
+ .line-clamp--clickable {
60
+ cursor: pointer;
61
+ pointer-events: auto;
62
+ }
83
63
  .line-clamp__wrapper-container {
84
64
  position: relative;
85
65
  }
@@ -87,26 +67,18 @@ const toggleShowMore = () => {
87
67
  display: -webkit-box;
88
68
  overflow: hidden;
89
69
  word-break: break-word;
90
- white-space: var(--line-clamp-white-space, pre-line);
70
+ white-space: var(--_line-clamp--white-space);
91
71
  -webkit-box-orient: vertical;
72
+ line-clamp: var(--_line-clamp--line-clamp);
73
+ -webkit-line-clamp: var(--_line-clamp--line-clamp);
74
+ text-overflow: ellipsis;
75
+ }
76
+ .line-clamp__wrapper--showing-all {
77
+ --_line-clamp--line-clamp: none;
92
78
  }
93
79
  .line-clamp__show-more-button {
94
80
  font-size: 0.9em;
95
81
  font-style: italic;
96
82
  pointer-events: auto;
97
- }
98
- .line-clamp__show-more-button--inline {
99
- position: absolute;
100
- bottom: 0;
101
- right: 0;
102
- padding-left: 1em;
103
- backdrop-filter: blur(2px);
104
- }
105
- .line-clamp__show-more-button--inline::after {
106
- content: "...";
107
- position: absolute;
108
- left: 0;
109
- }
110
- .line-clamp__show-more-button:not(.line-clamp__show-more-button--inline) {
111
83
  margin-top: 0.5em;
112
84
  }</style>
@@ -1,11 +1,10 @@
1
1
  import type { Locale } from '../../core/locale';
2
2
  import { type Snippet } from 'svelte';
3
3
  type Props = {
4
- value?: string | null;
5
- maxLines?: number | 'auto';
4
+ maxLines?: number;
6
5
  enableShowMore?: boolean;
7
- locale?: Locale;
8
- children?: Snippet;
6
+ locale: Locale;
7
+ children: Snippet;
9
8
  };
10
9
  declare const Cmp: import("svelte").Component<Props, {}, "">;
11
10
  type Cmp = ReturnType<typeof Cmp>;
@@ -1 +1,2 @@
1
1
  export { default as LineClamp } from './cmp.line-clamp.svelte';
2
+ export { default as LineClampAuto } from './cmp.line-clamp-auto.svelte';
@@ -1 +1,2 @@
1
1
  export { default as LineClamp } from './cmp.line-clamp.svelte';
2
+ export { default as LineClampAuto } from './cmp.line-clamp-auto.svelte';
@@ -0,0 +1,44 @@
1
+ <script lang="ts">import { Icon } from '../../icon';
2
+ let { actions } = $props();
3
+ </script>
4
+
5
+ <div class="mobile-player-buttons-group">
6
+ {#each actions as action (action.icon)}
7
+ <button type="button" class="mobile-player-buttons-group__action" onclick={action.callback}>
8
+ <span class="mobile-player-buttons-group__action-icon">
9
+ <Icon src={action.icon} color={action.iconColor} />
10
+ </span>
11
+ </button>
12
+ {/each}
13
+ </div>
14
+
15
+ <style>@keyframes fadeIn {
16
+ 0% {
17
+ opacity: 1;
18
+ }
19
+ 50% {
20
+ opacity: 0.4;
21
+ }
22
+ 100% {
23
+ opacity: 1;
24
+ }
25
+ }
26
+ .mobile-player-buttons-group {
27
+ cursor: pointer;
28
+ display: flex;
29
+ flex-direction: column;
30
+ justify-content: center;
31
+ pointer-events: auto;
32
+ }
33
+ .mobile-player-buttons-group__action {
34
+ display: flex;
35
+ justify-content: center;
36
+ align-items: center;
37
+ padding: 1rem;
38
+ --icon--color: #ffffff;
39
+ --icon--size: 2rem;
40
+ --icon--filter: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
41
+ }
42
+ .mobile-player-buttons-group__action-icon {
43
+ display: block;
44
+ }</style>
@@ -0,0 +1,7 @@
1
+ import type { PlayerButtonsGroupAction } from './types';
2
+ type Props = {
3
+ actions: PlayerButtonsGroupAction[];
4
+ };
5
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
6
+ type Cmp = ReturnType<typeof Cmp>;
7
+ export default Cmp;
@@ -40,7 +40,6 @@ const styles = $derived.by(() => {
40
40
  align-items: center;
41
41
  background-color: var(--_player-button--color--inactive);
42
42
  transition: background-color 0.5s;
43
- border: 1px solid var(--_player-button--color);
44
43
  border-radius: 50%;
45
44
  --icon--color: #ffffff;
46
45
  --icon--size: 1.75rem;