@brightspace-ui/labs 2.63.5 → 2.63.6

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.
@@ -2,7 +2,6 @@ import '@brightspace-ui/core/components/button/button-icon.js';
2
2
  import '@brightspace-ui/core/components/colors/colors.js';
3
3
  import '@brightspace-ui/core/components/dropdown/dropdown.js';
4
4
  import '@brightspace-ui/core/components/dropdown/dropdown-menu.js';
5
- import '@brightspace-ui/core/components/dropdown/dropdown-button-subtle.js';
6
5
  import '@brightspace-ui/core/components/icons/icon.js';
7
6
  import '@brightspace-ui/core/components/loading-spinner/loading-spinner.js';
8
7
  import '@brightspace-ui/core/components/menu/menu.js';
@@ -21,7 +20,9 @@ import { getFocusPseudoClass } from '@brightspace-ui/core/helpers/focus.js';
21
20
  import { ifDefined } from 'lit/directives/if-defined.js';
22
21
  import { labelStyles } from '@brightspace-ui/core/components/typography/styles.js';
23
22
  import { LocalizeLabsElement } from '../localize-labs-element.js';
23
+ import { MediaPlayerChaptersMixin } from './media-player-chapters.js';
24
24
  import { MediaPlayerThumbnailsMixin } from './media-player-thumbnails.js';
25
+ import { MediaPlayerTranscriptMixin } from './media-player-transcript.js';
25
26
  import parseSRT from 'parse-srt/src/parse-srt.js';
26
27
  import { RtlMixin } from '@brightspace-ui/core/mixins/rtl-mixin.js';
27
28
  import { styleMap } from 'lit/directives/style-map.js';
@@ -75,7 +76,7 @@ const tryParseUrlExpiry = url => {
75
76
  }
76
77
  };
77
78
 
78
- class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPlayerAudioDescriptionsMixin(RtlMixin(LitElement)))) {
79
+ class MediaPlayer extends LocalizeLabsElement(MediaPlayerTranscriptMixin(MediaPlayerThumbnailsMixin(MediaPlayerChaptersMixin(MediaPlayerAudioDescriptionsMixin(RtlMixin(LitElement)))))) {
79
80
 
80
81
  static properties = {
81
82
  allowDownload: { type: Boolean, attribute: 'allow-download', reflect: true },
@@ -88,13 +89,10 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
88
89
  hideSeekBar: { type: Boolean, attribute: 'hide-seek-bar' },
89
90
  loop: { type: Boolean },
90
91
  mediaType: { type: String, attribute: 'media-type' },
91
- metadata: { type: Object },
92
92
  poster: { type: String },
93
93
  src: { type: String },
94
94
  disableSetPreferences: { type: Boolean, attribute: 'disable-set-preferences' },
95
- transcriptViewerOn: { type: Boolean, attribute: 'transcript-viewer-on' },
96
95
  playInView: { type: Boolean, attribute: 'play-in-view' },
97
- _chapters: { state: true },
98
96
  _currentTime: { state: true },
99
97
  _duration: { state: true },
100
98
  _heightPixels: { state: true },
@@ -399,28 +397,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
399
397
  width: 2.75rem;
400
398
  }
401
399
 
402
- .chapter-marker, .chapter-marker-highlight {
403
- cursor: pointer;
404
- height: 6px;
405
- pointer-events: none;
406
- position: absolute;
407
- top: 4px;
408
- width: 3px;
409
- z-index: 2;
410
- }
411
-
412
- .chapter-marker {
413
- background-color: var(--d2l-color-ferrite);
414
- }
415
-
416
- .chapter-marker-highlight {
417
- background-color: var(--d2l-color-celestine-minus-1);
418
- }
419
-
420
- .chapter-marker[theme="dark"] {
421
- background-color: white;
422
- }
423
-
424
400
  #search-container {
425
401
  align-items: center;
426
402
  display: flex;
@@ -512,73 +488,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
512
488
  font-size: 1rem;
513
489
  line-height: 2.1rem;
514
490
  }
515
-
516
- .transcript-cue-container {
517
- padding-left: 10px;
518
- }
519
- .video-transcript-cue {
520
- padding-left: 5px;
521
- }
522
- .audio-transcript-cue {
523
- padding-left: 5px;
524
- }
525
- .video-transcript-cue[active] {
526
- background-color: gray;
527
- box-shadow: -5px 0 0 white;
528
- }
529
- .audio-transcript-cue[active] {
530
- background-color: lightgray;
531
- box-shadow: -5px 0 0 black;
532
- }
533
- #video-transcript-viewer {
534
- bottom: 55px;
535
- color: white;
536
- overflow-anchor: none;
537
- overflow-y: auto;
538
- position: absolute;
539
- right: 0;
540
- top: 50px;
541
- width: 65%;
542
- z-index: 1;
543
- }
544
- #audio-transcript-viewer {
545
- bottom: 60px;
546
- color: black;
547
- overflow-anchor: none;
548
- overflow-y: auto;
549
- position: absolute;
550
- right: 0;
551
- top: 45px;
552
- width: 100%;
553
- z-index: 1;
554
- }
555
- #close-transcript {
556
- position: absolute;
557
- right: 7px;
558
- top: 0;
559
- z-index: 1;
560
- }
561
- #video-transcript-download-button {
562
- left: 35%;
563
- position: absolute;
564
- top: 5px;
565
- z-index: 2;
566
- }
567
- #audio-transcript-download-button {
568
- left: 10px;
569
- position: absolute;
570
- top: 0;
571
- z-index: 2;
572
- }
573
- #audio-transcript-download-menu {
574
- left: 35px;
575
- }
576
- #video-close-transcript-icon {
577
- color: white;
578
- }
579
- #audio-close-transcript-icon {
580
- color: black;
581
- }
582
491
  `];
583
492
 
584
493
  constructor() {
@@ -589,7 +498,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
589
498
  this.loop = false;
590
499
  this.playInView = false;
591
500
 
592
- this._chapters = [];
593
501
  this._currentTime = 0;
594
502
  this._determiningSourceType = true;
595
503
  this._duration = this.durationHint || 1;
@@ -623,8 +531,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
623
531
  this._playRequested = false;
624
532
  this._mediaContainerAspectRatio = {
625
533
  };
626
- this.afterCaptions = [];
627
- this.beforeCaptions = [];
628
534
  this._iosVideoFullscreen = false;
629
535
  }
630
536
 
@@ -722,8 +628,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
722
628
  this._searchInput = this.shadowRoot.getElementById('search-input');
723
629
  this._searchContainer = this.shadowRoot.getElementById('search-container');
724
630
 
725
- this._getMetadata();
726
-
727
631
  this._startUpdatingCurrentTime();
728
632
  new ResizeObserver((entries) => {
729
633
  for (const entry of entries) {
@@ -918,6 +822,7 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
918
822
  </d2l-menu-item>
919
823
  ${this._getTracksMenuView()}
920
824
  ${this._getQualityMenuView()}
825
+ ${this._renderTranscriptViewerMenuItem()}
921
826
  ${(this.allowDownload && this._getCurrentSource()) ? this._getDownloadButtonView() : ''}
922
827
  <slot name="settings-menu-item"></slot>
923
828
  </d2l-menu>
@@ -938,10 +843,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
938
843
  if (changedProperties.has('src') || changedProperties.has('mediaType')) {
939
844
  this._reloadSource();
940
845
  }
941
-
942
- if (changedProperties.has('metadata')) {
943
- this._getMetadata();
944
- }
945
846
  }
946
847
 
947
848
  exitFullscreen() {
@@ -1048,10 +949,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
1048
949
  localStorage.removeItem(preferenceKey);
1049
950
  }
1050
951
 
1051
- _closeTranscript() {
1052
- this.dispatchEvent(new CustomEvent('close-transcript', { bubbles: true, composed: true }));
1053
- }
1054
-
1055
952
  _disableNativeCaptions() {
1056
953
  if (!this._media) return;
1057
954
  for (let i = 0; i < this._media.textTracks.length; i++) {
@@ -1065,14 +962,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
1065
962
  }
1066
963
  }
1067
964
 
1068
- _downloadCaptions() {
1069
- this.dispatchEvent(new CustomEvent('download-captions', { bubbles: true, composed: true }));
1070
- }
1071
-
1072
- _downloadTranscript() {
1073
- this.dispatchEvent(new CustomEvent('download-transcript', { bubbles: true, composed: true }));
1074
- }
1075
-
1076
965
  _endIOSVideoFullscreen() {
1077
966
  this._iosVideoFullscreen = false;
1078
967
  }
@@ -1112,57 +1001,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
1112
1001
  return a.href;
1113
1002
  }
1114
1003
 
1115
- _getChapterMarkersView() {
1116
- if (this._chapters.length === 0) return;
1117
-
1118
- let start, end;
1119
- if (this._chapters[this._chapters.length - 1].time === Math.floor(this._duration)) this._chapters.pop();
1120
-
1121
- for (let i = 0; i < this._chapters.length; i++) {
1122
- if (i === this._chapters.length - 1) {
1123
- start = this._chapters[i].time;
1124
- break;
1125
- }
1126
- else if (this._hoverTime >= this._chapters[i].time && this._hoverTime < this._chapters[i + 1].time) {
1127
- start = this._chapters[i].time;
1128
- end = this._chapters[i + 1].time;
1129
- break;
1130
- }
1131
- }
1132
-
1133
- return this._chapters.map(chapter => {
1134
- const highlight = this._hovering && this._hoverTime >= this._chapters[0].time && (chapter.time === start || chapter.time === end);
1135
- return chapter.time > 0 ? html`
1136
- <div
1137
- class=${highlight ? 'chapter-marker-highlight' : 'chapter-marker'}
1138
- theme="${ifDefined(this._getTheme())}"
1139
- style=${styleMap({ left: `${this._getPercentageTime(chapter.time)}%` })}
1140
- ></div>
1141
- ` : nothing;
1142
- });
1143
- }
1144
-
1145
- _getChapterTitle() {
1146
- if (!(this._chapters.length > 0 && this._hoverTime >= this._chapters[0].time)) return;
1147
-
1148
- const chapter = this._chapters.find((_chapter, index, chapters) => (
1149
- index === chapters.length - 1 || (this._hoverTime >= chapters[0].time && this._hoverTime < chapters[index + 1].time)
1150
- ));
1151
- const chapterTitle = chapter && chapter.title;
1152
-
1153
- if (!chapterTitle) return;
1154
-
1155
- if (typeof chapterTitle === 'string') {
1156
- return chapterTitle;
1157
- }
1158
-
1159
- for (const locale in chapterTitle) {
1160
- if (locale.split('-')[0] === 'en') {
1161
- return chapterTitle[locale];
1162
- }
1163
- }
1164
- }
1165
-
1166
1004
  _getCurrentSource() {
1167
1005
  return this.src || this._sources[this._selectedQuality];
1168
1006
  }
@@ -1273,61 +1111,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
1273
1111
  }
1274
1112
  }
1275
1113
 
1276
- _getMetadata() {
1277
- if (!this.metadata) return;
1278
-
1279
- const data = (typeof this.metadata === 'string' || this.metadata instanceof String) ? JSON.parse(this.metadata) : this.metadata;
1280
- if (!(data && data.chapters && data.chapters.length > 0)) return;
1281
- let chapters = data.chapters.map(({ time, title }) => {
1282
- return {
1283
- time: parseInt(time),
1284
- title
1285
- };
1286
- }).sort((a, b) => a.time - b.time);
1287
-
1288
- if (!data.cuts) {
1289
- data.cuts = [];
1290
- }
1291
-
1292
- // updating the chapter times based on the cuts, loops over all chapters per cut because it can change multiple chapters
1293
- let cutDiff = 0;
1294
- for (const cut of data.cuts) {
1295
- const cutIn = cut.in - cutDiff;
1296
-
1297
- const newChapters = new Map(); // using map to preserve sort ordering
1298
-
1299
- if (!cut.out) { // if cut is until the end of the video
1300
- for (const chapter of chapters) {
1301
- if (chapter.time < cutIn) {
1302
- newChapters.set(chapter.time, chapter.title);
1303
- }
1304
- }
1305
- } else {
1306
- const cutOut = cut.out - cutDiff;
1307
- const cutLength = cutOut - cutIn;
1308
-
1309
- for (const chapter of chapters) {
1310
- let newTime = chapter.time;
1311
- if (chapter.time > cutIn && chapter.time <= cutOut) {
1312
- newTime = cutIn;
1313
- } else if (chapter.time > cutOut) {
1314
- newTime = chapter.time - cutLength;
1315
- }
1316
-
1317
- newChapters.set(newTime, chapter.title);
1318
- }
1319
-
1320
- cutDiff += cutLength;
1321
- }
1322
-
1323
- chapters = [...newChapters].map(([chapterTime, chapterTitle]) => ({
1324
- time: chapterTime,
1325
- title: chapterTitle
1326
- }));
1327
- }
1328
- this._chapters = chapters;
1329
- }
1330
-
1331
1114
  _getPercentageTime(time) {
1332
1115
  if (this._media) return (time / this.duration) * 100;
1333
1116
  }
@@ -1502,13 +1285,7 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
1502
1285
 
1503
1286
  async _onCueChange() {
1504
1287
  if (this.transcriptViewerOn) {
1505
- if (!this._transcriptViewer) {
1506
- this._transcriptViewer = this.shadowRoot.getElementById('video-transcript-viewer')
1507
- || this.shadowRoot.getElementById('audio-transcript-viewer');
1508
- }
1509
- this._updateTranscriptViewerCues();
1510
- await this.requestUpdate();
1511
- this._scrollTranscriptViewer();
1288
+ await this._onTranscriptCueChange();
1512
1289
  }
1513
1290
  for (let i = 0; i < this._media.textTracks.length; i++) {
1514
1291
  if (this._media.textTracks[i].mode === 'hidden') {
@@ -2052,82 +1829,10 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
2052
1829
  }
2053
1830
  }
2054
1831
 
2055
- _renderTranscriptViewer() {
2056
- if (!this._media) {
2057
- return;
2058
- }
2059
- const captionsMenu = this.shadowRoot.getElementById('captions-menu');
2060
- if (captionsMenu) {
2061
- this._captionsMenuReturnItem = captionsMenu.shadowRoot.querySelector('d2l-menu-item-return');
2062
- this._captionsMenuReturnItem?.setAttribute('text', this.localize('components:mediaPlayer:language'));
2063
- }
2064
-
2065
- if (!this._transcriptViewer) {
2066
- this._onCueChange();
2067
- }
2068
-
2069
- const isVideo = this.mediaType === SOURCE_TYPES.video;
2070
- const captionsToHtml = (item) => {
2071
- const updateTime = async() => {
2072
- this.currentTime = item.startTime;
2073
- this._media.currentTime = item.startTime;
2074
- };
2075
- return html`
2076
- <div class=${isVideo ? 'video-transcript-cue' : 'audio-transcript-cue'}
2077
- @click=${updateTime}>
2078
- ${item.text}<br>
2079
- </div>`;
2080
- };
2081
-
2082
- return html`
2083
- <span id="close-transcript"
2084
- @click=${this._closeTranscript}>
2085
- <d2l-icon class="d2l-button-icon"
2086
- id=${isVideo ? 'video-close-transcript-icon' : 'audio-close-transcript-icon'}
2087
- icon="tier1:close-small"></d2l-icon>
2088
- </span>
2089
- <div
2090
- id=${isVideo ? 'video-transcript-viewer' : 'audio-transcript-viewer'}
2091
- >
2092
- <div class="transcript-cue-container">
2093
- ${this.beforeCaptions.map(captionsToHtml)}
2094
- <div class=${isVideo ? 'video-transcript-cue' : 'audio-transcript-cue'} active
2095
- id="transcript-viewer-active-cue">
2096
- ${this.transcriptActiveCue?.text}
2097
- </div>
2098
- ${this.afterCaptions.map(captionsToHtml)}
2099
- </div>
2100
- </div>
2101
- <d2l-dropdown-button-subtle
2102
- id=${isVideo ? 'video-transcript-download-button' : 'audio-transcript-download-button'}
2103
- text="${this.localize('components:mediaPlayer:download')}">
2104
- <d2l-dropdown-menu id=${isVideo ? 'video-transcript-download-menu' : 'audio-transcript-download-menu'}>
2105
- <d2l-menu>
2106
- <d2l-menu-item @click=${this._downloadTranscript} text="${this.localize('components:mediaPlayer:transcriptTxt')}"></d2l-menu-item>
2107
- <d2l-menu-item @click=${this._downloadCaptions} text="${this.localize('components:mediaPlayer:captionsVtt')}"></d2l-menu-item>
2108
- </d2l-menu>
2109
- </d2l-dropdown-menu>
2110
- </d2l-dropdown-button-subtle>
2111
- `;
2112
- }
2113
-
2114
1832
  _sanitizeText(text) {
2115
1833
  return text.replace(/<br \/>/g, '\n');
2116
1834
  }
2117
1835
 
2118
- _scrollTranscriptViewer() {
2119
- const cue = this.shadowRoot.getElementById('transcript-viewer-active-cue');
2120
- const cueRect = cue?.getBoundingClientRect();
2121
- const transcriptRect = this._transcriptViewer?.getBoundingClientRect();
2122
- if (cue && cueRect && transcriptRect) {
2123
- if (cueRect.bottom > transcriptRect.bottom && cueRect.height <= transcriptRect.height) {
2124
- this._transcriptViewer.scrollBy({ top: cueRect.bottom - transcriptRect.bottom + transcriptRect.height - cueRect.height, left: 0, behavior: 'smooth' });
2125
- } else if (cueRect.top < transcriptRect.top) {
2126
- this._transcriptViewer.scrollBy({ top: cueRect.top - transcriptRect.top, left: 0, behavior: 'smooth' });
2127
- }
2128
- }
2129
- }
2130
-
2131
1836
  _setPreference(preferenceKey, value) {
2132
1837
  if (!this.disableSetPreferences) {
2133
1838
  localStorage.setItem(preferenceKey, value);
@@ -2255,49 +1960,6 @@ class MediaPlayer extends LocalizeLabsElement(MediaPlayerThumbnailsMixin(MediaPl
2255
1960
  });
2256
1961
  }
2257
1962
 
2258
- _updateTranscriptViewerCues() {
2259
- let cues = null;
2260
- const lang = this._getSrclangFromTrackIdentifier(this._selectedTrackIdentifier);
2261
- for (let i = 0; i < this._media.textTracks.length; i += 1) {
2262
- const currTrack = this._media.textTracks[i];
2263
- if (currTrack?.cues) {
2264
- const activeCues = currTrack.activeCues;
2265
- if (lang === currTrack.language) {
2266
- this.transcriptActiveCue = activeCues?.[activeCues?.length - 1];
2267
- cues = currTrack.cues;
2268
- break;
2269
- }
2270
- }
2271
- }
2272
- if (!cues) {
2273
- let defaultTrack;
2274
- for (let i = 0; i < this._media.textTracks.length; i++) {
2275
- if (this._media.textTracks[i].default) {
2276
- defaultTrack = this._media.textTracks[i];
2277
- break;
2278
- }
2279
- }
2280
- defaultTrack = defaultTrack || this._media.textTracks[0];
2281
- if (defaultTrack) defaultTrack.mode = 'hidden';
2282
- this._selectedTrackIdentifier = { kind: defaultTrack?.kind, srclang: defaultTrack?.language };
2283
- this.requestUpdate();
2284
- return;
2285
- }
2286
-
2287
- this.beforeCaptions = [];
2288
- this.afterCaptions = [];
2289
- for (let i = 0; i < cues.length; i += 1) {
2290
- const currCue = cues[i];
2291
- const currTime = this._media?.currentTime;
2292
- const before = currCue !== this.transcriptActiveCue && (currCue.endTime < currTime || currCue.endTime <= this.transcriptActiveCue?.endTime);
2293
- if (before) {
2294
- this.beforeCaptions.push(currCue);
2295
- } else if (currCue !== this.transcriptActiveCue) {
2296
- this.afterCaptions.push(currCue);
2297
- }
2298
- }
2299
- }
2300
-
2301
1963
  #getOpenDropdowns() {
2302
1964
  return [...(this.shadowRoot?.querySelectorAll('d2l-dropdown-menu[opened], d2l-dropdown-content[opened]') ?? [])];
2303
1965
  }
package/src/lang/ar.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "تنزيل",
42
42
  "components:mediaPlayer:exitFullscreen": "الخروج من وضع ملء الشاشة",
43
43
  "components:mediaPlayer:fullscreen": "ملء الشاشة",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "اللغة",
45
46
  "components:mediaPlayer:loadErrorMessage": "عذرًا، حدثت مشكلة أثناء تحميل ملف الوسائط هذا",
46
47
  "components:mediaPlayer:loadSuccessMessage": "تم تحميل الوسائط بنجاح",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "النص (‎.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "لا يمكن التنزيل. يُرجى تحديث الصفحة والمحاولة مرة أخرى.",
67
68
  "components:mediaPlayer:unmute": "إلغاء كتم الصوت",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "شريط تمرير مستوى الصوت",
69
71
  "components:navigation:back": "العودة",
70
72
  "components:navigation:next": "التالي",
package/src/lang/ca.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Descarrega",
42
42
  "components:mediaPlayer:exitFullscreen": "Sortir de pantalla completa",
43
43
  "components:mediaPlayer:fullscreen": "Pantalla completa",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Idioma",
45
46
  "components:mediaPlayer:loadErrorMessage": "Vaja! Hi ha hagut un problema en carregar aquest fitxer multimèdia.",
46
47
  "components:mediaPlayer:loadSuccessMessage": "L’element multimèdia s’ha carregat correctament",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcripció (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "No s’ha pogut descarregar. Actualitzeu la pàgina i torneu-ho a provar.",
67
68
  "components:mediaPlayer:unmute": "Activar el so",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "control lliscant de volum",
69
71
  "components:navigation:back": "Enrere",
70
72
  "components:navigation:next": "Següent",
package/src/lang/cy.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Lawrlwytho",
42
42
  "components:mediaPlayer:exitFullscreen": "Gadael sgrîn lawn",
43
43
  "components:mediaPlayer:fullscreen": "Sgrin Lawn",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Iaith",
45
46
  "components:mediaPlayer:loadErrorMessage": "Wps, roedd problem wrth lwytho’r ffeil gyfryngau hon",
46
47
  "components:mediaPlayer:loadSuccessMessage": "Mae’r cyfryngau wedi llwytho’n llwyddiannus",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Trawsgrifiad (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Methu lawrlwytho. Adnewyddwch y dudalen neu rhowch gynnig arall arni.",
67
68
  "components:mediaPlayer:unmute": "Dad-dewi",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "llithrydd sain",
69
71
  "components:navigation:back": "Yn ôl",
70
72
  "components:navigation:next": "Nesaf",
package/src/lang/da.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Download",
42
42
  "components:mediaPlayer:exitFullscreen": "Afslut fuld skærm",
43
43
  "components:mediaPlayer:fullscreen": "Fuld skærm",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Sprog",
45
46
  "components:mediaPlayer:loadErrorMessage": "Hovsa, der opstod et problem med at indlæse denne mediefil",
46
47
  "components:mediaPlayer:loadSuccessMessage": "Mediet er indlæst",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Afskrift (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Kan ikke downloade. Opdater siden, og prøv igen.",
67
68
  "components:mediaPlayer:unmute": "Slå lyd til",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "lydstyrkeskyder",
69
71
  "components:navigation:back": "Tilbage",
70
72
  "components:navigation:next": "Næste",
package/src/lang/de.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Herunterladen",
42
42
  "components:mediaPlayer:exitFullscreen": "Vollbildmodus beenden",
43
43
  "components:mediaPlayer:fullscreen": "Vollbildmodus",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Sprache",
45
46
  "components:mediaPlayer:loadErrorMessage": "Hoppla, beim Laden dieser Mediendatei ist ein Problem aufgetreten",
46
47
  "components:mediaPlayer:loadSuccessMessage": "Diese Medien wurden erfolgreich geladen",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transkript (txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Herunterladen nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.",
67
68
  "components:mediaPlayer:unmute": "Stummschaltung aufheben",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "Lautstärkeregler",
69
71
  "components:navigation:back": "Zurück",
70
72
  "components:navigation:next": "Weiter",
package/src/lang/en-gb.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Download",
42
42
  "components:mediaPlayer:exitFullscreen": "Exit fullscreen",
43
43
  "components:mediaPlayer:fullscreen": "Fullscreen",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Language",
45
46
  "components:mediaPlayer:loadErrorMessage": "Oops, there was a problem loading this media file",
46
47
  "components:mediaPlayer:loadSuccessMessage": "The media has loaded successfully",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcript (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Unable to download. Please refresh the page and try again.",
67
68
  "components:mediaPlayer:unmute": "Unmute",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "volume slider",
69
71
  "components:navigation:back": "Back",
70
72
  "components:navigation:next": "Next",
package/src/lang/en.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Download",
42
42
  "components:mediaPlayer:exitFullscreen": "Exit fullscreen",
43
43
  "components:mediaPlayer:fullscreen": "Fullscreen",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Language",
45
46
  "components:mediaPlayer:loadErrorMessage": "Oops, there was a problem loading this media file",
46
47
  "components:mediaPlayer:loadSuccessMessage": "The media has loaded successfully",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcript (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Unable to download. Please refresh the page and try again.",
67
68
  "components:mediaPlayer:unmute": "Unmute",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "volume slider",
69
71
  "components:navigation:back": "Back",
70
72
  "components:navigation:next": "Next",
package/src/lang/es-es.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Descargar",
42
42
  "components:mediaPlayer:exitFullscreen": "Salir de la pantalla completa",
43
43
  "components:mediaPlayer:fullscreen": "Pantalla completa",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Idioma",
45
46
  "components:mediaPlayer:loadErrorMessage": "Lo sentimos. Ha surgido un problema al cargar este archivo multimedia",
46
47
  "components:mediaPlayer:loadSuccessMessage": "El archivo multimedia se ha cargado correctamente",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcripción (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Se ha producido un error al descargar. Actualice la página e inténtelo de nuevo.",
67
68
  "components:mediaPlayer:unmute": "Activar sonido",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "control deslizante del volumen",
69
71
  "components:navigation:back": "Volver",
70
72
  "components:navigation:next": "Siguiente",
package/src/lang/es.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Descargar",
42
42
  "components:mediaPlayer:exitFullscreen": "Salir de la pantalla completa",
43
43
  "components:mediaPlayer:fullscreen": "Pantalla completa",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Idioma",
45
46
  "components:mediaPlayer:loadErrorMessage": "Lo sentimos, ocurrió un problema al cargar este archivo multimedia",
46
47
  "components:mediaPlayer:loadSuccessMessage": "El archivo multimedia se cargó correctamente",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcripción (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "No es posible hacer la descarga. Actualice la página y vuelva a intentarlo.",
67
68
  "components:mediaPlayer:unmute": "Activar sonido",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "control deslizante del volumen",
69
71
  "components:navigation:back": "Volver",
70
72
  "components:navigation:next": "Siguiente",
package/src/lang/fr-fr.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Télécharger",
42
42
  "components:mediaPlayer:exitFullscreen": "Quitter le mode plein écran",
43
43
  "components:mediaPlayer:fullscreen": "Plein écran",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Langue",
45
46
  "components:mediaPlayer:loadErrorMessage": "Un problème est survenu lors du chargement de ce fichier multimédia",
46
47
  "components:mediaPlayer:loadSuccessMessage": "Le support a été chargé avec succès",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcription (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Impossible de télécharger. Actualisez la page et réessayez.",
67
68
  "components:mediaPlayer:unmute": "Annuler le mode muet",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "curseur du volume",
69
71
  "components:navigation:back": "Retour",
70
72
  "components:navigation:next": "Suivant",
package/src/lang/fr-on.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Télécharger",
42
42
  "components:mediaPlayer:exitFullscreen": "Quitter le mode plein écran",
43
43
  "components:mediaPlayer:fullscreen": "Plein écran",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Langue",
45
46
  "components:mediaPlayer:loadErrorMessage": "Oups! Un problème est survenu lors du chargement de ce fichier multimédia.",
46
47
  "components:mediaPlayer:loadSuccessMessage": "L’élément multimédia a bien été chargé.",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcription (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Impossible de télécharger. Veuillez rafraîchir la page et réessayer.",
67
68
  "components:mediaPlayer:unmute": "Désactiver la sourdine",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "curseur du volume",
69
71
  "components:navigation:back": "Retour",
70
72
  "components:navigation:next": "Page suivante",
package/src/lang/fr.js CHANGED
@@ -41,6 +41,7 @@ export default {
41
41
  "components:mediaPlayer:download": "Télécharger",
42
42
  "components:mediaPlayer:exitFullscreen": "Quitter le mode plein écran",
43
43
  "components:mediaPlayer:fullscreen": "Plein écran",
44
+ "components:mediaPlayer:hideTranscript": "Hide transcript",
44
45
  "components:mediaPlayer:language": "Langue",
45
46
  "components:mediaPlayer:loadErrorMessage": "Oups! Un problème est survenu lors du chargement de ce fichier multimédia.",
46
47
  "components:mediaPlayer:loadSuccessMessage": "L’élément multimédia a bien été chargé.",
@@ -65,6 +66,7 @@ export default {
65
66
  "components:mediaPlayer:transcriptTxt": "Transcription (.txt)",
66
67
  "components:mediaPlayer:unableToDownload": "Impossible de télécharger. Veuillez rafraîchir la page et réessayer.",
67
68
  "components:mediaPlayer:unmute": "Désactiver la sourdine",
69
+ "components:mediaPlayer:viewTranscript": "View transcript",
68
70
  "components:mediaPlayer:volumeSlider": "curseur du volume",
69
71
  "components:navigation:back": "Retour",
70
72
  "components:navigation:next": "Suivant",