vidply 1.0.22 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/vidply.HLSRenderer-PNP5OPES.js +255 -0
- package/dist/dev/vidply.HLSRenderer-PNP5OPES.js.map +7 -0
- package/dist/dev/vidply.HTML5Renderer-LXQ3I45Q.js +12 -0
- package/dist/dev/vidply.HTML5Renderer-LXQ3I45Q.js.map +7 -0
- package/dist/dev/vidply.TranscriptManager-GZKY44ON.js +1744 -0
- package/dist/dev/vidply.TranscriptManager-GZKY44ON.js.map +7 -0
- package/dist/dev/vidply.VimeoRenderer-DCETT5IZ.js +213 -0
- package/dist/dev/vidply.VimeoRenderer-DCETT5IZ.js.map +7 -0
- package/dist/dev/vidply.YouTubeRenderer-QLMMD757.js +227 -0
- package/dist/dev/vidply.YouTubeRenderer-QLMMD757.js.map +7 -0
- package/dist/dev/vidply.chunk-UEIJOJH6.js +243 -0
- package/dist/dev/vidply.chunk-UEIJOJH6.js.map +7 -0
- package/dist/dev/vidply.chunk-UH5MTGKF.js +1630 -0
- package/dist/dev/vidply.chunk-UH5MTGKF.js.map +7 -0
- package/dist/dev/vidply.de-THBIMP4S.js +180 -0
- package/dist/dev/vidply.de-THBIMP4S.js.map +7 -0
- package/dist/dev/vidply.es-6VWDNNNL.js +180 -0
- package/dist/dev/vidply.es-6VWDNNNL.js.map +7 -0
- package/dist/{vidply.esm.js → dev/vidply.esm.js} +530 -5082
- package/dist/dev/vidply.esm.js.map +7 -0
- package/dist/dev/vidply.fr-WHTWCHWT.js +180 -0
- package/dist/dev/vidply.fr-WHTWCHWT.js.map +7 -0
- package/dist/dev/vidply.ja-BFQNPOFI.js +180 -0
- package/dist/dev/vidply.ja-BFQNPOFI.js.map +7 -0
- package/dist/{vidply.js → legacy/vidply.js} +7833 -7317
- package/dist/legacy/vidply.js.map +7 -0
- package/dist/legacy/vidply.min.js +6 -0
- package/dist/{vidply.min.meta.json → legacy/vidply.min.meta.json} +120 -94
- package/dist/prod/vidply.HLSRenderer-4PW35TCX.min.js +6 -0
- package/dist/prod/vidply.HTML5Renderer-XJCSUETP.min.js +6 -0
- package/dist/prod/vidply.TranscriptManager-UZ6DUFB6.min.js +6 -0
- package/dist/prod/vidply.VimeoRenderer-P3PU27S7.min.js +6 -0
- package/dist/prod/vidply.YouTubeRenderer-DGKKWB5M.min.js +6 -0
- package/dist/prod/vidply.chunk-BQBGEJF7.min.js +6 -0
- package/dist/prod/vidply.chunk-MBUR3U5L.min.js +6 -0
- package/dist/prod/vidply.de-SWFW4HYT.min.js +6 -0
- package/dist/prod/vidply.es-7BJ2DJAY.min.js +6 -0
- package/dist/prod/vidply.esm.min.js +21 -0
- package/dist/prod/vidply.fr-DPVR5DFY.min.js +6 -0
- package/dist/prod/vidply.ja-PEBVWKVH.min.js +6 -0
- package/dist/vidply.css +184 -4
- package/dist/vidply.esm.min.meta.json +284 -102
- package/dist/vidply.min.css +1 -1
- package/package.json +4 -4
- package/src/controls/ControlBar.js +3341 -3246
- package/src/controls/TranscriptManager.js +2296 -2271
- package/src/core/Player.js +4807 -4730
- package/src/features/PlaylistManager.js +1203 -1039
- package/src/i18n/i18n.js +51 -7
- package/src/i18n/languages/de.js +5 -1
- package/src/i18n/languages/en.js +5 -1
- package/src/i18n/languages/es.js +5 -1
- package/src/i18n/languages/fr.js +5 -1
- package/src/i18n/languages/ja.js +5 -1
- package/src/i18n/translations.js +35 -18
- package/src/icons/Icons.js +2 -20
- package/src/renderers/HLSRenderer.js +7 -0
- package/src/styles/vidply.css +184 -4
- package/src/utils/DOMUtils.js +67 -0
- package/src/utils/MenuUtils.js +10 -4
- package/src/utils/SettingsMenuFactory.js +8 -4
- package/src/utils/WindowComponents.js +6 -4
- package/dist/vidply.esm.js.map +0 -7
- package/dist/vidply.esm.min.js +0 -18
- package/dist/vidply.js.map +0 -7
- package/dist/vidply.min.js +0 -18
package/src/utils/MenuUtils.js
CHANGED
|
@@ -81,7 +81,8 @@ export function attachMenuKeyboardNavigation(menu, button, itemSelector, onClose
|
|
|
81
81
|
menuItems.forEach((item, idx) => {
|
|
82
82
|
item.setAttribute('tabindex', idx === nextIndex ? '0' : '-1');
|
|
83
83
|
});
|
|
84
|
-
menuItems[nextIndex].focus();
|
|
84
|
+
menuItems[nextIndex].focus({ preventScroll: false });
|
|
85
|
+
menuItems[nextIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
85
86
|
break;
|
|
86
87
|
|
|
87
88
|
case 'ArrowUp':
|
|
@@ -91,7 +92,8 @@ export function attachMenuKeyboardNavigation(menu, button, itemSelector, onClose
|
|
|
91
92
|
menuItems.forEach((item, idx) => {
|
|
92
93
|
item.setAttribute('tabindex', idx === prevIndex ? '0' : '-1');
|
|
93
94
|
});
|
|
94
|
-
menuItems[prevIndex].focus();
|
|
95
|
+
menuItems[prevIndex].focus({ preventScroll: false });
|
|
96
|
+
menuItems[prevIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
95
97
|
break;
|
|
96
98
|
|
|
97
99
|
case 'Home':
|
|
@@ -100,7 +102,8 @@ export function attachMenuKeyboardNavigation(menu, button, itemSelector, onClose
|
|
|
100
102
|
menuItems.forEach((item, idx) => {
|
|
101
103
|
item.setAttribute('tabindex', idx === 0 ? '0' : '-1');
|
|
102
104
|
});
|
|
103
|
-
menuItems[0].focus();
|
|
105
|
+
menuItems[0].focus({ preventScroll: false });
|
|
106
|
+
menuItems[0].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
104
107
|
break;
|
|
105
108
|
|
|
106
109
|
case 'End':
|
|
@@ -110,7 +113,8 @@ export function attachMenuKeyboardNavigation(menu, button, itemSelector, onClose
|
|
|
110
113
|
menuItems.forEach((item, idx) => {
|
|
111
114
|
item.setAttribute('tabindex', idx === lastIndex ? '0' : '-1');
|
|
112
115
|
});
|
|
113
|
-
menuItems[lastIndex].focus();
|
|
116
|
+
menuItems[lastIndex].focus({ preventScroll: false });
|
|
117
|
+
menuItems[lastIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
114
118
|
break;
|
|
115
119
|
|
|
116
120
|
case 'Enter':
|
|
@@ -159,6 +163,8 @@ export function focusFirstMenuItem(menu, itemSelector, delay = 0) {
|
|
|
159
163
|
item.setAttribute('tabindex', index === 0 ? '0' : '-1');
|
|
160
164
|
});
|
|
161
165
|
focusElement(menuItems[0], { delay: 0 });
|
|
166
|
+
// Scroll into view for keyboard users
|
|
167
|
+
menuItems[0].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
162
168
|
}
|
|
163
169
|
}, delay);
|
|
164
170
|
}
|
|
@@ -190,7 +190,8 @@ export function setupSettingsMenuKeyboard(menu, button, onClose) {
|
|
|
190
190
|
menuItems.forEach((item, idx) => {
|
|
191
191
|
item.setAttribute('tabindex', idx === nextIndex ? '0' : '-1');
|
|
192
192
|
});
|
|
193
|
-
menuItems[nextIndex].focus();
|
|
193
|
+
menuItems[nextIndex].focus({ preventScroll: false });
|
|
194
|
+
menuItems[nextIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
194
195
|
break;
|
|
195
196
|
|
|
196
197
|
case 'ArrowUp':
|
|
@@ -199,7 +200,8 @@ export function setupSettingsMenuKeyboard(menu, button, onClose) {
|
|
|
199
200
|
menuItems.forEach((item, idx) => {
|
|
200
201
|
item.setAttribute('tabindex', idx === prevIndex ? '0' : '-1');
|
|
201
202
|
});
|
|
202
|
-
menuItems[prevIndex].focus();
|
|
203
|
+
menuItems[prevIndex].focus({ preventScroll: false });
|
|
204
|
+
menuItems[prevIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
203
205
|
break;
|
|
204
206
|
|
|
205
207
|
case 'Home':
|
|
@@ -207,7 +209,8 @@ export function setupSettingsMenuKeyboard(menu, button, onClose) {
|
|
|
207
209
|
menuItems.forEach((item, idx) => {
|
|
208
210
|
item.setAttribute('tabindex', idx === 0 ? '0' : '-1');
|
|
209
211
|
});
|
|
210
|
-
menuItems[0].focus();
|
|
212
|
+
menuItems[0].focus({ preventScroll: false });
|
|
213
|
+
menuItems[0].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
211
214
|
break;
|
|
212
215
|
|
|
213
216
|
case 'End':
|
|
@@ -216,7 +219,8 @@ export function setupSettingsMenuKeyboard(menu, button, onClose) {
|
|
|
216
219
|
menuItems.forEach((item, idx) => {
|
|
217
220
|
item.setAttribute('tabindex', idx === lastIndex ? '0' : '-1');
|
|
218
221
|
});
|
|
219
|
-
menuItems[lastIndex].focus();
|
|
222
|
+
menuItems[lastIndex].focus({ preventScroll: false });
|
|
223
|
+
menuItems[lastIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
220
224
|
break;
|
|
221
225
|
|
|
222
226
|
case 'Escape':
|
|
@@ -47,15 +47,16 @@ export function createWindowHeader({
|
|
|
47
47
|
// Add settings button if requested
|
|
48
48
|
let settingsButton = null;
|
|
49
49
|
if (showSettings && onSettingsClick) {
|
|
50
|
+
const settingsAriaLabel = i18n.t('settings.title');
|
|
50
51
|
settingsButton = DOMUtils.createElement('button', {
|
|
51
52
|
className: `${classPrefix}-icon-button ${headerClass}-settings`,
|
|
52
53
|
attributes: {
|
|
53
54
|
'type': 'button',
|
|
54
|
-
'aria-label':
|
|
55
|
-
'title': i18n.t('settings.title')
|
|
55
|
+
'aria-label': settingsAriaLabel
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
settingsButton.appendChild(createIconElement('settings'));
|
|
59
|
+
DOMUtils.attachTooltip(settingsButton, settingsAriaLabel, classPrefix);
|
|
59
60
|
settingsButton.addEventListener('click', onSettingsClick);
|
|
60
61
|
leftSide.appendChild(settingsButton);
|
|
61
62
|
}
|
|
@@ -74,15 +75,16 @@ export function createWindowHeader({
|
|
|
74
75
|
leftSide.appendChild(title);
|
|
75
76
|
|
|
76
77
|
// Create close button
|
|
78
|
+
const closeAriaLabel = i18n.t('player.close');
|
|
77
79
|
const closeButton = DOMUtils.createElement('button', {
|
|
78
80
|
className: `${classPrefix}-icon-button ${headerClass}-close`,
|
|
79
81
|
attributes: {
|
|
80
82
|
'type': 'button',
|
|
81
|
-
'aria-label':
|
|
82
|
-
'title': i18n.t('player.close')
|
|
83
|
+
'aria-label': closeAriaLabel
|
|
83
84
|
}
|
|
84
85
|
});
|
|
85
86
|
closeButton.appendChild(createIconElement('close'));
|
|
87
|
+
DOMUtils.attachTooltip(closeButton, closeAriaLabel, classPrefix);
|
|
86
88
|
if (onClose) {
|
|
87
89
|
closeButton.addEventListener('click', onClose);
|
|
88
90
|
}
|