| 
					
				 | 
			
			
				@@ -1,238 +1,406 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<modal title="Edit Song"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<modal title="Edit Song" class="song-modal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<div slot="body"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<h5 class="has-text-centered">Video Preview</h5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<div class="video-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div id="player"></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<canvas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						id="durationCanvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						height="40" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						width="560" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					></canvas> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="controls"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<form action="#"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<p style="margin-top: 0; position: relative;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									type="range" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									id="volumeSlider" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									min="0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									max="100" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="active" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:change="changeVolume()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:input="changeVolume()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-on:click="settings('pause')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-if="!video.paused" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<i class="material-icons">pause</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-on:click="settings('play')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-if="video.paused" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<i class="material-icons">play_arrow</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-on:click="settings('stop')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<i class="material-icons">stop</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-on:click="settings('skipToLast10Secs')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<i class="material-icons">fast_forward</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							YouTube: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<span>{{ youtubeVideoCurrentTime }}</span> / 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<span>{{ youtubeVideoDuration }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							{{ youtubeVideoNote }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<h5 class="has-text-centered">Thumbnail Preview</h5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					class="thumbnail-preview" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					:src="editing.song.thumbnail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					onerror="this.src='/assets/notes-transparent.png'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<div class="control is-horizontal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="control-label"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<label class="label">Thumbnail URL</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							v-model="editing.song.thumbnail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="left-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="top-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="player-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div id="player"></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<canvas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								id="durationCanvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								height="20" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								width="530" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							></canvas> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="player-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="player-footer-left"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="material-icons player-play-pause" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="settings('play')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-if="video.paused" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										>play_arrow</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="material-icons player-play-pause" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="settings('pause')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-if="!video.paused" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										>pause</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="material-icons player-stop" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="settings('stop')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										>stop</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="material-icons player-fast-forward" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											settings('skipToLast10Secs') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										>fast_forward</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="player-footer-center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<img src="/assets/social/youtube.svg" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											{{ youtubeVideoCurrentTime }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											{{ youtubeVideoDuration }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											{{ youtubeVideoNote }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="player-footer-right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="range" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										id="volumeSlider" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										min="0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										max="100" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="active" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:change="changeVolume()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:input="changeVolume()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="thumbnail-preview" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							:src="editing.song.thumbnail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							onerror="this.src='/assets/notes-transparent.png'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="edit-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="control is-grouped"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="title-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Title</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-model="editing.song.title" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button album-get-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="getAlbumData('title')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons album-get-icon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											>album</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="duration-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Duration</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-model="editing.song.duration" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="skip-duration-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Skip duration</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-model="editing.song.skipDuration" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="control is-grouped"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="album-art-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Album art</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-model="editing.song.thumbnail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button album-get-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="getAlbumData('albumArt')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons album-get-icon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											>album</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div class="control is-grouped"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="artists-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Artists</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										id="new-artist" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button album-get-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="getAlbumData('artists')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons album-get-icon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											>album</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button is-info add-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="addTag('artists')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons">add</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="list-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="list-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-for="(artist, index) in editing.song 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											.artists" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											class="list-item-circle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												removeTag('artists', index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<i class="material-icons">close</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<p>{{ artist }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="genres-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">Genres</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										id="new-genre" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button album-get-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="getAlbumData('genres')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons album-get-icon" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											>album</i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="button is-info add-button" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-on:click="addTag('genres')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<i class="material-icons">add</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="list-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="list-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-for="(genre, index) in editing.song 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											.genres" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											class="list-item-circle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												removeTag('genres', index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<i class="material-icons">close</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<p>{{ genre }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="youtube-id-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<label class="label">YouTube ID</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										v-model="editing.song.songId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<h5 class="has-text-centered">Edit Information</h5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<label class="checkbox"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							type="checkbox" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							v-model="editing.song.explicit" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						Explicit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Song ID & Title</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<div class="control is-horizontal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="control is-grouped"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<p class="control is-expanded"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-model="editing.song.songId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<div class="right-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<div class="api-section"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="selected-discogs-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-if="!editing.song.discogs" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<p class="selected-discogs-info-none">None</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="selected-discogs-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-if="editing.song.discogs" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="top-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									:src="editing.song.discogs.album.albumArt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="right-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<p class="album-title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										{{ editing.song.discogs.album.title }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<div class="bottom-row"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<p class="type-year"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												editing.song.discogs.album.type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											• 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												editing.song.discogs.album.year 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div class="bottom-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									Artists: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										editing.song.discogs.album.artists.join( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											", " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									Genres: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										editing.song.discogs.album.genres.join( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											", " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									Data quality: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										editing.song.discogs.dataQuality 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									Track: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											editing.song.discogs.track.position 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										}}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											editing.song.discogs.track.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										}}</span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						<p class="control is-expanded"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<label class="label">Search query</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-model="editing.song.title" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								autofocus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-model="discogsQuery" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Artists & Genres</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<div class="control is-horizontal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="control is-grouped artist-genres"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									id="new-artist" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									placeholder="Artist" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="button is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:click="addTag('artists')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									Add Artist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="tag is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-for="(artist, index) in editing.song.artists" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="button is-info is-fullwidth" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-on:click="searchDiscogs()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							Search 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="label" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-if="discogs.apiResults.length > 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							>API results</label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							class="api-results-container" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							v-if="discogs.apiResults.length > 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								class="api-result" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								v-for="(result, index) in discogs.apiResults" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								{{ artist }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="delete is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:click="removeTag('artists', index)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								></button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<p class="control has-addons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									id="new-genre" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									placeholder="Genre" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="button is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:click="addTag('genres')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div class="top-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<img :src="result.album.albumArt" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<div class="right-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<p class="album-title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											{{ result.album.title }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<div class="bottom-row"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												src="/assets/arrow_up.svg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												v-if="result.expanded" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													toggleAPIResult(index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												src="/assets/arrow_down.svg" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												v-if="!result.expanded" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													toggleAPIResult(index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<p class="type-year"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													result.album.type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												• 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+													result.album.year 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									class="bottom-container" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									v-if="result.expanded" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 								> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									Add Genre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								class="tag is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								v-for="(genre, index) in editing.song.genres" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								{{ genre }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									class="delete is-info" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-									v-on:click="removeTag('genres', index)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								></button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										Artists: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											result.album.artists.join(", ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										Genres: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<span>{{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											result.album.genres.join(", ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										}}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<p class="bottom-container-field"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										Data quality: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<span>{{ result.dataQuality }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									<div class="tracks"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										<div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											class="track" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											tabindex="0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											v-for="(track, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											trackIndex) in result.tracks" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											:key="trackIndex" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											v-on:click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												selectTrack(index, trackIndex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<span>{{ track.position }}.</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											<p>{{ track.title }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Song Duration</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						v-model="editing.song.duration" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Skip Duration</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						class="input" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						type="text" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						v-model="editing.song.skipDuration" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<hr /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<h5 class="has-text-centered">Spotify Information</h5> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Song title</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<input class="input" type="text" v-model="spotify.title" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<label class="label">Song artist (1 artist full name)</label> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<p class="control"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<input class="input" type="text" v-model="spotify.artist" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					class="button is-success" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					v-on:click="getSpotifySongs()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					Get Spotify songs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<hr /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<article 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					class="media" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					v-for="(song, index) in spotify.songs" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					:key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<figure class="media-left"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<p class="image is-64x64"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								:src="song.thumbnail" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								onerror="this.src='/assets/notes-transparent.png'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</figure> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					<div class="media-content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						<div class="content"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							<p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<strong>{{ song.title }}</strong> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<br /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<small>Artists: {{ song.artists }}</small 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								>, <small>Duration: {{ song.duration }}</small 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<small>Explicit: {{ song.explicit }}</small> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<br /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								<small>Thumbnail: {{ song.thumbnail }}</small> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				</article> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<div slot="footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<div slot="footer" class="footer-buttons"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				<button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					class="button is-success" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					v-on:click="save(editing.song, false)" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -272,15 +440,14 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	components: { Modal }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			spotify: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				title: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				artist: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				songs: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			discogsQuery: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			youtubeVideoDuration: 0.0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			youtubeVideoCurrentTime: 0.0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			youtubeVideoNote: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			useHTTPS: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			useHTTPS: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			discogs: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				apiResults: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	computed: { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -294,7 +461,9 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		save(song, close) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		save(songToCopy, close) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const song = JSON.parse(JSON.stringify(songToCopy)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (!song.title) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				return Toast.methods.addToast( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					"Please fill in all fields", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -363,7 +532,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					error = "Genre must have between 1 and 16 characters."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					return error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (!validation.regex.az09_.test(genre)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!validation.regex.azAZ09_.test(genre)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					error = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						"Invalid genre format. Only ascii characters are allowed."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					return error; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -386,7 +555,11 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (!this.useHTTPS && song.thumbnail.indexOf("http://") !== 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				!this.useHTTPS && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(song.thumbnail.indexOf("http://") !== 0 && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					song.thumbnail.indexOf("https://") !== 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				return Toast.methods.addToast( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					'Thumbnail must start with "http://".', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					8000 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -418,6 +591,103 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		toggleAPIResult(index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const apiResult = this.discogs.apiResults[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (apiResult.expanded === true) apiResult.expanded = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else if (apiResult.gotMoreInfo === true) apiResult.expanded = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fetch(apiResult.album.resourceUrl) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return response.json(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then(data => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.album.artists = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.album.artistIds = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						const artistRegex = new RegExp(" \\([0-9]\\)$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.dataQuality = data.data_quality; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						data.artists.forEach(artist => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							apiResult.album.artists.push( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								artist.name.replace(artistRegex, "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							apiResult.album.artistIds.push(artist.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.tracks = data.tracklist.map(track => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								position: track.position, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								title: track.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.expanded = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						apiResult.gotMoreInfo = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		getAlbumData(type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!this.editing.song.discogs) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (type === "title") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.updateSongField({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					field: "title", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					value: this.editing.song.discogs.track.title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (type === "albumArt") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.updateSongField({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					field: "thumbnail", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					value: this.editing.song.discogs.album.albumArt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (type === "genres") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.updateSongField({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					field: "genres", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					value: this.editing.song.discogs.album.genres 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (type === "artists") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.updateSongField({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					field: "artists", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					value: this.editing.song.discogs.album.artists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		searchDiscogs() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const query = this.discogsQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.socket.emit("apis.searchDiscogs", query, res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (res.status === "success") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Toast.methods.addToast( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						`Successfully searched. Got ${res.results.length} results.`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						4000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.discogs.apiResults = res.results.map(result => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						const type = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							result.type.charAt(0).toUpperCase() + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							result.type.slice(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							expanded: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							gotMoreInfo: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							album: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								id: result.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								title: result.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								year: result.year, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								genres: result.genre, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								albumArt: result.cover_image, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								resourceUrl: result.resource_url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else Toast.methods.addToast(res.message, 8000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		selectTrack(apiResultIndex, trackIndex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const apiResult = JSON.parse( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				JSON.stringify(this.discogs.apiResults[apiResultIndex]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			apiResult.track = apiResult.tracks[trackIndex]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			delete apiResult.tracks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			delete apiResult.expanded; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			delete apiResult.gotMoreInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.selectDiscogsInfo(apiResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		settings(type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			switch (type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				default: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -485,56 +755,6 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			else if (type === "artists") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.editing.song.artists.splice(index, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		getSpotifySongs() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			this.socket.emit( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"apis.getSpotifySongs", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.spotify.title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.spotify.artist, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (res.status === "success") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						Toast.methods.addToast( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							`Succesfully got ${res.songs.length} song${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								res.songs.length !== 1 ? "s" : "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							}.`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							3000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.spotify.songs = res.songs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						Toast.methods.addToast( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							`Failed to get songs. ${res.message}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							3000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		initCanvas() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const canvasElement = document.getElementById("durationCanvas"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const ctx = canvasElement.getContext("2d"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const skipDurationColor = "#ef4a1c"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const durationColor = "#1dc146"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const afterDurationColor = "#ef731a"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.font = "16px Arial"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = skipDurationColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillRect(0, 25, 20, 15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = "#000000"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillText("Skip duration", 25, 38); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = durationColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillRect(130, 25, 20, 15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = "#000000"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillText("Duration", 155, 38); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = afterDurationColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillRect(230, 25, 20, 15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillStyle = "#000000"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			ctx.fillText("After duration", 255, 38); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		drawCanvas() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const canvasElement = document.getElementById("durationCanvas"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const ctx = canvasElement.getContext("2d"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -555,9 +775,9 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const widthCurrentTime = (currentTime / videoDuration) * width; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const skipDurationColor = "#ef4a1c"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const durationColor = "#1dc146"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			const afterDurationColor = "#ef731a"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const skipDurationColor = "#F42003"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const durationColor = "#03A9F4"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const afterDurationColor = "#41E841"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			const currentDurationColor = "#3b25e8"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			ctx.fillStyle = skipDurationColor; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -580,7 +800,9 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			"loadVideoById", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			"pauseVideo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			"getCurrentTime", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			"editSong" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"editSong", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"updateSongField", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			"selectDiscogsInfo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		...mapActions("modals", ["closeModal"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -592,8 +814,6 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//   this.editing.song.skipDuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.initCanvas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		lofig.get("cookie.secure", res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this.useHTTPS = res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -602,7 +822,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this.socket = socket; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.interval = setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.video.paused === false && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.playerReady && 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -614,18 +834,17 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				this.video.player.stopVideo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (this.playerReady) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.getCurrentTime(3).then(time => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.youtubeVideoCurrentTime = time; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					return time; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.youtubeVideoCurrentTime = this.video.player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.getCurrentTime() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.toFixed(3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (this.video.paused === false) this.drawCanvas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.video.player = new window.YT.Player("player", { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			height: 315, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			width: 560, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 298, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 530, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			videoId: this.editing.song.songId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			playerVars: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				controls: 0, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -698,155 +917,477 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		let volume = parseInt(localStorage.getItem("volume")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		document.getElementById("volumeSlider").value = volume = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			typeof volume === "number" ? volume : 20; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	beforeDestroy() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.playerReady = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		clearInterval(this.interval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@import "styles/global.scss"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.song-modal { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.modal-card-title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		margin-left: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.modal-card { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 1160px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.modal-card-body { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @import "styles/global.scss"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.modal-card-body > div { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.left-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-right: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.top-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.player-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 530px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.player-footer { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				background-color: #f4f4f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border: 1px rgba(163, 224, 255, 0.75) solid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-radius: 0px 0px 5px 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				height: 54px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> * { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 33.3%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.player-footer-left { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.material-icons { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-size: 38px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.player-play-pause { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: $musareBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.player-stop { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: $red; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.player-fast-forward { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: $green; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.player-footer-center { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex: 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-size: 21px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-weight: 400; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						height: 21px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						margin-right: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						filter: invert(26%) sepia(54%) saturate(6317%) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							hue-rotate(2deg) brightness(92%) contrast(115%); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.player-footer-right { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					justify-content: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					#volumeSlider { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						width: 126px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						margin-right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						background-color: #f4f4f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.thumbnail-preview { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 189px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 189px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-left: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.edit-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 735px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		background-color: #f4f4f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		border: 1px rgba(163, 224, 255, 0.75) solid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		margin-top: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		overflow: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.album-get-button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: $purple; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			color: white; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-width: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.add-button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: $musareBlue !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			i { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-size: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		> div { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		input { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.title-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.duration-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-right: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-left: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.skip-duration-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.album-art-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.artists-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.genres-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-left: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-right: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.youtube-id-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc((100% - 32px) / 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list-item-circle { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: $musareBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-radius: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-right: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			float: left; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-webkit-touch-callout: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-webkit-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-khtml-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-moz-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-ms-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			i { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				color: $musareBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-left: 1px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list-item-circle:hover, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list-item-circle:focus { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			i { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				color: white; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list-item > p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			line-height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			word-wrap: break-word; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: calc(100% - 24px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			left: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			float: left; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-bottom: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list-item:last-child > p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.right-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	flex-wrap: wrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.api-section { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		width: 376px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		background-color: #f4f4f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		border: 1px rgba(163, 224, 255, 0.75) solid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		padding: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		overflow: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		> label { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-top: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.top-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				height: 85px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				width: 85px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.right-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				> p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.bottom-row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex-flow: row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					line-height: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					img { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						height: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						align-self: end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						-moz-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						-ms-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						-webkit-user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.album-title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.type-year { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-size: 13px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						align-self: end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.bottom-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.bottom-container-field { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				line-height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-bottom: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				span { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-weight: 400; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.bottom-container-field:last-of-type { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.selected-discogs-info { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: white; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border: 1px solid $purple; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-bottom: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.selected-discogs-info-none { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.bottom-row > p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.api-result { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: white; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border: 0.5px solid $musareBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-bottom: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background-color: $musareBlue !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.tracks { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-top: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.track:first-child { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-radius: 3px 3px 0 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.track:last-child { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-radius: 0 0 3px 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.track { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border: 0.5px solid black; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-top: -1px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				line-height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				span { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-top: 7px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-bottom: 7px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-left: 7px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				p { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin: 7px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.track:hover, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.track:focus { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				background-color: #f4f4f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.footer-buttons { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-left: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-right: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"] { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	-webkit-appearance: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin: 7.3px 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin: 8.5px 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]:focus { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	outline: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-webkit-slider-runnable-track { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 5.2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $light-grey-2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-webkit-slider-thumb { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 19px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	width: 19px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $primary-color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #03a9f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	-webkit-appearance: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin-top: -6.5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	margin-top: -8.5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+input[type="range"]:focus::-webkit-slider-runnable-track { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-moz-range-track { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 5.2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $light-grey-2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-moz-range-thumb { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 19px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	width: 19px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $primary-color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #03a9f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	-webkit-appearance: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin-top: -6.5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-ms-track { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 5.2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $light-grey-2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 1.3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: transparent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-color: transparent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color: transparent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-ms-fill-lower { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $light-grey-2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #717171; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-ms-fill-upper { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $light-grey-2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 input[type="range"]::-ms-thumb { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	box-shadow: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	height: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	width: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-radius: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	background: $primary-color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	box-shadow: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	width: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	border-radius: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #03a9f4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	-webkit-appearance: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin-top: 1.5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	height: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.controls { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.artist-genres { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#volumeSlider { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin-bottom: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.has-text-centered { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	padding: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.thumbnail-preview { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin: 0 auto 25px auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	max-width: 200px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+input[type="range"]:focus::-ms-fill-lower { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.modal-card-body, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.modal-card-foot { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	border-top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.label, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.checkbox, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-h5 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	font-weight: normal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.video-container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	padding: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	iframe { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		pointer-events: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.save-changes { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	color: $white; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.tag:not(:last-child) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	margin-right: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+input[type="range"]:focus::-ms-fill-upper { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	background: #7e7e7e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 |