@streamscloud/embeddable 10.1.2 → 11.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/ads/ad-card/cmp.ad-card.svelte +27 -7
- package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +5 -0
- package/dist/content-player/cmp.content-player.svelte +30 -40
- package/dist/content-player/content-player-config.svelte.d.ts +13 -2
- package/dist/content-player/content-player-config.svelte.js +8 -5
- package/dist/content-player/content-player-settings.d.ts +12 -0
- package/dist/content-player/content-player-settings.js +12 -0
- package/dist/content-player/controls-and-attachments.svelte +25 -54
- package/dist/content-player/header.svelte +10 -132
- package/dist/content-player/header.svelte.d.ts +0 -4
- package/dist/content-player/overview-panel.svelte +22 -72
- package/dist/content-player/overview-panel.svelte.d.ts +30 -7
- package/dist/content-player/ui-manager.svelte.d.ts +2 -4
- package/dist/content-player/ui-manager.svelte.js +3 -5
- package/dist/media-center/config/internal-media-center-config.js +2 -1
- package/dist/media-center/config/operations.generated.d.ts +13 -0
- package/dist/media-center/config/operations.generated.js +20 -0
- package/dist/media-center/config/operations.graphql +13 -0
- package/dist/media-center/config/types.d.ts +13 -0
- package/dist/media-center/media-center/cmp.media-center.svelte +117 -348
- package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +3 -1
- package/dist/media-center/media-center/{discover-panel-handler.svelte.d.ts → discover/discover-panel-handler.svelte.d.ts} +5 -6
- package/dist/media-center/media-center/{discover-panel-handler.svelte.js → discover/discover-panel-handler.svelte.js} +1 -8
- package/dist/media-center/media-center/discover/discover-panel-localization.d.ts +19 -0
- package/dist/media-center/media-center/discover/discover-panel-localization.js +78 -0
- package/dist/media-center/media-center/{discover-panel.svelte → discover/discover-panel.svelte} +18 -9
- package/dist/media-center/media-center/discover/discover-panel.svelte.d.ts +15 -0
- package/dist/media-center/media-center/discover/index.d.ts +2 -0
- package/dist/media-center/media-center/discover/index.js +2 -0
- package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +21 -0
- package/dist/media-center/media-center/handlers/categories-handler.svelte.js +36 -0
- package/dist/media-center/media-center/handlers/feed-handler.svelte.d.ts +6 -0
- package/dist/media-center/media-center/handlers/feed-handler.svelte.js +12 -0
- package/dist/media-center/media-center/handlers/index.d.ts +2 -0
- package/dist/media-center/media-center/handlers/index.js +2 -0
- package/dist/media-center/media-center/header-footer/index.d.ts +3 -0
- package/dist/media-center/media-center/header-footer/index.js +3 -0
- package/dist/media-center/media-center/header-footer/media-center-footer.svelte +77 -0
- package/dist/media-center/media-center/header-footer/media-center-footer.svelte.d.ts +7 -0
- package/dist/media-center/media-center/header-footer/media-center-header-localization.d.ts +12 -0
- package/dist/media-center/media-center/header-footer/media-center-header-localization.js +40 -0
- package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +91 -0
- package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte.d.ts +11 -0
- package/dist/media-center/media-center/header-footer/media-center-header.svelte +310 -0
- package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +13 -0
- package/dist/media-center/media-center/media-center-context.svelte.d.ts +50 -0
- package/dist/media-center/media-center/media-center-context.svelte.js +98 -0
- package/dist/media-center/media-center/{category-following-wrapper.svelte → menu/category-following-wrapper.svelte} +3 -2
- package/dist/media-center/media-center/{category-following-wrapper.svelte.d.ts → menu/category-following-wrapper.svelte.d.ts} +2 -2
- package/dist/media-center/media-center/menu/index.d.ts +2 -0
- package/dist/media-center/media-center/menu/index.js +2 -0
- package/dist/media-center/media-center/menu/menu-localization.d.ts +19 -0
- package/dist/media-center/media-center/menu/menu-localization.js +78 -0
- package/dist/media-center/media-center/menu/menu.svelte +345 -0
- package/dist/media-center/media-center/menu/menu.svelte.d.ts +14 -0
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +10 -0
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +26 -0
- package/dist/media-center/media-center/providers/index.d.ts +2 -0
- package/dist/media-center/media-center/providers/index.js +2 -0
- package/dist/media-center/media-center/providers/post-player-provider-generator.d.ts +8 -0
- package/dist/media-center/media-center/{post-player-provider-generator.js → providers/post-player-provider-generator.js} +3 -3
- package/dist/media-center/media-center/{streams-player-provider-generator.d.ts → providers/streams-player-provider-generator.d.ts} +2 -2
- package/dist/media-center/media-center/{streams-player-provider-generator.js → providers/streams-player-provider-generator.js} +2 -2
- package/dist/media-center/media-center/streams-in-category/index.d.ts +2 -0
- package/dist/media-center/media-center/streams-in-category/index.js +2 -0
- package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.d.ts → streams-in-category/streams-in-category-panel-handler.svelte.d.ts} +4 -4
- package/dist/media-center/media-center/{streams-in-category-panel-handler.svelte.js → streams-in-category/streams-in-category-panel-handler.svelte.js} +5 -5
- package/dist/media-center/media-center/{streams-in-category-panel.svelte → streams-in-category/streams-in-category-panel.svelte} +1 -1
- package/dist/media-center/media-center/{streams-in-category-panel.svelte.d.ts → streams-in-category/streams-in-category-panel.svelte.d.ts} +1 -1
- package/dist/media-center/media-center/types.d.ts +1 -1
- package/dist/media-center/model/types.d.ts +7 -6
- package/dist/posts/attachments/cmp.attachments.svelte +5 -3
- package/dist/posts/attachments/cmp.attachments.svelte.d.ts +6 -0
- package/dist/posts/controls/cmp.controls.svelte +3 -3
- package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
- package/dist/posts/post-viewer/cmp.post-viewer.svelte +3 -1
- package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +4 -0
- package/dist/products/product-card/cmp.product-card.svelte +35 -11
- package/dist/products/product-card/cmp.product-card.svelte.d.ts +5 -0
- package/dist/streams/data-loaders/mapper.js +0 -5
- package/dist/streams/data-loaders/operations.generated.d.ts +0 -12
- package/dist/streams/data-loaders/operations.generated.js +0 -26
- package/dist/streams/data-loaders/operations.graphql +0 -6
- package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +2 -1
- package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte.d.ts +4 -0
- package/dist/streams/stream-card/cmp.stream-card.svelte +5 -5
- package/dist/streams/streams-player/index.js +1 -1
- package/dist/streams/streams-player/stream-overview.svelte +6 -96
- package/dist/streams/streams-player/stream-overview.svelte.d.ts +0 -4
- package/dist/streams/streams-player/stream-player-localization.d.ts +0 -1
- package/dist/streams/streams-player/stream-player-localization.js +0 -6
- package/dist/streams/streams-player/streams-player-view.svelte +0 -2
- package/dist/streams/streams-player/types.d.ts +0 -4
- package/dist/ui/icon/cmp.icon.svelte +3 -2
- package/dist/ui/player/button/cmp.player-button.svelte +17 -5
- package/dist/ui/player/button/cmp.player-button.svelte.d.ts +3 -0
- package/dist/ui/player/button/cmp.player-buttons-group.svelte +20 -5
- package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -0
- package/dist/ui/player/button/types.d.ts +2 -0
- package/package.json +1 -1
- package/dist/content-player/content-player-localization.d.ts +0 -6
- package/dist/content-player/content-player-localization.js +0 -15
- package/dist/media-center/media-center/desktop-categories-selector.svelte +0 -132
- package/dist/media-center/media-center/desktop-categories-selector.svelte.d.ts +0 -12
- package/dist/media-center/media-center/discover-panel.svelte.d.ts +0 -15
- package/dist/media-center/media-center/media-center-handler.svelte.d.ts +0 -28
- package/dist/media-center/media-center/media-center-handler.svelte.js +0 -73
- package/dist/media-center/media-center/media-center-localization.d.ts +0 -10
- package/dist/media-center/media-center/media-center-localization.js +0 -39
- package/dist/media-center/media-center/mobile-controls-panel.svelte +0 -268
- package/dist/media-center/media-center/mobile-controls-panel.svelte.d.ts +0 -20
- package/dist/media-center/media-center/post-player-provider-generator.d.ts +0 -8
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {} from '../../../core/locale';
|
|
2
|
+
export class DiscoverPanelLocalization {
|
|
3
|
+
buttons;
|
|
4
|
+
shortVideosSectionTitle;
|
|
5
|
+
interestsSectionTitle;
|
|
6
|
+
latestStreamsSectionTitle;
|
|
7
|
+
popularStreamsSectionTitle;
|
|
8
|
+
overviewLabel;
|
|
9
|
+
membersLabel;
|
|
10
|
+
locale;
|
|
11
|
+
constructor(locale) {
|
|
12
|
+
this.shortVideosSectionTitle = loc.shortVideosSectionTitle[locale];
|
|
13
|
+
this.interestsSectionTitle = loc.interestsSectionTitle[locale];
|
|
14
|
+
this.latestStreamsSectionTitle = loc.streamsSectionTitle[locale];
|
|
15
|
+
this.popularStreamsSectionTitle = loc.popularStreamsSectionTitle[locale];
|
|
16
|
+
this.overviewLabel = loc.overviewLabel[locale];
|
|
17
|
+
this.buttons = {
|
|
18
|
+
cart: loc.cartButton[locale],
|
|
19
|
+
discover: loc.discoverButton[locale],
|
|
20
|
+
feed: loc.feedButton[locale],
|
|
21
|
+
login: loc.loginButton[locale],
|
|
22
|
+
moments: loc.momentsButton[locale],
|
|
23
|
+
webpage: loc.webpageButton[locale]
|
|
24
|
+
};
|
|
25
|
+
this.membersLabel = loc.membersLabel[locale];
|
|
26
|
+
this.locale = locale;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const loc = {
|
|
30
|
+
shortVideosSectionTitle: {
|
|
31
|
+
en: 'Popular Short Videos',
|
|
32
|
+
no: 'Populære korte videoer'
|
|
33
|
+
},
|
|
34
|
+
popularStreamsSectionTitle: {
|
|
35
|
+
en: 'Popular Streams',
|
|
36
|
+
no: 'Populære Streams'
|
|
37
|
+
},
|
|
38
|
+
streamsSectionTitle: {
|
|
39
|
+
en: 'Latest Streams',
|
|
40
|
+
no: 'Siste Streams'
|
|
41
|
+
},
|
|
42
|
+
interestsSectionTitle: {
|
|
43
|
+
en: 'Interest Channels',
|
|
44
|
+
no: 'Interessekanaler'
|
|
45
|
+
},
|
|
46
|
+
overviewLabel: {
|
|
47
|
+
en: 'Overview',
|
|
48
|
+
no: 'Oversikt'
|
|
49
|
+
},
|
|
50
|
+
discoverButton: {
|
|
51
|
+
en: 'Discover',
|
|
52
|
+
no: 'Oppdag'
|
|
53
|
+
},
|
|
54
|
+
feedButton: {
|
|
55
|
+
en: 'Feed',
|
|
56
|
+
no: 'Feed'
|
|
57
|
+
},
|
|
58
|
+
cartButton: {
|
|
59
|
+
en: 'Cart',
|
|
60
|
+
no: 'Handlekurv'
|
|
61
|
+
},
|
|
62
|
+
loginButton: {
|
|
63
|
+
en: 'Login',
|
|
64
|
+
no: 'Logg inn'
|
|
65
|
+
},
|
|
66
|
+
momentsButton: {
|
|
67
|
+
en: 'Moments',
|
|
68
|
+
no: 'Øyeblikk'
|
|
69
|
+
},
|
|
70
|
+
webpageButton: {
|
|
71
|
+
en: 'Webpage',
|
|
72
|
+
no: 'Nettside'
|
|
73
|
+
},
|
|
74
|
+
membersLabel: {
|
|
75
|
+
en: (count) => (count === 1 ? `Member` : `Members`),
|
|
76
|
+
no: (count) => (count === 1 ? `Medlem` : `Medlemmer`)
|
|
77
|
+
}
|
|
78
|
+
};
|
package/dist/media-center/media-center/{discover-panel.svelte → discover/discover-panel.svelte}
RENAMED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
<script lang="ts">import { getPostCoverImage } from '
|
|
2
|
-
import { ProductCard } from '
|
|
3
|
-
import { ShortVideoCard } from '
|
|
4
|
-
import { StreamCard } from '
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
<script lang="ts">import { getPostCoverImage } from '../../../posts/model';
|
|
2
|
+
import { ProductCard } from '../../../products/product-card';
|
|
3
|
+
import { ShortVideoCard } from '../../../short-videos/short-video-card';
|
|
4
|
+
import { StreamCard } from '../../../streams/stream-card';
|
|
5
|
+
import { DiscoverPanelLocalization } from './discover-panel-localization';
|
|
6
|
+
let { context, locale, on } = $props();
|
|
7
|
+
const handler = $derived(context.discoverHandler);
|
|
8
|
+
const localization = $derived(new DiscoverPanelLocalization(locale));
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<div class="media-center-overview">
|
|
@@ -12,7 +13,7 @@ let { handler, localization, on } = $props();
|
|
|
12
13
|
{#if handler.streamSectionItems.length}
|
|
13
14
|
<div class="media-center-overview__section">
|
|
14
15
|
<div class="media-center-overview__section-header media-center-overview__section-header--blue">
|
|
15
|
-
{localization.
|
|
16
|
+
{localization.latestStreamsSectionTitle}
|
|
16
17
|
</div>
|
|
17
18
|
<div class="media-center-overview__section-content">
|
|
18
19
|
{#each handler.streamSectionItems as item (item.id)}
|
|
@@ -36,7 +37,15 @@ let { handler, localization, on } = $props();
|
|
|
36
37
|
</div>
|
|
37
38
|
{:else if item.kind === 'product'}
|
|
38
39
|
<div class="media-center-overview__card-wrapper" data-theme="dark">
|
|
39
|
-
<ProductCard
|
|
40
|
+
<ProductCard
|
|
41
|
+
product={item.data}
|
|
42
|
+
colors={{
|
|
43
|
+
background: context.playerColors?.cardBackground ?? null,
|
|
44
|
+
price: context.playerColors?.price ?? null,
|
|
45
|
+
salePrice: context.playerColors?.salePrice ?? null
|
|
46
|
+
}}
|
|
47
|
+
trackingParams={item.trackingParams}
|
|
48
|
+
locale={localization.locale} />
|
|
40
49
|
</div>
|
|
41
50
|
{/if}
|
|
42
51
|
{/each}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Locale } from '../../../core/locale';
|
|
2
|
+
import type { PostPlayerModel } from '../../../posts/posts-player/types';
|
|
3
|
+
import type { StreamPlayerModel } from '../../../streams/streams-player';
|
|
4
|
+
import type { MediaCenterContext } from '../media-center-context.svelte';
|
|
5
|
+
type Props = {
|
|
6
|
+
context: MediaCenterContext;
|
|
7
|
+
locale: Locale;
|
|
8
|
+
on: {
|
|
9
|
+
shortVideoSelected: (shortVideo: PostPlayerModel) => void;
|
|
10
|
+
streamSelected: (stream: StreamPlayerModel) => void;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
declare const DiscoverPanel: import("svelte").Component<Props, {}, "">;
|
|
14
|
+
type DiscoverPanel = ReturnType<typeof DiscoverPanel>;
|
|
15
|
+
export default DiscoverPanel;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MediaCenterConfigModel } from '../../config/types';
|
|
2
|
+
import type { MediaCenterCategoryData } from '../types';
|
|
3
|
+
export declare class CategoriesHandler {
|
|
4
|
+
readonly categories: {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
children: {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
image: string | null;
|
|
11
|
+
parentId: string;
|
|
12
|
+
}[];
|
|
13
|
+
image: string | null;
|
|
14
|
+
}[];
|
|
15
|
+
private _allCateogories;
|
|
16
|
+
private _selectedCategoryId;
|
|
17
|
+
get selectedCategoryId(): string | null;
|
|
18
|
+
set selectedCategoryId(value: string | null);
|
|
19
|
+
getCategoryData: (categoryId: string) => MediaCenterCategoryData | null;
|
|
20
|
+
init: (categories: MediaCenterConfigModel["contentCategories"]) => Promise<void>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class CategoriesHandler {
|
|
2
|
+
categories = $derived.by(() => {
|
|
3
|
+
return this._allCateogories
|
|
4
|
+
.filter((c) => !c.parentId)
|
|
5
|
+
.map((c) => {
|
|
6
|
+
const childCategories = this._allCateogories.filter((cc) => cc.parentId === c.id);
|
|
7
|
+
const children = childCategories.map((cc) => ({ id: cc.id, name: cc.name, image: cc.image, parentId: cc.parentId }));
|
|
8
|
+
return { id: c.id, name: c.name, children, image: c.image };
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
_allCateogories = $state.raw([]);
|
|
12
|
+
_selectedCategoryId = $state.raw(null);
|
|
13
|
+
get selectedCategoryId() {
|
|
14
|
+
return this._selectedCategoryId;
|
|
15
|
+
}
|
|
16
|
+
set selectedCategoryId(value) {
|
|
17
|
+
this._selectedCategoryId = value;
|
|
18
|
+
}
|
|
19
|
+
getCategoryData = (categoryId) => {
|
|
20
|
+
const category = this._allCateogories.find((c) => c.id === categoryId);
|
|
21
|
+
if (!category) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const parentCategory = category.parentId ? this._allCateogories.find((c) => c.id === category.parentId) : null;
|
|
25
|
+
const selectedCategoryData = {
|
|
26
|
+
id: category.id,
|
|
27
|
+
name: category.name,
|
|
28
|
+
parentId: parentCategory?.id,
|
|
29
|
+
parentName: parentCategory?.name
|
|
30
|
+
};
|
|
31
|
+
return selectedCategoryData;
|
|
32
|
+
};
|
|
33
|
+
init = async (categories) => {
|
|
34
|
+
this._allCateogories = categories;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<script lang="ts">import { Icon } from '../../../ui/icon';
|
|
2
|
+
import IconCart from '@fluentui/svg-icons/icons/cart_20_regular.svg?raw';
|
|
3
|
+
import IconLineHorizontal3 from '@fluentui/svg-icons/icons/line_horizontal_3_20_regular.svg?raw';
|
|
4
|
+
import IconPhone from '@fluentui/svg-icons/icons/phone_20_regular.svg?raw';
|
|
5
|
+
import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
|
|
6
|
+
let { context } = $props();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<div class="media-center-footer">
|
|
10
|
+
<div class="media-center-footer__spacer"></div>
|
|
11
|
+
<button
|
|
12
|
+
type="button"
|
|
13
|
+
class="media-center-footer__button"
|
|
14
|
+
class:media-center-footer__button--active={context.feedHandler.active}
|
|
15
|
+
onclick={() => context.activateFeed()}>
|
|
16
|
+
<Icon src={IconPhone} />
|
|
17
|
+
</button>
|
|
18
|
+
<div class="media-center-footer__spacer"></div>
|
|
19
|
+
<button
|
|
20
|
+
type="button"
|
|
21
|
+
class="media-center-footer__button"
|
|
22
|
+
class:media-center-footer__button--active={context.discoverHandler.activated}
|
|
23
|
+
onclick={context.activateDiscover}>
|
|
24
|
+
<Icon src={IconScreenSearch} />
|
|
25
|
+
</button>
|
|
26
|
+
<div class="media-center-footer__spacer"></div>
|
|
27
|
+
<button type="button" class="media-center-footer__button" class:media-center-footer__button--active={false} onclick={() => ({})}>
|
|
28
|
+
<Icon src={IconCart} />
|
|
29
|
+
</button>
|
|
30
|
+
<div class="media-center-footer__spacer"></div>
|
|
31
|
+
<button type="button" class="media-center-footer__button" class:media-center-footer__button--active={context.menuActive} onclick={context.toggleMenu}>
|
|
32
|
+
<Icon src={IconLineHorizontal3} />
|
|
33
|
+
</button>
|
|
34
|
+
<div class="media-center-footer__spacer"></div>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<style>@keyframes fadeIn {
|
|
38
|
+
0% {
|
|
39
|
+
opacity: 1;
|
|
40
|
+
}
|
|
41
|
+
50% {
|
|
42
|
+
opacity: 0.4;
|
|
43
|
+
}
|
|
44
|
+
100% {
|
|
45
|
+
opacity: 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
.media-center-footer {
|
|
49
|
+
width: 100%;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: space-between;
|
|
53
|
+
pointer-events: auto;
|
|
54
|
+
z-index: 1;
|
|
55
|
+
background: #000000;
|
|
56
|
+
padding-top: 0.5rem;
|
|
57
|
+
padding-bottom: 2.625rem;
|
|
58
|
+
}
|
|
59
|
+
.media-center-footer__button {
|
|
60
|
+
position: relative;
|
|
61
|
+
pointer-events: auto;
|
|
62
|
+
padding: 0.75rem;
|
|
63
|
+
display: flex;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
align-items: center;
|
|
66
|
+
--icon--size: 1.5rem;
|
|
67
|
+
--icon--color: #f2f2f2;
|
|
68
|
+
line-height: 0;
|
|
69
|
+
}
|
|
70
|
+
.media-center-footer__button--active {
|
|
71
|
+
--icon--color: #ffffff;
|
|
72
|
+
--icon--stroke-width: 0.5;
|
|
73
|
+
}
|
|
74
|
+
.media-center-footer__button--active {
|
|
75
|
+
color: #ffffff;
|
|
76
|
+
text-shadow: 0.001em 0 0 currentColor, -0.001em 0 0 currentColor, 0 0.001em 0 currentColor, 0 -0.001em 0 currentColor;
|
|
77
|
+
}</style>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MediaCenterContext } from '../media-center-context.svelte';
|
|
2
|
+
type Props = {
|
|
3
|
+
context: MediaCenterContext;
|
|
4
|
+
};
|
|
5
|
+
declare const MediaCenterFooter: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type MediaCenterFooter = ReturnType<typeof MediaCenterFooter>;
|
|
7
|
+
export default MediaCenterFooter;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Locale } from '../../../core/locale';
|
|
2
|
+
export declare class MediaCenterHeaderLocalization {
|
|
3
|
+
buttons: {
|
|
4
|
+
cart: string;
|
|
5
|
+
discover: string;
|
|
6
|
+
feed: string;
|
|
7
|
+
login: string;
|
|
8
|
+
moments: string;
|
|
9
|
+
webpage: string;
|
|
10
|
+
};
|
|
11
|
+
constructor(locale: Locale);
|
|
12
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {} from '../../../core/locale';
|
|
2
|
+
export class MediaCenterHeaderLocalization {
|
|
3
|
+
buttons;
|
|
4
|
+
constructor(locale) {
|
|
5
|
+
this.buttons = {
|
|
6
|
+
cart: loc.cartButton[locale],
|
|
7
|
+
discover: loc.discoverButton[locale],
|
|
8
|
+
feed: loc.feedButton[locale],
|
|
9
|
+
login: loc.loginButton[locale],
|
|
10
|
+
moments: loc.momentsButton[locale],
|
|
11
|
+
webpage: loc.webpageButton[locale]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const loc = {
|
|
16
|
+
discoverButton: {
|
|
17
|
+
en: 'Discover',
|
|
18
|
+
no: 'Oppdag'
|
|
19
|
+
},
|
|
20
|
+
feedButton: {
|
|
21
|
+
en: 'Feed',
|
|
22
|
+
no: 'Feed'
|
|
23
|
+
},
|
|
24
|
+
cartButton: {
|
|
25
|
+
en: 'Cart',
|
|
26
|
+
no: 'Handlekurv'
|
|
27
|
+
},
|
|
28
|
+
loginButton: {
|
|
29
|
+
en: 'Login',
|
|
30
|
+
no: 'Logg inn'
|
|
31
|
+
},
|
|
32
|
+
momentsButton: {
|
|
33
|
+
en: 'Moments',
|
|
34
|
+
no: 'Øyeblikk'
|
|
35
|
+
},
|
|
36
|
+
webpageButton: {
|
|
37
|
+
en: 'Webpage',
|
|
38
|
+
no: 'Nettside'
|
|
39
|
+
}
|
|
40
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<script lang="ts">import { Icon } from '../../../ui/icon';
|
|
2
|
+
import IconDismiss from '@fluentui/svg-icons/icons/dismiss_20_regular.svg?raw';
|
|
3
|
+
import IconLineHorizontal3 from '@fluentui/svg-icons/icons/line_horizontal_3_20_regular.svg?raw';
|
|
4
|
+
let { context, closeFn, on } = $props();
|
|
5
|
+
const headerMounted = (node) => {
|
|
6
|
+
const heightResizeObserver = new ResizeObserver(() => {
|
|
7
|
+
const headerHeight = node.clientHeight;
|
|
8
|
+
on.headerHeightChanged(headerHeight);
|
|
9
|
+
});
|
|
10
|
+
heightResizeObserver.observe(node);
|
|
11
|
+
return {
|
|
12
|
+
destroy: () => {
|
|
13
|
+
on.headerHeightChanged(0);
|
|
14
|
+
heightResizeObserver.disconnect();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
const styles = $derived.by(() => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const values = [];
|
|
21
|
+
if ((_a = context.playerColors) === null || _a === void 0 ? void 0 : _a.button) {
|
|
22
|
+
values.push(`--media-center-header-mobile--button-color: ${context.playerColors.button}`);
|
|
23
|
+
}
|
|
24
|
+
if ((_b = context.playerColors) === null || _b === void 0 ? void 0 : _b.buttonInactive) {
|
|
25
|
+
values.push(`--media-center-header-mobile--button-color--inactive: ${context.playerColors.buttonInactive}`);
|
|
26
|
+
}
|
|
27
|
+
return values.join(';');
|
|
28
|
+
});
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<div class="media-center-header-mobile" use:headerMounted style={styles}>
|
|
32
|
+
{#if closeFn}
|
|
33
|
+
<button type="button" class="media-center-header-mobile__button" onclick={closeFn}>
|
|
34
|
+
<Icon src={IconDismiss} />
|
|
35
|
+
</button>
|
|
36
|
+
{:else}
|
|
37
|
+
<span><!--just a stub--></span>
|
|
38
|
+
{/if}
|
|
39
|
+
<button
|
|
40
|
+
type="button"
|
|
41
|
+
class="media-center-header-mobile__button"
|
|
42
|
+
class:media-center-header-mobile__button--active={context.menuActive}
|
|
43
|
+
onclick={context.toggleMenu}>
|
|
44
|
+
<Icon src={IconLineHorizontal3} />
|
|
45
|
+
</button>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<style>@keyframes fadeIn {
|
|
49
|
+
0% {
|
|
50
|
+
opacity: 1;
|
|
51
|
+
}
|
|
52
|
+
50% {
|
|
53
|
+
opacity: 0.4;
|
|
54
|
+
}
|
|
55
|
+
100% {
|
|
56
|
+
opacity: 1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
.media-center-header-mobile {
|
|
60
|
+
--_media-center-header-mobile--button-color: var(--media-center-header-mobile--button-color, rgb(from #000000 r g b / 95%));
|
|
61
|
+
--_media-center-header-mobile--button-color--inactive: var(
|
|
62
|
+
--media-center-header-mobile--button-color--inactive,
|
|
63
|
+
rgb(from var(--_media-center-header-mobile--button-color, #000000) r g b / 60%)
|
|
64
|
+
);
|
|
65
|
+
position: absolute;
|
|
66
|
+
inset: 0;
|
|
67
|
+
bottom: auto;
|
|
68
|
+
padding-block: 0.9375rem;
|
|
69
|
+
padding-inline: 0.625rem;
|
|
70
|
+
z-index: 1;
|
|
71
|
+
display: flex;
|
|
72
|
+
justify-content: space-between;
|
|
73
|
+
align-items: center;
|
|
74
|
+
}
|
|
75
|
+
.media-center-header-mobile__button {
|
|
76
|
+
pointer-events: auto;
|
|
77
|
+
padding-block: 0.25rem;
|
|
78
|
+
padding-inline: 1rem;
|
|
79
|
+
display: flex;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
align-items: center;
|
|
82
|
+
border-radius: 0.875rem;
|
|
83
|
+
background-color: var(--_media-center-header-mobile--button-color--inactive);
|
|
84
|
+
border: var(--_media-center-header-mobile--button-color);
|
|
85
|
+
--icon--size: 1.5rem;
|
|
86
|
+
--icon--color: #ffffff;
|
|
87
|
+
line-height: 0;
|
|
88
|
+
}
|
|
89
|
+
.media-center-header-mobile__button--active {
|
|
90
|
+
background-color: var(--_media-center-header-mobile--button-color);
|
|
91
|
+
}</style>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MediaCenterContext } from '../media-center-context.svelte';
|
|
2
|
+
type Props = {
|
|
3
|
+
context: MediaCenterContext;
|
|
4
|
+
closeFn: (() => void) | null;
|
|
5
|
+
on: {
|
|
6
|
+
headerHeightChanged: (height: number) => void;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
declare const MediaCenterHeaderMobile: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type MediaCenterHeaderMobile = ReturnType<typeof MediaCenterHeaderMobile>;
|
|
11
|
+
export default MediaCenterHeaderMobile;
|