1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Add KeyboardEvent constructor polyfill

This commit is contained in:
Dmitry Lyzo 2023-07-17 21:47:31 +03:00
parent 76c55116ce
commit 11ae2ff43f
2 changed files with 49 additions and 0 deletions

View file

@ -0,0 +1,48 @@
/**
* Polyfill for KeyboardEvent
* - Constructor.
*/
(function (window) {
'use strict';
try {
new window.KeyboardEvent('event', { bubbles: true, cancelable: true });
} catch (e) {
// We can't use `KeyboardEvent` in old WebKit because `initKeyboardEvent`
// doesn't seem to populate some properties (`keyCode`, `which`) that
// are read-only.
const KeyboardEventOriginal = window.Event;
const KeyboardEvent = function (eventName, options) {
options = options || {};
const event = document.createEvent('Event');
event.initEvent(eventName, !!options.bubbles, !!options.cancelable);
event.view = options.view || document.defaultView;
event.key = options.key || options.keyIdentifier || '';
event.keyCode = options.keyCode || 0;
event.code = options.code || '';
event.charCode = options.charCode || 0;
event.char = options.char || '';
event.which = options.which || 0;
event.location = options.location || options.keyLocation || 0;
event.ctrlKey = !!options.ctrlKey;
event.altKey = !!options.altKey;
event.shiftKey = !!options.shiftKey;
event.metaKey = !!options.metaKey;
event.repeat = !!options.repeat;
return event;
};
KeyboardEvent.prototype = KeyboardEventOriginal.prototype;
window.KeyboardEvent = KeyboardEvent;
}
}(window));

View file

@ -32,6 +32,7 @@ import '../components/playback/playerSelectionMenu';
import '../legacy/domParserTextHtml'; import '../legacy/domParserTextHtml';
import '../legacy/focusPreventScroll'; import '../legacy/focusPreventScroll';
import '../legacy/htmlMediaElement'; import '../legacy/htmlMediaElement';
import '../legacy/keyboardEvent';
import '../legacy/vendorStyles'; import '../legacy/vendorStyles';
import SyncPlay from '../components/syncPlay/core'; import SyncPlay from '../components/syncPlay/core';
import { playbackManager } from '../components/playback/playbackmanager'; import { playbackManager } from '../components/playback/playbackmanager';