PageSourceSearch

https://ninafranoszek.com/wp-content/themes/fwrd/js/iron-audioplayer.js

js ninafranoszek.com collected 2026-10-05 05:19:59 UTC 8,075 bytes, 265 lines download raw bytes

1var elementAudio = document.createElement('audio');
2elementAudio.src = IRON.state.theme_url + '/js/assets/default.wav';
3
4
5function scrollTitle(event) {
6	var el = event.target
7	var parent = el.offsetParent
8	if (el.offsetWidth > parent.offsetWidth && !el.classList.contains('it-scrolling')) {
9		el.classList.add('it-scrolling')
10		var transformWidth = el.offsetWidth + 10
11		el.insertAdjacentHTML('beforeend', '<span class="it_duplicate"> ' + el.innerText + '</span>')
12		el.style.transform = 'translate( -' + transformWidth + 'px )'
13		setTimeout(function () {
14			el.classList.remove('it-scrolling')
15			el.style.transform = ''
16			el.removeChild(el.firstElementChild)
17		}, 6000)
18	}
19};
20
21IRON.audioPlayer = function ($) {
22	"use strict";
23	function initPlayer(player) {
24		var audioPlayer = player;
25		this.audioPlayer = player;
26		var waveContainer = this.audioPlayer.find('.player .wave').attr('id');
27		var playlist = audioPlayer.find('.playlist');
28		this.playlist = playlist;
29
30
31		var wavesurfer = WaveSurfer.create({
32			container: '#' + waveContainer,
33			cursorWidth: 0,
34			barWidth: 1,
35			barHeight: 1000,
36			progressColor: iron_vars.fwrd_music.color_progress,
37			waveColor: iron_vars.fwrd_music.color_base,
38			height: 20,
39			backend: 'MediaElement',
40			mediaControls: true,
41		});
42
43		wavesurfer.on('loading', function () {
44			var progressLoad = arguments[0]
45			audioPlayer.find('.progressLoading').css('background', iron_vars.fwrd_music.color_base);
46			audioPlayer.find('.progressLoading').css('width', 'calc( ' + progressLoad + '% - 200px )')
47			if (progressLoad == 100) {
48				audioPlayer.find('.player').addClass('reveal')
49				audioPlayer.find('.progressLoading').css('opacity', '0')
50			}
51		})
52
53		this.wavesurfer = wavesurfer;
54
55		setPlaylist(playlist, wavesurfer, audioPlayer);
56		setCurrentTrack(playlist.find('li').eq(0), playlist.find('li').index(), audioPlayer, wavesurfer);
57		setControl(wavesurfer, audioPlayer, playlist);
58		setNextSong(wavesurfer, audioPlayer, playlist);
59		trackListItemResize();
60
61		if (audioPlayer.data('autoplay')) {
62			if (wavesurfer.isPlaying())
63				return
64
65			wavesurfer.on('ready', function () {
66				play(audioPlayer, wavesurfer);
67			})
68		}
69	}
70
71	var setNextSong = function (wavesurfer, audioPlayer, playlist) {
72		wavesurfer.on('finish', function () {
73			next(audioPlayer, playlist)
74		})
75	}
76
77	function setCurrentTrack(track, index, audioPlayer, wavesurfer) {
78		var albumArt = audioPlayer.find('.album .album-art');
79		var trackTitle = audioPlayer.find('.track-title');
80		var trackArtist = audioPlayer.find('.cr_it-artists-value');
81		var albumTitle = audioPlayer.find('.album-title');
82		var albumTitle = audioPlayer.find('.cr_it-playlist-title');
83		var albumReleaseDate = audioPlayer.find('.cr_it-date-value');
84
85		if (albumArt.find('img').length) {
86			albumArt.find('img').attr('src', track.data('albumart'));
87		} else {
88			albumArt.css('background-image', 'url(' + track.data('albumart') + ')');
89		}
90
91		if (!audioPlayer.hasClass('show-playlist')) {
92
93			albumArt.css('cursor', 'pointer')
94		}
95		audioPlayer.data('currentTrack', index);
96
97
98		trackTitle.text(track.data('tracktitle'));
99		trackArtist.text(track.data('trackartists'));
100		albumReleaseDate.text(track.data('releasedate'));
101		albumTitle.text(track.data('albumtitle'));
102
103		audioPlayer.find('.player').removeClass('hide')
104
105		if (!track.data('showloading')) {
106			audioPlayer.find('.player').addClass('hide')
107		} else {
108			audioPlayer.find('.progressLoading').css('opacity', '0.75')
109		}
110
111		setAudio(track.data('audiopath'), wavesurfer);
112		setTime(audioPlayer, wavesurfer);
113
114		hideEmptyAttribut(track.data('releasedate'), audioPlayer.find('.cr_it-playlist-release-date'));
115		hideEmptyAttribut(track.data('trackartists'), audioPlayer.find('.cr_it-playlist-artists'));
116
117
118	}
119
120	function setPlaylist(playlist, wavesurfer, audioPlayer) {
121		playlist.find('li').each(function () {
122			setSingleTrack($(this), $(this).index(), wavesurfer, audioPlayer);
123		})
124	}
125
126	function setTime(audioPlayer, wavesurfer) {
127		wavesurfer.on('ready', function () {
128			var totalTime = moment.duration(wavesurfer.getDuration(), 'seconds');
129			audioPlayer.find('.totalTime').html(moment(totalTime.minutes() + ':' + totalTime.seconds(), 'm:s').format('mm:ss'));
130			wavesurfer.on('audioprocess', function () {
131				var time = moment.duration(wavesurfer.getCurrentTime(), 'seconds');
132				audioPlayer.find('.currentTime').html(moment(time.minutes() + ':' + time.seconds(), 'm:s').format('mm:ss'));
133			})
134		})
135	}
136
137	function setControl(wavesurfer, audioPlayer, playlist) {
138		var ctrl = audioPlayer.find('.control');
139		if (IRON.state.enable_ajax) {
140
141			audioPlayer.find('.wave').remove()
142
143		}
144
145		ctrl.on('click', '.play', function () {
146			play(audioPlayer, wavesurfer)
147		})
148		ctrl.on('click', '.previous', function () {
149			previous(audioPlayer, wavesurfer, playlist)
150		})
151		ctrl.on('click', '.next', function () {
152			next(audioPlayer, playlist)
153		})
154
155	}
156
157	function setSingleTrack(singleTrack, eq, wavesurfer, audioPlayer) {
158		var tracknumber = eq + 1;
159		var trackplay = $('<span/>', {
160			class: 'track-number',
161			html: '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 17.5 21.2" style="enable-background:new 0 0 17.5 21.2;" xml:space="preserve"><path d="M0,0l17.5,10.9L0,21.2V0z"></path><rect width="6" height="21.2"></rect><rect x="11.5" width="6" height="21.2"></rect></svg><span class="number">' + tracknumber + '</span>'
162		})
163		$('')
164		$('<a/>', {
165			class: 'audio-track',
166			click: function () {
167				setCurrentTrack(singleTrack, eq, audioPlayer, wavesurfer);
168				audioPlayer.find('.playlist li').removeClass('current');
169				singleTrack.addClass('current');
170				wavesurfer.play();
171				togglePlaying(audioPlayer, wavesurfer);
172			}
173		}).appendTo(singleTrack).prepend(trackplay).append('<div class="tracklist-item-title">' + singleTrack.data('tracktitle') + '</div>');
174	}
175
176	function trackListItemResize() {
177		$('.playlist li').each(function () {
178			$(this).find('.tracklist-item-title').css('max-width', $(this).outerWidth() - $(this).find('.button').outerWidth() - $(this).find('.track-number').outerWidth() - 10);
179		})
180	};
181
182	function setAudio(audio, wavesurfer) {
183		elementAudio.src = audio
184		wavesurfer.load(elementAudio);
185	}
186
187	function getTime(wavesurfer) {
188		return wavesurfer.getCurrentTime()
189	}
190
191	function togglePlaying(audioPlayer, wavesurfer) {
192
193		$.each(IRON.players, function (index, value) {
194			IRON.players[index].audioPlayer.removeClass('audio-playing');
195		})
196
197		if (wavesurfer.isPlaying()) {
198			audioPlayer.addClass('audio-playing');
199			return;
200		}
201		audioPlayer.removeClass('audio-playing')
202	}
203
204	function play(audioPlayer, wavesurfer) {
205		wavesurfer.playPause();
206		togglePlaying(audioPlayer, wavesurfer);
207	}
208
209	function previous(audioPlayer, wavesurfer, playlist) {
210		var currentTrack = audioPlayer.data('currentTrack');
211		var nextTrack = currentTrack - 1;
212
213		if ('2' < getTime(wavesurfer)) {
214			wavesurfer.seekTo(0);
215			return;
216		}
217		playlist.find('li').eq(nextTrack).find('a').click();
218
219	}
220
221	function next(audioPlayer, playlist) {
222		var currentTrack = audioPlayer.data('currentTrack');
223		var nextTrack = currentTrack + 1;
224
225		if (!playlist.find('li').eq(nextTrack).length) {
226			nextTrack = 0;
227		}
228		playlist.find('li').eq(nextTrack).find('a').click();
229	}
230
231	function getPlayer() {
232		return this;
233	}
234	function getplay() {
235		play(this.audioPlayer, this.wavesurfer)
236	}
237
238	return {
239		init: initPlayer,
240		getPlayer: getPlayer,
241		play: getplay
242
243	};
244
245}(jQuery);
246
247
248
249function hideEmptyAttribut(string, selector) {
250	if (string == '') {
251		selector.css('display', 'none');
252	} else {
253		selector.css('display', 'block');
254	}
255}
256
257
258IRON.players = [];
259jQuery('.iron-audioplayer').each(function () {
260
261	var player = Object.create(IRON.audioPlayer);
262	player.init(jQuery(this));
263
264	IRON.players.push(player)
265})

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.