@streamscloud/embeddable 2.5.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/core/locale.d.ts +6 -0
  2. package/dist/core/locale.js +24 -0
  3. package/dist/products/price-helper.js +1 -1
  4. package/dist/short-videos/short-video-viewer/cmp.attachments.svelte +2 -2
  5. package/dist/short-videos/short-video-viewer/cmp.attachments.svelte.d.ts +3 -2
  6. package/dist/short-videos/short-video-viewer/cmp.product.svelte +1 -1
  7. package/dist/short-videos/short-video-viewer/cmp.product.svelte.d.ts +3 -2
  8. package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte +1 -1
  9. package/dist/short-videos/short-video-viewer/cmp.short-video-details.svelte.d.ts +3 -2
  10. package/dist/short-videos/short-video-viewer/cmp.short-video-heading.svelte +1 -1
  11. package/dist/short-videos/short-video-viewer/cmp.short-video-heading.svelte.d.ts +1 -1
  12. package/dist/short-videos/short-video-viewer/cmp.short-video-viewer.svelte +1 -1
  13. package/dist/short-videos/short-video-viewer/cmp.short-video-viewer.svelte.d.ts +3 -2
  14. package/dist/short-videos/short-video-viewer/description.svelte.d.ts +1 -1
  15. package/dist/short-videos/short-video-viewer/index.d.ts +3 -2
  16. package/dist/short-videos/short-video-viewer/{short-video-attachments-localization.svelte.d.ts → short-video-attachments-localization.d.ts} +5 -4
  17. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.js +21 -0
  18. package/dist/short-videos/short-video-viewer/{short-video-details-localization.svelte.d.ts → short-video-details-localization.d.ts} +7 -6
  19. package/dist/short-videos/short-video-viewer/short-video-details-localization.js +17 -0
  20. package/dist/short-videos/short-video-viewer/{short-video-product-localization.svelte.d.ts → short-video-product-localization.d.ts} +2 -1
  21. package/dist/short-videos/short-video-viewer/short-video-product-localization.js +13 -0
  22. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.d.ts +14 -0
  23. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.js +17 -0
  24. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte +7 -3
  25. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte.d.ts +3 -2
  26. package/dist/short-videos/short-videos-player/controls.svelte +2 -2
  27. package/dist/short-videos/short-videos-player/controls.svelte.d.ts +1 -1
  28. package/dist/short-videos/short-videos-player/index.d.ts +1 -1
  29. package/dist/short-videos/short-videos-player/index.js +2 -1
  30. package/dist/short-videos/short-videos-player/short-videos-player-localization.d.ts +16 -0
  31. package/dist/short-videos/short-videos-player/short-videos-player-localization.js +13 -0
  32. package/dist/short-videos/short-videos-player/types.d.ts +3 -3
  33. package/dist/streams/layout/cmp.slot-content.svelte.d.ts +2 -1
  34. package/dist/streams/layout/element-views/cmp.container-stream-element.svelte +1 -1
  35. package/dist/streams/layout/element-views/cmp.container-stream-element.svelte.d.ts +3 -2
  36. package/dist/streams/layout/element-views/cmp.price-stream-element.svelte +50 -29
  37. package/dist/streams/layout/element-views/cmp.price-stream-element.svelte.d.ts +3 -2
  38. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +4 -2
  39. package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte.d.ts +3 -0
  40. package/dist/streams/layout/element-views/cmp.stock-stream-element.svelte +74 -0
  41. package/dist/streams/layout/element-views/cmp.stock-stream-element.svelte.d.ts +11 -0
  42. package/dist/streams/layout/element-views/cmp.stream-element.svelte +10 -7
  43. package/dist/streams/layout/element-views/cmp.stream-element.svelte.d.ts +3 -2
  44. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte +6 -2
  45. package/dist/streams/layout/element-views/cmp.text-stream-element.svelte.d.ts +2 -0
  46. package/dist/streams/layout/element-views/index.d.ts +5 -2
  47. package/dist/streams/layout/element-views/index.js +1 -0
  48. package/dist/streams/layout/element-views/price-stream-element-localization.d.ts +13 -0
  49. package/dist/streams/layout/element-views/price-stream-element-localization.js +21 -0
  50. package/dist/streams/layout/element-views/short-video-stream-element-localization.d.ts +9 -0
  51. package/dist/streams/layout/element-views/short-video-stream-element-localization.js +7 -0
  52. package/dist/streams/layout/element-views/stock-stream-element-localization.d.ts +8 -0
  53. package/dist/streams/layout/element-views/stock-stream-element-localization.js +26 -0
  54. package/dist/streams/layout/element-views/stream-element-localization.d.ts +15 -0
  55. package/dist/streams/layout/element-views/stream-element-localization.js +11 -0
  56. package/dist/streams/layout/elements.d.ts +14 -3
  57. package/dist/streams/layout/elements.js +1 -1
  58. package/dist/streams/layout/enums.d.ts +8 -1
  59. package/dist/streams/layout/enums.js +9 -1
  60. package/dist/streams/layout/serializer.svelte.js +7 -0
  61. package/dist/streams/layout/styles.d.ts +4 -0
  62. package/dist/streams/layout/type-guards.d.ts +4 -2
  63. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte +4 -2
  64. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte.d.ts +3 -0
  65. package/dist/streams/stream-page-viewer/index.d.ts +1 -0
  66. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.d.ts +9 -0
  67. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.js +7 -0
  68. package/dist/streams/stream-player/cmp.stream-player.svelte +4 -2
  69. package/dist/streams/stream-player/cmp.stream-player.svelte.d.ts +3 -2
  70. package/dist/streams/stream-player/controls.svelte +46 -3
  71. package/dist/streams/stream-player/controls.svelte.d.ts +1 -1
  72. package/dist/streams/stream-player/index.d.ts +2 -2
  73. package/dist/streams/stream-player/index.js +2 -1
  74. package/dist/streams/stream-player/stream-overview.svelte +2 -2
  75. package/dist/streams/stream-player/stream-overview.svelte.d.ts +1 -1
  76. package/dist/streams/stream-player/stream-player-localization.d.ts +26 -0
  77. package/dist/streams/stream-player/stream-player-localization.js +31 -0
  78. package/dist/ui/line-clamp/cmp.line-clamp.svelte +2 -2
  79. package/dist/ui/line-clamp/cmp.line-clamp.svelte.d.ts +3 -2
  80. package/dist/ui/line-clamp/index.d.ts +1 -1
  81. package/dist/ui/line-clamp/index.js +1 -1
  82. package/dist/ui/line-clamp/{line-clamp-localization.svelte.d.ts → line-clamp-localization.d.ts} +2 -1
  83. package/dist/ui/line-clamp/line-clamp-localization.js +19 -0
  84. package/dist/ui/swipe-indicator/cmp.swipe-indicator.svelte +1 -1
  85. package/dist/ui/swipe-indicator/cmp.swipe-indicator.svelte.d.ts +3 -2
  86. package/dist/ui/swipe-indicator/index.d.ts +1 -1
  87. package/dist/ui/swipe-indicator/{swipe-indicator-localization.svelte.d.ts → swipe-indicator-localization.d.ts} +2 -1
  88. package/dist/ui/swipe-indicator/swipe-indicator-localization.js +13 -0
  89. package/dist/ui/time-ago/cmp.time-ago.svelte +1 -1
  90. package/dist/ui/time-ago/cmp.time-ago.svelte.d.ts +3 -2
  91. package/dist/ui/time-ago/index.d.ts +1 -1
  92. package/dist/ui/time-ago/{time-ago-localization.svelte.d.ts → time-ago-localization.d.ts} +2 -1
  93. package/dist/ui/time-ago/time-ago-localization.js +55 -0
  94. package/package.json +2 -2
  95. package/dist/short-videos/short-video-viewer/short-video-attachments-localization.svelte.js +0 -10
  96. package/dist/short-videos/short-video-viewer/short-video-details-localization.svelte.js +0 -10
  97. package/dist/short-videos/short-video-viewer/short-video-product-localization.svelte.js +0 -11
  98. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.d.ts +0 -13
  99. package/dist/short-videos/short-video-viewer/short-video-viewer-localization.svelte.js +0 -10
  100. package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.d.ts +0 -8
  101. package/dist/short-videos/short-videos-player/short-videos-player-localization.svelte.js +0 -6
  102. package/dist/streams/layout/element-views/price-stream-element-localization.svelte.d.ts +0 -9
  103. package/dist/streams/layout/element-views/price-stream-element-localization.svelte.js +0 -8
  104. package/dist/streams/layout/element-views/stream-element-localization.svelte.d.ts +0 -8
  105. package/dist/streams/layout/element-views/stream-element-localization.svelte.js +0 -6
  106. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.d.ts +0 -13
  107. package/dist/streams/stream-page-viewer/stream-page-viewer-localization.svelte.js +0 -10
  108. package/dist/streams/stream-player/stream-player-localization.svelte.d.ts +0 -12
  109. package/dist/streams/stream-player/stream-player-localization.svelte.js +0 -10
  110. package/dist/ui/line-clamp/line-clamp-localization.svelte.js +0 -15
  111. package/dist/ui/swipe-indicator/swipe-indicator-localization.svelte.js +0 -6
  112. package/dist/ui/time-ago/time-ago-localization.svelte.js +0 -39
@@ -1,12 +1,14 @@
1
1
  <script lang="ts">import { StreamLayoutSlot, StreamPageLayout, StreamLayoutSlotContent } from '../layout';
2
- let { page, on } = $props();
2
+ import { StreamPageViewerLocalization } from './stream-page-viewer-localization';
3
+ let { page, localization: localizationInit, on } = $props();
4
+ const localization = $derived(new StreamPageViewerLocalization(localizationInit));
3
5
  </script>
4
6
 
5
7
  {#if page.type === 'general'}
6
8
  <StreamPageLayout model={page.layout}>
7
9
  {#each page.layout.slots as slot (slot)}
8
10
  <StreamLayoutSlot model={slot}>
9
- <StreamLayoutSlotContent model={slot} on={on} />
11
+ <StreamLayoutSlotContent model={slot} on={on} localization={localization.elementsLocalization} />
10
12
  </StreamLayoutSlot>
11
13
  {/each}
12
14
  </StreamPageLayout>
@@ -1,6 +1,9 @@
1
+ import type { Locale } from '../../core/locale';
2
+ import { type IStreamPageViewerLocalization } from './stream-page-viewer-localization';
1
3
  import type { StreamPageViewerModel } from './types';
2
4
  type Props = {
3
5
  page: StreamPageViewerModel;
6
+ localization: IStreamPageViewerLocalization | Locale;
4
7
  on?: {
5
8
  productClick: (productId: string) => void;
6
9
  progress?: (videoId: string, progress: number) => void;
@@ -1,2 +1,3 @@
1
1
  export { default as StreamPageViewer } from './cmp.stream-page-viewer.svelte';
2
2
  export type { StreamPageViewerModel } from './types';
3
+ export type { IStreamPageViewerLocalization } from './stream-page-viewer-localization';
@@ -0,0 +1,9 @@
1
+ import { type Locale } from '../../core/locale';
2
+ import type { IStreamElementLocalization } from '../layout/element-views';
3
+ export interface IStreamPageViewerLocalization {
4
+ elementsLocalization?: IStreamElementLocalization | Locale;
5
+ }
6
+ export declare class StreamPageViewerLocalization {
7
+ elementsLocalization: IStreamElementLocalization | Locale;
8
+ constructor(init: IStreamPageViewerLocalization | Locale);
9
+ }
@@ -0,0 +1,7 @@
1
+ import { isLocale } from '../../core/locale';
2
+ export class StreamPageViewerLocalization {
3
+ elementsLocalization;
4
+ constructor(init) {
5
+ this.elementsLocalization = isLocale(init) ? init : init?.elementsLocalization || 'en';
6
+ }
7
+ }
@@ -23,7 +23,7 @@ import { mapStreamPlayerModel } from './mapper';
23
23
  import { GetStreamDocument } from './operations.generated';
24
24
  import { default as Overview } from './stream-overview.svelte';
25
25
  import { StreamPlayerBuffer } from './stream-player-buffer.svelte';
26
- import { StreamPlayerLocalization } from './stream-player-localization.svelte';
26
+ import { StreamPlayerLocalization } from './stream-player-localization';
27
27
  import { StreamPlayerUiManager } from './ui-manager.svelte';
28
28
  import { AppEventsTracker } from '@streamscloud/streams-analytics-collector';
29
29
  import { onMount } from 'svelte';
@@ -187,6 +187,7 @@ const onProgress = (pageId, videoId, progress) => {
187
187
  {#if item.type === 'general'}
188
188
  <StreamPageViewer
189
189
  page={item}
190
+ localization={localization.streamPageViewerLocalization}
190
191
  on={{
191
192
  progress: (videoId: String, progress: Number) => onProgress(item.id, videoId, progress),
192
193
  productClick: (productId: String) => onProductCardClick(productId)
@@ -198,12 +199,13 @@ const onProgress = (pageId, videoId, progress) => {
198
199
  progress: (progress) => onProgress(item.id, item.shortVideo.id, progress)
199
200
  }}
200
201
  autoplay="on-appearance"
202
+ localization={localization.shortVideoViewerLocalization}
201
203
  showAttachments={uiManager.showShortVideoOverlay} />
202
204
  {/if}
203
205
  {/snippet}
204
206
  </PlayerSlider>
205
207
  {#if uiManager.isMobileView && buffer.loaded.length > 1 && !everTouched}
206
- <SwipeIndicator />
208
+ <SwipeIndicator localization={localization.swipeIndicatorLocalization} />
207
209
  {/if}
208
210
  </div>
209
211
  </SpotlightLayout>
@@ -1,7 +1,8 @@
1
- import { type IStreamPlayerLocalization } from './stream-player-localization.svelte';
1
+ import type { Locale } from '../../core/locale';
2
+ import { type IStreamPlayerLocalization } from './stream-player-localization';
2
3
  type Props = {
3
4
  streamId: string;
4
- localization?: IStreamPlayerLocalization;
5
+ localization: IStreamPlayerLocalization | Locale;
5
6
  graphqlOrigin?: string;
6
7
  on?: {
7
8
  closePlayer?: () => void;
@@ -1,10 +1,11 @@
1
1
  <script lang="ts">var _a, _b;
2
2
  import { ShortVideoDetails, ShortVideoViewerAttachmentsInline, ShortVideoViewerAttachments } from '../../short-videos/short-video-viewer';
3
+ import { StreamElementType } from '../layout/enums';
3
4
  import { mapToShortVideoViewerModel } from '../layout/models';
4
5
  import { Icon } from '../../ui/icon';
5
6
  import { MediaVolumeManager } from '../../ui/media-playback';
6
7
  import { default as ActionButton } from './action-button.svelte';
7
- import { StreamPlayerLocalization } from './stream-player-localization.svelte';
8
+ import { StreamPlayerLocalization } from './stream-player-localization';
8
9
  import IconChevronDown from '@fluentui/svg-icons/icons/chevron_down_20_regular.svg?raw';
9
10
  import IconChevronUp from '@fluentui/svg-icons/icons/chevron_up_20_regular.svg?raw';
10
11
  import IconDismiss from '@fluentui/svg-icons/icons/dismiss_20_regular.svg?raw';
@@ -17,6 +18,36 @@ const toggleMuted = () => {
17
18
  MediaVolumeManager.isMuted = !MediaVolumeManager.isMuted;
18
19
  };
19
20
  const shortVideo = $derived(((_a = buffer.current) === null || _a === void 0 ? void 0 : _a.type) === 'short-video' && ((_b = buffer.current) === null || _b === void 0 ? void 0 : _b.shortVideo) ? mapToShortVideoViewerModel(buffer.current.shortVideo) : null);
21
+ const singleWebViewPage = $derived.by(() => {
22
+ var _a;
23
+ if (((_a = buffer.current) === null || _a === void 0 ? void 0 : _a.type) !== 'general') {
24
+ return false;
25
+ }
26
+ const layout = buffer.current.layout;
27
+ const collectRenderableElements = (elements) => {
28
+ const renderableElements = [];
29
+ for (const element of elements) {
30
+ if (element.type === StreamElementType.Container) {
31
+ if (element.elements) {
32
+ renderableElements.push(...collectRenderableElements(element.elements));
33
+ }
34
+ }
35
+ else {
36
+ renderableElements.push(element);
37
+ }
38
+ }
39
+ return renderableElements;
40
+ };
41
+ const allRenderableElements = [];
42
+ for (const slot of layout.slots) {
43
+ for (const component of slot.components) {
44
+ if (component.elements) {
45
+ allRenderableElements.push(...collectRenderableElements(component.elements));
46
+ }
47
+ }
48
+ }
49
+ return allRenderableElements.length === 1 && allRenderableElements[0].type === StreamElementType.WebView;
50
+ });
20
51
  </script>
21
52
 
22
53
  <div class="stream-player-controls">
@@ -28,7 +59,7 @@ const shortVideo = $derived(((_a = buffer.current) === null || _a === void 0 ? v
28
59
  </div>
29
60
  </div>
30
61
  {/if}
31
- <div class="stream-player-controls__navigation-buttons">
62
+ <div class="stream-player-controls__navigation-buttons" class:stream-player-controls__navigation-buttons--single-web-view-page={singleWebViewPage}>
32
63
  <button type="button" class="navigation-button" disabled={!buffer.canLoadPrevious} onclick={buffer.loadPrevious}>
33
64
  <Icon src={IconChevronUp} />
34
65
  </button>
@@ -42,7 +73,7 @@ const shortVideo = $derived(((_a = buffer.current) === null || _a === void 0 ? v
42
73
  <div class="stream-player-controls__short-video-attachments">
43
74
  <ShortVideoViewerAttachments
44
75
  shortVideo={shortVideo}
45
- localization={localization.shortVideoDetailsLocalization?.attachmentsLocalization}
76
+ localization={localization.shortVideoAttachmentsLocalization}
46
77
  on={{
47
78
  productClick: on.productClick
48
79
  }} />
@@ -214,6 +245,18 @@ const shortVideo = $derived(((_a = buffer.current) === null || _a === void 0 ? v
214
245
  visibility: hidden;
215
246
  }
216
247
  }
248
+ .stream-player-controls__navigation-buttons--single-web-view-page {
249
+ /* Set 'container-type: inline-size;' to reference container*/
250
+ }
251
+ @container (width < 6.25rem) {
252
+ .stream-player-controls__navigation-buttons--single-web-view-page {
253
+ visibility: visible;
254
+ position: absolute;
255
+ bottom: var(--stream-player--controls--offset-vertical);
256
+ right: var(--stream-player--controls--offset-horizontal);
257
+ z-index: 1;
258
+ }
259
+ }
217
260
  .stream-player-controls__controls {
218
261
  display: flex;
219
262
  margin-top: auto;
@@ -1,5 +1,5 @@
1
1
  import type { StreamPlayerBuffer } from './stream-player-buffer.svelte';
2
- import { StreamPlayerLocalization } from './stream-player-localization.svelte';
2
+ import { StreamPlayerLocalization } from './stream-player-localization';
3
3
  import type { StreamPlayerUiManager } from './ui-manager.svelte';
4
4
  type Props = {
5
5
  buffer: StreamPlayerBuffer;
@@ -1,4 +1,4 @@
1
- import type { IStreamPlayerLocalization } from './stream-player-localization.svelte';
1
+ import type { IStreamPlayerLocalization } from './stream-player-localization';
2
2
  export type { IStreamPlayerLocalization };
3
3
  /**
4
4
  * Opens the stream player modal with the specified stream details.
@@ -26,7 +26,7 @@ export type { IStreamPlayerLocalization };
26
26
  export declare const openStreamPlayer: (init: {
27
27
  streamId: string;
28
28
  graphqlOrigin?: string;
29
- localization?: IStreamPlayerLocalization;
29
+ localization?: IStreamPlayerLocalization | "en" | "no";
30
30
  on?: {
31
31
  streamActivated?: (data: {
32
32
  title: string;
@@ -1,3 +1,4 @@
1
+ import { getLocale } from '../../core/locale';
1
2
  import { ShadowHost } from '../../ui/shadow-dom';
2
3
  import { default as StreamPlayer } from './cmp.stream-player.svelte';
3
4
  import { AppEventsTracker } from '@streamscloud/streams-analytics-collector';
@@ -33,7 +34,7 @@ export const openStreamPlayer = (init) => {
33
34
  props: {
34
35
  streamId,
35
36
  graphqlOrigin,
36
- localization,
37
+ localization: getLocale(localization),
37
38
  on: {
38
39
  streamActivated: (data) => {
39
40
  AppEventsTracker.setOrganizationId(data.ownerId);
@@ -6,7 +6,7 @@ import { LineClamp } from '../../ui/line-clamp';
6
6
  import { ProportionalContainer } from '../../ui/proportional-container';
7
7
  import { TimeAgo } from '../../ui/time-ago';
8
8
  import { default as ActionButton } from './action-button.svelte';
9
- import { StreamPlayerLocalization } from './stream-player-localization.svelte';
9
+ import { StreamPlayerLocalization } from './stream-player-localization';
10
10
  import IconPanelLeftText from '@fluentui/svg-icons/icons/panel_left_text_20_regular.svg?raw';
11
11
  let { model, buffer, activePageId, on, uiManager, localization } = $props();
12
12
  </script>
@@ -26,7 +26,7 @@ let { model, buffer, activePageId, on, uiManager, localization } = $props();
26
26
  </div>
27
27
  <div class="stream-overview-owner__meta">
28
28
  <LineClamp maxLines={1}>
29
- <TimeAgo date={model.publishedAt || model.createdAt} />
29
+ <TimeAgo date={model.publishedAt || model.createdAt} localization={localization.timeAgoLocalization} />
30
30
  </LineClamp>
31
31
  </div>
32
32
  </div>
@@ -1,5 +1,5 @@
1
1
  import type { StreamPlayerBuffer } from './stream-player-buffer.svelte';
2
- import { StreamPlayerLocalization } from './stream-player-localization.svelte';
2
+ import { StreamPlayerLocalization } from './stream-player-localization';
3
3
  import type { StreamPlayerModel } from './types';
4
4
  import type { StreamPlayerUiManager } from './ui-manager.svelte';
5
5
  type Props = {
@@ -0,0 +1,26 @@
1
+ import { type Locale } from '../../core/locale';
2
+ import type { IShortVideoAttachmentsLocalization, IShortVideoDetailsLocalization, IShortVideoViewerLocalization } from '../../short-videos/short-video-viewer';
3
+ import type { IStreamPageViewerLocalization } from '../stream-page-viewer';
4
+ import type { ISwipeIndicatorLocalization } from '../../ui/swipe-indicator';
5
+ import type { ITimeAgoLocalization } from '../../ui/time-ago';
6
+ export interface IStreamPlayerLocalization {
7
+ streamNotFound?: string;
8
+ pagesCount?: (count: number) => string;
9
+ timeAgoLocalization?: ITimeAgoLocalization | Locale;
10
+ streamPageViewerLocalization?: IStreamPageViewerLocalization | Locale;
11
+ shortVideoAttachmentsLocalization?: IShortVideoAttachmentsLocalization | Locale;
12
+ shortVideoDetailsLocalization?: IShortVideoDetailsLocalization | Locale;
13
+ shortVideoViewerLocalization?: IShortVideoViewerLocalization | Locale;
14
+ swipeIndicatorLocalization?: ISwipeIndicatorLocalization | Locale;
15
+ }
16
+ export declare class StreamPlayerLocalization {
17
+ streamNotFound: string;
18
+ pagesCount: (count: number) => string;
19
+ timeAgoLocalization: ITimeAgoLocalization | Locale;
20
+ streamPageViewerLocalization: IStreamPageViewerLocalization | Locale;
21
+ shortVideoAttachmentsLocalization: IShortVideoAttachmentsLocalization | Locale;
22
+ shortVideoDetailsLocalization: IShortVideoDetailsLocalization | Locale;
23
+ shortVideoViewerLocalization: IShortVideoViewerLocalization | Locale;
24
+ swipeIndicatorLocalization: ISwipeIndicatorLocalization | Locale;
25
+ constructor(init: IStreamPlayerLocalization | Locale);
26
+ }
@@ -0,0 +1,31 @@
1
+ import { isLocale } from '../../core/locale';
2
+ export class StreamPlayerLocalization {
3
+ streamNotFound;
4
+ pagesCount;
5
+ timeAgoLocalization;
6
+ streamPageViewerLocalization;
7
+ shortVideoAttachmentsLocalization;
8
+ shortVideoDetailsLocalization;
9
+ shortVideoViewerLocalization;
10
+ swipeIndicatorLocalization;
11
+ constructor(init) {
12
+ this.streamNotFound = isLocale(init) ? loc.streamNotFound[init] : init?.streamNotFound || loc.streamNotFound.en;
13
+ this.pagesCount = isLocale(init) ? loc.pagesCount[init] : init?.pagesCount || loc.pagesCount.en;
14
+ this.timeAgoLocalization = isLocale(init) ? init : init.timeAgoLocalization || 'en';
15
+ this.streamPageViewerLocalization = isLocale(init) ? init : init.streamPageViewerLocalization || 'en';
16
+ this.shortVideoAttachmentsLocalization = isLocale(init) ? init : init.shortVideoAttachmentsLocalization || 'en';
17
+ this.shortVideoDetailsLocalization = isLocale(init) ? init : init.shortVideoDetailsLocalization || 'en';
18
+ this.shortVideoViewerLocalization = isLocale(init) ? init : init.shortVideoViewerLocalization || 'en';
19
+ this.swipeIndicatorLocalization = isLocale(init) ? init : init.swipeIndicatorLocalization || 'en';
20
+ }
21
+ }
22
+ const loc = {
23
+ streamNotFound: {
24
+ en: 'Stream not found',
25
+ no: 'Stream ikke funnet'
26
+ },
27
+ pagesCount: {
28
+ en: (count) => (count === 1 ? '1 page' : `${count} pages`),
29
+ no: (count) => (count === 1 ? '1 side' : `${count} sider`)
30
+ }
31
+ };
@@ -1,8 +1,8 @@
1
- <script lang="ts">import { LineClampLocalization } from './line-clamp-localization.svelte';
1
+ <script lang="ts">import { LineClampLocalization } from './line-clamp-localization';
2
2
  import { LineClampUtils } from './line-clamp-utils';
3
3
  import { onDestroy, onMount } from 'svelte';
4
4
  let { value = undefined, maxLines = 3, localization: localizationInit, enableShowMore = false, children } = $props();
5
- const localization = $derived(new LineClampLocalization(localizationInit));
5
+ const localization = $derived(new LineClampLocalization(localizationInit !== null && localizationInit !== void 0 ? localizationInit : 'en'));
6
6
  let parent;
7
7
  let element;
8
8
  let clampWrapperRef;
@@ -1,10 +1,11 @@
1
- import { type ILineClampLocalization } from './line-clamp-localization.svelte';
1
+ import type { Locale } from '../../core/locale';
2
+ import { type ILineClampLocalization } from './line-clamp-localization';
2
3
  import { type Snippet } from 'svelte';
3
4
  type Props = {
4
5
  value?: string | null;
5
6
  maxLines?: number | 'auto';
6
7
  enableShowMore?: boolean;
7
- localization?: ILineClampLocalization;
8
+ localization?: ILineClampLocalization | Locale;
8
9
  children?: Snippet;
9
10
  };
10
11
  declare const Cmp: import("svelte").Component<Props, {}, "">;
@@ -1,2 +1,2 @@
1
1
  export { default as LineClamp } from './cmp.line-clamp.svelte';
2
- export { type ILineClampLocalization } from './line-clamp-localization.svelte';
2
+ export { type ILineClampLocalization } from './line-clamp-localization';
@@ -1,2 +1,2 @@
1
1
  export { default as LineClamp } from './cmp.line-clamp.svelte';
2
- export {} from './line-clamp-localization.svelte';
2
+ export {} from './line-clamp-localization';
@@ -1,3 +1,4 @@
1
+ import { type Locale } from '../../core/locale';
1
2
  export interface ILineClampLocalization {
2
3
  showLess?: string;
3
4
  showMore?: string;
@@ -5,5 +6,5 @@ export interface ILineClampLocalization {
5
6
  export declare class LineClampLocalization {
6
7
  showLess: string;
7
8
  showMore: string;
8
- constructor(init?: ILineClampLocalization);
9
+ constructor(init: ILineClampLocalization | Locale);
9
10
  }
@@ -0,0 +1,19 @@
1
+ import { isLocale } from '../../core/locale';
2
+ export class LineClampLocalization {
3
+ showLess;
4
+ showMore;
5
+ constructor(init) {
6
+ this.showLess = isLocale(init) ? loc.showLess[init] : init.showLess || loc.showLess.en;
7
+ this.showMore = isLocale(init) ? loc.showMore[init] : init.showMore || loc.showMore.en;
8
+ }
9
+ }
10
+ const loc = {
11
+ showLess: {
12
+ en: 'Show less',
13
+ no: 'Vis mindre'
14
+ },
15
+ showMore: {
16
+ en: 'Show more',
17
+ no: 'Vis mer'
18
+ }
19
+ };
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">import { Icon } from '../icon';
2
- import { SwipeIndicatorLocalization } from './swipe-indicator-localization.svelte';
2
+ import { SwipeIndicatorLocalization } from './swipe-indicator-localization';
3
3
  import IconArrowUp from '@fluentui/svg-icons/icons/arrow_up_20_regular.svg?raw';
4
4
  let { fadeTimeout = 2000, localization: localizationInit } = $props();
5
5
  const localization = $derived(new SwipeIndicatorLocalization(localizationInit));
@@ -1,7 +1,8 @@
1
- import { type ISwipeIndicatorLocalization } from './swipe-indicator-localization.svelte';
1
+ import type { Locale } from '../../core/locale';
2
+ import { type ISwipeIndicatorLocalization } from './swipe-indicator-localization';
2
3
  type Props = {
3
4
  fadeTimeout?: number;
4
- localization?: ISwipeIndicatorLocalization;
5
+ localization: ISwipeIndicatorLocalization | Locale;
5
6
  };
6
7
  declare const Cmp: import("svelte").Component<Props, {}, "">;
7
8
  type Cmp = ReturnType<typeof Cmp>;
@@ -1,2 +1,2 @@
1
1
  export { default as SwipeIndicator } from './cmp.swipe-indicator.svelte';
2
- export type { ISwipeIndicatorLocalization } from './swipe-indicator-localization.svelte';
2
+ export type { ISwipeIndicatorLocalization } from './swipe-indicator-localization';
@@ -1,7 +1,8 @@
1
+ import { type Locale } from '../../core/locale';
1
2
  export interface ISwipeIndicatorLocalization {
2
3
  swipe?: string;
3
4
  }
4
5
  export declare class SwipeIndicatorLocalization {
5
6
  swipe: string;
6
- constructor(init?: ISwipeIndicatorLocalization);
7
+ constructor(init: ISwipeIndicatorLocalization | Locale);
7
8
  }
@@ -0,0 +1,13 @@
1
+ import { isLocale } from '../../core/locale';
2
+ export class SwipeIndicatorLocalization {
3
+ swipe;
4
+ constructor(init) {
5
+ this.swipe = isLocale(init) ? loc.swipe[init] : init.swipe || loc.swipe.en;
6
+ }
7
+ }
8
+ const loc = {
9
+ swipe: {
10
+ en: 'Swipe',
11
+ no: 'Sveip'
12
+ }
13
+ };
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">import { DateFormatOptions, DateHelper } from '../../core/utils/date-helper';
2
- import { TimeAgoLocalization } from './time-ago-localization.svelte';
2
+ import { TimeAgoLocalization } from './time-ago-localization';
3
3
  import { onDestroy } from 'svelte';
4
4
  let { date = null, thresholdMinutes = 60 * 24 * 2 /* 2 days */, localization: localizationInit } = $props();
5
5
  const localization = $derived(new TimeAgoLocalization(localizationInit));
@@ -1,8 +1,9 @@
1
- import { type ITimeAgoLocalization } from './time-ago-localization.svelte';
1
+ import type { Locale } from '../../core/locale';
2
+ import { type ITimeAgoLocalization } from './time-ago-localization';
2
3
  type Props = {
3
4
  date: Date | string | null;
4
5
  thresholdMinutes?: number;
5
- localization?: ITimeAgoLocalization;
6
+ localization: ITimeAgoLocalization | Locale;
6
7
  };
7
8
  declare const Cmp: import("svelte").Component<Props, {}, "">;
8
9
  type Cmp = ReturnType<typeof Cmp>;
@@ -1,2 +1,2 @@
1
1
  export { default as TimeAgo } from './cmp.time-ago.svelte';
2
- export type { ITimeAgoLocalization } from './time-ago-localization.svelte';
2
+ export type { ITimeAgoLocalization } from './time-ago-localization';
@@ -1,3 +1,4 @@
1
+ import { type Locale } from '../../core/locale';
1
2
  export interface ITimeAgoLocalization {
2
3
  locale?: string;
3
4
  aMinuteAgo?: string;
@@ -17,5 +18,5 @@ export declare class TimeAgoLocalization {
17
18
  hoursAgo: (hours: number) => string;
18
19
  minutesAgo: (minutes: number) => string;
19
20
  yesterday: (time: string) => string;
20
- constructor(init?: ITimeAgoLocalization);
21
+ constructor(init: ITimeAgoLocalization | Locale);
21
22
  }
@@ -0,0 +1,55 @@
1
+ import { isLocale } from '../../core/locale';
2
+ export class TimeAgoLocalization {
3
+ locale;
4
+ aMinuteAgo;
5
+ anHourAgo;
6
+ justNow;
7
+ at;
8
+ hoursAgo;
9
+ minutesAgo;
10
+ yesterday;
11
+ constructor(init) {
12
+ this.locale = isLocale(init) ? loc.locale[init] : init.locale || loc.locale.en;
13
+ this.aMinuteAgo = isLocale(init) ? loc.aMinuteAgo[init] : init.aMinuteAgo || loc.aMinuteAgo.en;
14
+ this.anHourAgo = isLocale(init) ? loc.anHourAgo[init] : init.anHourAgo || loc.anHourAgo.en;
15
+ this.justNow = isLocale(init) ? loc.justNow[init] : init.justNow || loc.justNow.en;
16
+ this.at = isLocale(init) ? loc.at[init] : init.at || loc.at.en;
17
+ this.hoursAgo = isLocale(init) ? loc.hoursAgo[init] : init.hoursAgo || loc.hoursAgo.en;
18
+ this.minutesAgo = isLocale(init) ? loc.minutesAgo[init] : init.minutesAgo || loc.minutesAgo.en;
19
+ this.yesterday = isLocale(init) ? loc.yesterday[init] : init.yesterday || loc.yesterday.en;
20
+ }
21
+ }
22
+ const loc = {
23
+ locale: {
24
+ en: 'en-US',
25
+ no: 'no-NO'
26
+ },
27
+ aMinuteAgo: {
28
+ en: 'a minute ago',
29
+ no: 'ett minutt siden'
30
+ },
31
+ anHourAgo: {
32
+ en: 'an hour ago',
33
+ no: 'en time siden'
34
+ },
35
+ justNow: {
36
+ en: 'just now',
37
+ no: 'nettopp nå'
38
+ },
39
+ at: {
40
+ en: (date, time) => `${date} at ${time}`,
41
+ no: (date, time) => `${date} kl. ${time}`
42
+ },
43
+ hoursAgo: {
44
+ en: (hours) => `${hours} hours ago`,
45
+ no: (hours) => `${hours} timer siden`
46
+ },
47
+ minutesAgo: {
48
+ en: (minutes) => `${minutes} minutes ago`,
49
+ no: (minutes) => `${minutes} minutter siden`
50
+ },
51
+ yesterday: {
52
+ en: (time) => `Yesterday at ${time}`,
53
+ no: (time) => `I går kl. ${time}`
54
+ }
55
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamscloud/embeddable",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "author": "StreamsCloud",
5
5
  "repository": "https://github.com/StreamsCloud/streamscloud-frontend-packages.git",
6
6
  "type": "module",
@@ -11,7 +11,7 @@
11
11
  "preview": "vite preview",
12
12
  "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json",
13
13
  "uad": "graphql-codegen --config codegen.yml && prettier --write src/**/*.generated.ts src/gql/*",
14
- "uad-types-only": "graphql-codegen --config codegen.types-only.ymlы && prettier --write src/gql/*",
14
+ "uad-types-only": "graphql-codegen --config codegen.types-only.yml && prettier --write src/gql/*",
15
15
  "lint": "prettier --check --plugin prettier-plugin-svelte . && eslint .",
16
16
  "lint-format": "prettier --write --plugin prettier-plugin-svelte . && eslint --fix .",
17
17
  "format": "prettier --write --plugin prettier-plugin-svelte ."
@@ -1,10 +0,0 @@
1
- export class ShortVideoAttachmentsLocalizationSvelte {
2
- productsSection = $state('Products');
3
- offersSection = $state('Offers');
4
- productLocalization = $state(undefined);
5
- constructor(init) {
6
- this.productsSection = init?.productsSection || this.productsSection;
7
- this.offersSection = init?.offersSection || this.offersSection;
8
- this.productLocalization = init?.productLocalization;
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- export class ShortVideoDetailsLocalization {
2
- viewsCount = $state((count) => (count === 1 ? '1 view' : `${count} views`));
3
- timeAgoLocalization = $state(undefined);
4
- attachmentsLocalization = $state(undefined);
5
- constructor(init) {
6
- this.viewsCount = init?.viewsCount ? init.viewsCount : this.viewsCount;
7
- this.timeAgoLocalization = init?.timeAgoLocalization;
8
- this.attachmentsLocalization = init?.attachmentsLocalization;
9
- }
10
- }
@@ -1,11 +0,0 @@
1
- export class ShortVideoProductLocalization {
2
- beforeNowPrefix = $state('Before');
3
- constructor(init) {
4
- if (!init) {
5
- return;
6
- }
7
- if (init.beforeNowPrefix !== undefined) {
8
- this.beforeNowPrefix = init.beforeNowPrefix;
9
- }
10
- }
11
- }
@@ -1,13 +0,0 @@
1
- import type { ITimeAgoLocalization } from '../../ui/time-ago';
2
- import type { IShortVideoProductLocalization } from './short-video-product-localization.svelte';
3
- export interface IShortVideoViewerLocalization {
4
- viewsCount?: (count: number) => string;
5
- timeAgoLocalization?: ITimeAgoLocalization;
6
- productLocalization?: IShortVideoProductLocalization;
7
- }
8
- export declare class ShortVideoViewerLocalization {
9
- viewsCount: (count: number) => string;
10
- timeAgoLocalization: ITimeAgoLocalization | undefined;
11
- productLocalization: IShortVideoProductLocalization | undefined;
12
- constructor(init?: IShortVideoViewerLocalization);
13
- }
@@ -1,10 +0,0 @@
1
- export class ShortVideoViewerLocalization {
2
- viewsCount = $state((count) => (count === 1 ? '1 view' : `${count} views`));
3
- timeAgoLocalization = $state(undefined);
4
- productLocalization = $state(undefined);
5
- constructor(init) {
6
- this.viewsCount = init?.viewsCount ? init.viewsCount : this.viewsCount;
7
- this.timeAgoLocalization = init?.timeAgoLocalization;
8
- this.productLocalization = init?.productLocalization;
9
- }
10
- }
@@ -1,8 +0,0 @@
1
- import type { IShortVideoDetailsLocalization } from '../short-video-viewer';
2
- export interface IShortVideosPlayerLocalization {
3
- shortVideoDetailsLocalization?: IShortVideoDetailsLocalization;
4
- }
5
- export declare class ShortVideosPlayerLocalization {
6
- shortVideoDetailsLocalization: IShortVideoDetailsLocalization | undefined;
7
- constructor(init?: IShortVideosPlayerLocalization);
8
- }
@@ -1,6 +0,0 @@
1
- export class ShortVideosPlayerLocalization {
2
- shortVideoDetailsLocalization = $state(undefined);
3
- constructor(init) {
4
- this.shortVideoDetailsLocalization = init?.shortVideoDetailsLocalization || this.shortVideoDetailsLocalization;
5
- }
6
- }
@@ -1,9 +0,0 @@
1
- export interface IPriceStreamElementLocalization {
2
- saveValue?: (value: string | number) => string;
3
- beforeValue?: (value: string) => string;
4
- }
5
- export declare class PriceStreamElementLocalization {
6
- saveValue: (value: string | number) => string;
7
- beforeValue: (value: string) => string;
8
- constructor(init?: IPriceStreamElementLocalization);
9
- }