@gcorevideo/player 2.28.25 → 2.28.26
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/core.js +38 -32
- package/dist/index.css +223 -223
- package/dist/index.embed.js +95 -38
- package/dist/index.js +227 -122
- package/lib/Player.d.ts.map +1 -1
- package/lib/index.core.d.ts +1 -1
- package/lib/index.core.d.ts.map +1 -1
- package/lib/index.core.js +1 -1
- package/lib/index.plugins.d.ts +34 -34
- package/lib/index.plugins.d.ts.map +1 -1
- package/lib/index.plugins.js +34 -34
- package/lib/playback/types.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.d.ts.map +1 -1
- package/lib/plugins/bottom-gear/BottomGear.js +3 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/index.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/speedtest/index.js +9 -5
- package/lib/plugins/clappr-nerd-stats/speedtest/types.d.ts.map +1 -1
- package/lib/plugins/clappr-nerd-stats/utils.d.ts +2 -2
- package/lib/plugins/clips/utils.d.ts.map +1 -1
- package/lib/plugins/cmcd-config/CmcdConfig.js +1 -1
- package/lib/plugins/favicon/Favicon.d.ts.map +1 -1
- package/lib/plugins/google-analytics/GoogleAnalytics.d.ts.map +1 -1
- package/lib/plugins/google-analytics/GoogleAnalytics.js +10 -3
- package/lib/plugins/kibo/index.d.ts.map +1 -1
- package/lib/plugins/kibo/index.js +69 -20
- package/lib/plugins/level-selector/QualityLevels.js +2 -2
- package/lib/plugins/logo/Logo.d.ts.map +1 -1
- package/lib/plugins/logo/Logo.js +19 -15
- package/lib/plugins/logo/utils/index.d.ts.map +1 -1
- package/lib/plugins/logo/utils/index.js +11 -7
- package/lib/plugins/media-control/MediaControl.d.ts.map +1 -1
- package/lib/plugins/multi-camera/MultiCamera.d.ts.map +1 -1
- package/lib/plugins/multi-camera/MultiCamera.js +42 -20
- package/lib/plugins/picture-in-picture/PictureInPicture.d.ts.map +1 -1
- package/lib/plugins/picture-in-picture/PictureInPicture.js +3 -2
- package/lib/plugins/share/Share.d.ts.map +1 -1
- package/lib/plugins/share/Share.js +17 -12
- package/lib/plugins/skip-time/SkipTime.d.ts.map +1 -1
- package/lib/plugins/spinner-three-bounce/SpinnerThreeBounce.d.ts.map +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
- package/lib/plugins/subtitles/ClosedCaptions.js +4 -3
- package/lib/plugins/thumbnails/Thumbnails.js +2 -3
- package/lib/plugins/thumbnails/utils.d.ts.map +1 -1
- package/lib/plugins/utils/fullscreen.d.ts.map +1 -1
- package/lib/plugins/utils.d.ts.map +1 -1
- package/lib/plugins/utils.js +1 -1
- package/lib/plugins/vast-ads/VastAds.d.ts.map +1 -1
- package/lib/plugins/vast-ads/VastAds.js +2 -1
- package/lib/plugins/vast-ads/loaderxml.d.ts.map +1 -1
- package/lib/plugins/vast-ads/loaderxml.js +8 -5
- package/lib/plugins/vast-ads/roll.d.ts +2 -2
- package/lib/plugins/vast-ads/roll.d.ts.map +1 -1
- package/lib/plugins/vast-ads/roll.js +16 -10
- package/lib/plugins/vast-ads/rollmanager.d.ts.map +1 -1
- package/lib/plugins/vast-ads/rollmanager.js +17 -7
- package/lib/plugins/vast-ads/sctemanager.d.ts +1 -1
- package/lib/plugins/vast-ads/sctemanager.d.ts.map +1 -1
- package/lib/plugins/vast-ads/sctemanager.js +6 -5
- package/lib/plugins/vast-ads/types.d.ts.map +1 -1
- package/lib/plugins/vast-ads/urlhandler.d.ts.map +1 -1
- package/lib/plugins/vast-ads/xmlhttprequest.d.ts.map +1 -1
- package/lib/plugins/vast-ads/xmlhttprequest.js +3 -2
- package/lib/plugins/vast-ads/xmlmerge.d.ts.map +1 -1
- package/lib/plugins/vast-ads/xmlmerge.js +4 -3
- package/lib/types.d.ts +1 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/clickaway.d.ts.map +1 -1
- package/lib/utils/mediaSources.d.ts.map +1 -1
- package/lib/utils/mediaSources.js +1 -3
- package/lib/utils/types.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/package.json +2 -2
- package/src/Player.ts +10 -10
- package/src/__tests__/Player.test.ts +33 -10
- package/src/index.core.ts +9 -1
- package/src/index.plugins.ts +35 -35
- package/src/playback/BasePlayback.ts +1 -1
- package/src/playback/__tests__/HTML5Video.test.ts +10 -4
- package/src/playback/dash-playback/__tests__/DashPlayback.test.ts +10 -38
- package/src/playback/hls-playback/__tests__/HlsPlayback.test.ts +12 -45
- package/src/playback/types.ts +0 -1
- package/src/playback.types.ts +1 -2
- package/src/plugins/audio-selector/AudioTracks.ts +1 -1
- package/src/plugins/audio-selector/__tests__/AudioTracks.test.ts +30 -11
- package/src/plugins/bottom-gear/BottomGear.ts +3 -2
- package/src/plugins/clappr-nerd-stats/NerdStats.ts +1 -1
- package/src/plugins/clappr-nerd-stats/speedtest/index.ts +104 -82
- package/src/plugins/clappr-nerd-stats/speedtest/types.ts +3 -3
- package/src/plugins/clappr-nerd-stats/utils.ts +2 -2
- package/src/plugins/clappr-stats/__tests__/ClapprStats.test.ts +30 -18
- package/src/plugins/clips/utils.ts +5 -1
- package/src/plugins/cmcd-config/CmcdConfig.ts +1 -1
- package/src/plugins/error-screen/__tests__/ErrorScreen.test.ts +21 -15
- package/src/plugins/favicon/Favicon.ts +73 -49
- package/src/plugins/google-analytics/GoogleAnalytics.ts +93 -58
- package/src/plugins/kibo/index.ts +183 -109
- package/src/plugins/level-selector/QualityLevels.ts +2 -2
- package/src/plugins/logo/Logo.ts +134 -105
- package/src/plugins/logo/utils/index.ts +27 -20
- package/src/plugins/media-control/MediaControl.ts +12 -6
- package/src/plugins/multi-camera/MultiCamera.ts +218 -157
- package/src/plugins/picture-in-picture/PictureInPicture.ts +41 -37
- package/src/plugins/playback-rate/__tests__/PlaybackRate.test.ts +25 -11
- package/src/plugins/poster/__tests__/Poster.test.ts +8 -9
- package/src/plugins/share/Share.ts +85 -60
- package/src/plugins/skip-time/SkipTime.ts +5 -1
- package/src/plugins/spinner-three-bounce/SpinnerThreeBounce.ts +8 -5
- package/src/plugins/subtitles/ClosedCaptions.ts +7 -5
- package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +0 -1
- package/src/plugins/thumbnails/Thumbnails.ts +22 -21
- package/src/plugins/thumbnails/__tests__/Thumbnails.test.ts +14 -7
- package/src/plugins/thumbnails/utils.ts +3 -1
- package/src/plugins/typings/globals.d.ts +7 -7
- package/src/plugins/typings/workers.d.ts +3 -3
- package/src/plugins/utils/fullscreen.ts +2 -2
- package/src/plugins/utils.ts +17 -13
- package/src/plugins/vast-ads/VastAds.ts +4 -5
- package/src/plugins/vast-ads/loaderxml.ts +142 -101
- package/src/plugins/vast-ads/roll.ts +381 -284
- package/src/plugins/vast-ads/rollmanager.ts +214 -170
- package/src/plugins/vast-ads/sctemanager.ts +66 -48
- package/src/plugins/vast-ads/types.ts +15 -9
- package/src/plugins/vast-ads/urlhandler.ts +18 -13
- package/src/plugins/vast-ads/xmlhttprequest.ts +25 -20
- package/src/plugins/vast-ads/xmlmerge.ts +42 -32
- package/src/plugins/video360/VRControls.js +50 -42
- package/src/plugins/video360/VREffect.js +298 -206
- package/src/plugins/video360/Video360.js +553 -423
- package/src/plugins/video360/orbit-oriention-controls.js +526 -421
- package/src/plugins/video360/utils.js +18 -18
- package/src/types.ts +5 -3
- package/src/typings/@clappr/core/error_mixin.d.ts +9 -9
- package/src/typings/@clappr/core/index.d.ts +1 -3
- package/src/typings/@clappr/core/playback.d.ts +3 -3
- package/src/typings/@clappr/index.d.ts +1 -1
- package/src/typings/globals.d.ts +15 -15
- package/src/utils/__tests__/mediaSources.test.ts +42 -26
- package/src/utils/clickaway.ts +24 -24
- package/src/utils/errors.ts +2 -2
- package/src/utils/mediaSources.ts +5 -4
- package/src/utils/types.ts +1 -1
- package/src/version.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -2,52 +2,53 @@
|
|
|
2
2
|
// Kibo is released under the MIT License. Copyright (c) 2013 marquete.
|
|
3
3
|
// see https://github.com/marquete/kibo
|
|
4
4
|
|
|
5
|
-
type KeyboardEventHandler = (e: KeyboardEvent) => boolean | undefined
|
|
5
|
+
type KeyboardEventHandler = (e: KeyboardEvent) => boolean | undefined
|
|
6
6
|
|
|
7
7
|
type KeyboardEventBindings = {
|
|
8
|
-
any: KeyboardEventHandler[]
|
|
9
|
-
[key: string]: KeyboardEventHandler[]
|
|
8
|
+
any: KeyboardEventHandler[]
|
|
9
|
+
[key: string]: KeyboardEventHandler[]
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
type UpDown = 'up' | 'down'
|
|
12
|
+
type UpDown = 'up' | 'down'
|
|
13
13
|
|
|
14
14
|
export class Kibo {
|
|
15
|
-
private lastKeyCode = -1
|
|
15
|
+
private lastKeyCode = -1
|
|
16
16
|
|
|
17
|
-
private lastModifiers: Record<string, boolean> = {}
|
|
17
|
+
private lastModifiers: Record<string, boolean> = {}
|
|
18
18
|
|
|
19
|
-
private keysDown: KeyboardEventBindings = { any: [] }
|
|
20
|
-
private keysUp: KeyboardEventBindings = { any: [] }
|
|
19
|
+
private keysDown: KeyboardEventBindings = { any: [] } // TODO
|
|
20
|
+
private keysUp: KeyboardEventBindings = { any: [] }
|
|
21
21
|
|
|
22
|
-
private downHandler: (e: KeyboardEvent) => void
|
|
22
|
+
private downHandler: (e: KeyboardEvent) => void
|
|
23
23
|
|
|
24
|
-
private upHandler: (e: KeyboardEvent) => void
|
|
24
|
+
private upHandler: (e: KeyboardEvent) => void
|
|
25
25
|
|
|
26
26
|
constructor(private element: Document | Element = window.document) {
|
|
27
27
|
for (const mod of MODIFIERS) {
|
|
28
|
-
this.lastModifiers[mod] = false
|
|
28
|
+
this.lastModifiers[mod] = false
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
this.keysDown = { any: [] }
|
|
32
|
-
this.keysUp = { any: [] }
|
|
33
|
-
this.downHandler = this.handler('down')
|
|
34
|
-
this.upHandler = this.handler('up')
|
|
35
|
-
|
|
36
|
-
registerEvent(this.element, 'keydown', this.downHandler)
|
|
37
|
-
registerEvent(this.element, 'keyup', this.upHandler)
|
|
30
|
+
|
|
31
|
+
this.keysDown = { any: [] }
|
|
32
|
+
this.keysUp = { any: [] }
|
|
33
|
+
this.downHandler = this.handler('down')
|
|
34
|
+
this.upHandler = this.handler('up')
|
|
35
|
+
|
|
36
|
+
registerEvent(this.element, 'keydown', this.downHandler)
|
|
37
|
+
registerEvent(this.element, 'keyup', this.upHandler)
|
|
38
38
|
const unloader = () => {
|
|
39
|
-
unregisterEvent(this.element, 'keydown', this.downHandler)
|
|
40
|
-
unregisterEvent(this.element, 'keyup', this.upHandler)
|
|
41
|
-
unregisterEvent(window, 'unload', unloader)
|
|
42
|
-
}
|
|
43
|
-
registerEvent(window, 'unload', unloader)
|
|
39
|
+
unregisterEvent(this.element, 'keydown', this.downHandler)
|
|
40
|
+
unregisterEvent(this.element, 'keyup', this.upHandler)
|
|
41
|
+
unregisterEvent(window, 'unload', unloader)
|
|
42
|
+
}
|
|
43
|
+
registerEvent(window, 'unload', unloader)
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
private handler(upOrDown: UpDown = 'up') {
|
|
47
47
|
return (e: KeyboardEvent) => {
|
|
48
|
-
this.lastKeyCode = e.keyCode
|
|
48
|
+
this.lastKeyCode = e.keyCode // TODO
|
|
49
49
|
for (const mod of MODIFIERS) {
|
|
50
|
-
this.lastModifiers[mod] =
|
|
50
|
+
this.lastModifiers[mod] =
|
|
51
|
+
e[(mod + 'Key') as 'shiftKey' | 'ctrlKey' | 'altKey']
|
|
51
52
|
}
|
|
52
53
|
// for (i = 0; i < Kibo.MODIFIERS.length; i++) {
|
|
53
54
|
// that.lastModifiers[Kibo.MODIFIERS[i]] = e[Kibo.MODIFIERS[i] + 'Key'];
|
|
@@ -55,14 +56,15 @@ export class Kibo {
|
|
|
55
56
|
// if (Kibo.arrayIncludes(Kibo.MODIFIERS, Kibo.keyName(that.lastKeyCode))) {
|
|
56
57
|
// that.lastModifiers[Kibo.keyName(that.lastKeyCode)] = true;
|
|
57
58
|
// }
|
|
58
|
-
const key = keyName(this.lastKeyCode)
|
|
59
|
+
const key = keyName(this.lastKeyCode)
|
|
59
60
|
if (key && MODIFIERS.includes(key)) {
|
|
60
|
-
this.lastModifiers[key] = true
|
|
61
|
+
this.lastModifiers[key] = true
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
const regKeys: KeyboardEventBindings =
|
|
63
|
+
|
|
64
|
+
const regKeys: KeyboardEventBindings =
|
|
65
|
+
upOrDown === 'up' ? this.keysUp : this.keysDown
|
|
64
66
|
// this['keys' + capitalize(upOrDown)]; // TODO
|
|
65
|
-
|
|
67
|
+
|
|
66
68
|
// for (i = 0; i < registeredKeys.any.length; i++) {
|
|
67
69
|
// if ((registeredKeys.any[i](e) === false) && e.preventDefault) {
|
|
68
70
|
// e.preventDefault();
|
|
@@ -70,34 +72,38 @@ export class Kibo {
|
|
|
70
72
|
// }
|
|
71
73
|
for (const h of regKeys.any) {
|
|
72
74
|
if (h(e) === false && e.preventDefault) {
|
|
73
|
-
e.preventDefault()
|
|
75
|
+
e.preventDefault()
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
|
-
|
|
77
|
-
const lastModifiersAndKey = this.lastModifiersAndKey()
|
|
78
|
+
|
|
79
|
+
const lastModifiersAndKey = this.lastModifiersAndKey()
|
|
78
80
|
if (regKeys[lastModifiersAndKey]) {
|
|
79
81
|
for (const h of regKeys[lastModifiersAndKey]) {
|
|
80
|
-
if (
|
|
81
|
-
e.preventDefault()
|
|
82
|
+
if (h(e) === false && e.preventDefault) {
|
|
83
|
+
e.preventDefault()
|
|
82
84
|
}
|
|
83
|
-
|
|
85
|
+
// for (i = 0; i < registeredKeys[lastModifiersAndKey].length; i++) {
|
|
84
86
|
// if ((registeredKeys[lastModifiersAndKey][i](e) === false) && e.preventDefault) {
|
|
85
|
-
|
|
87
|
+
// e.preventDefault();
|
|
86
88
|
// }
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
|
-
}
|
|
91
|
+
}
|
|
90
92
|
}
|
|
91
93
|
|
|
92
|
-
private registerKeys(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
private registerKeys(
|
|
95
|
+
upOrDown: UpDown,
|
|
96
|
+
newKeys: string | string[],
|
|
97
|
+
func: KeyboardEventHandler,
|
|
98
|
+
) {
|
|
99
|
+
const registeredKeys = upOrDown === 'up' ? this.keysUp : this.keysDown
|
|
100
|
+
|
|
101
|
+
const normKeys = typeof newKeys === 'string' ? [newKeys] : newKeys
|
|
102
|
+
|
|
97
103
|
// for (i = 0; i < newKeys.length; i++) {
|
|
98
104
|
// // keys = newKeys[i];
|
|
99
105
|
// keys = modifiersAndKey(keys + '');
|
|
100
|
-
|
|
106
|
+
|
|
101
107
|
// if (registeredKeys[keys]) {
|
|
102
108
|
// registeredKeys[keys].push(func);
|
|
103
109
|
// } else {
|
|
@@ -105,140 +111,208 @@ export class Kibo {
|
|
|
105
111
|
// }
|
|
106
112
|
// }
|
|
107
113
|
for (const k of normKeys) {
|
|
108
|
-
const keys = modifiersAndKey(k)
|
|
109
|
-
|
|
114
|
+
const keys = modifiersAndKey(k)
|
|
115
|
+
|
|
110
116
|
if (registeredKeys[keys]) {
|
|
111
|
-
registeredKeys[keys].push(func)
|
|
117
|
+
registeredKeys[keys].push(func)
|
|
112
118
|
} else {
|
|
113
|
-
registeredKeys[keys] = [func]
|
|
119
|
+
registeredKeys[keys] = [func]
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
|
-
|
|
117
|
-
return this
|
|
122
|
+
|
|
123
|
+
return this
|
|
118
124
|
}
|
|
119
125
|
|
|
120
|
-
private unregisterKeys(
|
|
121
|
-
|
|
122
|
-
|
|
126
|
+
private unregisterKeys(
|
|
127
|
+
upOrDown: UpDown,
|
|
128
|
+
newKeys: string | string[],
|
|
129
|
+
func: KeyboardEventHandler | null = null,
|
|
130
|
+
) {
|
|
131
|
+
const registeredKeys = upOrDown === 'up' ? this.keysUp : this.keysDown
|
|
132
|
+
const normKeys = typeof newKeys === 'string' ? [newKeys] : newKeys
|
|
123
133
|
|
|
124
134
|
for (const k of normKeys) {
|
|
125
|
-
const keys = modifiersAndKey(k)
|
|
135
|
+
const keys = modifiersAndKey(k)
|
|
126
136
|
if (func === null) {
|
|
127
|
-
delete registeredKeys[keys]
|
|
137
|
+
delete registeredKeys[keys]
|
|
128
138
|
} else {
|
|
129
139
|
if (registeredKeys[keys]) {
|
|
130
|
-
const p = registeredKeys[keys].indexOf(func)
|
|
140
|
+
const p = registeredKeys[keys].indexOf(func)
|
|
131
141
|
if (p >= 0) {
|
|
132
|
-
registeredKeys[keys].splice(p, 1)
|
|
142
|
+
registeredKeys[keys].splice(p, 1)
|
|
133
143
|
}
|
|
134
144
|
}
|
|
135
145
|
}
|
|
136
146
|
}
|
|
137
|
-
|
|
138
|
-
return this
|
|
147
|
+
|
|
148
|
+
return this
|
|
139
149
|
}
|
|
140
150
|
|
|
141
151
|
off(keys: string | string[]): Kibo {
|
|
142
|
-
return this.unregisterKeys('down', keys, null)
|
|
152
|
+
return this.unregisterKeys('down', keys, null)
|
|
143
153
|
}
|
|
144
154
|
|
|
145
|
-
delegate(
|
|
146
|
-
|
|
155
|
+
delegate(
|
|
156
|
+
upOrDown: UpDown,
|
|
157
|
+
keys: string | string[],
|
|
158
|
+
func?: KeyboardEventHandler | null,
|
|
159
|
+
): Kibo {
|
|
160
|
+
return func !== null && func !== undefined
|
|
147
161
|
? this.registerKeys(upOrDown, keys, func)
|
|
148
|
-
: this.unregisterKeys(upOrDown, keys, func)
|
|
162
|
+
: this.unregisterKeys(upOrDown, keys, func)
|
|
149
163
|
}
|
|
150
164
|
|
|
151
165
|
down(keys: string | string[], func?: KeyboardEventHandler | null): Kibo {
|
|
152
|
-
return this.delegate('down', keys, func)
|
|
166
|
+
return this.delegate('down', keys, func)
|
|
153
167
|
}
|
|
154
168
|
|
|
155
169
|
up(keys: string | string[], func?: KeyboardEventHandler | null): Kibo {
|
|
156
|
-
return this.delegate('up', keys, func)
|
|
170
|
+
return this.delegate('up', keys, func)
|
|
157
171
|
}
|
|
158
172
|
|
|
159
173
|
lastKey(modifier?: string): string | boolean {
|
|
160
174
|
if (!modifier) {
|
|
161
|
-
return keyName(this.lastKeyCode)
|
|
175
|
+
return keyName(this.lastKeyCode)
|
|
162
176
|
}
|
|
163
|
-
|
|
164
|
-
return this.lastModifiers[modifier]
|
|
177
|
+
|
|
178
|
+
return this.lastModifiers[modifier]
|
|
165
179
|
}
|
|
166
180
|
|
|
167
181
|
lastModifiersAndKey() {
|
|
168
|
-
const result = MODIFIERS.filter(m => this.lastKey(m))
|
|
169
|
-
const lastKey = keyName(this.lastKeyCode)
|
|
182
|
+
const result = MODIFIERS.filter((m) => this.lastKey(m))
|
|
183
|
+
const lastKey = keyName(this.lastKeyCode)
|
|
170
184
|
if (lastKey && !result.includes(lastKey)) {
|
|
171
|
-
result.push(lastKey)
|
|
185
|
+
result.push(lastKey)
|
|
172
186
|
}
|
|
173
|
-
return result.join(' ')
|
|
174
|
-
}
|
|
187
|
+
return result.join(' ')
|
|
188
|
+
}
|
|
175
189
|
}
|
|
176
190
|
|
|
177
|
-
function registerEvent(
|
|
178
|
-
element
|
|
191
|
+
function registerEvent(
|
|
192
|
+
element: Node | Window,
|
|
193
|
+
eventName: string,
|
|
194
|
+
func: (e: KeyboardEvent) => void,
|
|
195
|
+
): void {
|
|
196
|
+
element.addEventListener(eventName, func as EventListener, false)
|
|
179
197
|
}
|
|
180
198
|
|
|
181
|
-
function unregisterEvent(
|
|
182
|
-
element
|
|
199
|
+
function unregisterEvent(
|
|
200
|
+
element: Node | Window,
|
|
201
|
+
eventName: string,
|
|
202
|
+
func: (e: KeyboardEvent) => void,
|
|
203
|
+
): void {
|
|
204
|
+
element.removeEventListener(eventName, func as EventListener, false)
|
|
183
205
|
}
|
|
184
206
|
|
|
185
207
|
const KEY_NAMES_BY_CODE: Record<number, string> = {
|
|
186
|
-
8: 'backspace',
|
|
187
|
-
|
|
208
|
+
8: 'backspace',
|
|
209
|
+
9: 'tab',
|
|
210
|
+
13: 'enter',
|
|
211
|
+
16: 'shift',
|
|
212
|
+
17: 'ctrl',
|
|
213
|
+
18: 'alt',
|
|
188
214
|
20: 'caps_lock',
|
|
189
215
|
27: 'esc',
|
|
190
216
|
32: 'space',
|
|
191
|
-
37: 'left',
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
217
|
+
37: 'left',
|
|
218
|
+
38: 'up',
|
|
219
|
+
39: 'right',
|
|
220
|
+
40: 'down',
|
|
221
|
+
48: '0',
|
|
222
|
+
49: '1',
|
|
223
|
+
50: '2',
|
|
224
|
+
51: '3',
|
|
225
|
+
52: '4',
|
|
226
|
+
53: '5',
|
|
227
|
+
54: '6',
|
|
228
|
+
55: '7',
|
|
229
|
+
56: '8',
|
|
230
|
+
57: '9',
|
|
231
|
+
65: 'a',
|
|
232
|
+
66: 'b',
|
|
233
|
+
67: 'c',
|
|
234
|
+
68: 'd',
|
|
235
|
+
69: 'e',
|
|
236
|
+
70: 'f',
|
|
237
|
+
71: 'g',
|
|
238
|
+
72: 'h',
|
|
239
|
+
73: 'i',
|
|
240
|
+
74: 'j',
|
|
241
|
+
75: 'k',
|
|
242
|
+
76: 'l',
|
|
243
|
+
77: 'm',
|
|
244
|
+
78: 'n',
|
|
245
|
+
79: 'o',
|
|
246
|
+
80: 'p',
|
|
247
|
+
81: 'q',
|
|
248
|
+
82: 'r',
|
|
249
|
+
83: 's',
|
|
250
|
+
84: 't',
|
|
251
|
+
85: 'u',
|
|
252
|
+
86: 'v',
|
|
253
|
+
87: 'w',
|
|
254
|
+
88: 'x',
|
|
255
|
+
89: 'y',
|
|
256
|
+
90: 'z',
|
|
257
|
+
112: 'f1',
|
|
258
|
+
113: 'f2',
|
|
259
|
+
114: 'f3',
|
|
260
|
+
115: 'f4',
|
|
261
|
+
116: 'f5',
|
|
262
|
+
117: 'f6',
|
|
263
|
+
118: 'f7',
|
|
264
|
+
119: 'f8',
|
|
265
|
+
120: 'f9',
|
|
266
|
+
121: 'f10',
|
|
267
|
+
122: 'f11',
|
|
268
|
+
123: 'f12',
|
|
269
|
+
}
|
|
198
270
|
|
|
199
|
-
const KEY_CODES_BY_NAME: Record<string, number> = {}
|
|
271
|
+
const KEY_CODES_BY_NAME: Record<string, number> = {}
|
|
200
272
|
|
|
201
|
-
(function () {
|
|
273
|
+
;(function () {
|
|
202
274
|
Object.entries(KEY_NAMES_BY_CODE).forEach(([key, name]) => {
|
|
203
|
-
KEY_CODES_BY_NAME[name] = +key
|
|
204
|
-
})
|
|
205
|
-
})()
|
|
275
|
+
KEY_CODES_BY_NAME[name] = +key
|
|
276
|
+
})
|
|
277
|
+
})()
|
|
206
278
|
|
|
207
|
-
const MODIFIERS = ['shift', 'ctrl', 'alt']
|
|
279
|
+
const MODIFIERS = ['shift', 'ctrl', 'alt']
|
|
208
280
|
|
|
209
281
|
function stringContains(string: string, substring: string): boolean {
|
|
210
|
-
return string.indexOf(substring) !== -1
|
|
282
|
+
return string.indexOf(substring) !== -1
|
|
211
283
|
}
|
|
212
284
|
|
|
213
285
|
function neatString(string: string): string {
|
|
214
|
-
return string.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ')
|
|
215
|
-
}
|
|
286
|
+
return string.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ')
|
|
287
|
+
}
|
|
216
288
|
|
|
217
289
|
function extractModifiers(keyCombination: string): string[] {
|
|
218
|
-
return MODIFIERS.filter(m => keyCombination.includes(m))
|
|
290
|
+
return MODIFIERS.filter((m) => keyCombination.includes(m))
|
|
219
291
|
}
|
|
220
292
|
|
|
221
|
-
function extractKey(keyCombination: string): string | undefined{
|
|
222
|
-
return neatString(keyCombination)
|
|
223
|
-
|
|
293
|
+
function extractKey(keyCombination: string): string | undefined {
|
|
294
|
+
return neatString(keyCombination)
|
|
295
|
+
.split(' ')
|
|
296
|
+
.find((key) => !MODIFIERS.includes(key))
|
|
297
|
+
}
|
|
224
298
|
|
|
225
|
-
|
|
226
|
-
var result, key
|
|
299
|
+
function modifiersAndKey(keyCombination: string) {
|
|
300
|
+
var result, key
|
|
227
301
|
|
|
228
302
|
if (stringContains(keyCombination, 'any')) {
|
|
229
|
-
return neatString(keyCombination).split(' ').slice(0, 2).join(' ')
|
|
303
|
+
return neatString(keyCombination).split(' ').slice(0, 2).join(' ')
|
|
230
304
|
}
|
|
231
305
|
|
|
232
|
-
result = extractModifiers(keyCombination)
|
|
306
|
+
result = extractModifiers(keyCombination)
|
|
233
307
|
|
|
234
|
-
key = extractKey(keyCombination)
|
|
308
|
+
key = extractKey(keyCombination)
|
|
235
309
|
if (key) {
|
|
236
|
-
result.push(key)
|
|
310
|
+
result.push(key)
|
|
237
311
|
}
|
|
238
312
|
|
|
239
|
-
return result.join(' ')
|
|
313
|
+
return result.join(' ')
|
|
240
314
|
}
|
|
241
315
|
|
|
242
316
|
function keyName(keyCode: number): string {
|
|
243
|
-
return KEY_NAMES_BY_CODE[keyCode] || ''
|
|
244
|
-
}
|
|
317
|
+
return KEY_NAMES_BY_CODE[keyCode] || ''
|
|
318
|
+
}
|
|
@@ -267,11 +267,11 @@ export class QualityLevels extends UICorePlugin {
|
|
|
267
267
|
private get maxLevel() {
|
|
268
268
|
const maxRes = this.pluginOptions.restrictResolution
|
|
269
269
|
return maxRes
|
|
270
|
-
? this.levels.find(
|
|
270
|
+
? (this.levels.find(
|
|
271
271
|
(level) =>
|
|
272
272
|
(level.height > level.width ? level.width : level.height) ===
|
|
273
273
|
maxRes,
|
|
274
|
-
)?.level ?? -1
|
|
274
|
+
)?.level ?? -1)
|
|
275
275
|
: -1
|
|
276
276
|
}
|
|
277
277
|
|