@streamscloud/embeddable 1.1.11 → 2.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 (247) hide show
  1. package/dist/core/enums.d.ts +33 -0
  2. package/dist/core/enums.js +39 -0
  3. package/dist/core/graphql.d.ts +1 -1
  4. package/dist/core/graphql.js +2 -2
  5. package/dist/core/media/images-size-detector.service.d.ts +1 -1
  6. package/dist/core/media/images-size-detector.service.js +1 -1
  7. package/dist/core/media/index.d.ts +1 -1
  8. package/dist/core/media/index.js +1 -1
  9. package/dist/core/media/media-item-url.service.js +2 -1
  10. package/dist/core/media/types.d.ts +1 -16
  11. package/dist/core/media/types.js +1 -19
  12. package/dist/index.d.ts +1 -3
  13. package/dist/index.js +1 -3
  14. package/dist/products/price-helper.d.ts +2 -2
  15. package/dist/products/price-helper.js +20 -9
  16. package/dist/short-videos/short-video-viewer/cmp.ad.svelte +74 -0
  17. package/dist/{advertising/ad-view/cmp.ad-view.svelte.d.ts → short-videos/short-video-viewer/cmp.ad.svelte.d.ts} +2 -3
  18. package/dist/short-videos/short-video-viewer/cmp.attachments-inline.svelte +70 -0
  19. package/dist/{streams/components/images/cmp.images-component.svelte.d.ts → short-videos/short-video-viewer/cmp.attachments-inline.svelte.d.ts} +2 -2
  20. package/dist/short-videos/short-video-viewer/cmp.attachments.svelte +45 -48
  21. package/dist/short-videos/short-video-viewer/cmp.attachments.svelte.d.ts +4 -2
  22. package/dist/{streams/components/product/cmp.product-component.svelte → short-videos/short-video-viewer/cmp.product.svelte} +34 -26
  23. package/dist/short-videos/short-video-viewer/cmp.product.svelte.d.ts +10 -0
  24. package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte +31 -52
  25. package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte.d.ts +1 -1
  26. package/dist/short-videos/short-video-viewer/cmp.short-video-viewer.svelte +6 -6
  27. package/dist/short-videos/short-video-viewer/index.d.ts +6 -3
  28. package/dist/short-videos/short-video-viewer/index.js +4 -2
  29. package/dist/short-videos/short-video-viewer/mapper.js +35 -7
  30. package/dist/short-videos/short-video-viewer/operations.generated.d.ts +1 -1
  31. package/dist/short-videos/short-video-viewer/operations.generated.js +67 -103
  32. package/dist/short-videos/short-video-viewer/operations.graphql +29 -2
  33. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.svelte.d.ts +12 -0
  34. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.svelte.js +10 -0
  35. package/dist/short-videos/short-video-viewer/short-video-details-localization.svelte.d.ts +3 -4
  36. package/dist/short-videos/short-video-viewer/short-video-details-localization.svelte.js +4 -15
  37. package/dist/short-videos/short-video-viewer/short-video-product-localization.svelte.d.ts +7 -0
  38. package/dist/{products/product-card/product-card-localization.svelte.js → short-videos/short-video-viewer/short-video-product-localization.svelte.js} +1 -1
  39. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.d.ts +3 -0
  40. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.js +4 -7
  41. package/dist/short-videos/short-video-viewer/types.d.ts +29 -6
  42. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte +4 -4
  43. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte.d.ts +2 -2
  44. package/dist/short-videos/short-videos-player/controls.svelte +42 -35
  45. package/dist/short-videos/short-videos-player/controls.svelte.d.ts +1 -1
  46. package/dist/short-videos/short-videos-player/index.d.ts +28 -2
  47. package/dist/short-videos/short-videos-player/index.js +40 -1
  48. package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.d.ts +3 -9
  49. package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.js +2 -17
  50. package/dist/streams/layout/cmp.layout.svelte +34 -0
  51. package/dist/streams/{slots/cmp.stream-component-slot.svelte.d.ts → layout/cmp.layout.svelte.d.ts} +2 -2
  52. package/dist/streams/layout/cmp.slot-content.svelte +32 -0
  53. package/dist/streams/layout/cmp.slot-content.svelte.d.ts +9 -0
  54. package/dist/streams/layout/cmp.slot.svelte +26 -0
  55. package/dist/streams/layout/cmp.slot.svelte.d.ts +9 -0
  56. package/dist/streams/layout/component.d.ts +6 -0
  57. package/dist/streams/layout/component.js +1 -0
  58. package/dist/streams/layout/css-values.d.ts +10 -0
  59. package/dist/streams/layout/css-values.js +1 -0
  60. package/dist/streams/layout/element-views/cmp.container-stream-element.svelte +16 -0
  61. package/dist/streams/layout/element-views/cmp.container-stream-element.svelte.d.ts +11 -0
  62. package/dist/streams/layout/element-views/cmp.image-ref-stream-element.svelte +38 -0
  63. package/dist/streams/layout/element-views/cmp.image-ref-stream-element.svelte.d.ts +9 -0
  64. package/dist/streams/layout/element-views/cmp.images-stream-element.svelte +30 -0
  65. package/dist/streams/layout/element-views/cmp.images-stream-element.svelte.d.ts +9 -0
  66. package/dist/streams/layout/element-views/cmp.price-stream-element.svelte +97 -0
  67. package/dist/streams/layout/element-views/cmp.price-stream-element.svelte.d.ts +11 -0
  68. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +6 -0
  69. package/dist/streams/{components/product/cmp.product-component.svelte.d.ts → layout/element-views/cmp.short-video-stream-element.svelte.d.ts} +2 -3
  70. package/dist/streams/layout/element-views/cmp.spacer-stream-element.svelte +45 -0
  71. package/dist/streams/layout/element-views/cmp.spacer-stream-element.svelte.d.ts +9 -0
  72. package/dist/streams/layout/element-views/cmp.stream-element.svelte +60 -0
  73. package/dist/streams/layout/element-views/cmp.stream-element.svelte.d.ts +13 -0
  74. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte +23 -0
  75. package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte.d.ts +9 -0
  76. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte +8 -0
  77. package/dist/{ui/shadow-dom/cmp.shadow-dom.svelte.d.ts → streams/layout/element-views/cmp.text-stream-element.svelte.d.ts} +2 -2
  78. package/dist/streams/layout/element-views/data-by-key-accessor.d.ts +3 -0
  79. package/dist/streams/layout/element-views/data-by-key-accessor.js +55 -0
  80. package/dist/streams/layout/element-views/index.d.ts +11 -0
  81. package/dist/streams/layout/element-views/index.js +9 -0
  82. package/dist/streams/layout/element-views/price-stream-element-localization.svelte.d.ts +9 -0
  83. package/dist/streams/layout/element-views/price-stream-element-localization.svelte.js +8 -0
  84. package/dist/streams/layout/element-views/stream-element-localization.svelte.d.ts +8 -0
  85. package/dist/streams/layout/element-views/stream-element-localization.svelte.js +6 -0
  86. package/dist/streams/layout/elements.d.ts +51 -0
  87. package/dist/streams/layout/elements.js +1 -0
  88. package/dist/streams/layout/enums.d.ts +45 -0
  89. package/dist/streams/layout/enums.js +54 -0
  90. package/dist/streams/layout/index.d.ts +19 -0
  91. package/dist/streams/layout/index.js +15 -0
  92. package/dist/streams/layout/layout.d.ts +13 -0
  93. package/dist/streams/layout/models/index.d.ts +6 -0
  94. package/dist/streams/layout/models/index.js +1 -0
  95. package/dist/streams/layout/models/mapper.d.ts +3 -0
  96. package/dist/streams/layout/models/mapper.js +62 -0
  97. package/dist/streams/layout/models/stream-layout-blob-model.d.ts +4 -0
  98. package/dist/streams/layout/models/stream-layout-media-item-model.d.ts +6 -0
  99. package/dist/streams/layout/models/stream-layout-media-item-model.js +1 -0
  100. package/dist/streams/layout/models/stream-layout-post-header-model.d.ts +11 -0
  101. package/dist/streams/layout/models/stream-layout-post-header-model.js +1 -0
  102. package/dist/streams/layout/models/stream-layout-product-model.d.ts +19 -0
  103. package/dist/streams/layout/models/stream-layout-product-model.js +1 -0
  104. package/dist/streams/layout/models/stream-layout-short-video-model.d.ts +31 -0
  105. package/dist/streams/layout/models/stream-layout-short-video-model.js +1 -0
  106. package/dist/streams/layout/serializer.d.ts +3 -0
  107. package/dist/streams/layout/serializer.js +6 -0
  108. package/dist/streams/layout/slot-data-input.d.ts +14 -0
  109. package/dist/streams/layout/slot-data-input.js +1 -0
  110. package/dist/streams/layout/slot-data.d.ts +18 -0
  111. package/dist/streams/layout/slot-data.js +1 -0
  112. package/dist/streams/layout/slot.d.ts +16 -0
  113. package/dist/streams/layout/slot.js +1 -0
  114. package/dist/streams/layout/styles-transformer.d.ts +13 -0
  115. package/dist/streams/layout/styles-transformer.js +140 -0
  116. package/dist/streams/layout/styles.d.ts +43 -0
  117. package/dist/streams/layout/styles.js +1 -0
  118. package/dist/streams/layout/type-guards.d.ts +8 -0
  119. package/dist/streams/layout/type-guards.js +21 -0
  120. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte +8 -42
  121. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte.d.ts +0 -2
  122. package/dist/streams/stream-page-viewer/mapper.d.ts +1 -1
  123. package/dist/streams/stream-page-viewer/mapper.js +7 -8
  124. package/dist/streams/stream-page-viewer/operations.generated.d.ts +1 -104
  125. package/dist/streams/stream-page-viewer/operations.generated.js +2 -375
  126. package/dist/streams/stream-page-viewer/operations.graphql +1 -6
  127. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.d.ts +3 -0
  128. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.js +4 -7
  129. package/dist/streams/stream-page-viewer/types.d.ts +5 -5
  130. package/dist/streams/stream-player/cmp.stream-player.svelte +7 -3
  131. package/dist/streams/stream-player/controls.svelte +43 -35
  132. package/dist/streams/stream-player/index.d.ts +29 -2
  133. package/dist/streams/stream-player/index.js +44 -1
  134. package/dist/streams/stream-player/operations.generated.d.ts +1 -103
  135. package/dist/streams/stream-player/operations.generated.js +2 -375
  136. package/dist/streams/stream-player/stream-overview.svelte +2 -2
  137. package/dist/streams/stream-player/stream-player-buffer.svelte.d.ts +1 -1
  138. package/dist/streams/stream-player/stream-player-buffer.svelte.js +1 -1
  139. package/dist/streams/stream-player/stream-player-localization.svelte.d.ts +3 -9
  140. package/dist/streams/stream-player/stream-player-localization.svelte.js +4 -23
  141. package/dist/ui/media-item-view/cmp.media-item-view.svelte +2 -1
  142. package/dist/ui/media-item-view/cmp.media-item-view.svelte.d.ts +2 -1
  143. package/dist/ui/media-items-gallery/cmp.media-items-gallery.svelte +2 -1
  144. package/dist/ui/media-items-gallery/cmp.media-items-gallery.svelte.d.ts +2 -1
  145. package/dist/ui/shadow-dom/_normalize.scss +350 -0
  146. package/dist/ui/shadow-dom/_reset.scss +189 -0
  147. package/dist/ui/shadow-dom/index.d.ts +1 -1
  148. package/dist/ui/shadow-dom/index.js +1 -1
  149. package/dist/ui/shadow-dom/shadow-host.svelte.d.ts +8 -0
  150. package/dist/ui/shadow-dom/shadow-host.svelte.js +39 -0
  151. package/dist/ui/video/cmp.video.svelte +1 -1
  152. package/package.json +68 -26
  153. package/dist/advertising/ad-view/cmp.ad-view.svelte +0 -82
  154. package/dist/advertising/ad-view/index.d.ts +0 -2
  155. package/dist/advertising/ad-view/index.js +0 -1
  156. package/dist/advertising/ad-view/mapper.d.ts +0 -3
  157. package/dist/advertising/ad-view/mapper.js +0 -16
  158. package/dist/advertising/ad-view/operations.generated.d.ts +0 -17
  159. package/dist/advertising/ad-view/operations.generated.js +0 -46
  160. package/dist/advertising/ad-view/operations.graphql +0 -14
  161. package/dist/advertising/ad-view/types.d.ts +0 -10
  162. package/dist/advertising/index.d.ts +0 -1
  163. package/dist/advertising/index.js +0 -1
  164. package/dist/advertising/types.d.ts +0 -5
  165. package/dist/advertising/types.js +0 -6
  166. package/dist/products/index.d.ts +0 -1
  167. package/dist/products/index.js +0 -1
  168. package/dist/products/product-card/cmp.product-card.svelte +0 -121
  169. package/dist/products/product-card/cmp.product-card.svelte.d.ts +0 -10
  170. package/dist/products/product-card/index.d.ts +0 -3
  171. package/dist/products/product-card/index.js +0 -3
  172. package/dist/products/product-card/mapper.d.ts +0 -3
  173. package/dist/products/product-card/mapper.js +0 -14
  174. package/dist/products/product-card/operations.generated.d.ts +0 -22
  175. package/dist/products/product-card/operations.generated.js +0 -65
  176. package/dist/products/product-card/operations.graphql +0 -19
  177. package/dist/products/product-card/product-card-localization.svelte.d.ts +0 -7
  178. package/dist/products/product-card/types.d.ts +0 -10
  179. package/dist/products/product-card/types.js +0 -1
  180. package/dist/products/types.d.ts +0 -5
  181. package/dist/products/types.js +0 -6
  182. package/dist/short-videos/short-videos-player-modal/cmp.short-videos-player-modal.svelte +0 -490
  183. package/dist/short-videos/short-videos-player-modal/cmp.short-videos-player-modal.svelte.d.ts +0 -3
  184. package/dist/short-videos/short-videos-player-modal/index.d.ts +0 -79
  185. package/dist/short-videos/short-videos-player-modal/index.js +0 -78
  186. package/dist/short-videos/short-videos-player-modal/short-videos-player-modal-state.svelte.d.ts +0 -16
  187. package/dist/short-videos/short-videos-player-modal/short-videos-player-modal-state.svelte.js +0 -13
  188. package/dist/streams/components/cmp.stream-page-component.svelte +0 -16
  189. package/dist/streams/components/cmp.stream-page-component.svelte.d.ts +0 -10
  190. package/dist/streams/components/components.factory.d.ts +0 -22
  191. package/dist/streams/components/components.factory.js +0 -34
  192. package/dist/streams/components/images/cmp.images-component.svelte +0 -7
  193. package/dist/streams/components/images/index.d.ts +0 -2
  194. package/dist/streams/components/images/index.js +0 -1
  195. package/dist/streams/components/images/types.d.ts +0 -8
  196. package/dist/streams/components/images/types.js +0 -5
  197. package/dist/streams/components/index.d.ts +0 -7
  198. package/dist/streams/components/index.js +0 -6
  199. package/dist/streams/components/mapper.d.ts +0 -3
  200. package/dist/streams/components/mapper.js +0 -43
  201. package/dist/streams/components/operations.generated.d.ts +0 -178
  202. package/dist/streams/components/operations.generated.js +0 -653
  203. package/dist/streams/components/operations.graphql +0 -35
  204. package/dist/streams/components/product/index.d.ts +0 -3
  205. package/dist/streams/components/product/index.js +0 -2
  206. package/dist/streams/components/product/mapper.d.ts +0 -3
  207. package/dist/streams/components/product/mapper.js +0 -14
  208. package/dist/streams/components/product/operations.generated.d.ts +0 -22
  209. package/dist/streams/components/product/operations.generated.js +0 -53
  210. package/dist/streams/components/product/operations.graphql +0 -19
  211. package/dist/streams/components/product/types.d.ts +0 -10
  212. package/dist/streams/components/product/types.js +0 -1
  213. package/dist/streams/components/short-video/cmp.short-video-component.svelte +0 -9
  214. package/dist/streams/components/short-video/cmp.short-video-component.svelte.d.ts +0 -10
  215. package/dist/streams/components/short-video/index.d.ts +0 -3
  216. package/dist/streams/components/short-video/index.js +0 -2
  217. package/dist/streams/components/short-video/mapper.d.ts +0 -3
  218. package/dist/streams/components/short-video/mapper.js +0 -4
  219. package/dist/streams/components/short-video/operations.generated.d.ts +0 -56
  220. package/dist/streams/components/short-video/operations.generated.js +0 -193
  221. package/dist/streams/components/short-video/operations.graphql +0 -3
  222. package/dist/streams/components/short-video/types.d.ts +0 -2
  223. package/dist/streams/components/stream-components-localization.svelte.d.ts +0 -10
  224. package/dist/streams/components/stream-components-localization.svelte.js +0 -13
  225. package/dist/streams/components/types.d.ts +0 -27
  226. package/dist/streams/components/types.js +0 -6
  227. package/dist/streams/slots/cmp.stream-component-slot.svelte +0 -35
  228. package/dist/streams/slots/index.d.ts +0 -3
  229. package/dist/streams/slots/index.js +0 -2
  230. package/dist/streams/slots/mapper.d.ts +0 -3
  231. package/dist/streams/slots/mapper.js +0 -18
  232. package/dist/streams/slots/operations.generated.d.ts +0 -17
  233. package/dist/streams/slots/operations.generated.js +0 -34
  234. package/dist/streams/slots/operations.graphql +0 -14
  235. package/dist/streams/slots/styles-transformer.d.ts +0 -6
  236. package/dist/streams/slots/styles-transformer.js +0 -12
  237. package/dist/streams/slots/types.d.ts +0 -16
  238. package/dist/streams/slots/types.js +0 -1
  239. package/dist/streams/stream-player-modal/cmp.stream-player-modal.svelte +0 -491
  240. package/dist/streams/stream-player-modal/cmp.stream-player-modal.svelte.d.ts +0 -3
  241. package/dist/streams/stream-player-modal/index.d.ts +0 -79
  242. package/dist/streams/stream-player-modal/index.js +0 -78
  243. package/dist/streams/stream-player-modal/stream-player-modal-state.svelte.d.ts +0 -17
  244. package/dist/streams/stream-player-modal/stream-player-modal-state.svelte.js +0 -14
  245. package/dist/ui/shadow-dom/cmp.shadow-dom.svelte +0 -26
  246. /package/dist/{advertising/ad-view/types.js → streams/layout/layout.js} +0 -0
  247. /package/dist/streams/{components/short-video/types.js → layout/models/stream-layout-blob-model.js} +0 -0
@@ -1,13 +1,18 @@
1
- import type { AdViewModel } from '../../advertising/ad-view';
2
- import type { MediaItemModel } from '../../core/media';
3
- import type { ProductCardModel } from '../../products/product-card';
1
+ import type { Currency } from '../../core/enums';
4
2
  export type ShortVideoViewerModel = {
5
3
  id: string;
6
- media: MediaItemModel;
4
+ media: {
5
+ isImage: true;
6
+ url: string;
7
+ } | {
8
+ isImage: false;
9
+ url: string;
10
+ thumbnailUrl: string;
11
+ };
7
12
  text?: string | null;
8
13
  heading: ShortVideoViewerHeadingModel;
9
- products: ProductCardModel[];
10
- ad: AdViewModel | null;
14
+ products: ShortVideoViewerProductModel[];
15
+ ad: ShortVideoViewerAdModel | null;
11
16
  };
12
17
  export type ShortVideoViewerHeadingModel = {
13
18
  image: string | null;
@@ -15,3 +20,21 @@ export type ShortVideoViewerHeadingModel = {
15
20
  displayDate: string;
16
21
  viewsCount: number;
17
22
  };
23
+ export type ShortVideoViewerAdModel = {
24
+ id: string;
25
+ image: string | null;
26
+ title: string;
27
+ description: string | null;
28
+ buttonText: string | null;
29
+ buttonUrl: string | null;
30
+ openLinkInNewWindow: boolean | null;
31
+ };
32
+ export type ShortVideoViewerProductModel = {
33
+ id: string;
34
+ title: string;
35
+ image: string | null;
36
+ link: string | null;
37
+ price: number;
38
+ currency: Currency;
39
+ salePrice: number | null;
40
+ };
@@ -7,16 +7,16 @@
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ import { ShortVideoViewer } from '../short-video-viewer';
10
11
  import { PlayerBuffer, PlayerSlider } from '../../ui/player';
11
- import { ShortVideosViewer } from '../short-video-viewer';
12
12
  import { SpotlightLayout } from '../../ui/spotlight-layout';
13
13
  import { default as Controls } from './controls.svelte';
14
14
  import { ShortVideosPlayerLocalization } from './short-videos-player-localization.svelte';
15
15
  import { ShortVideoPlayerUiManager } from './ui-manager.svelte';
16
16
  import { onDestroy, onMount } from 'svelte';
17
- let { shortVidesProvider, localization: localizationInit, on } = $props();
17
+ let { shortVideosProvider, localization: localizationInit, on } = $props();
18
18
  const localization = $derived(new ShortVideosPlayerLocalization(localizationInit));
19
- const buffer = $derived(new PlayerBuffer(shortVidesProvider));
19
+ const buffer = $derived(new PlayerBuffer(shortVideosProvider));
20
20
  const uiManager = new ShortVideoPlayerUiManager();
21
21
  onMount(() => __awaiter(void 0, void 0, void 0, function* () {
22
22
  uiManager.detailsCollapsed = window && window.innerWidth < window.innerHeight;
@@ -39,7 +39,7 @@ const handleDimensionsChanged = (dimensions) => {
39
39
  <div class="short-videos-player__content">
40
40
  <PlayerSlider buffer={buffer}>
41
41
  {#snippet children({ item })}
42
- <ShortVideosViewer model={item} autoplay="on-appearance" showAttachments={uiManager.showShortVideoOverlay} />
42
+ <ShortVideoViewer model={item} autoplay="on-appearance" showAttachments={uiManager.showShortVideoOverlay} />
43
43
  {/snippet}
44
44
  </PlayerSlider>
45
45
  </div>
@@ -1,8 +1,8 @@
1
- import { type PlayerItemsProvider } from '../../ui/player';
2
1
  import { type ShortVideoViewerModel } from '../short-video-viewer';
2
+ import { type PlayerItemsProvider } from '../../ui/player';
3
3
  import { type IShortVideosPlayerLocalization } from './short-videos-player-localization.svelte';
4
4
  type Props = {
5
- shortVidesProvider: PlayerItemsProvider<ShortVideoViewerModel>;
5
+ shortVideosProvider: PlayerItemsProvider<ShortVideoViewerModel>;
6
6
  localization?: IShortVideosPlayerLocalization;
7
7
  on?: {
8
8
  closePlayer?: () => void;
@@ -1,7 +1,6 @@
1
- <script lang="ts">import { MediaVolumeManager } from '../../ui/media-playback';
2
- import { ProductCard } from '../../products/product-card';
3
- import { ShortVideoDetails, ShortVideoViewerAttachments } from '../short-video-viewer';
1
+ <script lang="ts">import { ShortVideoDetails, ShortVideoViewerAttachments, ShortVideoViewerAttachmentsInline } from '../short-video-viewer';
4
2
  import { Icon } from '../../ui/icon';
3
+ import { MediaVolumeManager } from '../../ui/media-playback';
5
4
  import { default as ActionButton } from './action-button.svelte';
6
5
  import { ShortVideosPlayerLocalization } from './short-videos-player-localization.svelte.js';
7
6
  import IconChevronDown from '@fluentui/svg-icons/icons/chevron_down_20_regular.svg';
@@ -21,8 +20,8 @@ const shortVideo = $derived(buffer.current);
21
20
  <div class="short-video-player-controls__left">
22
21
  {#if shortVideo && uiManager.detailsCollapsed && !uiManager.showShortVideoOverlay}
23
22
  <div class="short-video-player-controls__short-video-overlay">
24
- <div class="short-video-player-controls__short-video-attachments">
25
- <ShortVideoViewerAttachments model={shortVideo} />
23
+ <div class="short-video-player-controls__short-video-attachments-inline">
24
+ <ShortVideoViewerAttachmentsInline model={shortVideo} />
26
25
  </div>
27
26
  </div>
28
27
  {/if}
@@ -36,11 +35,9 @@ const shortVideo = $derived(buffer.current);
36
35
  </div>
37
36
  </div>
38
37
  <div class="short-video-player-controls__right">
39
- {#if shortVideo && shortVideo.products}
40
- <div class="short-video-player-controls__short-video-products">
41
- {#each shortVideo.products as product (product.id)}
42
- <ProductCard model={product} />
43
- {/each}
38
+ {#if shortVideo}
39
+ <div class="short-video-player-controls__short-video-attachments">
40
+ <ShortVideoViewerAttachments shortVideo={shortVideo} localization={localization.shortVideoDetailsLocalization?.attachmentsLocalization} />
44
41
  </div>
45
42
  {/if}
46
43
  <div class="short-video-player-controls__controls">
@@ -58,15 +55,7 @@ const shortVideo = $derived(buffer.current);
58
55
  </div>
59
56
 
60
57
  {#if shortVideo && !uiManager.isMobileView}
61
- <ShortVideoDetails
62
- shortVideo={shortVideo}
63
- collapsed={uiManager.detailsCollapsed}
64
- localization={{
65
- productsSection: localization.productsSection,
66
- offersSection: localization.offersSection,
67
- viewsCount: localization.viewsCount,
68
- timeAgoLocalization: localization.timeAgoLocalization
69
- }} />
58
+ <ShortVideoDetails shortVideo={shortVideo} collapsed={uiManager.detailsCollapsed} localization={localization.shortVideoDetailsLocalization} />
70
59
  <div class="toggle-collapsed-button">
71
60
  <ActionButton on={{ click: () => (uiManager.detailsCollapsed = !uiManager.detailsCollapsed) }}>
72
61
  <Icon src={IconPanelRightGallery} />
@@ -147,31 +136,49 @@ const shortVideo = $derived(buffer.current);
147
136
  --short-video-viewer--interactions--counter--color: #f3f4f6;
148
137
  --short-video-viewer--interactions--icon--font-color: #f3f4f6;
149
138
  }
150
- .short-video-player-controls__short-video-attachments {
139
+ .short-video-player-controls__short-video-attachments-inline {
151
140
  display: none;
152
141
  /* Set 'container-type: inline-size;' to reference container*/
153
142
  }
154
- @container (width < 16.25rem) {
155
- .short-video-player-controls__short-video-attachments {
143
+ @container (width < calc(21.875rem + 3.75rem)) {
144
+ .short-video-player-controls__short-video-attachments-inline {
156
145
  display: contents;
157
146
  }
158
147
  }
159
- .short-video-player-controls__short-video-products {
148
+ .short-video-player-controls__short-video-attachments {
160
149
  flex: 1;
161
- display: flex;
162
- flex-direction: column;
163
- gap: 1.5rem;
164
- flex-wrap: wrap;
165
- justify-content: flex-start;
166
- align-items: flex-end;
167
- overflow: hidden;
168
- width: 12.5rem;
169
- max-width: 12.5rem;
170
- --product-card--text--color: #d1d5db;
150
+ overflow-x: hidden;
151
+ overflow-y: auto;
152
+ scrollbar-color: transparent transparent;
153
+ scrollbar-width: thin;
154
+ width: 21.875rem;
155
+ max-width: 21.875rem;
171
156
  /* Set 'container-type: inline-size;' to reference container*/
172
157
  }
173
- @container (width < 16.25rem) {
174
- .short-video-player-controls__short-video-products {
158
+ .short-video-player-controls__short-video-attachments::-webkit-scrollbar {
159
+ width: 3px;
160
+ height: 3px;
161
+ background: var(--custom-scrollbar-background, transparent);
162
+ visibility: hidden;
163
+ }
164
+ .short-video-player-controls__short-video-attachments::-webkit-scrollbar-thumb {
165
+ background: transparent;
166
+ }
167
+ .short-video-player-controls__short-video-attachments:hover {
168
+ scrollbar-color: var(--custom-scrollbar-color, #7d7d7d) var(--custom-scrollbar-background, transparent);
169
+ scrollbar-width: thin;
170
+ }
171
+ .short-video-player-controls__short-video-attachments:hover::-webkit-scrollbar {
172
+ width: 3px;
173
+ height: 3px;
174
+ background: var(--custom-scrollbar-background, transparent);
175
+ visibility: hidden;
176
+ }
177
+ .short-video-player-controls__short-video-attachments:hover::-webkit-scrollbar-thumb {
178
+ background: var(--custom-scrollbar-color, #7d7d7d);
179
+ }
180
+ @container (width < calc(21.875rem + 3.75rem)) {
181
+ .short-video-player-controls__short-video-attachments {
175
182
  display: none;
176
183
  }
177
184
  }
@@ -1,5 +1,5 @@
1
- import type { IPlayerBuffer } from '../../ui/player';
2
1
  import { type ShortVideoViewerModel } from '../short-video-viewer';
2
+ import type { IPlayerBuffer } from '../../ui/player';
3
3
  import { ShortVideosPlayerLocalization } from './short-videos-player-localization.svelte.js';
4
4
  import type { ShortVideoPlayerUiManager } from './ui-manager.svelte';
5
5
  type Props = {
@@ -1,2 +1,28 @@
1
- export { default as ShortVideosPlayer } from './cmp.short-videos-player.svelte';
2
- export type { IShortVideosPlayerLocalization } from './short-videos-player-localization.svelte';
1
+ import type { ShortVideoViewerModel } from '../short-video-viewer';
2
+ import type { PlayerItemsProvider } from '../../ui/player';
3
+ import type { IShortVideosPlayerLocalization } from './short-videos-player-localization.svelte';
4
+ export type { IShortVideosPlayerLocalization };
5
+ /**
6
+ * Opens the short videos player modal with the specified provider and optional localization.
7
+ *
8
+ * @param init - Configuration options.
9
+ * @param {PlayerItemsProvider<ShortVideoViewerModel>} init.shortVideosProvider - The provider instance supplying short video items to the player.
10
+ * @param {IShortVideosPlayerLocalization} [init.localization] - Optional localization settings for the player UI.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { openShortVideosPlayer } from '@streamscloud/embeddable/short-videos-player';
15
+ *
16
+ * openShortVideosPlayer({
17
+ * shortVideosProvider: myShortVideosProvider,
18
+ * localization: {
19
+ * next: 'Next',
20
+ * previous: 'Previous'
21
+ * }
22
+ * });
23
+ * ```
24
+ */
25
+ export declare const openShortVideosPlayer: (init: {
26
+ shortVideosProvider: PlayerItemsProvider<ShortVideoViewerModel>;
27
+ localization?: IShortVideosPlayerLocalization;
28
+ }) => void;
@@ -1 +1,40 @@
1
- export { default as ShortVideosPlayer } from './cmp.short-videos-player.svelte';
1
+ import { ShadowHost } from '../../ui/shadow-dom';
2
+ import { default as ShortVideosPlayer } from './cmp.short-videos-player.svelte';
3
+ import { mount } from 'svelte';
4
+ /**
5
+ * Opens the short videos player modal with the specified provider and optional localization.
6
+ *
7
+ * @param init - Configuration options.
8
+ * @param {PlayerItemsProvider<ShortVideoViewerModel>} init.shortVideosProvider - The provider instance supplying short video items to the player.
9
+ * @param {IShortVideosPlayerLocalization} [init.localization] - Optional localization settings for the player UI.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { openShortVideosPlayer } from '@streamscloud/embeddable/short-videos-player';
14
+ *
15
+ * openShortVideosPlayer({
16
+ * shortVideosProvider: myShortVideosProvider,
17
+ * localization: {
18
+ * next: 'Next',
19
+ * previous: 'Previous'
20
+ * }
21
+ * });
22
+ * ```
23
+ */
24
+ export const openShortVideosPlayer = (init) => {
25
+ const { shortVideosProvider, localization } = init;
26
+ const shadowHost = new ShadowHost();
27
+ mount(ShortVideosPlayer, {
28
+ target: shadowHost.shadowRoot,
29
+ props: {
30
+ shortVideosProvider,
31
+ localization,
32
+ on: {
33
+ closePlayer: () => {
34
+ shadowHost.remove();
35
+ }
36
+ }
37
+ }
38
+ });
39
+ shadowHost.attachToBody();
40
+ };
@@ -1,14 +1,8 @@
1
- import type { ITimeAgoLocalization } from '../../ui/time-ago';
1
+ import type { IShortVideoDetailsLocalization } from '../short-video-viewer';
2
2
  export interface IShortVideosPlayerLocalization {
3
- productsSection?: string;
4
- offersSection?: string;
5
- viewsCount?: (count: number) => string;
6
- timeAgoLocalization?: ITimeAgoLocalization;
3
+ shortVideoDetailsLocalization?: IShortVideoDetailsLocalization;
7
4
  }
8
5
  export declare class ShortVideosPlayerLocalization {
9
- productsSection: string;
10
- offersSection: string;
11
- viewsCount: (count: number) => string;
12
- timeAgoLocalization: ITimeAgoLocalization | undefined;
6
+ shortVideoDetailsLocalization: IShortVideoDetailsLocalization | undefined;
13
7
  constructor(init?: IShortVideosPlayerLocalization);
14
8
  }
@@ -1,21 +1,6 @@
1
1
  export class ShortVideosPlayerLocalization {
2
- productsSection = $state('Products');
3
- offersSection = $state('Offers');
4
- viewsCount = $state((count) => (count === 1 ? '1 view' : `${count} views`));
5
- timeAgoLocalization = $state(undefined);
2
+ shortVideoDetailsLocalization = $state(undefined);
6
3
  constructor(init) {
7
- if (!init) {
8
- return;
9
- }
10
- if (init.productsSection !== undefined) {
11
- this.productsSection = init.productsSection;
12
- }
13
- if (init.offersSection !== undefined) {
14
- this.offersSection = init.offersSection;
15
- }
16
- if (init.viewsCount !== undefined) {
17
- this.viewsCount = init.viewsCount;
18
- }
19
- this.timeAgoLocalization = init.timeAgoLocalization;
4
+ this.shortVideoDetailsLocalization = init?.shortVideoDetailsLocalization || this.shortVideoDetailsLocalization;
20
5
  }
21
6
  }
@@ -0,0 +1,34 @@
1
+ <script lang="ts">import { ProportionalContainer } from '../../ui/proportional-container';
2
+ import { generateStreamLayoutStyles } from './styles-transformer';
3
+ let { model, children } = $props();
4
+ </script>
5
+
6
+ <ProportionalContainer ratio={9 / 16}>
7
+ <div class="stream-page-layout" style={generateStreamLayoutStyles(model.styles)}>
8
+ {@render children()}
9
+ </div>
10
+ </ProportionalContainer>
11
+
12
+ <style>@keyframes fadeIn {
13
+ 0% {
14
+ opacity: 1;
15
+ }
16
+ 50% {
17
+ opacity: 0.4;
18
+ }
19
+ 100% {
20
+ opacity: 1;
21
+ }
22
+ }
23
+ .stream-page-layout {
24
+ width: 100%;
25
+ min-width: 100%;
26
+ max-width: 100%;
27
+ height: 100%;
28
+ min-height: 100%;
29
+ max-height: 100%;
30
+ position: relative;
31
+ border-radius: 0.25rem;
32
+ overflow: hidden;
33
+ container-type: inline-size;
34
+ }</style>
@@ -1,7 +1,7 @@
1
- import type { StreamComponentSlotModel } from './types';
1
+ import type { StreamLayout } from './layout';
2
2
  import type { Snippet } from 'svelte';
3
3
  type Props = {
4
- model: StreamComponentSlotModel;
4
+ model: StreamLayout;
5
5
  children: Snippet;
6
6
  };
7
7
  declare const Cmp: import("svelte").Component<Props, {}, "">;
@@ -0,0 +1,32 @@
1
+ <script lang="ts">import { Utils } from '../../core/utils';
2
+ import { StreamElement } from './element-views';
3
+ import { StreamComponentDataType } from './enums';
4
+ let { model, localization } = $props();
5
+ const component = $derived.by(() => {
6
+ return model.components.find((c) => { var _a; return c.dataType === ((_a = model.data) === null || _a === void 0 ? void 0 : _a.type); });
7
+ });
8
+ const dataIsFilled = $derived.by(() => {
9
+ if (!model.data) {
10
+ return false;
11
+ }
12
+ switch (model.data.type) {
13
+ case StreamComponentDataType.ShortVideo: {
14
+ return !!model.data.shortVideo;
15
+ }
16
+ case StreamComponentDataType.Product: {
17
+ return !!model.data.product;
18
+ }
19
+ case StreamComponentDataType.Images: {
20
+ return !!model.data.items.length;
21
+ }
22
+ default:
23
+ Utils.assertUnreachable(model.data);
24
+ }
25
+ });
26
+ </script>
27
+
28
+ {#if component && model.data && dataIsFilled}
29
+ {#each component.elements as element (element)}
30
+ <StreamElement model={element} data={model.data} localization={localization} />
31
+ {/each}
32
+ {/if}
@@ -0,0 +1,9 @@
1
+ import { type IStreamElementLocalization } from './element-views';
2
+ import type { StreamSlot } from './slot';
3
+ type Props = {
4
+ model: StreamSlot;
5
+ localization?: IStreamElementLocalization;
6
+ };
7
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
8
+ type Cmp = ReturnType<typeof Cmp>;
9
+ export default Cmp;
@@ -0,0 +1,26 @@
1
+ <script lang="ts">let { model, children } = $props();
2
+ const computeStyles = (settings) => {
3
+ const values = [`width: ${settings.width}%`, `height: ${settings.height}%`, `top: ${settings.top}%`, `left: ${settings.left}%`];
4
+ return values.join(';');
5
+ };
6
+ export {};
7
+ </script>
8
+
9
+ <div class="stream-layout-slot" style={computeStyles(model)}>
10
+ {@render children()}
11
+ </div>
12
+
13
+ <style>@keyframes fadeIn {
14
+ 0% {
15
+ opacity: 1;
16
+ }
17
+ 50% {
18
+ opacity: 0.4;
19
+ }
20
+ 100% {
21
+ opacity: 1;
22
+ }
23
+ }
24
+ .stream-layout-slot {
25
+ position: absolute;
26
+ }</style>
@@ -0,0 +1,9 @@
1
+ import type { StreamSlot } from './slot';
2
+ import type { Snippet } from 'svelte';
3
+ type Props = {
4
+ model: StreamSlot;
5
+ children: Snippet;
6
+ };
7
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
8
+ type Cmp = ReturnType<typeof Cmp>;
9
+ export default Cmp;
@@ -0,0 +1,6 @@
1
+ import type { StreamElementModel } from './elements';
2
+ import { StreamComponentDataType } from './enums';
3
+ export type StreamComponent = {
4
+ dataType: StreamComponentDataType;
5
+ elements: StreamElementModel[];
6
+ };
@@ -0,0 +1 @@
1
+ import { StreamComponentDataType } from './enums';
@@ -0,0 +1,10 @@
1
+ import { StreamCssValueType } from './enums';
2
+ export type StreamCssValue = DeviceDependentStreamCssValue | PercentStreamCssValue;
3
+ export type DeviceDependentStreamCssValue = {
4
+ type: StreamCssValueType.DDU;
5
+ value: number;
6
+ };
7
+ export type PercentStreamCssValue = {
8
+ type: StreamCssValueType.Pct;
9
+ value: number;
10
+ };
@@ -0,0 +1 @@
1
+ import { StreamCssValueType } from './enums';
@@ -0,0 +1,16 @@
1
+ <script lang="ts">import {} from './stream-element-localization.svelte';
2
+ import { StreamElementStyleDirection } from '../enums';
3
+ import { generateContainerStyles } from '../styles-transformer';
4
+ import { default as StreamElement } from './cmp.stream-element.svelte';
5
+ let { model, data, localization } = $props();
6
+ </script>
7
+
8
+ <div class="container-stream-element" style={generateContainerStyles(model.styles)}>
9
+ {#each model.elements as element (element)}
10
+ <StreamElement
11
+ model={element}
12
+ data={data}
13
+ constainerDirection={model.styles?.direction ?? StreamElementStyleDirection.Vertical}
14
+ localization={localization} />
15
+ {/each}
16
+ </div>
@@ -0,0 +1,11 @@
1
+ import { type IStreamElementLocalization } from './stream-element-localization.svelte';
2
+ import type { ContainerStreamElementModel } from '../elements';
3
+ import type { StreamSlotData } from '../slot-data';
4
+ type Props = {
5
+ model: ContainerStreamElementModel;
6
+ data: StreamSlotData;
7
+ localization?: IStreamElementLocalization;
8
+ };
9
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
10
+ type Cmp = ReturnType<typeof Cmp>;
11
+ export default Cmp;
@@ -0,0 +1,38 @@
1
+ <script lang="ts">import { getStringValueByKey } from './data-by-key-accessor';
2
+ import { generateImageStyles } from '../styles-transformer';
3
+ let { model, data } = $props();
4
+ const value = $derived(getStringValueByKey(data, model.key));
5
+ </script>
6
+
7
+ <div class="image-ref-stream-element">
8
+ <img class="image-ref-stream-element-image" src={value} alt={model.key} style={generateImageStyles(model.styles)} />
9
+ </div>
10
+
11
+ <style>@keyframes fadeIn {
12
+ 0% {
13
+ opacity: 1;
14
+ }
15
+ 50% {
16
+ opacity: 0.4;
17
+ }
18
+ 100% {
19
+ opacity: 1;
20
+ }
21
+ }
22
+ .image-ref-stream-element {
23
+ width: 100%;
24
+ min-width: 100%;
25
+ max-width: 100%;
26
+ height: 100%;
27
+ min-height: 100%;
28
+ max-height: 100%;
29
+ overflow: hidden;
30
+ }
31
+
32
+ .image-ref-stream-element-image {
33
+ object-fit: cover;
34
+ min-width: 100%;
35
+ min-height: 100%;
36
+ max-width: 100%;
37
+ max-height: 100%;
38
+ }</style>
@@ -0,0 +1,9 @@
1
+ import type { ImageRefStreamElementModel } from '../elements';
2
+ import type { StreamSlotData } from '../slot-data';
3
+ type Props = {
4
+ model: ImageRefStreamElementModel;
5
+ data: StreamSlotData;
6
+ };
7
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
8
+ type Cmp = ReturnType<typeof Cmp>;
9
+ export default Cmp;
@@ -0,0 +1,30 @@
1
+ <script lang="ts">import { Image } from '../../../ui/image';
2
+ import { ImagesImagesElementMode } from '../enums';
3
+ let { model, data } = $props();
4
+ </script>
5
+
6
+ <div class="images-stream-element">
7
+ {#if data.length > 0}
8
+ {#if model.mode === ImagesImagesElementMode.Single || data.length === 1}
9
+ <Image src={data[0].url} />
10
+ {:else}
11
+ need implement multiple images
12
+ {/if}
13
+ {/if}
14
+ </div>
15
+
16
+ <style>@keyframes fadeIn {
17
+ 0% {
18
+ opacity: 1;
19
+ }
20
+ 50% {
21
+ opacity: 0.4;
22
+ }
23
+ 100% {
24
+ opacity: 1;
25
+ }
26
+ }
27
+ .images-stream-element {
28
+ width: 100%;
29
+ height: 100%;
30
+ }</style>
@@ -0,0 +1,9 @@
1
+ import type { ImagesStreamElementModel } from '../elements';
2
+ import type { StreamLayoutBlobModel } from '../models';
3
+ type Props = {
4
+ model: ImagesStreamElementModel;
5
+ data: StreamLayoutBlobModel[];
6
+ };
7
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
8
+ type Cmp = ReturnType<typeof Cmp>;
9
+ export default Cmp;