@streamscloud/embeddable 1.2.0 → 2.0.1

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 +80 -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 -486
  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 -487
  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
@@ -0,0 +1,97 @@
1
+ <script lang="ts">var _a;
2
+ import { toPriceRepresentation } from '../../../products/price-helper';
3
+ import { PriceStreamElementLocalization } from './price-stream-element-localization.svelte.js';
4
+ import { mapFlexJustifyContent, mapFontFamily, mapFontWeight, transformColorValue, transformFontSizeValue, transformNumericValue } from '../styles-transformer';
5
+ let { model, data, localization: localizationInit } = $props();
6
+ const localization = $derived(new PriceStreamElementLocalization(localizationInit));
7
+ const lineHeight = 1.2;
8
+ const height = $derived(((_a = model.styles) === null || _a === void 0 ? void 0 : _a.height) || 16);
9
+ const currentPrice = $derived.by(() => {
10
+ if (data.price.salePrice) {
11
+ return toPriceRepresentation(data.price.salePrice, data.price.currency, model.includeCurrency || false);
12
+ }
13
+ return toPriceRepresentation(data.price.price, data.price.currency, model.includeCurrency || false);
14
+ });
15
+ const saveValue = $derived.by(() => {
16
+ if (data.price.salePrice) {
17
+ return toPriceRepresentation(data.price.price - data.price.salePrice, data.price.currency, model.includeCurrency || false);
18
+ }
19
+ return 0;
20
+ });
21
+ const containerStyles = $derived.by(() => {
22
+ var _a, _b;
23
+ const values = [
24
+ `font-family: ${mapFontFamily((_a = model.styles) === null || _a === void 0 ? void 0 : _a.fontFamily)};`,
25
+ `justify-content: ${mapFlexJustifyContent((_b = model.styles) === null || _b === void 0 ? void 0 : _b.horizontalAlign)};`,
26
+ `align-items: center;`,
27
+ `height: ${transformNumericValue(height)};`
28
+ ];
29
+ return values.join('');
30
+ });
31
+ const priceCustomStyles = $derived.by(() => {
32
+ var _a, _b, _c;
33
+ const values = [
34
+ `font-size: ${transformFontSizeValue(height / lineHeight)};`,
35
+ `line-height: ${lineHeight};`,
36
+ `font-weight: ${mapFontWeight((_a = model.styles) === null || _a === void 0 ? void 0 : _a.fontWeight)};`,
37
+ `color: ${transformColorValue(data.price.salePrice ? (_b = model.styles) === null || _b === void 0 ? void 0 : _b.salePriceColor : (_c = model.styles) === null || _c === void 0 ? void 0 : _c.regularPriceColor)};`
38
+ ];
39
+ return values.join('');
40
+ });
41
+ const saveValueCustomStyles = $derived.by(() => {
42
+ var _a, _b;
43
+ const values = [
44
+ `margin-top: ${transformNumericValue((height - height / lineHeight) / 2)};`,
45
+ `font-size: ${transformFontSizeValue(height / 4)};`,
46
+ `font-weight: 500;`,
47
+ `padding: ${transformNumericValue(height / 8)} ${transformNumericValue(height / 4)};`,
48
+ `border-radius: ${transformNumericValue(height / 8)};`,
49
+ `background-color: ${transformColorValue((_a = model.styles) === null || _a === void 0 ? void 0 : _a.saveValueBackgroundColor)};`,
50
+ `color: ${transformColorValue((_b = model.styles) === null || _b === void 0 ? void 0 : _b.saveValueColor)};`
51
+ ];
52
+ return values.join('');
53
+ });
54
+ const beforeValueCustomStyles = $derived.by(() => {
55
+ var _a;
56
+ const values = [`font-size: ${transformFontSizeValue(height / 5)};`, `font-weight: 500;`, `color: ${transformColorValue((_a = model.styles) === null || _a === void 0 ? void 0 : _a.beforeValueColor)};`];
57
+ return values.join('');
58
+ });
59
+ </script>
60
+
61
+ <div class="price-stream-element" style={containerStyles}>
62
+ <div class="price-stream-element__price" style={priceCustomStyles}>
63
+ {currentPrice}
64
+ </div>
65
+ {#if data.price.salePrice && !model.excludeBeforePrice}
66
+ <div class="price-stream-element__sale-price">
67
+ <div class="price-stream-element__save" style={saveValueCustomStyles}>
68
+ {localization.saveValue(saveValue)}
69
+ </div>
70
+ <div class="price-stream-element__before-price" style={beforeValueCustomStyles}>
71
+ {localization.beforeValue(toPriceRepresentation(data.price.price, data.price.currency, model.includeCurrency || false))}
72
+ </div>
73
+ </div>
74
+ {/if}
75
+ </div>
76
+
77
+ <style>@keyframes fadeIn {
78
+ 0% {
79
+ opacity: 1;
80
+ }
81
+ 50% {
82
+ opacity: 0.4;
83
+ }
84
+ 100% {
85
+ opacity: 1;
86
+ }
87
+ }
88
+ .price-stream-element {
89
+ display: flex;
90
+ gap: 4cqi;
91
+ }
92
+ .price-stream-element__sale-price {
93
+ display: flex;
94
+ height: 100%;
95
+ flex-direction: column;
96
+ justify-content: space-between;
97
+ }</style>
@@ -0,0 +1,11 @@
1
+ import { type IPriceStreamElementLocalization } from './price-stream-element-localization.svelte.js';
2
+ import type { PriceStreamElementModel } from '../elements';
3
+ import type { StreamLayoutProductModel } from '../models';
4
+ type Props = {
5
+ model: PriceStreamElementModel;
6
+ data: StreamLayoutProductModel;
7
+ localization?: IPriceStreamElementLocalization;
8
+ };
9
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
10
+ type Cmp = ReturnType<typeof Cmp>;
11
+ export default Cmp;
@@ -0,0 +1,6 @@
1
+ <script lang="ts">import { ShortVideoViewer } from '../../../short-videos/short-video-viewer';
2
+ import { mapToShortVideoViewerModel } from '../models';
3
+ let { data } = $props();
4
+ </script>
5
+
6
+ <ShortVideoViewer model={mapToShortVideoViewerModel(data)} autoplay={false} />
@@ -1,7 +1,6 @@
1
- import type { ProductComponentData } from './types';
1
+ import { type StreamLayoutShortVideoModel } from '../models';
2
2
  type Props = {
3
- model: ProductComponentData;
4
- fitToContainer?: boolean;
3
+ data: StreamLayoutShortVideoModel;
5
4
  };
6
5
  declare const Cmp: import("svelte").Component<Props, {}, "">;
7
6
  type Cmp = ReturnType<typeof Cmp>;
@@ -0,0 +1,45 @@
1
+ <script lang="ts">import { Utils } from '../../../core/utils';
2
+ import { StreamElementStyleDirection } from '../enums';
3
+ import { transformNumericValue } from '../styles-transformer';
4
+ let { model, parentContainerDirection } = $props();
5
+ const styles = $derived.by(() => {
6
+ const values = [];
7
+ if (!model.value) {
8
+ values.push(`flex-grow: 1`);
9
+ }
10
+ else {
11
+ switch (parentContainerDirection) {
12
+ case StreamElementStyleDirection.Vertical: {
13
+ values.push(`height: ${transformNumericValue(model.value)};`);
14
+ values.push(`min-height: ${transformNumericValue(model.value)};`);
15
+ break;
16
+ }
17
+ case StreamElementStyleDirection.Horizontal: {
18
+ values.push(`width: ${transformNumericValue(model.value)};`);
19
+ values.push(`min-width: ${transformNumericValue(model.value)};`);
20
+ break;
21
+ }
22
+ default:
23
+ Utils.assertUnreachable(parentContainerDirection);
24
+ }
25
+ }
26
+ return values.join('');
27
+ });
28
+ </script>
29
+
30
+ <div class="spacer-stream-element" style={styles}>&nbsp;</div>
31
+
32
+ <style>@keyframes fadeIn {
33
+ 0% {
34
+ opacity: 1;
35
+ }
36
+ 50% {
37
+ opacity: 0.4;
38
+ }
39
+ 100% {
40
+ opacity: 1;
41
+ }
42
+ }
43
+ .spacer-stream-element {
44
+ line-height: 0;
45
+ }</style>
@@ -0,0 +1,9 @@
1
+ import type { SpacerStreamElementModel } from '../elements';
2
+ import { StreamElementStyleDirection } from '../enums';
3
+ type Props = {
4
+ model: SpacerStreamElementModel;
5
+ parentContainerDirection: StreamElementStyleDirection;
6
+ };
7
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
8
+ type Cmp = ReturnType<typeof Cmp>;
9
+ export default Cmp;
@@ -0,0 +1,60 @@
1
+ <script lang="ts">import { ContainerStreamElement, ImageRefStreamElement, ImagesStreamElement, PriceStreamElement, ShortVideoStreamElement, SpacerStreamElement, TextRefStreamElement, TextStreamElement } from '.';
2
+ import { StreamElementLocalization } from './stream-element-localization.svelte';
3
+ import { StreamComponentDataType, StreamElementStyleDirection, StreamElementType } from '../enums';
4
+ let { model, data, constainerDirection = StreamElementStyleDirection.Vertical, localization: localizatoinInit } = $props();
5
+ const localization = $derived(new StreamElementLocalization(localizatoinInit));
6
+ const shortVideoModel = $derived.by(() => {
7
+ if (!data) {
8
+ return null;
9
+ }
10
+ switch (data.type) {
11
+ case StreamComponentDataType.ShortVideo: {
12
+ return data.shortVideo;
13
+ }
14
+ default:
15
+ return null;
16
+ }
17
+ });
18
+ const imagesModel = $derived.by(() => {
19
+ if (!data) {
20
+ return null;
21
+ }
22
+ switch (data.type) {
23
+ case StreamComponentDataType.Images: {
24
+ return data.items;
25
+ }
26
+ default:
27
+ return null;
28
+ }
29
+ });
30
+ const productModel = $derived.by(() => {
31
+ if (!data) {
32
+ return null;
33
+ }
34
+ switch (data.type) {
35
+ case StreamComponentDataType.Product: {
36
+ return data.product;
37
+ }
38
+ default:
39
+ return null;
40
+ }
41
+ });
42
+ </script>
43
+
44
+ {#if model.type === StreamElementType.Container}
45
+ <ContainerStreamElement model={model} data={data} localization={localizatoinInit} />
46
+ {:else if model.type === StreamElementType.Spacer}
47
+ <SpacerStreamElement model={model} parentContainerDirection={constainerDirection} />
48
+ {:else if model.type === StreamElementType.ImageRef}
49
+ <ImageRefStreamElement model={model} data={data} />
50
+ {:else if model.type === StreamElementType.Images && imagesModel?.length}
51
+ <ImagesStreamElement model={model} data={imagesModel} />
52
+ {:else if model.type === StreamElementType.Price && productModel}
53
+ <PriceStreamElement model={model} data={productModel} localization={localization.priceElementLocalization} />
54
+ {:else if model.type === StreamElementType.ShortVideo && shortVideoModel}
55
+ <ShortVideoStreamElement data={shortVideoModel} />
56
+ {:else if model.type === StreamElementType.Text}
57
+ <TextStreamElement model={model} />
58
+ {:else if model.type === StreamElementType.TextRef}
59
+ <TextRefStreamElement model={model} data={data} />
60
+ {/if}
@@ -0,0 +1,13 @@
1
+ import { type IStreamElementLocalization } from './stream-element-localization.svelte';
2
+ import type { StreamElementModel } from '../elements';
3
+ import { StreamElementStyleDirection } from '../enums';
4
+ import type { StreamSlotData } from '../slot-data';
5
+ type Props = {
6
+ model: StreamElementModel;
7
+ data: StreamSlotData;
8
+ constainerDirection?: StreamElementStyleDirection;
9
+ localization?: IStreamElementLocalization;
10
+ };
11
+ declare const Cmp: import("svelte").Component<Props, {}, "">;
12
+ type Cmp = ReturnType<typeof Cmp>;
13
+ export default Cmp;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">import { LineClamp } from '../../../ui/line-clamp';
2
+ import { getStringValueByKey } from './data-by-key-accessor';
3
+ import { generateTextStyles } from '../styles-transformer';
4
+ let { model, data } = $props();
5
+ const value = $derived.by(() => {
6
+ const values = [];
7
+ const value = getStringValueByKey(data, model.key);
8
+ if (model.valueBefore) {
9
+ values.push(model.valueBefore);
10
+ }
11
+ if (value) {
12
+ values.push(value);
13
+ }
14
+ if (model.valueAfter) {
15
+ values.push(model.valueAfter);
16
+ }
17
+ return values.join(' ');
18
+ });
19
+ </script>
20
+
21
+ <div class="text-ref-stream-element" style={generateTextStyles(model.styles)}>
22
+ <LineClamp value={value} maxLines={model.styles?.maxLines || 'auto'} />
23
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { TextRefStreamElementModel } from '../elements';
2
+ import type { StreamSlotData } from '../slot-data';
3
+ type Props = {
4
+ model: TextRefStreamElementModel;
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,8 @@
1
+ <script lang="ts">import { LineClamp } from '../../../ui/line-clamp';
2
+ import { generateTextStyles } from '../styles-transformer';
3
+ let { model } = $props();
4
+ </script>
5
+
6
+ <div class="text-stream-element" style={generateTextStyles(model.styles)}>
7
+ <LineClamp value={model.value} maxLines={model.styles?.maxLines || 'auto'} />
8
+ </div>
@@ -1,6 +1,6 @@
1
- import { DynamicComponentModel } from '../dynamic-component';
1
+ import type { TextStreamElementModel } from '../elements';
2
2
  type Props = {
3
- model: DynamicComponentModel;
3
+ model: TextStreamElementModel;
4
4
  };
5
5
  declare const Cmp: import("svelte").Component<Props, {}, "">;
6
6
  type Cmp = ReturnType<typeof Cmp>;
@@ -0,0 +1,3 @@
1
+ import type { StreamSlotData } from '../slot-data';
2
+ export declare const getStringValueByKey: (data: StreamSlotData, key: string) => string;
3
+ export declare const getNumberValueByKey: (data: StreamSlotData, key: string) => number;
@@ -0,0 +1,55 @@
1
+ export const getStringValueByKey = (data, key) => {
2
+ const value = getValueByKey(data, key);
3
+ if (!value) {
4
+ return '';
5
+ }
6
+ if (typeof value === 'string') {
7
+ return value;
8
+ }
9
+ return value.toString();
10
+ };
11
+ export const getNumberValueByKey = (data, key) => {
12
+ const value = getValueByKey(data, key);
13
+ if (typeof value === 'number') {
14
+ return value;
15
+ }
16
+ return 0;
17
+ };
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ const getValueByKey = (data, key) => {
20
+ // Remove leading #
21
+ const path = key.replace(/^#/, '');
22
+ // Split path into parts, handling indices in brackets
23
+ // Example: products[0].title -> ['products', '0', 'title']
24
+ const parts = [];
25
+ path.split('.').forEach((segment) => {
26
+ const regex = /^([^[\]]+)|\[(\d+)]$/g;
27
+ let match;
28
+ while ((match = regex.exec(segment)) !== null) {
29
+ if (match[1]) {
30
+ parts.push(match[1]);
31
+ }
32
+ else if (match[2]) {
33
+ parts.push(match[2]);
34
+ }
35
+ }
36
+ });
37
+ // Traverse the path parts
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ let result = data;
40
+ for (const part of parts) {
41
+ if (!result) {
42
+ return undefined;
43
+ }
44
+ if (Array.isArray(result) && !isNaN(Number(part))) {
45
+ result = result[Number(part)];
46
+ }
47
+ else if (typeof result === 'object' && part in result) {
48
+ result = result[part];
49
+ }
50
+ else {
51
+ return undefined;
52
+ }
53
+ }
54
+ return result;
55
+ };
@@ -0,0 +1,11 @@
1
+ export { default as StreamElement } from './cmp.stream-element.svelte';
2
+ export { default as ContainerStreamElement } from './cmp.container-stream-element.svelte';
3
+ export { default as ImageRefStreamElement } from './cmp.image-ref-stream-element.svelte';
4
+ export { default as ImagesStreamElement } from './cmp.images-stream-element.svelte';
5
+ export { default as PriceStreamElement } from './cmp.price-stream-element.svelte';
6
+ export { default as ShortVideoStreamElement } from './cmp.short-video-stream-element.svelte';
7
+ export { default as SpacerStreamElement } from './cmp.spacer-stream-element.svelte';
8
+ export { default as TextRefStreamElement } from './cmp.text-ref-stream-element.svelte';
9
+ export { default as TextStreamElement } from './cmp.text-stream-element.svelte';
10
+ export type { IStreamElementLocalization } from './stream-element-localization.svelte';
11
+ export type { IPriceStreamElementLocalization } from './price-stream-element-localization.svelte';
@@ -0,0 +1,9 @@
1
+ export { default as StreamElement } from './cmp.stream-element.svelte';
2
+ export { default as ContainerStreamElement } from './cmp.container-stream-element.svelte';
3
+ export { default as ImageRefStreamElement } from './cmp.image-ref-stream-element.svelte';
4
+ export { default as ImagesStreamElement } from './cmp.images-stream-element.svelte';
5
+ export { default as PriceStreamElement } from './cmp.price-stream-element.svelte';
6
+ export { default as ShortVideoStreamElement } from './cmp.short-video-stream-element.svelte';
7
+ export { default as SpacerStreamElement } from './cmp.spacer-stream-element.svelte';
8
+ export { default as TextRefStreamElement } from './cmp.text-ref-stream-element.svelte';
9
+ export { default as TextStreamElement } from './cmp.text-stream-element.svelte';
@@ -0,0 +1,9 @@
1
+ export interface IPriceStreamElementLocalization {
2
+ saveValue?: (value: string | number) => string;
3
+ beforeValue?: (value: string) => string;
4
+ }
5
+ export declare class PriceStreamElementLocalization {
6
+ saveValue: (value: string | number) => string;
7
+ beforeValue: (value: string) => string;
8
+ constructor(init?: IPriceStreamElementLocalization);
9
+ }
@@ -0,0 +1,8 @@
1
+ export class PriceStreamElementLocalization {
2
+ saveValue = $state((value) => `Save ${value}`);
3
+ beforeValue = $state((value) => `Before ${value}`);
4
+ constructor(init) {
5
+ this.saveValue = init?.saveValue ?? this.saveValue;
6
+ this.beforeValue = init?.beforeValue ?? this.beforeValue;
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ import type { IPriceStreamElementLocalization } from './price-stream-element-localization.svelte';
2
+ export interface IStreamElementLocalization {
3
+ priceElementLocalization?: IPriceStreamElementLocalization;
4
+ }
5
+ export declare class StreamElementLocalization {
6
+ priceElementLocalization: IPriceStreamElementLocalization | undefined;
7
+ constructor(init?: IStreamElementLocalization);
8
+ }
@@ -0,0 +1,6 @@
1
+ export class StreamElementLocalization {
2
+ priceElementLocalization = $state(undefined);
3
+ constructor(init) {
4
+ this.priceElementLocalization = init?.priceElementLocalization ?? this.priceElementLocalization;
5
+ }
6
+ }
@@ -0,0 +1,51 @@
1
+ import { StreamElementType, ImagesImagesElementMode } from './enums';
2
+ import type { ImageStreamElementStyles, TextStreamElementStyles, ContainerStreamElementStyles, PriceStreamElementStyles } from './styles';
3
+ export type StreamElementModel = ContainerStreamElementModel | ImageRefStreamElementModel | ImagesStreamElementModel | PriceStreamElementModel | SpacerStreamElementModel | ShortVideoStreamElementModel | TextStreamElementModel | TextRefStreamElementModel;
4
+ export type ContainerStreamElementModel = {
5
+ type: StreamElementType.Container;
6
+ id?: string;
7
+ elements: StreamElementModel[];
8
+ customizable: boolean | null;
9
+ styles: ContainerStreamElementStyles | null;
10
+ };
11
+ export type ImagesStreamElementModel = {
12
+ type: StreamElementType.Images;
13
+ id?: string;
14
+ mode: ImagesImagesElementMode;
15
+ };
16
+ export type ImageRefStreamElementModel = {
17
+ type: StreamElementType.ImageRef;
18
+ id?: string;
19
+ key: string;
20
+ styles: ImageStreamElementStyles | null;
21
+ };
22
+ export type PriceStreamElementModel = {
23
+ type: StreamElementType.Price;
24
+ id?: string;
25
+ excludeBeforePrice: boolean | null;
26
+ includeCurrency: boolean | null;
27
+ styles: PriceStreamElementStyles | null;
28
+ };
29
+ export type ShortVideoStreamElementModel = {
30
+ type: StreamElementType.ShortVideo;
31
+ id?: string;
32
+ };
33
+ export type SpacerStreamElementModel = {
34
+ type: StreamElementType.Spacer;
35
+ id?: string;
36
+ value: number | null;
37
+ };
38
+ export type TextStreamElementModel = {
39
+ type: StreamElementType.Text;
40
+ id?: string;
41
+ value: string | null;
42
+ styles: TextStreamElementStyles | null;
43
+ };
44
+ export type TextRefStreamElementModel = {
45
+ type: StreamElementType.TextRef;
46
+ id?: string;
47
+ key: string;
48
+ valueBefore: string | null;
49
+ valueAfter: string | null;
50
+ styles: TextStreamElementStyles | null;
51
+ };
@@ -0,0 +1 @@
1
+ import { StreamElementType, ImagesImagesElementMode } from './enums';
@@ -0,0 +1,45 @@
1
+ export declare enum StreamComponentDataType {
2
+ Images = "IMAGES",
3
+ ShortVideo = "SHORT_VIDEO",
4
+ Product = "PRODUCT"
5
+ }
6
+ export declare enum StreamElementType {
7
+ Container = "CONTAINER",
8
+ ImageRef = "IMAGE_REF",
9
+ Images = "IMAGES",
10
+ Price = "PRICE",
11
+ Spacer = "SPACER",
12
+ ShortVideo = "SHORT_VIDEO",
13
+ Text = "TEXT",
14
+ TextRef = "TEXT_REF"
15
+ }
16
+ export declare enum ImagesImagesElementMode {
17
+ Single = "SINGLE",
18
+ Gallery = "GALLERY",
19
+ Slider = "SLIDER"
20
+ }
21
+ export declare enum StreamElementStyleMediaFit {
22
+ Cover = "COVER",
23
+ Contain = "CONTAIN"
24
+ }
25
+ export declare enum StreamElementStyleHorizontalAlign {
26
+ Left = "LEFT",
27
+ Center = "CENTER",
28
+ Right = "RIGHT"
29
+ }
30
+ export declare enum StreamElementStyleFontWeight {
31
+ Regular = "REGULAR",
32
+ SemiBold = "SEMI_BOLD",
33
+ Bold = "BOLD"
34
+ }
35
+ export declare enum StreamElementStyleFontFamily {
36
+ System = "SYSTEM"
37
+ }
38
+ export declare enum StreamElementStyleDirection {
39
+ Horizontal = "HORIZONTAL",
40
+ Vertical = "VERTICAL"
41
+ }
42
+ export declare enum StreamCssValueType {
43
+ DDU = "DDU",
44
+ Pct = "PCT"
45
+ }
@@ -0,0 +1,54 @@
1
+ export var StreamComponentDataType;
2
+ (function (StreamComponentDataType) {
3
+ StreamComponentDataType["Images"] = "IMAGES";
4
+ StreamComponentDataType["ShortVideo"] = "SHORT_VIDEO";
5
+ StreamComponentDataType["Product"] = "PRODUCT";
6
+ })(StreamComponentDataType || (StreamComponentDataType = {}));
7
+ export var StreamElementType;
8
+ (function (StreamElementType) {
9
+ StreamElementType["Container"] = "CONTAINER";
10
+ StreamElementType["ImageRef"] = "IMAGE_REF";
11
+ StreamElementType["Images"] = "IMAGES";
12
+ StreamElementType["Price"] = "PRICE";
13
+ StreamElementType["Spacer"] = "SPACER";
14
+ StreamElementType["ShortVideo"] = "SHORT_VIDEO";
15
+ StreamElementType["Text"] = "TEXT";
16
+ StreamElementType["TextRef"] = "TEXT_REF";
17
+ })(StreamElementType || (StreamElementType = {}));
18
+ export var ImagesImagesElementMode;
19
+ (function (ImagesImagesElementMode) {
20
+ ImagesImagesElementMode["Single"] = "SINGLE";
21
+ ImagesImagesElementMode["Gallery"] = "GALLERY";
22
+ ImagesImagesElementMode["Slider"] = "SLIDER";
23
+ })(ImagesImagesElementMode || (ImagesImagesElementMode = {}));
24
+ export var StreamElementStyleMediaFit;
25
+ (function (StreamElementStyleMediaFit) {
26
+ StreamElementStyleMediaFit["Cover"] = "COVER";
27
+ StreamElementStyleMediaFit["Contain"] = "CONTAIN";
28
+ })(StreamElementStyleMediaFit || (StreamElementStyleMediaFit = {}));
29
+ export var StreamElementStyleHorizontalAlign;
30
+ (function (StreamElementStyleHorizontalAlign) {
31
+ StreamElementStyleHorizontalAlign["Left"] = "LEFT";
32
+ StreamElementStyleHorizontalAlign["Center"] = "CENTER";
33
+ StreamElementStyleHorizontalAlign["Right"] = "RIGHT";
34
+ })(StreamElementStyleHorizontalAlign || (StreamElementStyleHorizontalAlign = {}));
35
+ export var StreamElementStyleFontWeight;
36
+ (function (StreamElementStyleFontWeight) {
37
+ StreamElementStyleFontWeight["Regular"] = "REGULAR";
38
+ StreamElementStyleFontWeight["SemiBold"] = "SEMI_BOLD";
39
+ StreamElementStyleFontWeight["Bold"] = "BOLD";
40
+ })(StreamElementStyleFontWeight || (StreamElementStyleFontWeight = {}));
41
+ export var StreamElementStyleFontFamily;
42
+ (function (StreamElementStyleFontFamily) {
43
+ StreamElementStyleFontFamily["System"] = "SYSTEM";
44
+ })(StreamElementStyleFontFamily || (StreamElementStyleFontFamily = {}));
45
+ export var StreamElementStyleDirection;
46
+ (function (StreamElementStyleDirection) {
47
+ StreamElementStyleDirection["Horizontal"] = "HORIZONTAL";
48
+ StreamElementStyleDirection["Vertical"] = "VERTICAL";
49
+ })(StreamElementStyleDirection || (StreamElementStyleDirection = {}));
50
+ export var StreamCssValueType;
51
+ (function (StreamCssValueType) {
52
+ StreamCssValueType["DDU"] = "DDU";
53
+ StreamCssValueType["Pct"] = "PCT";
54
+ })(StreamCssValueType || (StreamCssValueType = {}));
@@ -0,0 +1,19 @@
1
+ import { StreamComponentDataType, StreamElementType } from './enums';
2
+ import type { StreamLayout } from './layout';
3
+ import type { StreamLayoutShortVideoModel } from './models';
4
+ import type { StreamSlot } from './slot';
5
+ import type { ContainerStreamElementStyles, ImageStreamElementStyles, PriceStreamElementStyles, TextStreamElementStyles } from './styles';
6
+ export { default as StreamPageLayout } from './cmp.layout.svelte';
7
+ export { default as StreamLayoutSlot } from './cmp.slot.svelte';
8
+ export { default as StreamLayoutSlotContent } from './cmp.slot-content.svelte';
9
+ export * from './layout';
10
+ export { parseToStreamLayout, stringifyToStreamLayoutInput } from './serializer';
11
+ export declare const getAllowedDataTypesForSlot: (slot: StreamSlot) => StreamComponentDataType[];
12
+ export declare const getSingleShortVideoFromLayout: (layout: StreamLayout) => StreamLayoutShortVideoModel | null;
13
+ export type ElementTypeToStyles = {
14
+ [StreamElementType.Container]: ContainerStreamElementStyles;
15
+ [StreamElementType.Price]: PriceStreamElementStyles;
16
+ [StreamElementType.ImageRef]: ImageStreamElementStyles;
17
+ [StreamElementType.Text]: TextStreamElementStyles;
18
+ [StreamElementType.TextRef]: TextStreamElementStyles;
19
+ };
@@ -0,0 +1,15 @@
1
+ import { StreamComponentDataType, StreamElementType } from './enums';
2
+ export { default as StreamPageLayout } from './cmp.layout.svelte';
3
+ export { default as StreamLayoutSlot } from './cmp.slot.svelte';
4
+ export { default as StreamLayoutSlotContent } from './cmp.slot-content.svelte';
5
+ export * from './layout';
6
+ export { parseToStreamLayout, stringifyToStreamLayoutInput } from './serializer';
7
+ export const getAllowedDataTypesForSlot = (slot) => {
8
+ return slot.components.flatMap((c) => c.dataType);
9
+ };
10
+ export const getSingleShortVideoFromLayout = (layout) => {
11
+ if (layout.slots.length === 1 && layout.slots[0].data?.type === StreamComponentDataType.ShortVideo && layout.slots[0].data.shortVideo) {
12
+ return layout.slots[0].data.shortVideo;
13
+ }
14
+ return null;
15
+ };
@@ -0,0 +1,13 @@
1
+ import type { StreamSlot, StreamSlotInput, StreamSlotTemplate } from './slot';
2
+ import type { StreamLayoutStyles } from './styles';
3
+ export type StreamLayoutTemplate = {
4
+ styles: StreamLayoutStyles | null;
5
+ slots: StreamSlotTemplate[];
6
+ };
7
+ export type StreamLayoutInput = Omit<StreamLayoutTemplate, 'slots'> & {
8
+ slots: StreamSlotInput[];
9
+ };
10
+ export type StreamLayout = Omit<StreamLayoutTemplate, 'slots'> & {
11
+ id?: string;
12
+ slots: StreamSlot[];
13
+ };
@@ -0,0 +1,6 @@
1
+ export { mapToShortVideoViewerModel } from './mapper';
2
+ export type { StreamLayoutBlobModel } from './stream-layout-blob-model';
3
+ export type { StreamLayoutMediaItemModel } from './stream-layout-media-item-model';
4
+ export type { StreamLayoutPostHeaderModel } from './stream-layout-post-header-model';
5
+ export type { StreamLayoutProductModel } from './stream-layout-product-model';
6
+ export type { StreamLayoutShortVideoModel, StreamLayoutShortVideoProductModel, StreamLayoutShortVideoAdModel } from './stream-layout-short-video-model';