PageSourceSearch

https://radiobrennt.de/wp-content/plugins/meks-audio-player/assets/js/mediaelement-speed.js?ver=1.3

js radiobrennt.de collected 2026-09-24 18:06:13 UTC 6,667 bytes, 174 lines download raw bytes

1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
12'use strict';
13
14mejs.i18n.en['mejs.speed-rate'] = 'Speed Rate';
15
16Object.assign(mejs.MepDefaults, {
17	speeds: ['2.00', '1.50', '1.25', '1.00', '0.75'],
18
19	defaultSpeed: '1.00',
20
21	speedChar: 'x',
22
23	speedText: null
24});
25
26Object.assign(MediaElementPlayer.prototype, {
27	buildspeed: function buildspeed(player, controls, layers, media) {
28		var t = this,
29		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
30
31		if (!isNative) {
32			return;
33		}
34
35		var speeds = [],
36		    speedTitle = mejs.Utils.isString(t.options.speedText) ? t.options.speedText : mejs.i18n.t('mejs.speed-rate'),
37		    getSpeedNameFromValue = function getSpeedNameFromValue(value) {
38			for (var i = 0, total = speeds.length; i < total; i++) {
39				if (speeds[i].value === value) {
40					return speeds[i].name;
41				}
42			}
43		};
44
45		var playbackSpeed = void 0,
46		    defaultInArray = false;
47
48		for (var i = 0, total = t.options.speeds.length; i < total; i++) {
49			var s = t.options.speeds[i];
50
51			if (typeof s === 'string') {
52				speeds.push({
53					name: '' + s + t.options.speedChar,
54					value: s
55				});
56
57				if (s === t.options.defaultSpeed) {
58					defaultInArray = true;
59				}
60			} else {
61				speeds.push(s);
62				if (s.value === t.options.defaultSpeed) {
63					defaultInArray = true;
64				}
65			}
66		}
67
68		if (!defaultInArray) {
69			speeds.push({
70				name: t.options.defaultSpeed + t.options.speedChar,
71				value: t.options.defaultSpeed
72			});
73		}
74
75		speeds.sort(function (a, b) {
76			return parseFloat(b.value) - parseFloat(a.value);
77		});
78
79		t.cleanspeed(player);
80
81		player.speedButton = document.createElement('div');
82		player.speedButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'speed-button';
83		player.speedButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + speedTitle + '" ' + ('aria-label="' + speedTitle + '" tabindex="0">' + getSpeedNameFromValue(t.options.defaultSpeed) + '</button>') + ('<div class="' + t.options.classPrefix + 'speed-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'speed-selector-list"></ul>') + '</div>';
84
85		t.addControlElement(player.speedButton, 'speed');
86
87		for (var _i = 0, _total = speeds.length; _i < _total; _i++) {
88
89			var inputId = t.id + '-speed-' + speeds[_i].value;
90
91			player.speedButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'speed-selector-list-item">' + ('<input class="' + t.options.classPrefix + 'speed-selector-input" type="radio" name="' + t.id + '_speed"') + ('disabled="disabled" value="' + speeds[_i].value + '" id="' + inputId + '"  ') + ((speeds[_i].value === t.options.defaultSpeed ? ' checked="checked"' : '') + '/>') + ('<label for="' + inputId + '" class="' + t.options.classPrefix + 'speed-selector-label') + ((speeds[_i].value === t.options.defaultSpeed ? ' ' + t.options.classPrefix + 'speed-selected' : '') + '">') + (speeds[_i].name + '</label>') + '</li>';
92		}
93
94		playbackSpeed = t.options.defaultSpeed;
95
96		player.speedSelector = player.speedButton.querySelector('.' + t.options.classPrefix + 'speed-selector');
97
98		var inEvents = ['mouseenter', 'focusin'],
99		    outEvents = ['mouseleave', 'focusout'],
100		    radios = player.speedButton.querySelectorAll('input[type="radio"]'),
101		    labels = player.speedButton.querySelectorAll('.' + t.options.classPrefix + 'speed-selector-label');
102
103		for (var _i2 = 0, _total2 = inEvents.length; _i2 < _total2; _i2++) {
104			player.speedButton.addEventListener(inEvents[_i2], function () {
105				mejs.Utils.removeClass(player.speedSelector, t.options.classPrefix + 'offscreen');
106				player.speedSelector.style.height = player.speedSelector.querySelector('ul').offsetHeight;
107				player.speedSelector.style.top = -1 * parseFloat(player.speedSelector.offsetHeight) + 'px';
108			});
109		}
110
111		for (var _i3 = 0, _total3 = outEvents.length; _i3 < _total3; _i3++) {
112			player.speedSelector.addEventListener(outEvents[_i3], function () {
113				mejs.Utils.addClass(this, t.options.classPrefix + 'offscreen');
114			});
115		}
116
117		for (var _i4 = 0, _total4 = radios.length; _i4 < _total4; _i4++) {
118			var radio = radios[_i4];
119			radio.disabled = false;
120			radio.addEventListener('click', function () {
121				var self = this,
122				    newSpeed = self.value;
123
124				playbackSpeed = newSpeed;
125				media.playbackRate = parseFloat(newSpeed);
126				player.speedButton.querySelector('button').innerHTML = getSpeedNameFromValue(newSpeed);
127				var selected = player.speedButton.querySelectorAll('.' + t.options.classPrefix + 'speed-selected');
128				for (var _i5 = 0, _total5 = selected.length; _i5 < _total5; _i5++) {
129					mejs.Utils.removeClass(selected[_i5], t.options.classPrefix + 'speed-selected');
130				}
131
132				self.checked = true;
133				var siblings = mejs.Utils.siblings(self, function (el) {
134					return mejs.Utils.hasClass(el, t.options.classPrefix + 'speed-selector-label');
135				});
136				for (var j = 0, _total6 = siblings.length; j < _total6; j++) {
137					mejs.Utils.addClass(siblings[j], t.options.classPrefix + 'speed-selected');
138				}
139			});
140		}
141
142		for (var _i6 = 0, _total7 = labels.length; _i6 < _total7; _i6++) {
143			labels[_i6].addEventListener('click', function () {
144				var radio = mejs.Utils.siblings(this, function (el) {
145					return el.tagName === 'INPUT';
146				})[0],
147				    event = mejs.Utils.createEvent('click', radio);
148				radio.dispatchEvent(event);
149			});
150		}
151
152		player.speedSelector.addEventListener('keydown', function (e) {
153			e.stopPropagation();
154		});
155
156		media.addEventListener('loadedmetadata', function () {
157			if (playbackSpeed) {
158				media.playbackRate = parseFloat(playbackSpeed);
159			}
160		});
161	},
162	cleanspeed: function cleanspeed(player) {
163		if (player) {
164			if (player.speedButton) {
165				player.speedButton.parentNode.removeChild(player.speedButton);
166			}
167			if (player.speedSelector) {
168				player.speedSelector.parentNode.removeChild(player.speedSelector);
169			}
170		}
171	}
172});
173
174},{}]},{},[1]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.