@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.
Files changed (112) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +27 -7
  2. package/dist/ads/ad-card/cmp.ad-card.svelte.d.ts +5 -0
  3. package/dist/content-player/cmp.content-player.svelte +30 -40
  4. package/dist/content-player/content-player-config.svelte.d.ts +13 -2
  5. package/dist/content-player/content-player-config.svelte.js +8 -5
  6. package/dist/content-player/content-player-settings.d.ts +12 -0
  7. package/dist/content-player/content-player-settings.js +12 -0
  8. package/dist/content-player/controls-and-attachments.svelte +25 -54
  9. package/dist/content-player/header.svelte +10 -132
  10. package/dist/content-player/header.svelte.d.ts +0 -4
  11. package/dist/content-player/overview-panel.svelte +22 -72
  12. package/dist/content-player/overview-panel.svelte.d.ts +30 -7
  13. package/dist/content-player/ui-manager.svelte.d.ts +2 -4
  14. package/dist/content-player/ui-manager.svelte.js +3 -5
  15. package/dist/media-center/config/internal-media-center-config.js +2 -1
  16. package/dist/media-center/config/operations.generated.d.ts +13 -0
  17. package/dist/media-center/config/operations.generated.js +20 -0
  18. package/dist/media-center/config/operations.graphql +13 -0
  19. package/dist/media-center/config/types.d.ts +13 -0
  20. package/dist/media-center/media-center/cmp.media-center.svelte +117 -348
  21. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +3 -1
  22. package/dist/media-center/media-center/{discover-panel-handler.svelte.d.ts → discover/discover-panel-handler.svelte.d.ts} +5 -6
  23. package/dist/media-center/media-center/{discover-panel-handler.svelte.js → discover/discover-panel-handler.svelte.js} +1 -8
  24. package/dist/media-center/media-center/discover/discover-panel-localization.d.ts +19 -0
  25. package/dist/media-center/media-center/discover/discover-panel-localization.js +78 -0
  26. package/dist/media-center/media-center/{discover-panel.svelte → discover/discover-panel.svelte} +18 -9
  27. package/dist/media-center/media-center/discover/discover-panel.svelte.d.ts +15 -0
  28. package/dist/media-center/media-center/discover/index.d.ts +2 -0
  29. package/dist/media-center/media-center/discover/index.js +2 -0
  30. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +21 -0
  31. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +36 -0
  32. package/dist/media-center/media-center/handlers/feed-handler.svelte.d.ts +6 -0
  33. package/dist/media-center/media-center/handlers/feed-handler.svelte.js +12 -0
  34. package/dist/media-center/media-center/handlers/index.d.ts +2 -0
  35. package/dist/media-center/media-center/handlers/index.js +2 -0
  36. package/dist/media-center/media-center/header-footer/index.d.ts +3 -0
  37. package/dist/media-center/media-center/header-footer/index.js +3 -0
  38. package/dist/media-center/media-center/header-footer/media-center-footer.svelte +77 -0
  39. package/dist/media-center/media-center/header-footer/media-center-footer.svelte.d.ts +7 -0
  40. package/dist/media-center/media-center/header-footer/media-center-header-localization.d.ts +12 -0
  41. package/dist/media-center/media-center/header-footer/media-center-header-localization.js +40 -0
  42. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +91 -0
  43. package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte.d.ts +11 -0
  44. package/dist/media-center/media-center/header-footer/media-center-header.svelte +310 -0
  45. package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +13 -0
  46. package/dist/media-center/media-center/media-center-context.svelte.d.ts +50 -0
  47. package/dist/media-center/media-center/media-center-context.svelte.js +98 -0
  48. package/dist/media-center/media-center/{category-following-wrapper.svelte → menu/category-following-wrapper.svelte} +3 -2
  49. package/dist/media-center/media-center/{category-following-wrapper.svelte.d.ts → menu/category-following-wrapper.svelte.d.ts} +2 -2
  50. package/dist/media-center/media-center/menu/index.d.ts +2 -0
  51. package/dist/media-center/media-center/menu/index.js +2 -0
  52. package/dist/media-center/media-center/menu/menu-localization.d.ts +19 -0
  53. package/dist/media-center/media-center/menu/menu-localization.js +78 -0
  54. package/dist/media-center/media-center/menu/menu.svelte +345 -0
  55. package/dist/media-center/media-center/menu/menu.svelte.d.ts +14 -0
  56. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +10 -0
  57. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +26 -0
  58. package/dist/media-center/media-center/providers/index.d.ts +2 -0
  59. package/dist/media-center/media-center/providers/index.js +2 -0
  60. package/dist/media-center/media-center/providers/post-player-provider-generator.d.ts +8 -0
  61. package/dist/media-center/media-center/{post-player-provider-generator.js → providers/post-player-provider-generator.js} +3 -3
  62. package/dist/media-center/media-center/{streams-player-provider-generator.d.ts → providers/streams-player-provider-generator.d.ts} +2 -2
  63. package/dist/media-center/media-center/{streams-player-provider-generator.js → providers/streams-player-provider-generator.js} +2 -2
  64. package/dist/media-center/media-center/streams-in-category/index.d.ts +2 -0
  65. package/dist/media-center/media-center/streams-in-category/index.js +2 -0
  66. 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
  67. 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
  68. package/dist/media-center/media-center/{streams-in-category-panel.svelte → streams-in-category/streams-in-category-panel.svelte} +1 -1
  69. 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
  70. package/dist/media-center/media-center/types.d.ts +1 -1
  71. package/dist/media-center/model/types.d.ts +7 -6
  72. package/dist/posts/attachments/cmp.attachments.svelte +5 -3
  73. package/dist/posts/attachments/cmp.attachments.svelte.d.ts +6 -0
  74. package/dist/posts/controls/cmp.controls.svelte +3 -3
  75. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  76. package/dist/posts/post-viewer/cmp.post-viewer.svelte +3 -1
  77. package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +4 -0
  78. package/dist/products/product-card/cmp.product-card.svelte +35 -11
  79. package/dist/products/product-card/cmp.product-card.svelte.d.ts +5 -0
  80. package/dist/streams/data-loaders/mapper.js +0 -5
  81. package/dist/streams/data-loaders/operations.generated.d.ts +0 -12
  82. package/dist/streams/data-loaders/operations.generated.js +0 -26
  83. package/dist/streams/data-loaders/operations.graphql +0 -6
  84. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +2 -1
  85. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte.d.ts +4 -0
  86. package/dist/streams/stream-card/cmp.stream-card.svelte +5 -5
  87. package/dist/streams/streams-player/index.js +1 -1
  88. package/dist/streams/streams-player/stream-overview.svelte +6 -96
  89. package/dist/streams/streams-player/stream-overview.svelte.d.ts +0 -4
  90. package/dist/streams/streams-player/stream-player-localization.d.ts +0 -1
  91. package/dist/streams/streams-player/stream-player-localization.js +0 -6
  92. package/dist/streams/streams-player/streams-player-view.svelte +0 -2
  93. package/dist/streams/streams-player/types.d.ts +0 -4
  94. package/dist/ui/icon/cmp.icon.svelte +3 -2
  95. package/dist/ui/player/button/cmp.player-button.svelte +17 -5
  96. package/dist/ui/player/button/cmp.player-button.svelte.d.ts +3 -0
  97. package/dist/ui/player/button/cmp.player-buttons-group.svelte +20 -5
  98. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -0
  99. package/dist/ui/player/button/types.d.ts +2 -0
  100. package/package.json +1 -1
  101. package/dist/content-player/content-player-localization.d.ts +0 -6
  102. package/dist/content-player/content-player-localization.js +0 -15
  103. package/dist/media-center/media-center/desktop-categories-selector.svelte +0 -132
  104. package/dist/media-center/media-center/desktop-categories-selector.svelte.d.ts +0 -12
  105. package/dist/media-center/media-center/discover-panel.svelte.d.ts +0 -15
  106. package/dist/media-center/media-center/media-center-handler.svelte.d.ts +0 -28
  107. package/dist/media-center/media-center/media-center-handler.svelte.js +0 -73
  108. package/dist/media-center/media-center/media-center-localization.d.ts +0 -10
  109. package/dist/media-center/media-center/media-center-localization.js +0 -39
  110. package/dist/media-center/media-center/mobile-controls-panel.svelte +0 -268
  111. package/dist/media-center/media-center/mobile-controls-panel.svelte.d.ts +0 -20
  112. package/dist/media-center/media-center/post-player-provider-generator.d.ts +0 -8
@@ -0,0 +1,310 @@
1
+ <script lang="ts">import { horizontalWheelScroll } from '../../../core/actions';
2
+ import { Icon } from '../../../ui/icon';
3
+ import { PlayerButton } from '../../../ui/player/button';
4
+ import { MediaCenterHeaderLocalization } from './media-center-header-localization';
5
+ import IconCart from '@fluentui/svg-icons/icons/cart_20_regular.svg?raw';
6
+ import IconDismiss from '@fluentui/svg-icons/icons/dismiss_28_regular.svg?raw';
7
+ import IconPerson from '@fluentui/svg-icons/icons/person_20_regular.svg?raw';
8
+ import IconPhone from '@fluentui/svg-icons/icons/phone_20_regular.svg?raw';
9
+ import IconReOrderDotsHorizontal from '@fluentui/svg-icons/icons/re_order_dots_horizontal_20_regular.svg?raw';
10
+ import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
11
+ import IconSearch from '@fluentui/svg-icons/icons/search_20_regular.svg?raw';
12
+ const SCROLL_MASK_OFFSET = 32;
13
+ let { context, locale, closeFn, on } = $props();
14
+ const localization = $derived(new MediaCenterHeaderLocalization(locale));
15
+ let scrollAreaRef = $state(null);
16
+ const headerMounted = (node) => {
17
+ const heightResizeObserver = new ResizeObserver(() => {
18
+ const headerHeight = node.clientHeight;
19
+ on.headerHeightChanged(headerHeight);
20
+ });
21
+ heightResizeObserver.observe(node);
22
+ return {
23
+ destroy: () => {
24
+ on.headerHeightChanged(0);
25
+ heightResizeObserver.disconnect();
26
+ }
27
+ };
28
+ };
29
+ const onScrollMounted = (node) => {
30
+ scrollAreaRef = node;
31
+ scrollAreaRef.style.setProperty('--scroll-area--mask-offset', `${SCROLL_MASK_OFFSET}px`);
32
+ const scrollResizeObserver = new ResizeObserver(() => {
33
+ updateScrollShadows(node);
34
+ });
35
+ scrollResizeObserver === null || scrollResizeObserver === void 0 ? void 0 : scrollResizeObserver.observe(node);
36
+ return {
37
+ destroy: () => {
38
+ scrollResizeObserver === null || scrollResizeObserver === void 0 ? void 0 : scrollResizeObserver.disconnect();
39
+ }
40
+ };
41
+ };
42
+ const handleScrollingAreaScroll = (e) => {
43
+ const target = e.target;
44
+ updateScrollShadows(target);
45
+ };
46
+ const updateScrollShadows = (scrollArea) => {
47
+ const { scrollLeft, scrollWidth, clientWidth } = scrollArea;
48
+ const scrollHasLeft = scrollLeft > 0;
49
+ const scrollHasRight = scrollLeft < scrollWidth - clientWidth - 1;
50
+ scrollArea.classList.toggle('has-left-mask', scrollHasLeft && !scrollHasRight);
51
+ scrollArea.classList.toggle('has-right-mask', scrollHasRight && !scrollHasLeft);
52
+ scrollArea.classList.toggle('has-both-masks', scrollHasRight && scrollHasLeft);
53
+ };
54
+ const styles = $derived.by(() => {
55
+ var _a, _b;
56
+ const values = [];
57
+ if ((_a = context.playerColors) === null || _a === void 0 ? void 0 : _a.button) {
58
+ values.push(`--media-center-header--button-color: ${context.playerColors.button}`);
59
+ }
60
+ if ((_b = context.playerColors) === null || _b === void 0 ? void 0 : _b.buttonInactive) {
61
+ values.push(`--media-center-header--button-color--inactive: ${context.playerColors.buttonInactive}`);
62
+ }
63
+ return values.join(';');
64
+ });
65
+ </script>
66
+
67
+ <div class="media-center-header-container" use:headerMounted>
68
+ <div class="media-center-header" style={styles}>
69
+ {#if context.logo}
70
+ <div class="media-center-header__logo-wrap">
71
+ <img src={context.logo} class="media-center-header__logo" alt={context.targetData?.name} />
72
+ </div>
73
+ {/if}
74
+ <button type="button" class="control-button control-button--trigger" class:control-button--active={context.menuActive} onclick={context.toggleMenu}>
75
+ <span class="control-button__icon control-button__icon--active control-button__icon--trigger">
76
+ <Icon src={IconReOrderDotsHorizontal} />
77
+ </span>
78
+ </button>
79
+ <div class="media-center-header__scroll-area" use:onScrollMounted use:horizontalWheelScroll onscroll={handleScrollingAreaScroll}>
80
+ <div class="media-center-header__scroll-area-block">
81
+ <button type="button" class="control-button" class:control-button--active={context.feedHandler.active} onclick={() => context.activateFeed()}>
82
+ <span class="control-button__icon" class:control-button__icon--active={context.feedHandler.active}>
83
+ <Icon src={IconPhone} />
84
+ </span>
85
+ <span class="control-button__value">
86
+ {localization.buttons.feed}
87
+ </span>
88
+ </button>
89
+ <button type="button" class="control-button" class:control-button--active={context.discoverHandler.activated} onclick={context.activateDiscover}>
90
+ <span class="control-button__icon" class:control-button__icon--active={context.discoverHandler.activated}>
91
+ <Icon src={IconScreenSearch} />
92
+ </span>
93
+ <span class="control-button__value">
94
+ {localization.buttons.discover}
95
+ </span>
96
+ </button>
97
+ <button type="button" class="control-button" class:control-button--active={false} onclick={() => ({})}>
98
+ <span class="control-button__icon" class:control-button__icon--active={false}>
99
+ <Icon src={IconCart} />
100
+ </span>
101
+ <span class="control-button__value">
102
+ {localization.buttons.cart}
103
+ </span>
104
+ </button>
105
+ <button type="button" class="control-button" class:control-button--active={false} onclick={() => ({})}>
106
+ <span class="control-button__value">
107
+ {localization.buttons.moments}
108
+ </span>
109
+ </button>
110
+ <button type="button" class="control-button" class:control-button--active={false} onclick={() => ({})}>
111
+ <span class="control-button__value">
112
+ {localization.buttons.webpage}
113
+ </span>
114
+ </button>
115
+ </div>
116
+
117
+ <div class="media-center-header__scroll-area-spacer"></div>
118
+
119
+ <div class="media-center-header__scroll-area-block">
120
+ <button type="button" class="control-button" class:control-button--active={false} onclick={() => ({})}>
121
+ <span class="control-button__icon" class:control-button__icon--active={false}>
122
+ <Icon src={IconPerson} />
123
+ </span>
124
+ <span class="control-button__value">
125
+ {localization.buttons.login}
126
+ </span>
127
+ </button>
128
+
129
+ <button type="button" class="control-button control-button--trigger" class:control-button--active={false} onclick={() => ({})}>
130
+ <span class="control-button__icon control-button__icon--active control-button__icon--trigger">
131
+ <Icon src={IconSearch} />
132
+ </span>
133
+ </button>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ {#if closeFn}
138
+ <div class="close-button">
139
+ <PlayerButton
140
+ icon={IconDismiss}
141
+ zoom={0.8}
142
+ activeColor={context.playerColors?.button ?? null}
143
+ inactiveColor={context.playerColors?.buttonInactive ?? null}
144
+ on={{ click: closeFn }} />
145
+ </div>
146
+ {/if}
147
+ </div>
148
+
149
+ <style>@keyframes fadeIn {
150
+ 0% {
151
+ opacity: 1;
152
+ }
153
+ 50% {
154
+ opacity: 0.4;
155
+ }
156
+ 100% {
157
+ opacity: 1;
158
+ }
159
+ }
160
+ .media-center-header-container {
161
+ padding-top: 2.1875rem;
162
+ padding-inline: 4.375rem;
163
+ pointer-events: none;
164
+ z-index: 1;
165
+ display: flex;
166
+ justify-content: center;
167
+ position: relative;
168
+ }
169
+
170
+ .media-center-header {
171
+ --_media-center-header--button-color: var(--media-center-header--button-color, rgb(from #000000 r g b / 95%));
172
+ --_media-center-header--button-color--inactive: var(
173
+ --media-center-header--button-color--inactive,
174
+ rgb(from var(--_media-center-header--button-color, #000000) r g b / 60%)
175
+ );
176
+ width: 73.75rem;
177
+ max-width: 100%;
178
+ margin: 0 auto;
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 1.5rem;
182
+ pointer-events: auto;
183
+ z-index: 1;
184
+ /* Set 'container-type: inline-size;' to reference container*/
185
+ }
186
+ @container (width < 576px) {
187
+ .media-center-header {
188
+ display: none;
189
+ }
190
+ }
191
+ .media-center-header__logo-wrap {
192
+ display: flex;
193
+ align-items: center;
194
+ justify-content: center;
195
+ height: 3.125rem;
196
+ max-width: 11.25rem;
197
+ min-width: 0;
198
+ overflow: hidden;
199
+ }
200
+ .media-center-header__logo {
201
+ width: auto;
202
+ height: auto;
203
+ max-height: 100%;
204
+ max-width: 100%;
205
+ object-fit: contain;
206
+ }
207
+ .media-center-header__scroll-area {
208
+ pointer-events: auto;
209
+ position: relative;
210
+ flex: 1 1 auto;
211
+ max-width: 100%;
212
+ min-width: 0;
213
+ overflow-x: auto;
214
+ overflow-y: hidden;
215
+ display: flex;
216
+ align-items: center;
217
+ flex-wrap: nowrap;
218
+ mask-image: none;
219
+ scrollbar-width: none;
220
+ padding: 0.5rem 0.625rem;
221
+ padding-left: 0;
222
+ --_scroll-area--mask-offset--left: var(--scroll-area--mask-offset);
223
+ --_scroll-area--mask-offset--right: calc(100% - var(--scroll-area--mask-offset));
224
+ }
225
+ :global(.media-center-header__scroll-area.has-left-mask) {
226
+ mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0, rgb(0, 0, 0) var(--_scroll-area--mask-offset--left), rgb(0, 0, 0) 100%);
227
+ }
228
+ :global(.media-center-header__scroll-area.has-right-mask) {
229
+ mask-image: linear-gradient(to right, rgb(0, 0, 0) 0, rgb(0, 0, 0) var(--_scroll-area--mask-offset--right), rgba(0, 0, 0, 0) 100%);
230
+ }
231
+ :global(.media-center-header__scroll-area.has-both-masks) {
232
+ mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0, rgb(0, 0, 0) var(--_scroll-area--mask-offset--left), rgb(0, 0, 0) var(--_scroll-area--mask-offset--right), rgba(0, 0, 0, 0) 100%);
233
+ }
234
+ .media-center-header__scroll-area-block {
235
+ display: flex;
236
+ align-items: center;
237
+ gap: 1.5rem;
238
+ }
239
+ .media-center-header__scroll-area-spacer {
240
+ flex: 1 1 auto;
241
+ min-width: 1.5rem;
242
+ }
243
+
244
+ .control-button {
245
+ --_control-button--padding-block: 0.5rem;
246
+ --_control-button--padding-inline: 1.5rem;
247
+ position: relative;
248
+ pointer-events: auto;
249
+ padding-block: var(--_control-button--padding-block);
250
+ padding-inline: var(--_control-button--padding-inline);
251
+ display: flex;
252
+ gap: 0.375rem;
253
+ justify-content: center;
254
+ align-items: center;
255
+ max-width: 9.375rem;
256
+ flex: 0 0 auto;
257
+ min-width: auto;
258
+ width: auto;
259
+ white-space: nowrap;
260
+ border-radius: 0.875rem;
261
+ background-color: var(--_media-center-header--button-color--inactive);
262
+ border-color: var(--_media-center-header--button-color);
263
+ color: #f2f2f2;
264
+ transition: background 0.3s ease-in-out;
265
+ -webkit-user-drag: none;
266
+ user-select: none;
267
+ }
268
+ .control-button :global([contenteditable]) {
269
+ user-select: text;
270
+ }
271
+ .control-button--trigger {
272
+ --_control-button--padding-block: 0.25rem;
273
+ --_control-button--padding-inline: 1rem;
274
+ }
275
+ .control-button--active {
276
+ background-color: var(--_media-center-header--button-color);
277
+ color: #ffffff;
278
+ text-shadow: 0.001em 0 0 currentColor, -0.001em 0 0 currentColor, 0 0.001em 0 currentColor, 0 -0.001em 0 currentColor;
279
+ }
280
+ .control-button:hover:not(.control-button--active) {
281
+ background-color: var(--_media-center-header--button-color);
282
+ }
283
+ .control-button__icon {
284
+ --icon--size: 1rem;
285
+ --icon--color: #f2f2f2;
286
+ line-height: 0;
287
+ }
288
+ .control-button__icon--trigger {
289
+ --icon--size: 1.5rem;
290
+ }
291
+ .control-button__icon--active {
292
+ --icon--color: #ffffff;
293
+ --icon--stroke-width: 0.2;
294
+ }
295
+ .control-button__value {
296
+ font-size: 0.875rem;
297
+ line-height: 1rem;
298
+ text-overflow: ellipsis;
299
+ width: 100%;
300
+ white-space: nowrap;
301
+ overflow: hidden;
302
+ min-width: 0;
303
+ }
304
+
305
+ .close-button {
306
+ position: absolute;
307
+ top: 0.9375rem;
308
+ right: 1.25rem;
309
+ z-index: 1;
310
+ }</style>
@@ -0,0 +1,13 @@
1
+ import type { Locale } from '../../../core/locale';
2
+ import type { MediaCenterContext } from '../media-center-context.svelte';
3
+ type Props = {
4
+ context: MediaCenterContext;
5
+ locale: Locale;
6
+ closeFn: (() => void) | null;
7
+ on: {
8
+ headerHeightChanged: (height: number) => void;
9
+ };
10
+ };
11
+ declare const MediaCenterHeader: import("svelte").Component<Props, {}, "">;
12
+ type MediaCenterHeader = ReturnType<typeof MediaCenterHeader>;
13
+ export default MediaCenterHeader;
@@ -0,0 +1,50 @@
1
+ import type { IContentCategoryFollowingHandler } from '../categories-following/types';
2
+ import type { IMediaCenterConfig } from '../config/types';
3
+ import { DiscoverPanelHandler } from './discover';
4
+ import { CategoriesHandler, FeedHandler } from './handlers';
5
+ import { PopularStreamsPanelHandler } from './menu';
6
+ import { StreamsInCategoryPanelHandler } from './streams-in-category';
7
+ export declare class MediaCenterContext {
8
+ initializing: boolean;
9
+ menuActive: boolean;
10
+ categoriesHandler: CategoriesHandler;
11
+ feedHandler: FeedHandler;
12
+ discoverHandler: DiscoverPanelHandler;
13
+ popularStreamsHandler: PopularStreamsPanelHandler;
14
+ streamsInCategoryHandler: StreamsInCategoryPanelHandler;
15
+ categoryFollowingHandler: IContentCategoryFollowingHandler | null;
16
+ private _mediaCenterConfig;
17
+ constructor(data: {
18
+ config: IMediaCenterConfig | null;
19
+ followingHandler: IContentCategoryFollowingHandler | null | undefined;
20
+ on: {
21
+ initialized: () => void;
22
+ };
23
+ });
24
+ get mediaCenterEffective(): boolean;
25
+ get logo(): string | null;
26
+ get targetData(): import("../config/types").MediaCenterTargetDataModel | null;
27
+ get playerColors(): {
28
+ brand: string | null;
29
+ button: string | null;
30
+ buttonInactive: string | null;
31
+ cardButton: string | null;
32
+ cardBackground: string | null;
33
+ menuBackground: string | null;
34
+ playerBackground: string | null;
35
+ price: string | null;
36
+ salePrice: string | null;
37
+ sidebarBackground: string | null;
38
+ } | null;
39
+ get loading(): boolean;
40
+ get overlayIsActive(): boolean;
41
+ toggleMenu: () => void;
42
+ showMenu: () => void;
43
+ hideMenu: () => void;
44
+ activateDiscover: () => Promise<void>;
45
+ activateFeed: (options?: {
46
+ categoryId?: string | null;
47
+ }) => Promise<void>;
48
+ tryActivateStreamsInCategory: (categoryId: string) => Promise<void>;
49
+ private init;
50
+ }
@@ -0,0 +1,98 @@
1
+ import { DiscoverPanelHandler } from './discover';
2
+ import { CategoriesHandler, FeedHandler } from './handlers';
3
+ import { PopularStreamsPanelHandler } from './menu';
4
+ import { StreamsInCategoryPanelHandler } from './streams-in-category';
5
+ export class MediaCenterContext {
6
+ initializing = $state(true);
7
+ menuActive = $state(false);
8
+ categoriesHandler = new CategoriesHandler();
9
+ feedHandler = new FeedHandler();
10
+ discoverHandler;
11
+ popularStreamsHandler;
12
+ streamsInCategoryHandler;
13
+ categoryFollowingHandler = $state.raw(null);
14
+ _mediaCenterConfig = $state.raw(null);
15
+ constructor(data) {
16
+ const { config, followingHandler, on } = data;
17
+ this.discoverHandler = new DiscoverPanelHandler(config);
18
+ this.popularStreamsHandler = new PopularStreamsPanelHandler(config);
19
+ this.streamsInCategoryHandler = new StreamsInCategoryPanelHandler(config);
20
+ this.categoryFollowingHandler = followingHandler || null;
21
+ this.init(config, on.initialized);
22
+ }
23
+ get mediaCenterEffective() {
24
+ return !this.initializing && this.categoriesHandler.categories.length > 0;
25
+ }
26
+ get logo() {
27
+ return this._mediaCenterConfig?.logo || null;
28
+ }
29
+ get targetData() {
30
+ return this._mediaCenterConfig?.targetData || null;
31
+ }
32
+ get playerColors() {
33
+ return this._mediaCenterConfig?.playerColors || null;
34
+ }
35
+ get loading() {
36
+ return this.discoverHandler.loading || this.streamsInCategoryHandler.loading;
37
+ }
38
+ get overlayIsActive() {
39
+ return this.discoverHandler.activated || this.streamsInCategoryHandler.activated;
40
+ }
41
+ toggleMenu = () => {
42
+ if (this.menuActive) {
43
+ this.hideMenu();
44
+ }
45
+ else {
46
+ this.showMenu();
47
+ }
48
+ };
49
+ showMenu = () => {
50
+ this.menuActive = true;
51
+ this.popularStreamsHandler.init();
52
+ };
53
+ hideMenu = () => {
54
+ this.menuActive = false;
55
+ };
56
+ activateDiscover = async () => {
57
+ this.hideMenu();
58
+ this.feedHandler.deactivate();
59
+ this.streamsInCategoryHandler.deactivate();
60
+ await this.discoverHandler.activate();
61
+ };
62
+ activateFeed = async (options) => {
63
+ this.hideMenu();
64
+ this.feedHandler.activate();
65
+ this.discoverHandler.deactivate();
66
+ this.streamsInCategoryHandler.deactivate();
67
+ if (options?.categoryId !== undefined) {
68
+ this.categoriesHandler.selectedCategoryId = options.categoryId;
69
+ }
70
+ };
71
+ tryActivateStreamsInCategory = async (categoryId) => {
72
+ if (this.categoriesHandler.selectedCategoryId === categoryId) {
73
+ this.activateFeed({ categoryId: null });
74
+ return;
75
+ }
76
+ const selectedCategoryData = this.categoriesHandler.getCategoryData(categoryId);
77
+ await this.streamsInCategoryHandler.activate(selectedCategoryData);
78
+ this.hideMenu();
79
+ this.feedHandler.deactivate();
80
+ this.discoverHandler.deactivate();
81
+ this.categoriesHandler.selectedCategoryId = categoryId;
82
+ };
83
+ init = async (config, onInitilized) => {
84
+ if (!config) {
85
+ this.initializing = false;
86
+ onInitilized();
87
+ return;
88
+ }
89
+ try {
90
+ this._mediaCenterConfig = await config.getConfig();
91
+ this.categoriesHandler.init(this._mediaCenterConfig?.contentCategories || []);
92
+ }
93
+ finally {
94
+ this.initializing = false;
95
+ onInitilized();
96
+ }
97
+ };
98
+ }
@@ -7,7 +7,7 @@
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { Icon } from '../../ui/icon';
10
+ import { Icon } from '../../../ui/icon';
11
11
  import IconStarFilled from '@fluentui/svg-icons/icons/star_20_filled.svg?raw';
12
12
  import IconStar from '@fluentui/svg-icons/icons/star_20_regular.svg?raw';
13
13
  import { onMount } from 'svelte';
@@ -32,7 +32,8 @@ const handleToggleFollow = (e) => __awaiter(void 0, void 0, void 0, function* ()
32
32
  });
33
33
  </script>
34
34
 
35
- {#if !followingHandler}
35
+ <!--Disabled following logic. for future references-->
36
+ {#if !followingHandler || true}
36
37
  {@render children()}
37
38
  {:else}
38
39
  <div class="desktop-category-following-wrapper" class:desktop-category-following-wrapper--inverted-orientation={invertedOrientation}>
@@ -1,8 +1,8 @@
1
- import type { IContentCategoryFollowingHandler } from '..';
1
+ import type { MediaCenterContext } from '../media-center-context.svelte';
2
2
  import { type Snippet } from 'svelte';
3
3
  type Props = {
4
4
  categoryId: string;
5
- followingHandler?: IContentCategoryFollowingHandler;
5
+ followingHandler?: MediaCenterContext['categoryFollowingHandler'];
6
6
  children: Snippet;
7
7
  invertedOrientation?: boolean;
8
8
  };
@@ -0,0 +1,2 @@
1
+ export { default as Menu } from './menu.svelte';
2
+ export { PopularStreamsPanelHandler } from './popular-streams-panel-handler.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as Menu } from './menu.svelte';
2
+ export { PopularStreamsPanelHandler } from './popular-streams-panel-handler.svelte';
@@ -0,0 +1,19 @@
1
+ import { type Locale } from '../../../core/locale';
2
+ export declare class MenuLocalization {
3
+ buttons: {
4
+ cart: string;
5
+ discover: string;
6
+ feed: string;
7
+ login: string;
8
+ moments: string;
9
+ webpage: string;
10
+ };
11
+ shortVideosSectionTitle: string;
12
+ interestsSectionTitle: string;
13
+ latestStreamsSectionTitle: string;
14
+ popularStreamsSectionTitle: string;
15
+ overviewLabel: string;
16
+ membersLabel: (count: number) => string;
17
+ locale: Locale;
18
+ constructor(locale: Locale);
19
+ }
@@ -0,0 +1,78 @@
1
+ import {} from '../../../core/locale';
2
+ export class MenuLocalization {
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
+ };