@streamscloud/embeddable 7.0.1 → 7.0.2-1759149696160

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 (133) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +13 -12
  2. package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +2 -2
  3. package/dist/content-player/cmp.content-player.svelte +224 -0
  4. package/dist/content-player/cmp.content-player.svelte.d.ts +33 -0
  5. package/dist/content-player/content-player-config.svelte.d.ts +49 -0
  6. package/dist/content-player/content-player-config.svelte.js +43 -0
  7. package/dist/content-player/controls-and-attachments.svelte +275 -0
  8. package/dist/content-player/controls-and-attachments.svelte.d.ts +28 -0
  9. package/dist/content-player/fade-mixins.scss +12 -0
  10. package/dist/content-player/index.d.ts +2 -0
  11. package/dist/content-player/index.js +2 -0
  12. package/dist/content-player/overview-panel.svelte +85 -0
  13. package/dist/content-player/overview-panel.svelte.d.ts +10 -0
  14. package/dist/{streams/stream-player → content-player}/ui-manager.svelte.d.ts +10 -9
  15. package/dist/content-player/ui-manager.svelte.js +68 -0
  16. package/dist/index.d.ts +0 -1
  17. package/dist/index.js +0 -1
  18. package/dist/media-center/config/internal-media-center-config.js +2 -1
  19. package/dist/media-center/config/types.d.ts +1 -1
  20. package/dist/media-center/media-center/cmp.media-center.svelte +13 -9
  21. package/dist/media-center/media-center/overview.svelte +3 -2
  22. package/dist/media-center/media-center/short-video-resources-generator.d.ts +1 -1
  23. package/dist/media-center/model/types.d.ts +12 -0
  24. package/dist/posts/attachments/cmp.attachments.svelte +50 -0
  25. package/dist/{short-videos/short-video-viewer → posts/attachments}/cmp.attachments.svelte.d.ts +3 -3
  26. package/dist/posts/attachments/index.d.ts +1 -0
  27. package/dist/posts/attachments/index.js +1 -0
  28. package/dist/{short-videos/short-video-viewer/cmp.short-video-controls.svelte → posts/controls/cmp.controls.svelte} +21 -26
  29. package/dist/posts/controls/cmp.controls.svelte.d.ts +11 -0
  30. package/dist/posts/controls/index.d.ts +1 -0
  31. package/dist/posts/controls/index.js +1 -0
  32. package/dist/posts/index.d.ts +4 -0
  33. package/dist/posts/index.js +2 -0
  34. package/dist/posts/model/types.d.ts +13 -0
  35. package/dist/posts/model/types.js +1 -0
  36. package/dist/{short-videos/short-video-viewer/cmp.attachments-horizontal.svelte → posts/post-viewer/attachments-horizontal.svelte} +2 -3
  37. package/dist/posts/post-viewer/attachments-horizontal.svelte.d.ts +13 -0
  38. package/dist/posts/post-viewer/cmp.post-viewer.svelte +120 -0
  39. package/dist/{short-videos/short-video-viewer/cmp.short-video-viewer.svelte.d.ts → posts/post-viewer/cmp.post-viewer.svelte.d.ts} +3 -2
  40. package/dist/posts/post-viewer/heading.svelte +76 -0
  41. package/dist/posts/post-viewer/heading.svelte.d.ts +9 -0
  42. package/dist/posts/post-viewer/index.d.ts +4 -0
  43. package/dist/posts/post-viewer/index.js +3 -0
  44. package/dist/posts/post-viewer/mapper.d.ts +3 -0
  45. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/mapper.js +33 -17
  46. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/operations.generated.d.ts +2 -2
  47. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/operations.generated.js +2 -2
  48. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/operations.graphql +1 -1
  49. package/dist/posts/post-viewer/post-media.svelte +20 -0
  50. package/dist/posts/post-viewer/post-media.svelte.d.ts +12 -0
  51. package/dist/{short-videos/short-video-viewer/short-video-viewer-localization.d.ts → posts/post-viewer/post-viewer-localization.d.ts} +2 -3
  52. package/dist/{short-videos/short-video-viewer/short-video-viewer-localization.js → posts/post-viewer/post-viewer-localization.js} +3 -5
  53. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/types.d.ts +24 -25
  54. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/ui-manager.svelte.d.ts +5 -3
  55. package/dist/{short-videos/short-video-viewer → posts/post-viewer}/ui-manager.svelte.js +11 -4
  56. package/dist/posts/post-viewer/utils.d.ts +2 -0
  57. package/dist/posts/post-viewer/utils.js +13 -0
  58. package/dist/posts/social-interactions/index.d.ts +1 -0
  59. package/dist/posts/social-interactions/index.js +1 -0
  60. package/dist/posts/social-interactions/types.d.ts +9 -0
  61. package/dist/posts/social-interactions/types.js +1 -0
  62. package/dist/products/product-card/cmp.product-card.svelte +27 -8
  63. package/dist/products/product-card/cmp.product-card.svelte.d.ts +2 -1
  64. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte +11 -17
  65. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte.d.ts +1 -5
  66. package/dist/short-videos/short-videos-player/index.d.ts +20 -5
  67. package/dist/short-videos/short-videos-player/internal-short-video-analytics-handler.d.ts +1 -1
  68. package/dist/short-videos/short-videos-player/internal-short-video-analytics-handler.js +1 -1
  69. package/dist/short-videos/short-videos-player/internal-short-video-player-provider.d.ts +1 -1
  70. package/dist/short-videos/short-videos-player/mapper.js +2 -2
  71. package/dist/short-videos/short-videos-player/short-videos-player-view.svelte +50 -216
  72. package/dist/short-videos/short-videos-player/short-videos-player-view.svelte.d.ts +2 -9
  73. package/dist/short-videos/short-videos-player/types.d.ts +6 -7
  74. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +3 -3
  75. package/dist/streams/layout/models/index.d.ts +1 -1
  76. package/dist/streams/layout/models/index.js +1 -1
  77. package/dist/streams/layout/models/mapper.d.ts +2 -2
  78. package/dist/streams/layout/models/mapper.js +6 -6
  79. package/dist/streams/stream-player/index.d.ts +25 -4
  80. package/dist/streams/stream-player/internal-stream-analytics-handler.d.ts +2 -0
  81. package/dist/streams/stream-player/internal-stream-analytics-handler.js +2 -0
  82. package/dist/streams/stream-player/stream-overview.svelte +47 -122
  83. package/dist/streams/stream-player/stream-overview.svelte.d.ts +1 -4
  84. package/dist/streams/stream-player/stream-player-buffer.svelte.d.ts +1 -1
  85. package/dist/streams/stream-player/stream-player-localization.d.ts +1 -5
  86. package/dist/streams/stream-player/stream-player-localization.js +2 -10
  87. package/dist/streams/stream-player/stream-player-view.svelte +229 -0
  88. package/dist/streams/stream-player/stream-player-view.svelte.d.ts +8 -0
  89. package/dist/streams/stream-player/types.d.ts +4 -4
  90. package/dist/ui/{player → player-slider}/cmp.player-slider.svelte.d.ts +2 -10
  91. package/dist/ui/{player → player-slider}/types.d.ts +9 -0
  92. package/dist/ui/player-slider/types.js +1 -0
  93. package/package.json +1 -1
  94. package/dist/short-videos/short-video-viewer/cmp.attachments-horizontal.svelte.d.ts +0 -13
  95. package/dist/short-videos/short-video-viewer/cmp.attachments.svelte +0 -52
  96. package/dist/short-videos/short-video-viewer/cmp.short-video-controls.svelte.d.ts +0 -19
  97. package/dist/short-videos/short-video-viewer/cmp.short-video-heading.svelte +0 -89
  98. package/dist/short-videos/short-video-viewer/cmp.short-video-heading.svelte.d.ts +0 -9
  99. package/dist/short-videos/short-video-viewer/cmp.short-video-product-card.svelte +0 -26
  100. package/dist/short-videos/short-video-viewer/cmp.short-video-product-card.svelte.d.ts +0 -16
  101. package/dist/short-videos/short-video-viewer/cmp.short-video-viewer.svelte +0 -146
  102. package/dist/short-videos/short-video-viewer/index.d.ts +0 -5
  103. package/dist/short-videos/short-video-viewer/index.js +0 -4
  104. package/dist/short-videos/short-video-viewer/mapper.d.ts +0 -3
  105. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.d.ts +0 -5
  106. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.js +0 -7
  107. package/dist/short-videos/short-videos-player/controls.svelte +0 -261
  108. package/dist/short-videos/short-videos-player/controls.svelte.d.ts +0 -22
  109. package/dist/short-videos/short-videos-player/fade-mixins.scss +0 -12
  110. package/dist/short-videos/short-videos-player/short-videos-player-localization.d.ts +0 -7
  111. package/dist/short-videos/short-videos-player/short-videos-player-localization.js +0 -11
  112. package/dist/short-videos/short-videos-player/ui-manager.svelte.d.ts +0 -24
  113. package/dist/short-videos/short-videos-player/ui-manager.svelte.js +0 -47
  114. package/dist/streams/cmp.stream-product-card.svelte +0 -25
  115. package/dist/streams/cmp.stream-product-card.svelte.d.ts +0 -16
  116. package/dist/streams/stream-player/controls.svelte +0 -301
  117. package/dist/streams/stream-player/controls.svelte.d.ts +0 -20
  118. package/dist/streams/stream-player/fade-mixins.scss +0 -12
  119. package/dist/streams/stream-player/stream-player.svelte +0 -393
  120. package/dist/streams/stream-player/stream-player.svelte.d.ts +0 -16
  121. package/dist/streams/stream-player/ui-manager.svelte.js +0 -63
  122. /package/dist/{streams/stream-player → content-player}/button-mixins.scss +0 -0
  123. /package/dist/{ui/player → media-center/model}/types.js +0 -0
  124. /package/dist/{short-videos/short-video-viewer → posts/post-viewer}/types.js +0 -0
  125. /package/dist/ui/{player → player-slider}/cmp.player-slider.svelte +0 -0
  126. /package/dist/ui/{player → player-slider}/index.d.ts +0 -0
  127. /package/dist/ui/{player → player-slider}/index.js +0 -0
  128. /package/dist/ui/{player → player-slider}/player-buffer.svelte.d.ts +0 -0
  129. /package/dist/ui/{player → player-slider}/player-buffer.svelte.js +0 -0
  130. /package/dist/ui/{player → player-slider}/prevent-slider-scroll.d.ts +0 -0
  131. /package/dist/ui/{player → player-slider}/prevent-slider-scroll.js +0 -0
  132. /package/dist/ui/{player → player-slider}/wheel-gestures-adapter.d.ts +0 -0
  133. /package/dist/ui/{player → player-slider}/wheel-gestures-adapter.js +0 -0
@@ -1,25 +1,19 @@
1
- <script lang="ts">import { MediaCenter, MediaCenterMode } from '../../media-center/media-center';
2
- import { createShadowRoot } from '../../ui/shadow-dom';
1
+ <script lang="ts">import { createShadowRoot } from '../../ui/shadow-dom';
2
+ import { default as ShortVideoPlayerView } from './short-videos-player-view.svelte';
3
3
  import { mount, unmount } from 'svelte';
4
- let { dataProvider, socialInteractionsHandler, locale, showStreamsCloudWatermark, disableBackground, analyticsHandler, on, mediaCenterConfig } = $props();
4
+ let { dataProvider, socialInteractionsHandler, locale, showStreamsCloudWatermark, disableBackground, analyticsHandler, on } = $props();
5
5
  const initHost = (node) => {
6
6
  const shadowRoot = createShadowRoot(node);
7
- const mounted = mount(MediaCenter, {
7
+ const mounted = mount(ShortVideoPlayerView, {
8
8
  target: shadowRoot,
9
9
  props: {
10
- config: mediaCenterConfig || null,
11
- playerProps: {
12
- mode: MediaCenterMode.ShortVideos,
13
- props: {
14
- dataProvider,
15
- socialInteractionsHandler,
16
- disableBackground,
17
- locale,
18
- showStreamsCloudWatermark,
19
- analyticsHandler,
20
- on
21
- }
22
- }
10
+ dataProvider,
11
+ socialInteractionsHandler,
12
+ disableBackground,
13
+ locale,
14
+ showStreamsCloudWatermark,
15
+ analyticsHandler,
16
+ on
23
17
  }
24
18
  });
25
19
  return {
@@ -1,8 +1,4 @@
1
- import type { IMediaCenterConfig } from '../../media-center/config/types';
2
1
  import type { ShortVideoPlayerProps } from './types';
3
- type $$ComponentProps = ShortVideoPlayerProps & {
4
- mediaCenterConfig?: IMediaCenterConfig;
5
- };
6
- declare const Cmp: import("svelte").Component<$$ComponentProps, {}, "">;
2
+ declare const Cmp: import("svelte").Component<ShortVideoPlayerProps, {}, "">;
7
3
  type Cmp = ReturnType<typeof Cmp>;
8
4
  export default Cmp;
@@ -1,9 +1,10 @@
1
+ import type { Locale } from '../../core/locale';
1
2
  import { type IMediaCenterConfig } from '../../media-center/config/types';
2
- import type { IPostSocialInteractionsHandler } from '../short-video-viewer';
3
- import type { IPlayerItemsProvider } from '../../ui/player';
3
+ import type { IPostSocialInteractionsHandler } from '../../posts';
4
+ import type { IPlayerItemsProvider } from '../../ui/player-slider';
4
5
  import { default as ShortVideosPlayer } from './cmp.short-videos-player.svelte';
5
6
  import { mapToShortVideoPlayerModel } from './mapper';
6
- import { type PlayerSettings, type IShortVideoAnalyticsHandler, type ShortVideoPlayerModel } from './types';
7
+ import { type IShortVideoAnalyticsHandler, type ShortVideoPlayerModel } from './types';
7
8
  export { ShortVideosPlayer, type ShortVideoPlayerModel };
8
9
  export type { IMediaCenterConfig, IPlayerItemsProvider, IShortVideoAnalyticsHandler };
9
10
  export { mapToShortVideoPlayerModel };
@@ -88,16 +89,30 @@ export { mapToShortVideoPlayerModel };
88
89
  * });
89
90
  * ```
90
91
  */
91
- export declare function openShortVideosPlayer(init: PlayerSettings & {
92
+ export declare function openShortVideosPlayer(init: {
92
93
  shortVideosProvider: IPlayerItemsProvider<ShortVideoPlayerModel>;
93
94
  mediaCenterConfig?: IMediaCenterConfig;
94
95
  analyticsHandler?: IShortVideoAnalyticsHandler;
95
96
  socialInteractionsHandler?: IPostSocialInteractionsHandler;
97
+ disableBackground?: boolean;
98
+ locale?: Locale;
99
+ showStreamsCloudWatermark?: boolean;
100
+ on?: {
101
+ playerClosed?: () => void;
102
+ videoActivated?: (id: string) => void;
103
+ };
96
104
  }): void;
97
- export declare function openShortVideosPlayer(init: PlayerSettings & {
105
+ export declare function openShortVideosPlayer(init: {
98
106
  ids: string[];
99
107
  initiator: string;
100
108
  graphqlOrigin?: string;
101
109
  initialId?: string;
102
110
  mediaPageId?: string;
111
+ disableBackground?: boolean;
112
+ locale?: Locale;
113
+ showStreamsCloudWatermark?: boolean;
114
+ on?: {
115
+ playerClosed?: () => void;
116
+ videoActivated?: (id: string) => void;
117
+ };
103
118
  }): void;
@@ -5,6 +5,6 @@ export declare class InternalShortVideoAnalyticsHandler implements IShortVideoAn
5
5
  trackShortVideoView: (videoId: string) => void;
6
6
  trackShortVideoProductImpression: (productId: string, videoId: string) => void;
7
7
  trackShortVideoProductClick: (productId: string, videoId: string) => void;
8
- trackAdImpression: (adId: string) => void;
9
8
  trackAdClick: (adId: string) => void;
9
+ trackAdImpression: (adId: string) => void;
10
10
  }
@@ -10,6 +10,6 @@ export class InternalShortVideoAnalyticsHandler {
10
10
  trackShortVideoView = (videoId) => AppEventsTracker.trackShortVideoView(videoId);
11
11
  trackShortVideoProductImpression = (productId, videoId) => AppEventsTracker.trackShortVideoProductImpression(productId, videoId);
12
12
  trackShortVideoProductClick = (productId, videoId) => AppEventsTracker.trackShortVideoProductClick(productId, videoId);
13
- trackAdImpression = (adId) => AppEventsTracker.trackAdImpression(adId);
14
13
  trackAdClick = (adId) => AppEventsTracker.trackAdClick(adId);
14
+ trackAdImpression = (adId) => AppEventsTracker.trackAdImpression(adId);
15
15
  }
@@ -1,4 +1,4 @@
1
- import type { IPlayerItemsProvider } from '../../ui/player';
1
+ import type { IPlayerItemsProvider } from '../../ui/player-slider';
2
2
  import type { ShortVideoPlayerModel } from './types';
3
3
  export declare class InternalShortVideoPlayerProvider implements IPlayerItemsProvider<ShortVideoPlayerModel> {
4
4
  initialData: IPlayerItemsProvider<ShortVideoPlayerModel>['initialData'];
@@ -1,7 +1,7 @@
1
1
  import { ProfileType } from '../../core/enums';
2
- import { mapToShortVideoViewerModel } from '../short-video-viewer';
2
+ import { mapToPostViewerModel } from '../../posts/post-viewer';
3
3
  export const mapToShortVideoPlayerModel = (payload) => {
4
- const viewerModel = mapToShortVideoViewerModel(payload);
4
+ const viewerModel = mapToPostViewerModel(payload);
5
5
  return {
6
6
  ...viewerModel,
7
7
  analyticsOrganizationId: payload.ownerProfile.type === ProfileType.Organization ? payload.ownerProfile.id : null
@@ -7,243 +7,77 @@
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { handleEsc } from '../../core/document.event-handlers';
10
+ import { ContentPlayer, ContentPlayerConfig } from '../../content-player';
11
11
  import { preloadImage } from '../../core/image-preloader';
12
- import { ShortVideoViewer } from '../short-video-viewer';
13
- import { Loading } from '../../ui/loading';
14
- import { PlayerBuffer, PlayerSlider } from '../../ui/player';
15
- import { SpotlightLayout } from '../../ui/spotlight-layout';
16
- import { SwipeIndicator } from '../../ui/swipe-indicator';
17
- import { default as Controls } from './controls.svelte';
12
+ import { getPostCoverImage } from '../../posts/post-viewer';
13
+ import { PlayerBuffer } from '../../ui/player-slider';
18
14
  import { InternalShortVideoPlayerProvider } from './internal-short-video-player-provider';
19
- import { ShortVideosPlayerLocalization } from './short-videos-player-localization';
20
- import { ShortVideosPlayerUiManager } from './ui-manager.svelte';
21
15
  import { untrack } from 'svelte';
22
- let { dataProvider, socialInteractionsHandler, locale = 'en', showStreamsCloudWatermark, disableBackground, analyticsHandler, on, categoriesSwitcher, playerLogo = null, fadeContent = false } = $props();
23
- const localization = $derived(new ShortVideosPlayerLocalization(locale));
24
- let everTouched = $state(false);
25
- let background = $state(null);
26
- let bufferIsLoading = $state(false);
27
- let buffer = $state.raw(null);
16
+ let { dataProvider, socialInteractionsHandler, locale = 'en', showStreamsCloudWatermark, disableBackground, analyticsHandler, on, mediaCenterData } = $props();
28
17
  $effect(() => {
29
18
  void dataProvider;
30
19
  untrack(() => {
20
+ contentPlayerConfig.playerBuffer = null;
31
21
  initBuffer(dataProvider);
32
22
  });
33
23
  });
24
+ $effect(() => contentPlayerConfig.updateMediaCenterData(mediaCenterData));
34
25
  const initBuffer = (dataProvider) => __awaiter(void 0, void 0, void 0, function* () {
35
- bufferIsLoading = true;
36
26
  if (dataProvider instanceof InternalShortVideoPlayerProvider) {
37
27
  yield dataProvider.prefetch();
38
28
  }
39
29
  new PlayerBuffer(dataProvider, {
40
30
  preloaded: (instance) => __awaiter(void 0, void 0, void 0, function* () {
41
31
  if (instance.loaded.length) {
42
- const coverUrl = resolveVideoCover(instance.loaded[0]);
32
+ const coverUrl = getPostCoverImage(instance.loaded[0]);
43
33
  yield preloadImage(coverUrl);
44
- background = coverUrl;
34
+ contentPlayerConfig.setBackgroundImageUrl(coverUrl);
45
35
  }
46
- buffer = instance;
47
- bufferIsLoading = false;
36
+ contentPlayerConfig.playerBuffer = instance;
48
37
  })
49
38
  });
50
39
  });
51
- const uiManager = new ShortVideosPlayerUiManager();
52
- const onItemActivated = (id) => {
53
- var _a;
54
- const shortVideo = buffer === null || buffer === void 0 ? void 0 : buffer.loaded.find((x) => x.id === id);
55
- if (!shortVideo) {
56
- return;
57
- }
58
- background = resolveVideoCover(shortVideo);
59
- if (shortVideo.analyticsOrganizationId) {
60
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.setOrganizationId(shortVideo.analyticsOrganizationId);
40
+ const contentPlayerConfig = new ContentPlayerConfig({
41
+ playerBuffer: null,
42
+ mappers: {
43
+ postModelFromCurrentItem: (item) => item
44
+ },
45
+ disableBackground,
46
+ locale,
47
+ showStreamsCloudWatermark,
48
+ socialInteractionsHandler,
49
+ mediaCenterData,
50
+ callbacks: {
51
+ close: on === null || on === void 0 ? void 0 : on.playerClosed,
52
+ productClick: (id, videoId) => {
53
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductClick(id, videoId);
54
+ },
55
+ productImpression: (id, videoId) => {
56
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductImpression(id, videoId);
57
+ },
58
+ adClick: (id) => {
59
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdClick(id);
60
+ },
61
+ adImpression: (id) => {
62
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdImpression(id);
63
+ }
64
+ },
65
+ playerSliderCallbacks: {
66
+ itemActivated: (id) => {
67
+ var _a, _b;
68
+ const shortVideo = (_a = contentPlayerConfig.playerBuffer) === null || _a === void 0 ? void 0 : _a.loaded.find((x) => x.id === id);
69
+ if (!shortVideo) {
70
+ return;
71
+ }
72
+ contentPlayerConfig.setBackgroundImageUrl(getPostCoverImage(shortVideo));
73
+ if (shortVideo.analyticsOrganizationId) {
74
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.setOrganizationId(shortVideo.analyticsOrganizationId);
75
+ }
76
+ analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoView(id);
77
+ (_b = on === null || on === void 0 ? void 0 : on.videoActivated) === null || _b === void 0 ? void 0 : _b.call(on, id);
78
+ }
61
79
  }
62
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoView(id);
63
- (_a = on === null || on === void 0 ? void 0 : on.videoActivated) === null || _a === void 0 ? void 0 : _a.call(on, id);
64
- };
65
- const resolveVideoCover = (shortVideo) => {
66
- return shortVideo.media.isImage ? shortVideo.media.url : shortVideo.media.thumbnailUrl;
67
- };
68
- const contentMounted = (node) => {
69
- const markAsTouched = () => {
70
- everTouched = true;
71
- node.removeEventListener('touchstart', markAsTouched);
72
- node.removeEventListener('wheel', markAsTouched);
73
- node.removeEventListener('click', markAsTouched);
74
- node.removeEventListener('keypress', markAsTouched);
75
- };
76
- node.addEventListener('touchstart', markAsTouched);
77
- node.addEventListener('wheel', markAsTouched);
78
- node.addEventListener('click', markAsTouched);
79
- node.addEventListener('keypress', markAsTouched);
80
- };
81
- const handleDimensionsChanged = (dimensions) => {
82
- uiManager.updateDimensions({
83
- mainViewColumnWidth: dimensions.mainSceneWidth,
84
- viewTotalWidth: dimensions.totalWidth
85
- });
86
- };
87
- const onMediaCenterHeaderMounted = (data) => {
88
- uiManager.updateMediaCenterHeaderHeight(data.height);
89
- };
90
- const onPlayerClose = () => {
91
- var _a;
92
- (_a = on === null || on === void 0 ? void 0 : on.playerClosed) === null || _a === void 0 ? void 0 : _a.call(on);
93
- };
94
- const onShortVideoProductClick = (productId, videoId) => {
95
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductClick(productId, videoId);
96
- };
97
- const onShortVideoProductImpression = (productId, videoId) => {
98
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductImpression(productId, videoId);
99
- };
100
- const onShortVideoAdClick = (adId) => {
101
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdClick(adId);
102
- };
103
- const onShortVideoAdImpression = (adId) => {
104
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdImpression(adId);
105
- };
80
+ });
106
81
  </script>
107
82
 
108
- <svelte:document onkeydown={(e) => handleEsc(e, onPlayerClose)} />
109
-
110
- <div
111
- class="short-videos-player-container"
112
- class:short-videos-player-container--background-enabled={!disableBackground}
113
- class:short-videos-player-container--background-loading={!disableBackground && !background}
114
- class:short-videos-player-container--faded={fadeContent}
115
- style={background && !disableBackground ? `--background-image: url(${background})` : null}>
116
- {#if categoriesSwitcher}
117
- <div class="short-videos-player-container__media-center">
118
- {@render categoriesSwitcher({
119
- maxItemsWidth: Math.min(uiManager.mainViewColumnWidth * 1.4, uiManager.viewTotalWidth),
120
- onMounted: onMediaCenterHeaderMounted
121
- })}
122
- </div>
123
- {/if}
124
-
125
- <div class="short-videos-player" style={uiManager.globalCssVariables}>
126
- {#if showStreamsCloudWatermark}
127
- <div class="short-videos-player__watermark">
128
- <a href="https://streamscloud.com/" tabindex="-1" aria-label="none">
129
- <img src="https://embedabble-assets.streamscloud-cdn.com/watermark.svg" alt="StreamsCloud" />
130
- </a>
131
- </div>
132
- {/if}
133
- {#if buffer && !bufferIsLoading}
134
- <SpotlightLayout ratio={9 / 16} on={{ dimensionsChanged: handleDimensionsChanged }}>
135
- <div class="short-videos-player__content" use:contentMounted>
136
- <PlayerSlider
137
- buffer={buffer}
138
- on={{
139
- itemActivated: onItemActivated
140
- }}>
141
- {#snippet children({ item })}
142
- <ShortVideoViewer
143
- model={item}
144
- socialInteractionsHandler={socialInteractionsHandler}
145
- autoplay="on-appearance"
146
- showAttachments={uiManager.showShortVideoOverlayAttachments}
147
- showControls={uiManager.showShortVideoOverlayControls}
148
- locale={localization.shortVideoViewerLocale}
149
- on={{
150
- productClick: (productId) => onShortVideoProductClick(productId, item.id),
151
- productImpression: (productId, videoId) => onShortVideoProductImpression(productId, videoId),
152
- adClick: onShortVideoAdClick,
153
- adImpression: onShortVideoAdImpression
154
- }} />
155
- {/snippet}
156
- </PlayerSlider>
157
- {#if uiManager.isMobileView && buffer.loaded.length > 1 && !everTouched}
158
- <SwipeIndicator locale={localization.swipeIndicatorLocale} />
159
- {/if}
160
- </div>
161
- </SpotlightLayout>
162
- <Controls
163
- buffer={buffer}
164
- uiManager={uiManager}
165
- localization={localization}
166
- socialInteractionsHandler={socialInteractionsHandler}
167
- playerLogo={playerLogo}
168
- on={{
169
- closePlayer: on?.playerClosed,
170
- productClick: (productId) => onShortVideoProductClick(productId, buffer?.current?.id || ''),
171
- productImpression: onShortVideoProductImpression,
172
- adClick: onShortVideoAdClick,
173
- adImpression: onShortVideoAdImpression
174
- }} />
175
- {:else}
176
- <Loading positionFixedCenter={true} timeout={1000} />
177
- {/if}
178
- </div>
179
- </div>
180
-
181
- <style>@keyframes fadeIn {
182
- 0% {
183
- opacity: 1;
184
- }
185
- 50% {
186
- opacity: 0.4;
187
- }
188
- 100% {
189
- opacity: 1;
190
- }
191
- }
192
- .short-videos-player-container {
193
- --short-videos-player--elements-opacity: 1;
194
- width: 100%;
195
- min-width: 100%;
196
- max-width: 100%;
197
- height: 100%;
198
- min-height: 100%;
199
- max-height: 100%;
200
- container-type: inline-size;
201
- display: flex;
202
- position: relative;
203
- }
204
- .short-videos-player-container--background-enabled {
205
- background-color: #c1c1c1;
206
- background-image: var(--background-image);
207
- background-size: cover;
208
- background-blend-mode: multiply;
209
- }
210
- .short-videos-player-container--background-loading {
211
- background-color: transparent;
212
- }
213
- .short-videos-player-container--faded {
214
- --short-videos-player--elements-opacity: 0;
215
- }
216
- .short-videos-player-container__media-center {
217
- position: absolute;
218
- top: 0;
219
- left: 0;
220
- right: 0;
221
- z-index: 1;
222
- }
223
-
224
- .short-videos-player {
225
- display: flex;
226
- flex: 1;
227
- padding: var(--short-videos-player--padding);
228
- backdrop-filter: blur(30px);
229
- position: relative;
230
- /* Set 'container-type: inline-size;' to reference container*/
231
- }
232
- @container (width < 576px) {
233
- .short-videos-player {
234
- padding: 0;
235
- }
236
- }
237
- .short-videos-player__watermark {
238
- position: absolute;
239
- bottom: 5rem;
240
- left: 5rem;
241
- opacity: var(--short-videos-player--elements-opacity);
242
- transition: opacity 0.3s ease-in-out;
243
- }
244
- .short-videos-player__content {
245
- width: 100%;
246
- height: 100%;
247
- opacity: var(--short-videos-player--elements-opacity);
248
- transition: opacity 0.3s ease-in-out;
249
- }</style>
83
+ <ContentPlayer config={contentPlayerConfig} />
@@ -1,14 +1,7 @@
1
+ import type { MediaCenterData } from '../../media-center/model/types';
1
2
  import type { ShortVideoPlayerProps } from './types';
2
- import { type Snippet } from 'svelte';
3
3
  type $$ComponentProps = ShortVideoPlayerProps & {
4
- categoriesSwitcher?: Snippet<[{
5
- maxItemsWidth: number;
6
- onMounted: (data: {
7
- height: number;
8
- }) => void;
9
- }]>;
10
- playerLogo?: string | null;
11
- fadeContent?: boolean;
4
+ mediaCenterData?: MediaCenterData;
12
5
  };
13
6
  declare const ShortVideosPlayerView: import("svelte").Component<$$ComponentProps, {}, "">;
14
7
  type ShortVideosPlayerView = ReturnType<typeof ShortVideosPlayerView>;
@@ -1,23 +1,22 @@
1
1
  import type { Locale } from '../../core/locale';
2
- import type { ShortVideoViewerModel, IPostSocialInteractionsHandler } from '../short-video-viewer';
3
- import type { IPlayerItemsProvider } from '../../ui/player';
2
+ import type { IPostSocialInteractionsHandler } from '../../posts';
3
+ import type { PostViewerModel } from '../../posts/post-viewer';
4
+ import type { IPlayerItemsProvider } from '../../ui/player-slider';
4
5
  export interface IShortVideoAnalyticsHandler {
5
6
  setOrganizationId: (organizationId: string) => void;
6
7
  trackShortVideoView: (videoId: string) => void;
7
8
  trackShortVideoProductImpression: (productId: string, videoId: string) => void;
8
9
  trackShortVideoProductClick: (productId: string, videoId: string) => void;
9
- trackAdImpression: (adId: string) => void;
10
10
  trackAdClick: (adId: string) => void;
11
+ trackAdImpression: (adId: string) => void;
11
12
  }
12
- export type ShortVideoPlayerModel = ShortVideoViewerModel & {
13
+ export type ShortVideoPlayerModel = PostViewerModel & {
13
14
  analyticsOrganizationId: string | null;
14
15
  };
15
- export type ShortVideoPlayerProps = PlayerSettings & {
16
+ export type ShortVideoPlayerProps = {
16
17
  dataProvider: IPlayerItemsProvider<ShortVideoPlayerModel>;
17
18
  socialInteractionsHandler?: IPostSocialInteractionsHandler;
18
19
  analyticsHandler?: IShortVideoAnalyticsHandler;
19
- };
20
- export type PlayerSettings = {
21
20
  disableBackground?: boolean;
22
21
  locale?: Locale;
23
22
  showStreamsCloudWatermark?: boolean;
@@ -1,8 +1,8 @@
1
- <script lang="ts">import { ShortVideoViewer } from '../../../short-videos/short-video-viewer';
1
+ <script lang="ts">import { PostViewer } from '../../../posts/post-viewer';
2
2
  import { ShortVideoStreamElementLocalization } from './short-video-stream-element-localization';
3
- import { mapToShortVideoViewerModel } from '../models';
3
+ import { mapToPostViewerModel } from '../models';
4
4
  let { data, locale, on } = $props();
5
5
  const localization = $derived(new ShortVideoStreamElementLocalization(locale));
6
6
  </script>
7
7
 
8
- <ShortVideoViewer model={mapToShortVideoViewerModel(data)} autoplay={false} showControls={false} locale={localization.shortVideoViewerLocale} on={on} />
8
+ <PostViewer model={mapToPostViewerModel(data)} autoplay={false} showControls={false} locale={localization.shortVideoViewerLocale} on={on} />
@@ -1,4 +1,4 @@
1
- export { mapToShortVideoViewerModel } from './mapper';
1
+ export { mapToPostViewerModel } from './mapper';
2
2
  export type { StreamLayoutBlobModel } from './stream-layout-blob-model';
3
3
  export type { StreamLayoutMediaItemModel } from './stream-layout-media-item-model';
4
4
  export type { StreamLayoutPostHeaderModel } from './stream-layout-post-header-model';
@@ -1 +1 @@
1
- export { mapToShortVideoViewerModel } from './mapper';
1
+ export { mapToPostViewerModel } from './mapper';
@@ -1,3 +1,3 @@
1
- import type { ShortVideoViewerModel } from '../../../short-videos/short-video-viewer';
1
+ import type { PostViewerModel } from '../../../posts/post-viewer';
2
2
  import type { StreamLayoutShortVideoModel } from '../models/stream-layout-short-video-model';
3
- export declare const mapToShortVideoViewerModel: (model: StreamLayoutShortVideoModel) => ShortVideoViewerModel;
3
+ export declare const mapToPostViewerModel: (model: StreamLayoutShortVideoModel) => PostViewerModel;
@@ -1,13 +1,14 @@
1
1
  import { MediaType } from '../../../core/enums';
2
- export const mapToShortVideoViewerModel = (model) => {
2
+ export const mapToPostViewerModel = (model) => {
3
3
  return {
4
4
  id: model.id,
5
5
  media: model.media.type === MediaType.Image
6
- ? { isImage: true, url: model.media.url }
6
+ ? { type: 'image', url: model.media.url, isMutable: false }
7
7
  : {
8
- isImage: false,
8
+ type: 'video',
9
9
  url: model.media.url,
10
- thumbnailUrl: model.media.thumbnailUrl
10
+ thumbnailUrl: model.media.thumbnailUrl,
11
+ isMutable: true
11
12
  },
12
13
  text: model.text,
13
14
  heading: model.header && {
@@ -17,8 +18,7 @@ export const mapToShortVideoViewerModel = (model) => {
17
18
  viewsCount: model.header.postViewsCount
18
19
  },
19
20
  enableSocialInteractions: model.enableSocialInteractions,
20
- hasAttachments: !!(model.products.length || model.ad),
21
- ad: model.ad ? mapToAdViewModel(model.ad) : null,
21
+ ads: model.ad ? [mapToAdViewModel(model.ad)] : [],
22
22
  products: model.products.map(mapToProductCardModel)
23
23
  // uncomment if you want to test many products behavior
24
24
  // .flatMap(x =>
@@ -1,8 +1,9 @@
1
+ import type { Locale } from '../../core/locale';
1
2
  import { type IMediaCenterConfig } from '../../media-center/config/types';
2
- import type { IPostSocialInteractionsHandler } from '../../short-videos/short-video-viewer';
3
+ import type { IPostSocialInteractionsHandler } from '../../posts';
3
4
  import type { StreamPageViewerModel } from '../stream-page-viewer/types';
4
5
  import { mapToStreamPlayerModel } from './mapper';
5
- import type { IStreamAnalyticsHandler, IStreamPlayerDataProvider, PlayerSettings, StreamPlayerModel } from './types';
6
+ import type { IStreamAnalyticsHandler, IStreamPlayerDataProvider, StreamPlayerModel } from './types';
6
7
  export { type StreamPlayerModel, type StreamPageViewerModel, mapToStreamPlayerModel };
7
8
  export type { IStreamPlayerDataProvider, IStreamAnalyticsHandler, IMediaCenterConfig };
8
9
  /**
@@ -88,16 +89,36 @@ export type { IStreamPlayerDataProvider, IStreamAnalyticsHandler, IMediaCenterCo
88
89
  * });
89
90
  * ```
90
91
  */
91
- export declare function openStreamPlayer(init: PlayerSettings & {
92
+ export declare function openStreamPlayer(init: {
92
93
  streamId: string;
93
94
  dataProvider: IStreamPlayerDataProvider;
94
95
  mediaCenterConfig?: IMediaCenterConfig;
95
96
  postSocialInteractionsHandler?: IPostSocialInteractionsHandler;
96
97
  analyticsHandler?: IStreamAnalyticsHandler;
98
+ disableBackground?: boolean;
99
+ locale?: Locale;
100
+ showStreamsCloudWatermark?: boolean;
101
+ on?: {
102
+ streamActivated?: (data: {
103
+ title: string;
104
+ image: string | null;
105
+ }) => void;
106
+ playerClosed?: () => void;
107
+ };
97
108
  }): void;
98
- export declare function openStreamPlayer(init: PlayerSettings & {
109
+ export declare function openStreamPlayer(init: {
99
110
  streamId: string;
100
111
  initiator: string;
101
112
  graphqlOrigin?: string;
102
113
  mediaPageId?: string;
114
+ disableBackground?: boolean;
115
+ locale?: Locale;
116
+ showStreamsCloudWatermark?: boolean;
117
+ on?: {
118
+ streamActivated?: (data: {
119
+ title: string;
120
+ image: string | null;
121
+ }) => void;
122
+ playerClosed?: () => void;
123
+ };
103
124
  }): void;
@@ -13,4 +13,6 @@ export declare class InternalStreamAnalyticsHandler implements IStreamAnalyticsH
13
13
  trackShortVideoProductImpression: (productId: string, videoId: string) => void;
14
14
  trackShortVideoProductClick: (productId: string, videoId: string) => void;
15
15
  trackShortVideoProgress: (pageId: string, videoId: string, progress: number, streamId: string) => void;
16
+ trackAdClick: (adId: string) => void;
17
+ trackAdImpression: (adId: string) => void;
16
18
  }
@@ -18,4 +18,6 @@ export class InternalStreamAnalyticsHandler {
18
18
  trackShortVideoProductImpression = (productId, videoId) => AppEventsTracker.trackShortVideoProductImpression(productId, videoId);
19
19
  trackShortVideoProductClick = (productId, videoId) => AppEventsTracker.trackShortVideoProductClick(productId, videoId);
20
20
  trackShortVideoProgress = (pageId, videoId, progress, streamId) => AppEventsTracker.trackShortVideoProgress(pageId, videoId, progress, streamId);
21
+ trackAdClick = (adId) => AppEventsTracker.trackAdClick(adId);
22
+ trackAdImpression = (adId) => AppEventsTracker.trackAdImpression(adId);
21
23
  }