@streamscloud/embeddable 1.2.0 → 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.
- package/dist/core/enums.d.ts +33 -0
- package/dist/core/enums.js +39 -0
- package/dist/core/graphql.d.ts +1 -1
- package/dist/core/graphql.js +2 -2
- package/dist/core/media/images-size-detector.service.d.ts +1 -1
- package/dist/core/media/images-size-detector.service.js +1 -1
- package/dist/core/media/index.d.ts +1 -1
- package/dist/core/media/index.js +1 -1
- package/dist/core/media/media-item-url.service.js +2 -1
- package/dist/core/media/types.d.ts +1 -16
- package/dist/core/media/types.js +1 -19
- package/dist/index.d.ts +1 -3
- package/dist/index.js +1 -3
- package/dist/products/price-helper.d.ts +2 -2
- package/dist/products/price-helper.js +20 -9
- package/dist/short-videos/short-video-viewer/cmp.ad.svelte +74 -0
- package/dist/{advertising/ad-view/cmp.ad-view.svelte.d.ts → short-videos/short-video-viewer/cmp.ad.svelte.d.ts} +2 -3
- package/dist/short-videos/short-video-viewer/cmp.attachments-inline.svelte +70 -0
- package/dist/{streams/components/images/cmp.images-component.svelte.d.ts → short-videos/short-video-viewer/cmp.attachments-inline.svelte.d.ts} +2 -2
- package/dist/short-videos/short-video-viewer/cmp.attachments.svelte +45 -48
- package/dist/short-videos/short-video-viewer/cmp.attachments.svelte.d.ts +4 -2
- package/dist/{streams/components/product/cmp.product-component.svelte → short-videos/short-video-viewer/cmp.product.svelte} +34 -26
- package/dist/short-videos/short-video-viewer/cmp.product.svelte.d.ts +10 -0
- package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte +31 -52
- package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte.d.ts +1 -1
- package/dist/short-videos/short-video-viewer/cmp.short-video-viewer.svelte +6 -6
- package/dist/short-videos/short-video-viewer/index.d.ts +6 -3
- package/dist/short-videos/short-video-viewer/index.js +4 -2
- package/dist/short-videos/short-video-viewer/mapper.js +35 -7
- package/dist/short-videos/short-video-viewer/operations.generated.d.ts +1 -1
- package/dist/short-videos/short-video-viewer/operations.generated.js +67 -103
- package/dist/short-videos/short-video-viewer/operations.graphql +29 -2
- package/dist/short-videos/short-video-viewer/short-video-attachments-localization.svelte.d.ts +12 -0
- package/dist/short-videos/short-video-viewer/short-video-attachments-localization.svelte.js +10 -0
- package/dist/short-videos/short-video-viewer/short-video-details-localization.svelte.d.ts +3 -4
- package/dist/short-videos/short-video-viewer/short-video-details-localization.svelte.js +4 -15
- package/dist/short-videos/short-video-viewer/short-video-product-localization.svelte.d.ts +7 -0
- package/dist/{products/product-card/product-card-localization.svelte.js → short-videos/short-video-viewer/short-video-product-localization.svelte.js} +1 -1
- package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.d.ts +3 -0
- package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.js +4 -7
- package/dist/short-videos/short-video-viewer/types.d.ts +29 -6
- package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte +4 -4
- package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte.d.ts +2 -2
- package/dist/short-videos/short-videos-player/controls.svelte +42 -35
- package/dist/short-videos/short-videos-player/controls.svelte.d.ts +1 -1
- package/dist/short-videos/short-videos-player/index.d.ts +28 -2
- package/dist/short-videos/short-videos-player/index.js +40 -1
- package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.d.ts +3 -9
- package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.js +2 -17
- package/dist/streams/layout/cmp.layout.svelte +34 -0
- package/dist/streams/{slots/cmp.stream-component-slot.svelte.d.ts → layout/cmp.layout.svelte.d.ts} +2 -2
- package/dist/streams/layout/cmp.slot-content.svelte +32 -0
- package/dist/streams/layout/cmp.slot-content.svelte.d.ts +9 -0
- package/dist/streams/layout/cmp.slot.svelte +26 -0
- package/dist/streams/layout/cmp.slot.svelte.d.ts +9 -0
- package/dist/streams/layout/component.d.ts +6 -0
- package/dist/streams/layout/component.js +1 -0
- package/dist/streams/layout/css-values.d.ts +10 -0
- package/dist/streams/layout/css-values.js +1 -0
- package/dist/streams/layout/element-views/cmp.container-stream-element.svelte +16 -0
- package/dist/streams/layout/element-views/cmp.container-stream-element.svelte.d.ts +11 -0
- package/dist/streams/layout/element-views/cmp.image-ref-stream-element.svelte +38 -0
- package/dist/streams/layout/element-views/cmp.image-ref-stream-element.svelte.d.ts +9 -0
- package/dist/streams/layout/element-views/cmp.images-stream-element.svelte +30 -0
- package/dist/streams/layout/element-views/cmp.images-stream-element.svelte.d.ts +9 -0
- package/dist/streams/layout/element-views/cmp.price-stream-element.svelte +97 -0
- package/dist/streams/layout/element-views/cmp.price-stream-element.svelte.d.ts +11 -0
- package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +6 -0
- package/dist/streams/{components/product/cmp.product-component.svelte.d.ts → layout/element-views/cmp.short-video-stream-element.svelte.d.ts} +2 -3
- package/dist/streams/layout/element-views/cmp.spacer-stream-element.svelte +45 -0
- package/dist/streams/layout/element-views/cmp.spacer-stream-element.svelte.d.ts +9 -0
- package/dist/streams/layout/element-views/cmp.stream-element.svelte +60 -0
- package/dist/streams/layout/element-views/cmp.stream-element.svelte.d.ts +13 -0
- package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte +23 -0
- package/dist/streams/layout/element-views/cmp.text-ref-stream-element.svelte.d.ts +9 -0
- package/dist/streams/layout/element-views/cmp.text-stream-element.svelte +8 -0
- package/dist/{ui/shadow-dom/cmp.shadow-dom.svelte.d.ts → streams/layout/element-views/cmp.text-stream-element.svelte.d.ts} +2 -2
- package/dist/streams/layout/element-views/data-by-key-accessor.d.ts +3 -0
- package/dist/streams/layout/element-views/data-by-key-accessor.js +55 -0
- package/dist/streams/layout/element-views/index.d.ts +11 -0
- package/dist/streams/layout/element-views/index.js +9 -0
- package/dist/streams/layout/element-views/price-stream-element-localization.svelte.d.ts +9 -0
- package/dist/streams/layout/element-views/price-stream-element-localization.svelte.js +8 -0
- package/dist/streams/layout/element-views/stream-element-localization.svelte.d.ts +8 -0
- package/dist/streams/layout/element-views/stream-element-localization.svelte.js +6 -0
- package/dist/streams/layout/elements.d.ts +51 -0
- package/dist/streams/layout/elements.js +1 -0
- package/dist/streams/layout/enums.d.ts +45 -0
- package/dist/streams/layout/enums.js +54 -0
- package/dist/streams/layout/index.d.ts +19 -0
- package/dist/streams/layout/index.js +15 -0
- package/dist/streams/layout/layout.d.ts +13 -0
- package/dist/streams/layout/models/index.d.ts +6 -0
- package/dist/streams/layout/models/index.js +1 -0
- package/dist/streams/layout/models/mapper.d.ts +3 -0
- package/dist/streams/layout/models/mapper.js +62 -0
- package/dist/streams/layout/models/stream-layout-blob-model.d.ts +4 -0
- package/dist/streams/layout/models/stream-layout-media-item-model.d.ts +6 -0
- package/dist/streams/layout/models/stream-layout-media-item-model.js +1 -0
- package/dist/streams/layout/models/stream-layout-post-header-model.d.ts +11 -0
- package/dist/streams/layout/models/stream-layout-post-header-model.js +1 -0
- package/dist/streams/layout/models/stream-layout-product-model.d.ts +19 -0
- package/dist/streams/layout/models/stream-layout-product-model.js +1 -0
- package/dist/streams/layout/models/stream-layout-short-video-model.d.ts +31 -0
- package/dist/streams/layout/models/stream-layout-short-video-model.js +1 -0
- package/dist/streams/layout/serializer.d.ts +3 -0
- package/dist/streams/layout/serializer.js +6 -0
- package/dist/streams/layout/slot-data-input.d.ts +14 -0
- package/dist/streams/layout/slot-data-input.js +1 -0
- package/dist/streams/layout/slot-data.d.ts +18 -0
- package/dist/streams/layout/slot-data.js +1 -0
- package/dist/streams/layout/slot.d.ts +16 -0
- package/dist/streams/layout/slot.js +1 -0
- package/dist/streams/layout/styles-transformer.d.ts +13 -0
- package/dist/streams/layout/styles-transformer.js +140 -0
- package/dist/streams/layout/styles.d.ts +43 -0
- package/dist/streams/layout/styles.js +1 -0
- package/dist/streams/layout/type-guards.d.ts +8 -0
- package/dist/streams/layout/type-guards.js +21 -0
- package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte +8 -42
- package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte.d.ts +0 -2
- package/dist/streams/stream-page-viewer/mapper.d.ts +1 -1
- package/dist/streams/stream-page-viewer/mapper.js +7 -8
- package/dist/streams/stream-page-viewer/operations.generated.d.ts +1 -104
- package/dist/streams/stream-page-viewer/operations.generated.js +2 -375
- package/dist/streams/stream-page-viewer/operations.graphql +1 -6
- package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.d.ts +3 -0
- package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.js +4 -7
- package/dist/streams/stream-page-viewer/types.d.ts +5 -5
- package/dist/streams/stream-player/cmp.stream-player.svelte +7 -3
- package/dist/streams/stream-player/controls.svelte +43 -35
- package/dist/streams/stream-player/index.d.ts +29 -2
- package/dist/streams/stream-player/index.js +44 -1
- package/dist/streams/stream-player/operations.generated.d.ts +1 -103
- package/dist/streams/stream-player/operations.generated.js +2 -375
- package/dist/streams/stream-player/stream-overview.svelte +2 -2
- package/dist/streams/stream-player/stream-player-buffer.svelte.d.ts +1 -1
- package/dist/streams/stream-player/stream-player-buffer.svelte.js +1 -1
- package/dist/streams/stream-player/stream-player-localization.svelte.d.ts +3 -9
- package/dist/streams/stream-player/stream-player-localization.svelte.js +4 -23
- package/dist/ui/media-item-view/cmp.media-item-view.svelte +2 -1
- package/dist/ui/media-item-view/cmp.media-item-view.svelte.d.ts +2 -1
- package/dist/ui/media-items-gallery/cmp.media-items-gallery.svelte +2 -1
- package/dist/ui/media-items-gallery/cmp.media-items-gallery.svelte.d.ts +2 -1
- package/dist/ui/shadow-dom/_normalize.scss +350 -0
- package/dist/ui/shadow-dom/_reset.scss +189 -0
- package/dist/ui/shadow-dom/index.d.ts +1 -1
- package/dist/ui/shadow-dom/index.js +1 -1
- package/dist/ui/shadow-dom/shadow-host.svelte.d.ts +8 -0
- package/dist/ui/shadow-dom/shadow-host.svelte.js +39 -0
- package/dist/ui/video/cmp.video.svelte +1 -1
- package/package.json +68 -26
- package/dist/advertising/ad-view/cmp.ad-view.svelte +0 -82
- package/dist/advertising/ad-view/index.d.ts +0 -2
- package/dist/advertising/ad-view/index.js +0 -1
- package/dist/advertising/ad-view/mapper.d.ts +0 -3
- package/dist/advertising/ad-view/mapper.js +0 -16
- package/dist/advertising/ad-view/operations.generated.d.ts +0 -17
- package/dist/advertising/ad-view/operations.generated.js +0 -46
- package/dist/advertising/ad-view/operations.graphql +0 -14
- package/dist/advertising/ad-view/types.d.ts +0 -10
- package/dist/advertising/index.d.ts +0 -1
- package/dist/advertising/index.js +0 -1
- package/dist/advertising/types.d.ts +0 -5
- package/dist/advertising/types.js +0 -6
- package/dist/products/index.d.ts +0 -1
- package/dist/products/index.js +0 -1
- package/dist/products/product-card/cmp.product-card.svelte +0 -121
- package/dist/products/product-card/cmp.product-card.svelte.d.ts +0 -10
- package/dist/products/product-card/index.d.ts +0 -3
- package/dist/products/product-card/index.js +0 -3
- package/dist/products/product-card/mapper.d.ts +0 -3
- package/dist/products/product-card/mapper.js +0 -14
- package/dist/products/product-card/operations.generated.d.ts +0 -22
- package/dist/products/product-card/operations.generated.js +0 -65
- package/dist/products/product-card/operations.graphql +0 -19
- package/dist/products/product-card/product-card-localization.svelte.d.ts +0 -7
- package/dist/products/product-card/types.d.ts +0 -10
- package/dist/products/product-card/types.js +0 -1
- package/dist/products/types.d.ts +0 -5
- package/dist/products/types.js +0 -6
- package/dist/short-videos/short-videos-player-modal/cmp.short-videos-player-modal.svelte +0 -486
- package/dist/short-videos/short-videos-player-modal/cmp.short-videos-player-modal.svelte.d.ts +0 -3
- package/dist/short-videos/short-videos-player-modal/index.d.ts +0 -79
- package/dist/short-videos/short-videos-player-modal/index.js +0 -78
- package/dist/short-videos/short-videos-player-modal/short-videos-player-modal-state.svelte.d.ts +0 -16
- package/dist/short-videos/short-videos-player-modal/short-videos-player-modal-state.svelte.js +0 -13
- package/dist/streams/components/cmp.stream-page-component.svelte +0 -16
- package/dist/streams/components/cmp.stream-page-component.svelte.d.ts +0 -10
- package/dist/streams/components/components.factory.d.ts +0 -22
- package/dist/streams/components/components.factory.js +0 -34
- package/dist/streams/components/images/cmp.images-component.svelte +0 -7
- package/dist/streams/components/images/index.d.ts +0 -2
- package/dist/streams/components/images/index.js +0 -1
- package/dist/streams/components/images/types.d.ts +0 -8
- package/dist/streams/components/images/types.js +0 -5
- package/dist/streams/components/index.d.ts +0 -7
- package/dist/streams/components/index.js +0 -6
- package/dist/streams/components/mapper.d.ts +0 -3
- package/dist/streams/components/mapper.js +0 -43
- package/dist/streams/components/operations.generated.d.ts +0 -178
- package/dist/streams/components/operations.generated.js +0 -653
- package/dist/streams/components/operations.graphql +0 -35
- package/dist/streams/components/product/index.d.ts +0 -3
- package/dist/streams/components/product/index.js +0 -2
- package/dist/streams/components/product/mapper.d.ts +0 -3
- package/dist/streams/components/product/mapper.js +0 -14
- package/dist/streams/components/product/operations.generated.d.ts +0 -22
- package/dist/streams/components/product/operations.generated.js +0 -53
- package/dist/streams/components/product/operations.graphql +0 -19
- package/dist/streams/components/product/types.d.ts +0 -10
- package/dist/streams/components/product/types.js +0 -1
- package/dist/streams/components/short-video/cmp.short-video-component.svelte +0 -9
- package/dist/streams/components/short-video/cmp.short-video-component.svelte.d.ts +0 -10
- package/dist/streams/components/short-video/index.d.ts +0 -3
- package/dist/streams/components/short-video/index.js +0 -2
- package/dist/streams/components/short-video/mapper.d.ts +0 -3
- package/dist/streams/components/short-video/mapper.js +0 -4
- package/dist/streams/components/short-video/operations.generated.d.ts +0 -56
- package/dist/streams/components/short-video/operations.generated.js +0 -193
- package/dist/streams/components/short-video/operations.graphql +0 -3
- package/dist/streams/components/short-video/types.d.ts +0 -2
- package/dist/streams/components/stream-components-localization.svelte.d.ts +0 -10
- package/dist/streams/components/stream-components-localization.svelte.js +0 -13
- package/dist/streams/components/types.d.ts +0 -27
- package/dist/streams/components/types.js +0 -6
- package/dist/streams/slots/cmp.stream-component-slot.svelte +0 -35
- package/dist/streams/slots/index.d.ts +0 -3
- package/dist/streams/slots/index.js +0 -2
- package/dist/streams/slots/mapper.d.ts +0 -3
- package/dist/streams/slots/mapper.js +0 -18
- package/dist/streams/slots/operations.generated.d.ts +0 -17
- package/dist/streams/slots/operations.generated.js +0 -34
- package/dist/streams/slots/operations.graphql +0 -14
- package/dist/streams/slots/styles-transformer.d.ts +0 -6
- package/dist/streams/slots/styles-transformer.js +0 -12
- package/dist/streams/slots/types.d.ts +0 -16
- package/dist/streams/slots/types.js +0 -1
- package/dist/streams/stream-player-modal/cmp.stream-player-modal.svelte +0 -487
- package/dist/streams/stream-player-modal/cmp.stream-player-modal.svelte.d.ts +0 -3
- package/dist/streams/stream-player-modal/index.d.ts +0 -79
- package/dist/streams/stream-player-modal/index.js +0 -78
- package/dist/streams/stream-player-modal/stream-player-modal-state.svelte.d.ts +0 -17
- package/dist/streams/stream-player-modal/stream-player-modal-state.svelte.js +0 -14
- package/dist/ui/shadow-dom/cmp.shadow-dom.svelte +0 -26
- /package/dist/{advertising/ad-view/types.js → streams/layout/layout.js} +0 -0
- /package/dist/streams/{components/short-video/types.js → layout/models/stream-layout-blob-model.js} +0 -0
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
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:
|
|
10
|
-
ad:
|
|
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 {
|
|
17
|
+
let { shortVideosProvider, localization: localizationInit, on } = $props();
|
|
18
18
|
const localization = $derived(new ShortVideosPlayerLocalization(localizationInit));
|
|
19
|
-
const buffer = $derived(new PlayerBuffer(
|
|
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
|
-
<
|
|
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
|
-
|
|
5
|
+
shortVideosProvider: PlayerItemsProvider<ShortVideoViewerModel>;
|
|
6
6
|
localization?: IShortVideosPlayerLocalization;
|
|
7
7
|
on?: {
|
|
8
8
|
closePlayer?: () => void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
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
|
-
<
|
|
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
|
|
40
|
-
<div class="short-video-player-controls__short-video-
|
|
41
|
-
|
|
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 <
|
|
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-
|
|
148
|
+
.short-video-player-controls__short-video-attachments {
|
|
160
149
|
flex: 1;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
174
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
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 {
|
|
1
|
+
import type { IShortVideoDetailsLocalization } from '../short-video-viewer';
|
|
2
2
|
export interface IShortVideosPlayerLocalization {
|
|
3
|
-
|
|
4
|
-
offersSection?: string;
|
|
5
|
-
viewsCount?: (count: number) => string;
|
|
6
|
-
timeAgoLocalization?: ITimeAgoLocalization;
|
|
3
|
+
shortVideoDetailsLocalization?: IShortVideoDetailsLocalization;
|
|
7
4
|
}
|
|
8
5
|
export declare class ShortVideosPlayerLocalization {
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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>
|
package/dist/streams/{slots/cmp.stream-component-slot.svelte.d.ts → layout/cmp.layout.svelte.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { StreamLayout } from './layout';
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
type Props = {
|
|
4
|
-
model:
|
|
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 @@
|
|
|
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;
|