{"version":3,"file":"bundle.js","sources":["../../src/js/modules/socket.js","../../src/js/modules/toasts.js","../../src/js/modules/downloads.js","../../src/js/modules/quality-modal.js","../../src/js/modules/components/artist-tab.js","../../src/js/modules/track-preview.js","../../src/js/modules/components/tracklist-tab.js","../../src/js/modules/utils.js","../../src/js/modules/components/link-analyzer-tab.js","../../src/js/modules/components/home-tab.js","../../src/js/modules/components/charts-tab.js","../../src/js/modules/components/favorites-tab.js","../../src/js/modules/components/settings-tab.js","../../src/js/modules/components/main-search.js","../../src/js/modules/tabs.js","../../src/js/modules/search.js","../../src/js/app.js"],"sourcesContent":["export const socket = io.connect(window.location.href)\r\n\r\nsocket.on('connect', () => {\r\n\tdocument.getElementById('loading_overlay').classList.remove('active')\r\n})\r\n","import { socket } from './socket.js'\r\n\r\nlet toastsWithId = {}\r\n\r\nexport const toast = function (msg, icon = null, dismiss = true, id = null) {\r\n\tif (toastsWithId[id]) {\r\n\t\tlet toastObj = toastsWithId[id]\r\n\t\tlet toastDOM = $(`div.toastify[toast_id=${id}]`)\r\n\t\tif (msg) {\r\n\t\t\ttoastDOM.find('.toast-message').html(msg)\r\n\t\t}\r\n\t\tif (icon) {\r\n\t\t\tif (icon == 'loading') icon = `
`\r\n\t\t\telse icon = `${icon}`\r\n\t\t\ttoastDOM.find('.toast-icon').html(icon)\r\n\t\t}\r\n\t\tif (dismiss !== null && dismiss) {\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\ttoastObj.hideToast()\r\n\t\t\t\tdelete toastsWithId[id]\r\n\t\t\t}, 3000)\r\n\t\t}\r\n\t} else {\r\n\t\tif (icon == null) icon = ''\r\n\t\telse if (icon == 'loading') icon = `
`\r\n\t\telse icon = `${icon}`\r\n\t\tlet toastObj = Toastify({\r\n\t\t\ttext: `${icon}${msg}`,\r\n\t\t\tduration: dismiss ? 3000 : 0,\r\n\t\t\tgravity: 'bottom',\r\n\t\t\tposition: 'left'\r\n\t\t}).showToast()\r\n\t\tif (id) {\r\n\t\t\ttoastsWithId[id] = toastObj\r\n\t\t\t$(toastObj.toastElement).attr('toast_id', id)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nsocket.on('toast', data => {\r\n\ttoast(data.msg, data.icon || null, data.dismiss !== undefined ? data.dismiss : true, data.id || null)\r\n})\r\n","import { socket } from './socket.js'\r\nimport { toast } from './toasts.js'\r\n\r\n/* ===== Locals ===== */\r\nconst tabMinWidth = 250\r\nconst tabMaxWidth = 500\r\n\r\nlet cachedTabWidth = parseInt(localStorage.getItem('downloadTabWidth')) || 300\r\nlet queueList = {}\r\nlet queue = []\r\nlet queueComplete = []\r\nlet tabContainerEl\r\nlet listEl\r\nlet dragHandlerEl\r\n\r\nfunction init() {\r\n\t// Find download DOM elements\r\n\ttabContainerEl = document.getElementById('download_tab_container')\r\n\tlistEl = document.getElementById('download_list')\r\n\tdragHandlerEl = document.getElementById('download_tab_drag_handler')\r\n\r\n\t// Check if download tab should be open\r\n\tif ('true' === localStorage.getItem('downloadTabOpen')) {\r\n\t\ttabContainerEl.classList.remove('tab_hidden')\r\n\r\n\t\tsetTabWidth(cachedTabWidth)\r\n\t}\r\n\r\n\tlinkListeners()\r\n}\r\n\r\nfunction linkListeners() {\r\n\tlistEl.addEventListener('click', handleListClick)\r\n\tdocument.getElementById('toggle_download_tab').addEventListener('click', toggleDownloadTab)\r\n\r\n\t// Queue buttons\r\n\tdocument.getElementById('clean_queue').addEventListener('click', () => {\r\n\t\tsocket.emit('removeFinishedDownloads')\r\n\t})\r\n\r\n\tdocument.getElementById('cancel_queue').addEventListener('click', () => {\r\n\t\tsocket.emit('cancelAllDownloads')\r\n\t})\r\n\r\n\tdragHandlerEl.addEventListener('mousedown', event => {\r\n\t\tevent.preventDefault()\r\n\r\n\t\tdocument.addEventListener('mousemove', handleDrag)\r\n\t})\r\n\r\n\tdocument.addEventListener('mouseup', () => {\r\n\t\tdocument.removeEventListener('mousemove', handleDrag)\r\n\t})\r\n\r\n\ttabContainerEl.addEventListener('transitionend', () => {\r\n\t\ttabContainerEl.style.transition = ''\r\n\t})\r\n\r\n\twindow.addEventListener('beforeunload', () => {\r\n\t\tlocalStorage.setItem('downloadTabWidth', cachedTabWidth)\r\n\t})\r\n}\r\n\r\nfunction setTabWidth(newWidth) {\r\n\tif (undefined === newWidth) {\r\n\t\ttabContainerEl.style.width = ''\r\n\t\tlistEl.style.width = ''\r\n\t} else {\r\n\t\ttabContainerEl.style.width = newWidth + 'px'\r\n\t\tlistEl.style.width = newWidth + 'px'\r\n\t}\r\n}\r\n\r\nfunction handleDrag(event) {\r\n\tlet newWidth = window.innerWidth - event.pageX + 2\r\n\r\n\tif (newWidth < tabMinWidth) {\r\n\t\tnewWidth = tabMinWidth\r\n\t} else if (newWidth > tabMaxWidth) {\r\n\t\tnewWidth = tabMaxWidth\r\n\t}\r\n\r\n\tcachedTabWidth = newWidth\r\n\r\n\tsetTabWidth(newWidth)\r\n}\r\n\r\nfunction sendAddToQueue(url, bitrate = null) {\r\n\tif (url.indexOf(';') !== -1) {\r\n\t\tlet urls = url.split(';')\r\n\t\turls.forEach(url => {\r\n\t\t\tsocket.emit('addToQueue', { url: url, bitrate: bitrate })\r\n\t\t})\r\n\t} else if (url != '') {\r\n\t\tsocket.emit('addToQueue', { url: url, bitrate: bitrate })\r\n\t}\r\n}\r\n\r\nfunction addToQueue(queueItem, current = false) {\r\n\tqueueList[queueItem.uuid] = queueItem\r\n\tif (queueItem.downloaded + queueItem.failed == queueItem.size) {\r\n\t\tqueueComplete.push(queueItem.uuid)\r\n\t} else {\r\n\t\tqueue.push(queueItem.uuid)\r\n\t}\r\n\t$(listEl).append(\r\n\t\t`
\r\n\t\t
\r\n\t\t\t\"Cover\r\n\t\t\t
\r\n\t\t\t\t${queueItem.title} - \r\n\t\t\t\t${queueItem.artist}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t${queueItem.downloaded + queueItem.failed}/${\r\n\t\t\tqueueItem.size\r\n\t\t}\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\tremove\r\n\t\t
\r\n\t
`\r\n\t)\r\n\tif (queueItem.progress > 0 || current) {\r\n\t\t$('#bar_' + queueItem.uuid)\r\n\t\t\t.removeClass('indeterminate')\r\n\t\t\t.addClass('determinate')\r\n\t}\r\n\t$('#bar_' + queueItem.uuid).css('width', queueItem.progress + '%')\r\n\tif (queueItem.failed >= 1) {\r\n\t\t$('#download_' + queueItem.uuid + ' .download_info_status').append(\r\n\t\t\t`(${queueItem.failed}error_outline)`\r\n\t\t)\r\n\t}\r\n\tif (queueItem.downloaded + queueItem.failed == queueItem.size) {\r\n\t\tlet result_icon = $('#download_' + queueItem.uuid).find('.queue_icon')\r\n\t\tif (queueItem.failed == 0) {\r\n\t\t\tresult_icon.text('done')\r\n\t\t} else if (queueItem.failed == queueItem.size) {\r\n\t\t\tresult_icon.text('error')\r\n\t\t} else {\r\n\t\t\tresult_icon.text('warning')\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction initQueue(data) {\r\n\tif (data.queueComplete.length) {\r\n\t\tdata.queueComplete.forEach(item => {\r\n\t\t\taddToQueue(data.queueList[item])\r\n\t\t})\r\n\t}\r\n\tif (data.currentItem) {\r\n\t\taddToQueue(data['queueList'][data.currentItem], true)\r\n\t}\r\n\tdata.queue.forEach(item => {\r\n\t\taddToQueue(data.queueList[item])\r\n\t})\r\n}\r\n\r\nfunction startDownload(uuid) {\r\n\t$('#bar_' + uuid)\r\n\t\t.removeClass('indeterminate')\r\n\t\t.addClass('determinate')\r\n}\r\n\r\nsocket.on('startDownload', startDownload)\r\n\r\nfunction handleListClick(event) {\r\n\tif (!event.target.matches('.queue_icon[data-uuid]')) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet icon = event.target.innerText\r\n\tlet uuid = $(event.target).data('uuid')\r\n\r\n\tswitch (icon) {\r\n\t\tcase 'remove':\r\n\t\t\tsocket.emit('removeFromQueue', uuid)\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t}\r\n}\r\n\r\n// Show/Hide Download Tab\r\nfunction toggleDownloadTab(ev) {\r\n\tev.preventDefault()\r\n\r\n\tsetTabWidth()\r\n\r\n\ttabContainerEl.style.transition = 'all 250ms ease-in-out'\r\n\r\n\t// Toggle returns a Boolean based on the action it performed\r\n\tlet isHidden = tabContainerEl.classList.toggle('tab_hidden')\r\n\r\n\tif (!isHidden) {\r\n\t\tsetTabWidth(cachedTabWidth)\r\n\t}\r\n\r\n\tlocalStorage.setItem('downloadTabOpen', !isHidden)\r\n}\r\n\r\nsocket.on('init_downloadQueue', initQueue)\r\nsocket.on('addedToQueue', addToQueue)\r\n\r\nfunction removeFromQueue(uuid) {\r\n\tlet index = queue.indexOf(uuid)\r\n\tif (index > -1) {\r\n\t\tqueue.splice(index, 1)\r\n\t\t$(`#download_${queueList[uuid].uuid}`).remove()\r\n\t\tdelete queueList[uuid]\r\n\t}\r\n}\r\n\r\nsocket.on('removedFromQueue', removeFromQueue)\r\n\r\nfunction finishDownload(uuid) {\r\n\tif (queue.indexOf(uuid) > -1) {\r\n\t\ttoast(`${queueList[uuid].title} finished downloading.`, 'done')\r\n\t\t$('#bar_' + uuid).css('width', '100%')\r\n\t\tlet result_icon = $('#download_' + uuid).find('.queue_icon')\r\n\t\tif (queueList[uuid].failed == 0) {\r\n\t\t\tresult_icon.text('done')\r\n\t\t} else if (queueList[uuid].failed >= queueList[uuid].size) {\r\n\t\t\tresult_icon.text('error')\r\n\t\t} else {\r\n\t\t\tresult_icon.text('warning')\r\n\t\t}\r\n\t\tlet index = queue.indexOf(uuid)\r\n\t\tif (index > -1) {\r\n\t\t\tqueue.splice(index, 1)\r\n\t\t\tqueueComplete.push(uuid)\r\n\t\t}\r\n\t\tif (queue.length <= 0) {\r\n\t\t\ttoast('All downloads completed!', 'done_all')\r\n\t\t}\r\n\t}\r\n}\r\n\r\nsocket.on('finishDownload', finishDownload)\r\n\r\nfunction removeAllDownloads(currentItem) {\r\n\tqueueComplete = []\r\n\tif (currentItem == '') {\r\n\t\tqueue = []\r\n\t\tqueueList = {}\r\n\t\t$(listEl).html('')\r\n\t} else {\r\n\t\tqueue = [currentItem]\r\n\t\tlet tempQueueItem = queueList[currentItem]\r\n\t\tqueueList = {}\r\n\t\tqueueList[currentItem] = tempQueueItem\r\n\t\t$('.download_object').each(function (index) {\r\n\t\t\tif ($(this).attr('id') != 'download_' + currentItem) $(this).remove()\r\n\t\t})\r\n\t}\r\n}\r\n\r\nsocket.on('removedAllDownloads', removeAllDownloads)\r\n\r\nfunction removedFinishedDownloads() {\r\n\tqueueComplete.forEach(item => {\r\n\t\t$('#download_' + item).remove()\r\n\t})\r\n\tqueueComplete = []\r\n}\r\n\r\nsocket.on('removedFinishedDownloads', removedFinishedDownloads)\r\n\r\nfunction updateQueue(update) {\r\n\tif (update.uuid && queue.indexOf(update.uuid) > -1) {\r\n\t\tif (update.downloaded) {\r\n\t\t\tqueueList[update.uuid].downloaded++\r\n\t\t\t$('#download_' + update.uuid + ' .queue_downloaded').text(\r\n\t\t\t\tqueueList[update.uuid].downloaded + queueList[update.uuid].failed\r\n\t\t\t)\r\n\t\t}\r\n\t\tif (update.failed) {\r\n\t\t\tqueueList[update.uuid].failed++\r\n\t\t\t$('#download_' + update.uuid + ' .queue_downloaded').text(\r\n\t\t\t\tqueueList[update.uuid].downloaded + queueList[update.uuid].failed\r\n\t\t\t)\r\n\t\t\tif (queueList[update.uuid].failed == 1) {\r\n\t\t\t\t$('#download_' + update.uuid + ' .download_info_status').append(\r\n\t\t\t\t\t`(1 error_outline)`\r\n\t\t\t\t)\r\n\t\t\t} else {\r\n\t\t\t\t$('#download_' + update.uuid + ' .queue_failed').text(queueList[update.uuid].failed)\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (update.progress) {\r\n\t\t\tqueueList[update.uuid].progress = update.progress\r\n\t\t\t$('#bar_' + update.uuid).css('width', update.progress + '%')\r\n\t\t}\r\n\t}\r\n}\r\n\r\nsocket.on('updateQueue', updateQueue)\r\n\r\nexport default {\r\n\tinit,\r\n\tsendAddToQueue,\r\n\taddToQueue\r\n}\r\n","import Downloads from './downloads.js'\r\n\r\nconst QualityModal = {\r\n\t// Defaults\r\n\topen: false,\r\n\turl: ''\r\n}\r\n\r\nfunction init() {\r\n\tQualityModal.element = document.getElementById('modal_quality')\r\n\r\n\tlinkListeners()\r\n}\r\n\r\nfunction open(link) {\r\n\tQualityModal.url = link\r\n\tQualityModal.element.style.display = 'block'\r\n\tQualityModal.element.classList.add('animated', 'fadeIn')\r\n}\r\n\r\nfunction linkListeners() {\r\n\tQualityModal.element.addEventListener('click', handleClick)\r\n\tQualityModal.element.addEventListener('webkitAnimationEnd', handleAnimationEnd)\r\n}\r\n\r\nfunction handleClick(event) {\r\n\tQualityModal.element.classList.add('animated', 'fadeOut')\r\n\r\n\tif (!event.target.matches('.quality-button')) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet bitrate = event.target.dataset.qualityValue\r\n\r\n\tDownloads.sendAddToQueue(QualityModal.url, bitrate)\r\n}\r\n\r\nfunction handleAnimationEnd() {\r\n\tQualityModal.element.classList.remove('animated', QualityModal.open ? 'fadeOut' : 'fadeIn')\r\n\tQualityModal.element.style.display = QualityModal.open ? 'none' : 'block'\r\n\tQualityModal.open = !QualityModal.open\r\n}\r\n\r\nexport default {\r\n\tinit,\r\n\topen\r\n}\r\n","import { socket } from '../socket.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport { albumView } from '../tabs.js'\r\n\r\nconst ArtistTab = new Vue({\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcurrentTab: '',\r\n\t\t\tsortKey: 'release_date',\r\n\t\t\tsortOrder: 'desc',\r\n\t\t\ttitle: '',\r\n\t\t\timage: '',\r\n\t\t\ttype: '',\r\n\t\t\tlink: '',\r\n\t\t\thead: null,\r\n\t\t\tbody: null\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\talbumView,\r\n\t\treset() {\r\n\t\t\tthis.title = 'Loading...'\r\n\t\t\tthis.image = ''\r\n\t\t\tthis.type = ''\r\n\t\t\tthis.currentTab = ''\r\n\t\t\tthis.sortKey = 'release_date'\r\n\t\t\tthis.sortOrder = 'desc'\r\n\t\t\tthis.link = ''\r\n\t\t\tthis.head = []\r\n\t\t\tthis.body = null\r\n\t\t},\r\n\t\taddToQueue(e) {\r\n\t\t\te.stopPropagation()\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal(e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\tsortBy(key) {\r\n\t\t\tif (key == this.sortKey) {\r\n\t\t\t\tthis.sortOrder = this.sortOrder == 'asc' ? 'desc' : 'asc'\r\n\t\t\t} else {\r\n\t\t\t\tthis.sortKey = key\r\n\t\t\t\tthis.sortOrder = 'asc'\r\n\t\t\t}\r\n\t\t},\r\n\t\tchangeTab(tab) {\r\n\t\t\tthis.currentTab = tab\r\n\t\t},\r\n\t\tcheckNewRelease(date) {\r\n\t\t\tlet g1 = new Date()\r\n\t\t\tlet g2 = new Date(date)\r\n\t\t\tg2.setDate(g2.getDate() + 3)\r\n\t\t\tg1.setHours(0, 0, 0, 0)\r\n\r\n\t\t\treturn g1.getTime() <= g2.getTime()\r\n\t\t},\r\n\t\tshowArtist(data) {\r\n\t\t\tthis.title = data.name\r\n\t\t\tthis.image = data.picture_xl\r\n\t\t\tthis.type = 'Artist'\r\n\t\t\tthis.link = `https://www.deezer.com/artist/${data.id}`\r\n\t\t\tthis.currentTab = Object.keys(data.releases)[0]\r\n\t\t\tthis.sortKey = 'release_date'\r\n\t\t\tthis.sortOrder = 'desc'\r\n\t\t\tthis.head = [\r\n\t\t\t\t{ title: 'Title', sortKey: 'title' },\r\n\t\t\t\t{ title: 'Release Date', sortKey: 'release_date' },\r\n\t\t\t\t{ title: '', width: '32px' }\r\n\t\t\t]\r\n\t\t\tif (_.isEmpty(data.releases)) {\r\n\t\t\t\tthis.body = null\r\n\t\t\t} else {\r\n\t\t\t\tthis.body = data.releases\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\tshowTable() {\r\n\t\t\tif (this.body) return _.orderBy(this.body[this.currentTab], this.sortKey, this.sortOrder)\r\n\t\t\telse return []\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('show_artist', this.showArtist)\r\n\t}\r\n}).$mount('#artist_tab')\r\n\r\nexport default ArtistTab\r\n","/* ===== Globals ====== */\r\nwindow.preview_max_volume = 1\r\n\r\n/* ===== Locals ===== */\r\nlet preview_track = document.getElementById('preview-track')\r\nlet preview_stopped = true\r\n\r\n// init stuff\r\nfunction init() {\r\n\tpreview_track.volume = 1\r\n\t/*preview_max_volume = parseFloat(localStorage.getItem(\"previewVolume\"))\r\n if (preview_max_volume === null){\r\n preview_max_volume = 0.8\r\n localStorage.setItem(\"previewVolume\", preview_max_volume)\r\n }*/\r\n\r\n\t// start playing when track loaded\r\n\tpreview_track.addEventListener('canplay', function () {\r\n\t\tpreview_track.play()\r\n\t\tpreview_stopped = false\r\n\t\t$(preview_track).animate({ volume: preview_max_volume }, 500)\r\n\t})\r\n\r\n\t// auto fadeout when at the end of the song\r\n\tpreview_track.addEventListener('timeupdate', function () {\r\n\t\tif (preview_track.currentTime > preview_track.duration - 1) {\r\n\t\t\t$(preview_track).animate({ volume: 0 }, 800)\r\n\t\t\tpreview_stopped = true\r\n\t\t\t$('a[playing] > .preview_controls').css({ opacity: 0 })\r\n\t\t\t$('*').removeAttr('playing')\r\n\t\t\t$('.preview_controls').text('play_arrow')\r\n\t\t\t$('.preview_playlist_controls').text('play_arrow')\r\n\t\t}\r\n\t})\r\n}\r\n\r\n// on modal closing\r\nfunction stopStackedTabsPreview() {\r\n\tif (\r\n\t\t$('.preview_playlist_controls').filter(function () {\r\n\t\t\treturn $(this).attr('playing')\r\n\t\t}).length > 0\r\n\t) {\r\n\t\t$(preview_track).animate({ volume: 0 }, 800)\r\n\t\tpreview_stopped = true\r\n\t\t$('.preview_playlist_controls').removeAttr('playing')\r\n\t\t$('.preview_playlist_controls').text('play_arrow')\r\n\t}\r\n}\r\n\r\n// on hover event\r\nfunction previewMouseEnter(e) {\r\n\t$(e.currentTarget).css({ opacity: 1 })\r\n}\r\n\r\nfunction previewMouseLeave(e) {\r\n\tlet obj = e.currentTarget\r\n\tif (($(obj).parent().attr('playing') && preview_stopped) || !$(obj).parent().attr('playing')) {\r\n\t\t$(obj).css({ opacity: 0 }, 200)\r\n\t}\r\n}\r\n\r\n// on click event\r\nfunction playPausePreview(e) {\r\n\te.preventDefault()\r\n\tlet obj = e.currentTarget\r\n\tvar icon = obj.tagName == 'I' ? $(obj) : $(obj).children('i')\r\n\tif ($(obj).attr('playing')) {\r\n\t\tif (preview_track.paused) {\r\n\t\t\tpreview_track.play()\r\n\t\t\tpreview_stopped = false\r\n\t\t\ticon.text('pause')\r\n\t\t\t$(preview_track).animate({ volume: preview_max_volume }, 500)\r\n\t\t} else {\r\n\t\t\tpreview_stopped = true\r\n\t\t\ticon.text('play_arrow')\r\n\t\t\t$(preview_track).animate({ volume: 0 }, 250, 'swing', () => {\r\n\t\t\t\tpreview_track.pause()\r\n\t\t\t})\r\n\t\t}\r\n\t} else {\r\n\t\t$('*').removeAttr('playing')\r\n\t\t$(obj).attr('playing', true)\r\n\t\t$('.preview_controls').text('play_arrow')\r\n\t\t$('.preview_playlist_controls').text('play_arrow')\r\n\t\t$('.preview_controls').css({ opacity: 0 })\r\n\t\ticon.text('pause')\r\n\t\ticon.css({ opacity: 1 })\r\n\t\tpreview_stopped = false\r\n\t\t$(preview_track).animate({ volume: 0 }, 250, 'swing', () => {\r\n\t\t\tpreview_track.pause()\r\n\t\t\t$('#preview-track_source').prop('src', $(obj).data('preview'))\r\n\t\t\tpreview_track.load()\r\n\t\t})\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tinit,\r\n\tstopStackedTabsPreview,\r\n\tpreviewMouseEnter,\r\n\tpreviewMouseLeave,\r\n\tplayPausePreview\r\n}\r\n","import { socket } from '../socket.js'\r\nimport { albumView, artistView } from '../tabs.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport TrackPreview from '../track-preview.js'\r\n\r\nconst TracklistTab = new Vue({\r\n\tdata: () => ({\r\n\t\ttitle: '',\r\n\t\tmetadata: '',\r\n\t\trelease_date: '',\r\n\t\tlabel: '',\r\n\t\texplicit: false,\r\n\t\timage: '',\r\n\t\ttype: '',\r\n\t\tlink: '',\r\n\t\thead: null,\r\n\t\tbody: []\r\n\t}),\r\n\tmethods: {\r\n\t\tartistView,\r\n\t\talbumView,\r\n\t\tplayPausePreview: TrackPreview.playPausePreview,\r\n\t\treset() {\r\n\t\t\tthis.title = 'Loading...'\r\n\t\t\tthis.image = ''\r\n\t\t\tthis.metadata = ''\r\n\t\t\tthis.label = ''\r\n\t\t\tthis.release_date = ''\r\n\t\t\tthis.explicit = false\r\n\t\t\tthis.type = ''\r\n\t\t\tthis.head = []\r\n\t\t\tthis.body = []\r\n\t\t},\r\n\t\taddToQueue(e) {\r\n\t\t\te.stopPropagation()\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal(e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\ttoggleAll(e) {\r\n\t\t\tthis.body.forEach(item => {\r\n\t\t\t\tif (item.type == 'track') {\r\n\t\t\t\t\titem.selected = e.currentTarget.checked\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tselectedLinks() {\r\n\t\t\tvar selected = []\r\n\t\t\tif (this.body) {\r\n\t\t\t\tthis.body.forEach(item => {\r\n\t\t\t\t\tif (item.type == 'track' && item.selected) selected.push(this.type == \"Spotify Playlist\" ? item.uri : item.link)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\treturn selected.join(';')\r\n\t\t},\r\n\t\tconvertDuration(duration) {\r\n\t\t\t//convert from seconds only to mm:ss format\r\n\t\t\tlet mm, ss\r\n\t\t\tmm = Math.floor(duration / 60)\r\n\t\t\tss = duration - mm * 60\r\n\t\t\t//add leading zero if ss < 0\r\n\t\t\tif (ss < 10) {\r\n\t\t\t\tss = '0' + ss\r\n\t\t\t}\r\n\t\t\treturn mm + ':' + ss\r\n\t\t},\r\n\t\tshowAlbum(data) {\r\n\t\t\tthis.type = 'Album'\r\n\t\t\tthis.link = `https://www.deezer.com/album/${data.id}`\r\n\t\t\tthis.title = data.title\r\n\t\t\tthis.explicit = data.explicit_lyrics\r\n\t\t\tthis.label = data.label\r\n\t\t\tthis.metadata = `${data.artist.name} • ${data.tracks.length} songs`\r\n\t\t\tthis.release_date = data.release_date.substring(0, 10)\r\n\t\t\tthis.image = data.cover_xl\r\n\t\t\tthis.head = [\r\n\t\t\t\t{ title: 'music_note', width: '24px' },\r\n\t\t\t\t{ title: '#' },\r\n\t\t\t\t{ title: 'Song' },\r\n\t\t\t\t{ title: 'Artist' },\r\n\t\t\t\t{ title: 'timer', width: '40px' }\r\n\t\t\t]\r\n\t\t\tif (_.isEmpty(data.tracks)) {\r\n\t\t\t\tconsole.log('show e lodash ok')\r\n\r\n\t\t\t\tthis.body = null\r\n\t\t\t} else {\r\n\t\t\t\tthis.body = data.tracks\r\n\t\t\t}\r\n\t\t},\r\n\t\tshowPlaylist(data) {\r\n\t\t\tthis.type = 'Playlist'\r\n\t\t\tthis.link = `https://www.deezer.com/playlist/${data.id}`\r\n\t\t\tthis.title = data.title\r\n\t\t\tthis.image = data.picture_xl\r\n\t\t\tthis.release_date = data.creation_date.substring(0, 10)\r\n\t\t\tthis.metadata = `by ${data.creator.name} • ${data.tracks.length} songs`\r\n\t\t\tthis.head = [\r\n\t\t\t\t{ title: 'music_note', width: '24px' },\r\n\t\t\t\t{ title: '#' },\r\n\t\t\t\t{ title: 'Song' },\r\n\t\t\t\t{ title: 'Artist' },\r\n\t\t\t\t{ title: 'Album' },\r\n\t\t\t\t{ title: 'timer', width: '40px' }\r\n\t\t\t]\r\n\t\t\tif (_.isEmpty(data.tracks)) {\r\n\t\t\t\tthis.body = null\r\n\t\t\t} else {\r\n\t\t\t\tthis.body = data.tracks\r\n\t\t\t}\r\n\t\t},\r\n\t\tshowSpotifyPlaylist(data) {\r\n\t\t\tthis.type = 'Spotify Playlist'\r\n\t\t\tthis.link = data.uri\r\n\t\t\tthis.title = data.name\r\n\t\t\tthis.image = data.images.length ? data.images[0].url : \"https://e-cdns-images.dzcdn.net/images/cover/d41d8cd98f00b204e9800998ecf8427e/1000x1000-000000-80-0-0.jpg\"\r\n\t\t\tthis.release_date = \"\"\r\n\t\t\tthis.metadata = `by ${data.owner.display_name} • ${data.tracks.length} songs`\r\n\t\t\tthis.head = [\r\n\t\t\t\t{ title: 'music_note', width: '24px' },\r\n\t\t\t\t{ title: '#' },\r\n\t\t\t\t{ title: 'Song' },\r\n\t\t\t\t{ title: 'Artist' },\r\n\t\t\t\t{ title: 'Album' },\r\n\t\t\t\t{ title: 'timer', width: '40px' }\r\n\t\t\t]\r\n\t\t\tif (_.isEmpty(data.tracks)) {\r\n\t\t\t\tthis.body = null\r\n\t\t\t} else {\r\n\t\t\t\tthis.body = data.tracks\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('show_album', this.showAlbum)\r\n\t\tsocket.on('show_playlist', this.showPlaylist)\r\n\t\tsocket.on('show_spotifyplaylist', this.showSpotifyPlaylist)\r\n\t}\r\n}).$mount('#tracklist_tab')\r\n\r\nexport default TracklistTab\r\n","function isValidURL(text) {\r\n\tlet lowerCaseText = text.toLowerCase()\r\n\r\n\tif (lowerCaseText.startsWith('http')) {\r\n\t\tif (lowerCaseText.indexOf('deezer.com') >= 0 || lowerCaseText.indexOf('open.spotify.com') >= 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t} else if (lowerCaseText.startsWith('spotify:')) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}\r\n\r\nfunction convertDuration(duration) {\r\n\t// convert from seconds only to mm:ss format\r\n\tlet mm, ss\r\n\tmm = Math.floor(duration / 60)\r\n\tss = duration - mm * 60\r\n\t//add leading zero if ss < 0\r\n\tif (ss < 10) {\r\n\t\tss = '0' + ss\r\n\t}\r\n\treturn mm + ':' + ss\r\n}\r\n\r\nfunction convertDurationSeparated(duration) {\r\n\tlet hh, mm, ss\r\n\tmm = Math.floor(duration / 60)\r\n\thh = Math.floor(mm / 60)\r\n\tss = duration - mm * 60\r\n\tmm -= hh * 60\r\n\treturn [hh, mm, ss]\r\n}\r\n\r\nfunction numberWithDots(x) {\r\n\treturn x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\r\n}\r\n\r\n// On scroll event, returns currentTarget = null\r\n// Probably on other events too\r\nfunction debounce(func, wait, immediate) {\r\n\tvar timeout\r\n\treturn function () {\r\n\t\tvar context = this\r\n\t\tvar args = arguments\r\n\t\tvar later = function () {\r\n\t\t\ttimeout = null\r\n\t\t\tif (!immediate) func.apply(context, args)\r\n\t\t}\r\n\t\tvar callNow = immediate && !timeout\r\n\t\tclearTimeout(timeout)\r\n\t\ttimeout = setTimeout(later, wait)\r\n\t\tif (callNow) func.apply(context, args)\r\n\t}\r\n}\r\n\r\nconst COUNTRIES = {\r\n\tAF: 'Afghanistan',\r\n\tAX: '\\u00c5land Islands',\r\n\tAL: 'Albania',\r\n\tDZ: 'Algeria',\r\n\tAS: 'American Samoa',\r\n\tAD: 'Andorra',\r\n\tAO: 'Angola',\r\n\tAI: 'Anguilla',\r\n\tAQ: 'Antarctica',\r\n\tAG: 'Antigua and Barbuda',\r\n\tAR: 'Argentina',\r\n\tAM: 'Armenia',\r\n\tAW: 'Aruba',\r\n\tAU: 'Australia',\r\n\tAT: 'Austria',\r\n\tAZ: 'Azerbaijan',\r\n\tBS: 'Bahamas',\r\n\tBH: 'Bahrain',\r\n\tBD: 'Bangladesh',\r\n\tBB: 'Barbados',\r\n\tBY: 'Belarus',\r\n\tBE: 'Belgium',\r\n\tBZ: 'Belize',\r\n\tBJ: 'Benin',\r\n\tBM: 'Bermuda',\r\n\tBT: 'Bhutan',\r\n\tBO: 'Bolivia, Plurinational State of',\r\n\tBQ: 'Bonaire, Sint Eustatius and Saba',\r\n\tBA: 'Bosnia and Herzegovina',\r\n\tBW: 'Botswana',\r\n\tBV: 'Bouvet Island',\r\n\tBR: 'Brazil',\r\n\tIO: 'British Indian Ocean Territory',\r\n\tBN: 'Brunei Darussalam',\r\n\tBG: 'Bulgaria',\r\n\tBF: 'Burkina Faso',\r\n\tBI: 'Burundi',\r\n\tKH: 'Cambodia',\r\n\tCM: 'Cameroon',\r\n\tCA: 'Canada',\r\n\tCV: 'Cape Verde',\r\n\tKY: 'Cayman Islands',\r\n\tCF: 'Central African Republic',\r\n\tTD: 'Chad',\r\n\tCL: 'Chile',\r\n\tCN: 'China',\r\n\tCX: 'Christmas Island',\r\n\tCC: 'Cocos (Keeling) Islands',\r\n\tCO: 'Colombia',\r\n\tKM: 'Comoros',\r\n\tCG: 'Congo',\r\n\tCD: 'Congo, the Democratic Republic of the',\r\n\tCK: 'Cook Islands',\r\n\tCR: 'Costa Rica',\r\n\tCI: \"C\\u00f4te d'Ivoire\",\r\n\tHR: 'Croatia',\r\n\tCU: 'Cuba',\r\n\tCW: 'Cura\\u00e7ao',\r\n\tCY: 'Cyprus',\r\n\tCZ: 'Czech Republic',\r\n\tDK: 'Denmark',\r\n\tDJ: 'Djibouti',\r\n\tDM: 'Dominica',\r\n\tDO: 'Dominican Republic',\r\n\tEC: 'Ecuador',\r\n\tEG: 'Egypt',\r\n\tSV: 'El Salvador',\r\n\tGQ: 'Equatorial Guinea',\r\n\tER: 'Eritrea',\r\n\tEE: 'Estonia',\r\n\tET: 'Ethiopia',\r\n\tFK: 'Falkland Islands (Malvinas)',\r\n\tFO: 'Faroe Islands',\r\n\tFJ: 'Fiji',\r\n\tFI: 'Finland',\r\n\tFR: 'France',\r\n\tGF: 'French Guiana',\r\n\tPF: 'French Polynesia',\r\n\tTF: 'French Southern Territories',\r\n\tGA: 'Gabon',\r\n\tGM: 'Gambia',\r\n\tGE: 'Georgia',\r\n\tDE: 'Germany',\r\n\tGH: 'Ghana',\r\n\tGI: 'Gibraltar',\r\n\tGR: 'Greece',\r\n\tGL: 'Greenland',\r\n\tGD: 'Grenada',\r\n\tGP: 'Guadeloupe',\r\n\tGU: 'Guam',\r\n\tGT: 'Guatemala',\r\n\tGG: 'Guernsey',\r\n\tGN: 'Guinea',\r\n\tGW: 'Guinea-Bissau',\r\n\tGY: 'Guyana',\r\n\tHT: 'Haiti',\r\n\tHM: 'Heard Island and McDonald Islands',\r\n\tVA: 'Holy See (Vatican City State)',\r\n\tHN: 'Honduras',\r\n\tHK: 'Hong Kong',\r\n\tHU: 'Hungary',\r\n\tIS: 'Iceland',\r\n\tIN: 'India',\r\n\tID: 'Indonesia',\r\n\tIR: 'Iran, Islamic Republic of',\r\n\tIQ: 'Iraq',\r\n\tIE: 'Ireland',\r\n\tIM: 'Isle of Man',\r\n\tIL: 'Israel',\r\n\tIT: 'Italy',\r\n\tJM: 'Jamaica',\r\n\tJP: 'Japan',\r\n\tJE: 'Jersey',\r\n\tJO: 'Jordan',\r\n\tKZ: 'Kazakhstan',\r\n\tKE: 'Kenya',\r\n\tKI: 'Kiribati',\r\n\tKP: \"Korea, Democratic People's Republic of\",\r\n\tKR: 'Korea, Republic of',\r\n\tKW: 'Kuwait',\r\n\tKG: 'Kyrgyzstan',\r\n\tLA: \"Lao People's Democratic Republic\",\r\n\tLV: 'Latvia',\r\n\tLB: 'Lebanon',\r\n\tLS: 'Lesotho',\r\n\tLR: 'Liberia',\r\n\tLY: 'Libya',\r\n\tLI: 'Liechtenstein',\r\n\tLT: 'Lithuania',\r\n\tLU: 'Luxembourg',\r\n\tMO: 'Macao',\r\n\tMK: 'Macedonia, the Former Yugoslav Republic of',\r\n\tMG: 'Madagascar',\r\n\tMW: 'Malawi',\r\n\tMY: 'Malaysia',\r\n\tMV: 'Maldives',\r\n\tML: 'Mali',\r\n\tMT: 'Malta',\r\n\tMH: 'Marshall Islands',\r\n\tMQ: 'Martinique',\r\n\tMR: 'Mauritania',\r\n\tMU: 'Mauritius',\r\n\tYT: 'Mayotte',\r\n\tMX: 'Mexico',\r\n\tFM: 'Micronesia, Federated States of',\r\n\tMD: 'Moldova, Republic of',\r\n\tMC: 'Monaco',\r\n\tMN: 'Mongolia',\r\n\tME: 'Montenegro',\r\n\tMS: 'Montserrat',\r\n\tMA: 'Morocco',\r\n\tMZ: 'Mozambique',\r\n\tMM: 'Myanmar',\r\n\tNA: 'Namibia',\r\n\tNR: 'Nauru',\r\n\tNP: 'Nepal',\r\n\tNL: 'Netherlands',\r\n\tNC: 'New Caledonia',\r\n\tNZ: 'New Zealand',\r\n\tNI: 'Nicaragua',\r\n\tNE: 'Niger',\r\n\tNG: 'Nigeria',\r\n\tNU: 'Niue',\r\n\tNF: 'Norfolk Island',\r\n\tMP: 'Northern Mariana Islands',\r\n\tNO: 'Norway',\r\n\tOM: 'Oman',\r\n\tPK: 'Pakistan',\r\n\tPW: 'Palau',\r\n\tPS: 'Palestine, State of',\r\n\tPA: 'Panama',\r\n\tPG: 'Papua New Guinea',\r\n\tPY: 'Paraguay',\r\n\tPE: 'Peru',\r\n\tPH: 'Philippines',\r\n\tPN: 'Pitcairn',\r\n\tPL: 'Poland',\r\n\tPT: 'Portugal',\r\n\tPR: 'Puerto Rico',\r\n\tQA: 'Qatar',\r\n\tRE: 'R\\u00e9union',\r\n\tRO: 'Romania',\r\n\tRU: 'Russian Federation',\r\n\tRW: 'Rwanda',\r\n\tBL: 'Saint Barth\\u00e9lemy',\r\n\tSH: 'Saint Helena, Ascension and Tristan da Cunha',\r\n\tKN: 'Saint Kitts and Nevis',\r\n\tLC: 'Saint Lucia',\r\n\tMF: 'Saint Martin (French part)',\r\n\tPM: 'Saint Pierre and Miquelon',\r\n\tVC: 'Saint Vincent and the Grenadines',\r\n\tWS: 'Samoa',\r\n\tSM: 'San Marino',\r\n\tST: 'Sao Tome and Principe',\r\n\tSA: 'Saudi Arabia',\r\n\tSN: 'Senegal',\r\n\tRS: 'Serbia',\r\n\tSC: 'Seychelles',\r\n\tSL: 'Sierra Leone',\r\n\tSG: 'Singapore',\r\n\tSX: 'Sint Maarten (Dutch part)',\r\n\tSK: 'Slovakia',\r\n\tSI: 'Slovenia',\r\n\tSB: 'Solomon Islands',\r\n\tSO: 'Somalia',\r\n\tZA: 'South Africa',\r\n\tGS: 'South Georgia and the South Sandwich Islands',\r\n\tSS: 'South Sudan',\r\n\tES: 'Spain',\r\n\tLK: 'Sri Lanka',\r\n\tSD: 'Sudan',\r\n\tSR: 'Suriname',\r\n\tSJ: 'Svalbard and Jan Mayen',\r\n\tSZ: 'Swaziland',\r\n\tSE: 'Sweden',\r\n\tCH: 'Switzerland',\r\n\tSY: 'Syrian Arab Republic',\r\n\tTW: 'Taiwan, Province of China',\r\n\tTJ: 'Tajikistan',\r\n\tTZ: 'Tanzania, United Republic of',\r\n\tTH: 'Thailand',\r\n\tTL: 'Timor-Leste',\r\n\tTG: 'Togo',\r\n\tTK: 'Tokelau',\r\n\tTO: 'Tonga',\r\n\tTT: 'Trinidad and Tobago',\r\n\tTN: 'Tunisia',\r\n\tTR: 'Turkey',\r\n\tTM: 'Turkmenistan',\r\n\tTC: 'Turks and Caicos Islands',\r\n\tTV: 'Tuvalu',\r\n\tUG: 'Uganda',\r\n\tUA: 'Ukraine',\r\n\tAE: 'United Arab Emirates',\r\n\tGB: 'United Kingdom',\r\n\tUS: 'United States',\r\n\tUM: 'United States Minor Outlying Islands',\r\n\tUY: 'Uruguay',\r\n\tUZ: 'Uzbekistan',\r\n\tVU: 'Vanuatu',\r\n\tVE: 'Venezuela, Bolivarian Republic of',\r\n\tVN: 'Viet Nam',\r\n\tVG: 'Virgin Islands, British',\r\n\tVI: 'Virgin Islands, U.S.',\r\n\tWF: 'Wallis and Futuna',\r\n\tEH: 'Western Sahara',\r\n\tYE: 'Yemen',\r\n\tZM: 'Zambia',\r\n\tZW: 'Zimbabwe'\r\n}\r\n\r\nexport default {\r\n\tisValidURL,\r\n\tconvertDuration,\r\n\tconvertDurationSeparated,\r\n\tnumberWithDots,\r\n\tdebounce,\r\n\tCOUNTRIES\r\n}\r\n","import { socket } from '../socket.js'\r\nimport { albumView } from '../tabs.js'\r\nimport Utils from '../utils.js'\r\n\r\nconst LinkAnalyzerTab = new Vue({\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttitle: '',\r\n\t\t\tsubtitle: '',\r\n\t\t\timage: '',\r\n\t\t\tdata: {},\r\n\t\t\ttype: '',\r\n\t\t\tlink: '',\r\n\t\t\tcountries: []\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\talbumView,\r\n\t\tconvertDuration: Utils.convertDuration,\r\n\t\treset() {\r\n\t\t\tthis.title = 'Loading...'\r\n\t\t\tthis.subtitle = ''\r\n\t\t\tthis.image = ''\r\n\t\t\tthis.data = {}\r\n\t\t\tthis.type = ''\r\n\t\t\tthis.link = ''\r\n\t\t\tthis.countries = []\r\n\t\t},\r\n\t\tshowTrack(data) {\r\n\t\t\tthis.title =\r\n\t\t\t\tdata.title +\r\n\t\t\t\t(data.title_version && data.title.indexOf(data.title_version) == -1 ? ' ' + data.title_version : '')\r\n\t\t\tthis.subtitle = `by ${data.artist.name}\\nin ${data.album.title}`\r\n\t\t\tthis.image = data.album.cover_xl\r\n\t\t\tthis.type = 'track'\r\n\t\t\tthis.link = data.link\r\n\t\t\tdata.available_countries.forEach(cc => {\r\n\t\t\t\tlet temp = []\r\n\t\t\t\tlet chars = [...cc].map(c => c.charCodeAt() + 127397)\r\n\t\t\t\ttemp.push(String.fromCodePoint(...chars))\r\n\t\t\t\ttemp.push(Utils.COUNTRIES[cc])\r\n\t\t\t\tthis.countries.push(temp)\r\n\t\t\t})\r\n\t\t\tthis.data = data\r\n\t\t},\r\n\t\tshowAlbum(data) {\r\n\t\t\tconsole.log(data)\r\n\t\t\tthis.title = data.title\r\n\t\t\tthis.subtitle = `by ${data.artist.name}\\n${data.nb_tracks} tracks`\r\n\t\t\tthis.image = data.cover_xl\r\n\t\t\tthis.type = 'album'\r\n\t\t\tthis.link = data.link\r\n\t\t\tthis.data = data\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('analyze_track', this.showTrack)\r\n\t\tsocket.on('analyze_album', this.showAlbum)\r\n\t}\r\n}).$mount('#analyzer_tab')\r\n\r\nexport default LinkAnalyzerTab\r\n","import { socket } from '../socket.js'\r\nimport { artistView, albumView, playlistView } from '../tabs.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport TrackPreview from '../track-preview.js'\r\nimport Utils from '../utils.js'\r\n\r\nconst HomeTab = new Vue({\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttracks: [],\r\n\t\t\talbums: [],\r\n\t\t\tartists: [],\r\n\t\t\tplaylists: []\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tartistView,\r\n\t\talbumView,\r\n\t\tplaylistView,\r\n\t\tplayPausePreview: TrackPreview.playPausePreview,\r\n\t\tpreviewMouseEnter: TrackPreview.previewMouseEnter,\r\n\t\tpreviewMouseLeave: TrackPreview.previewMouseLeave,\r\n\t\tnumberWithDots: Utils.numberWithDots,\r\n\t\tconvertDuration: Utils.convertDuration,\r\n\t\taddToQueue(e) {\r\n\t\t\te.stopPropagation()\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal(e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\tinitHome(data) {\r\n\t\t\tthis.tracks = data.tracks.data\r\n\t\t\tthis.albums = data.albums.data\r\n\t\t\tthis.artists = data.artists.data\r\n\t\t\tthis.playlists = data.playlists.data\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('init_home', this.initHome)\r\n\t}\r\n}).$mount('#home_tab')\r\n\r\nexport default HomeTab\r\n","import { socket } from '../socket.js'\r\nimport { artistView, albumView } from '../tabs.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport TrackPreview from '../track-preview.js'\r\nimport Utils from '../utils.js'\r\n\r\nconst ChartsTab = new Vue({\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcountry: '',\r\n id: 0,\r\n countries: [],\r\n chart: []\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n artistView,\r\n\t\talbumView,\r\n\t\tplayPausePreview: TrackPreview.playPausePreview,\r\n\t\tpreviewMouseEnter: TrackPreview.previewMouseEnter,\r\n\t\tpreviewMouseLeave: TrackPreview.previewMouseLeave,\r\n\t\tconvertDuration: Utils.convertDuration,\r\n\t\taddToQueue(e) {\r\n\t\t\te.stopPropagation()\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal(e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n getTrackList(e){\r\n this.country = e.currentTarget.dataset.title\r\n localStorage.setItem('chart', this.country)\r\n this.id = e.currentTarget.dataset.id\r\n socket.emit('getChartTracks', this.id)\r\n },\r\n setTracklist(data){\r\n this.chart = data\r\n },\r\n changeCountry(){\r\n this.country = ''\r\n this.id = 0\r\n },\r\n\t\tinitCharts(data) {\r\n this.countries = data\r\n this.country = localStorage.getItem('chart') || ''\r\n if (this.country){\r\n let i = 0\r\n for (i; i < this.countries.length; i++) if (this.countries[i].title == this.country) break\r\n if (i != this.countries.length){\r\n this.id = this.countries[i].id\r\n socket.emit('getChartTracks', this.id)\r\n }else{\r\n this.country = ''\r\n localStorage.setItem('chart', this.country)\r\n }\r\n }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('init_charts', this.initCharts)\r\n socket.on('setChartTracks', this.setTracklist)\r\n\t}\r\n}).$mount('#charts_tab')\r\n\r\nexport default ChartsTab\r\n","import { socket } from '../socket.js'\r\nimport { playlistView, artistView, albumView, spotifyPlaylistView } from '../tabs.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport TrackPreview from '../track-preview.js'\r\nimport Utils from '../utils.js'\r\n\r\nconst FavoritesTab = new Vue({\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttracks: [],\r\n\t\t\talbums: [],\r\n\t\t\tartists: [],\r\n\t\t\tplaylists: [],\r\n\t\t\tspotifyPlaylists: []\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tplaylistView,\r\n\t\tartistView,\r\n\t\talbumView,\r\n\t\tspotifyPlaylistView,\r\n\t\tplayPausePreview: TrackPreview.playPausePreview,\r\n\t\tpreviewMouseEnter: TrackPreview.previewMouseEnter,\r\n\t\tpreviewMouseLeave: TrackPreview.previewMouseLeave,\r\n\t\tconvertDuration: Utils.convertDuration,\r\n\t\taddToQueue(e) {\r\n\t\t\te.stopPropagation()\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal(e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\tupdated_userSpotifyPlaylists(data){this.spotifyPlaylists = data},\r\n\t\tupdated_userPlaylists(data){this.playlists = data},\r\n\t\tupdated_userAlbums(data){this.albums = data},\r\n\t\tupdated_userArtist(data){this.artists = data},\r\n\t\tupdated_userTracks(data){this.tracks = data},\r\n\t\tinitFavorites(data) {\r\n\t\t\tthis.tracks = data.tracks\r\n\t\t\tthis.albums = data.albums\r\n\t\t\tthis.artists = data.artists\r\n\t\t\tthis.playlists = data.playlists\r\n\t\t\tdocument.getElementById('favorites_playlist_tab').click()\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('init_favorites', this.initFavorites)\r\n\t\tsocket.on('updated_userSpotifyPlaylists', this.updated_userSpotifyPlaylists)\r\n\t\tsocket.on('updated_userPlaylists', this.updated_userPlaylists)\r\n\t\tsocket.on('updated_userAlbums', this.updated_userAlbums)\r\n\t\tsocket.on('updated_userArtist', this.updated_userArtist)\r\n\t\tsocket.on('updated_userTracks', this.updated_userTracks)\r\n\t}\r\n}).$mount('#favorites_tab')\r\n\r\nexport default FavoritesTab\r\n","import { toast } from '../toasts.js'\r\nimport { socket } from '../socket.js'\r\n\r\nconst SettingsTab = new Vue({\r\n\tdata: () => ({\r\n\t\tsettings: { tags: {} },\r\n\t\tlastSettings: {},\r\n\t\tspotifyFeatures: {},\r\n\t\tlastCredentials: {},\r\n\t\tdefaultSettings: {},\r\n\t\tlastUser: '',\r\n\t\tspotifyUser: '',\r\n\t\tdarkMode: false,\r\n\t\tslimDownloads: false\r\n\t}),\r\n\tcomputed: {\r\n\t\tchangeDarkMode: {\r\n\t\t\tget() {\r\n\t\t\t\treturn this.darkMode\r\n\t\t\t},\r\n\t\t\tset(wantDarkMode) {\r\n\t\t\t\tthis.darkMode = wantDarkMode\r\n\t\t\t\tdocument.documentElement.setAttribute('data-theme', wantDarkMode ? 'dark' : 'default')\r\n\t\t\t\tlocalStorage.setItem('darkMode', wantDarkMode)\r\n\t\t\t}\r\n\t\t},\r\n\t\tchangeSlimDownloads: {\r\n\t\t\tget() {\r\n\t\t\t\treturn this.slimDownloads\r\n\t\t\t},\r\n\t\t\tset(wantSlimDownloads) {\r\n\t\t\t\tthis.slimDownloads = wantSlimDownloads\r\n\t\t\t\tdocument.getElementById('download_list').classList.toggle('slim', wantSlimDownloads)\r\n\t\t\t\tlocalStorage.setItem('slimDownloads', wantSlimDownloads)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tcopyARLtoClipboard() {\r\n\t\t\tlet copyText = this.$refs.loginInput\r\n\r\n\t\t\tcopyText.setAttribute('type', 'text')\r\n\t\t\tcopyText.select()\r\n\t\t\tcopyText.setSelectionRange(0, 99999)\r\n\t\t\tdocument.execCommand('copy')\r\n\t\t\tcopyText.setAttribute('type', 'password')\r\n\r\n\t\t\ttoast('ARL copied to clipboard', 'assignment')\r\n\t\t},\r\n\t\tsaveSettings() {\r\n\t\t\tthis.lastSettings = { ...this.settings }\r\n\t\t\tthis.lastCredentials = { ...this.spotifyFeatures }\r\n\t\t\tlet changed = false\r\n\t\t\tif (this.lastUser != this.spotifyUser) {\r\n\t\t\t\t// force cloning without linking\r\n\t\t\t\tthis.lastUser = (' ' + this.spotifyUser).slice(1)\r\n\t\t\t\tlocalStorage.setItem('spotifyUser', this.lastUser)\r\n\t\t\t\tchanged = true\r\n\t\t\t}\r\n\r\n\t\t\tsocket.emit('saveSettings', this.lastSettings, this.lastCredentials, changed ? this.lastUser : false)\r\n\t\t\tconsole.log(this.darkMode)\r\n\t\t},\r\n\t\tloadSettings(settings, spotifyCredentials, defaults = null) {\r\n\t\t\tif (defaults) {\r\n\t\t\t\tthis.defaultSettings = { ...defaults }\r\n\t\t\t}\r\n\r\n\t\t\tthis.lastSettings = { ...settings }\r\n\t\t\tthis.lastCredentials = { ...spotifyCredentials }\r\n\t\t\tthis.settings = settings\r\n\t\t\tthis.spotifyFeatures = spotifyCredentials\r\n\t\t},\r\n\t\tlogin() {\r\n\t\t\tlet arl = this.$refs.loginInput.value\r\n\t\t\tif (arl != '' && arl != localStorage.getItem('arl')) {\r\n\t\t\t\tsocket.emit('login', arl, true)\r\n\t\t\t}\r\n\t\t},\r\n\t\tlogout() {\r\n\t\t\tsocket.emit('logout')\r\n\t\t},\r\n\t\tinitSettings(settings, credentials, defaults) {\r\n\t\t\tthis.loadSettings(settings, credentials, defaults)\r\n\t\t\ttoast('Settings loaded!', 'settings')\r\n\t\t},\r\n\t\tupdateSettings(settings, credentials) {\r\n\t\t\tthis.loadSettings(settings, credentials)\r\n\t\t\ttoast('Settings updated!', 'settings')\r\n\t\t},\r\n\t\tresetSettings() {\r\n\t\t\tthis.settings = { ...this.defaultSettings }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('init_settings', this.initSettings)\r\n\t\tsocket.on('updateSettings', this.updateSettings)\r\n\r\n\t\tlet spotyUser = localStorage.getItem('spotifyUser')\r\n\r\n\t\tif ('' !== spotyUser) {\r\n\t\t\tthis.lastUser = spotyUser\r\n\t\t\tthis.spotifyUser = spotyUser\r\n\t\t}\r\n\r\n\t\tthis.changeDarkMode = 'true' === localStorage.getItem('darkMode')\r\n\t\tthis.changeSlimDownloads = 'true' === localStorage.getItem('slimDownloads')\r\n\t}\r\n}).$mount('#settings_tab')\r\n\r\nexport default SettingsTab\r\n","import { socket } from '../socket.js'\r\nimport { artistView, albumView, playlistView } from '../tabs.js'\r\nimport Downloads from '../downloads.js'\r\nimport QualityModal from '../quality-modal.js'\r\nimport TrackPreview from '../track-preview.js'\r\nimport Utils from '../utils.js'\r\n\r\nconst MainSearch = new Vue({\r\n\tdata: {\r\n\t\tnames: {\r\n\t\t\tTOP_RESULT: 'Top Result',\r\n\t\t\tTRACK: 'Tracks',\r\n\t\t\tARTIST: 'Artists',\r\n\t\t\tALBUM: 'Albums',\r\n\t\t\tPLAYLIST: 'Playlists'\r\n\t\t},\r\n\t\tresults: {\r\n\t\t\tquery: '',\r\n\t\t\tallTab: {\r\n\t\t\t\tORDER: [],\r\n\t\t\t\tTOP_RESULT: [],\r\n\t\t\t\tALBUM: {},\r\n\t\t\t\tARTIST: {},\r\n\t\t\t\tTRACK: {},\r\n\t\t\t\tPLAYLIST: {}\r\n\t\t\t},\r\n\t\t\ttrackTab: {\r\n\t\t\t\tdata: [],\r\n\t\t\t\tnext: 0,\r\n\t\t\t\ttotal: 0,\r\n\t\t\t\tloaded: false\r\n\t\t\t},\r\n\t\t\talbumTab: {\r\n\t\t\t\tdata: [],\r\n\t\t\t\tnext: 0,\r\n\t\t\t\ttotal: 0,\r\n\t\t\t\tloaded: false\r\n\t\t\t},\r\n\t\t\tartistTab: {\r\n\t\t\t\tdata: [],\r\n\t\t\t\tnext: 0,\r\n\t\t\t\ttotal: 0,\r\n\t\t\t\tloaded: false\r\n\t\t\t},\r\n\t\t\tplaylistTab: {\r\n\t\t\t\tdata: [],\r\n\t\t\t\tnext: 0,\r\n\t\t\t\ttotal: 0,\r\n\t\t\t\tloaded: false\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tartistView,\r\n\t\talbumView,\r\n\t\tplaylistView,\r\n\t\tplayPausePreview: TrackPreview.playPausePreview,\r\n\t\tpreviewMouseEnter: TrackPreview.previewMouseEnter,\r\n\t\tpreviewMouseLeave: TrackPreview.previewMouseLeave,\r\n\t\thandleClickTopResult(event) {\r\n\t\t\tlet topResultType = this.results.allTab.TOP_RESULT[0].type\r\n\r\n\t\t\tswitch (topResultType) {\r\n\t\t\t\tcase 'artist':\r\n\t\t\t\t\tthis.artistView(event)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'album':\r\n\t\t\t\t\tthis.albumView(event)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'playlist':\r\n\t\t\t\t\tthis.playlistView(event)\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t},\r\n\t\tchangeSearchTab(section) {\r\n\t\t\tif (section != 'TOP_RESULT') {\r\n\t\t\t\tdocument.getElementById(`search_${section.toLowerCase()}_tab`).click()\r\n\t\t\t}\r\n\t\t},\r\n\t\taddToQueue: function (e) {\r\n\t\t\tDownloads.sendAddToQueue(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\topenQualityModal: function (e) {\r\n\t\t\tQualityModal.open(e.currentTarget.dataset.link)\r\n\t\t},\r\n\t\tnumberWithDots: Utils.numberWithDots,\r\n\t\tconvertDuration: Utils.convertDuration,\r\n\t\tsearch(type) {\r\n\t\t\tsocket.emit('search', {\r\n\t\t\t\tterm: this.results.query,\r\n\t\t\t\ttype: type,\r\n\t\t\t\tstart: this.results[type + 'Tab'].next,\r\n\t\t\t\tnb: 30\r\n\t\t\t})\r\n\t\t},\r\n\t\tscrolledSearch(type) {\r\n\t\t\tif (this.results[type + 'Tab'].next < this.results[type + 'Tab'].total) {\r\n\t\t\t\tsocket.emit('search', {\r\n\t\t\t\t\tterm: this.results.query,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tstart: this.results[type + 'Tab'].next,\r\n\t\t\t\t\tnb: 30\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleMainSearch(result) {\r\n\t\t\tlet resetObj = { data: [], next: 0, total: 0, loaded: false }\r\n\t\t\tthis.results.allTab = result\r\n\t\t\tthis.results.query = result.QUERY\r\n\t\t\tthis.results.trackTab = { ...resetObj }\r\n\t\t\tthis.results.albumTab = { ...resetObj }\r\n\t\t\tthis.results.artistTab = { ...resetObj }\r\n\t\t\tthis.results.playlistTab = { ...resetObj }\r\n\t\t\tdocument.getElementById('search_all_tab').click()\r\n\t\t\tdocument.getElementById('search_tab_content').style.display = 'block'\r\n\t\t\tdocument.getElementById('main_search_tablink').click()\r\n\t\t},\r\n\t\thandleSearch(result) {\r\n\t\t\tlet next = 0\r\n\r\n\t\t\tif (result.next) {\r\n\t\t\t\tnext = parseInt(result.next.match(/index=(\\d*)/)[1])\r\n\t\t\t} else {\r\n\t\t\t\tnext = result.total\r\n\t\t\t}\r\n\r\n\t\t\tif (this.results[result.type + 'Tab'].total != result.total) {\r\n\t\t\t\tthis.results[result.type + 'Tab'].total = result.total\r\n\t\t\t}\r\n\r\n\t\t\tif (this.results[result.type + 'Tab'].next != next) {\r\n\t\t\t\tthis.results[result.type + 'Tab'].next = next\r\n\t\t\t\tthis.results[result.type + 'Tab'].data = this.results[result.type + 'Tab'].data.concat(result.data)\r\n\t\t\t}\r\n\t\t\tthis.results[result.type + 'Tab'].loaded = true\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tsocket.on('mainSearch', this.handleMainSearch)\r\n\t\tsocket.on('search', this.handleSearch)\r\n\t}\r\n}).$mount('#search_tab')\r\n\r\nexport default MainSearch\r\n","import ArtistTab from './components/artist-tab.js'\r\nimport TracklistTab from './components/tracklist-tab.js'\r\nimport LinkAnalyzerTab from './components/link-analyzer-tab.js'\r\nimport HomeTab from './components/home-tab.js'\r\nimport ChartsTab from './components/charts-tab.js'\r\nimport FavoritesTab from './components/favorites-tab.js'\r\nimport { socket } from './socket.js'\r\nimport SettingsTab from './components/settings-tab.js'\r\nimport MainSearch from './components/main-search.js'\r\nimport TrackPreview from './track-preview.js'\r\n\r\n/* ===== Globals ====== */\r\nwindow.search_selected = ''\r\nwindow.main_selected = ''\r\nwindow.windows_stack = []\r\n\r\n/* ===== Locals ===== */\r\nlet currentStack = {}\r\n\r\n// Exporting this function out of the default export\r\n// because it's used in components that are needed\r\n// in this file too\r\nexport function artistView(ev) {\r\n\tlet id = ev.currentTarget.dataset.id\r\n\tArtistTab.reset()\r\n\tsocket.emit('getTracklist', { type: 'artist', id: id })\r\n\tshowTab('artist', id)\r\n}\r\n\r\n// Exporting this function out of the default export\r\n// because it's used in components that are needed\r\n// in this file too\r\nexport function albumView(ev) {\r\n\tlet id = ev.currentTarget.dataset.id\r\n\tTracklistTab.reset()\r\n\tsocket.emit('getTracklist', { type: 'album', id: id })\r\n\tshowTab('album', id)\r\n}\r\n\r\n// Exporting this function out of the default export\r\n// because it's used in components that are needed\r\n// in this file too\r\nexport function playlistView(ev) {\r\n\tlet id = ev.currentTarget.dataset.id\r\n\tTracklistTab.reset()\r\n\tsocket.emit('getTracklist', { type: 'playlist', id: id })\r\n\tshowTab('playlist', id)\r\n}\r\n\r\nexport function spotifyPlaylistView(ev) {\r\n\tlet id = ev.currentTarget.dataset.id\r\n\tTracklistTab.reset()\r\n\tsocket.emit('getTracklist', { type: 'spotifyplaylist', id: id })\r\n\tshowTab('spotifyplaylist', id)\r\n}\r\n\r\nfunction analyzeLink(link) {\r\n\tconsole.log('Analyzing: ' + link)\r\n\tLinkAnalyzerTab.reset()\r\n\tsocket.emit('analyzeLink', link)\r\n}\r\n\r\nfunction linkListeners() {\r\n\tdocument.getElementById('search_tab').addEventListener('click', handleSearchTabClick)\r\n\tdocument.getElementById('favorites_tab').addEventListener('click', handleFavoritesTabClick)\r\n\tdocument.getElementById('sidebar').addEventListener('click', handleSidebarClick)\r\n\r\n\tconst backButtons = Array.from(document.getElementsByClassName('back-button'))\r\n\r\n\tbackButtons.forEach(button => {\r\n\t\tbutton.addEventListener('click', backTab)\r\n\t})\r\n}\r\n\r\n/**\r\n * Handles click Event on the sidebar and changes tab\r\n * according to clicked icon.\r\n * Uses event delegation\r\n * @param\t\t{Event}\t\tevent\r\n * @since\t\t0.1.0\r\n */\r\nfunction handleSidebarClick(event) {\r\n\tif (!(event.target.matches('.main_tablinks') || event.target.parentElement.matches('.main_tablinks'))) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet sidebarEl = event.target.matches('.main_tablinks') ? event.target : event.target.parentElement\r\n\tlet targetID = sidebarEl.getAttribute('id')\r\n\r\n\tswitch (targetID) {\r\n\t\tcase 'main_search_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'search_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_home_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'home_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_charts_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'charts_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_favorites_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'favorites_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_analyzer_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'analyzer_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_settings_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'settings_tab')\r\n\t\t\tbreak\r\n\t\tcase 'main_about_tablink':\r\n\t\t\tchangeTab(sidebarEl, 'main', 'about_tab')\r\n\t\t\tbreak\r\n\r\n\t\tdefault:\r\n\t\t\tbreak\r\n\t}\r\n}\r\n\r\nfunction handleSearchTabClick(event) {\r\n\tlet targetID = event.target.id\r\n\r\n\tswitch (targetID) {\r\n\t\tcase 'search_all_tab':\r\n\t\t\tchangeTab(event.target, 'search', 'main_search')\r\n\t\t\tbreak\r\n\t\tcase 'search_track_tab':\r\n\t\t\tchangeTab(event.target, 'search', 'track_search')\r\n\t\t\tbreak\r\n\t\tcase 'search_album_tab':\r\n\t\t\tchangeTab(event.target, 'search', 'album_search')\r\n\t\t\tbreak\r\n\t\tcase 'search_artist_tab':\r\n\t\t\tchangeTab(event.target, 'search', 'artist_search')\r\n\t\t\tbreak\r\n\t\tcase 'search_playlist_tab':\r\n\t\t\tchangeTab(event.target, 'search', 'playlist_search')\r\n\t\t\tbreak\r\n\r\n\t\tdefault:\r\n\t\t\tbreak\r\n\t}\r\n}\r\n\r\nfunction handleFavoritesTabClick(event) {\r\n\tlet targetID = event.target.id\r\n\r\n\tswitch (targetID) {\r\n\t\tcase 'favorites_playlist_tab':\r\n\t\t\tchangeTab(event.target, 'favorites', 'playlist_favorites')\r\n\t\t\tbreak\r\n\t\tcase 'favorites_album_tab':\r\n\t\t\tchangeTab(event.target, 'favorites', 'album_favorites')\r\n\t\t\tbreak\r\n\t\tcase 'favorites_artist_tab':\r\n\t\t\tchangeTab(event.target, 'favorites', 'artist_favorites')\r\n\t\t\tbreak\r\n\t\tcase 'favorites_track_tab':\r\n\t\t\tchangeTab(event.target, 'favorites', 'track_favorites')\r\n\t\t\tbreak\r\n\r\n\t\tdefault:\r\n\t\t\tbreak\r\n\t}\r\n}\r\n\r\nfunction changeTab(sidebarEl, section, tabName) {\r\n\twindows_stack = []\r\n\tcurrentStack = {}\r\n\tvar i, tabcontent, tablinks\r\n\ttabcontent = document.getElementsByClassName(section + '_tabcontent')\r\n\tfor (i = 0; i < tabcontent.length; i++) {\r\n\t\ttabcontent[i].style.display = 'none'\r\n\t}\r\n\ttablinks = document.getElementsByClassName(section + '_tablinks')\r\n\tfor (i = 0; i < tablinks.length; i++) {\r\n\t\ttablinks[i].classList.remove('active')\r\n\t}\r\n\tif (tabName == 'settings_tab' && main_selected != 'settings_tab') {\r\n\t\tSettingsTab.settings = { ...SettingsTab.lastSettings }\r\n\t\tSettingsTab.spotifyCredentials = { ...SettingsTab.lastCredentials }\r\n\t\tSettingsTab.spotifyUser = (' ' + SettingsTab.lastUser).slice(1)\r\n\t}\r\n\r\n\tdocument.getElementById(tabName).style.display = 'block'\r\n\r\n\tif ('main' === section) {\r\n\t\tmain_selected = tabName\r\n\t} else if ('search' === section) {\r\n\t\tsearch_selected = tabName\r\n\t}\r\n\r\n\t// Not choosing .currentTarget beacuse the event\r\n\t// is delegated\r\n\tsidebarEl.classList.add('active')\r\n\r\n\t// Check if you need to load more content in the search tab\r\n\tif (\r\n\t\tmain_selected == 'search_tab' &&\r\n\t\t['track_search', 'album_search', 'artist_search', 'playlist_search'].indexOf(search_selected) != -1 &&\r\n\t\tMainSearch.results[search_selected.split('_')[0] + 'Tab'].data.length == 0\r\n\t) {\r\n\t\tMainSearch.search(search_selected.split('_')[0])\r\n\t}\r\n}\r\n\r\nfunction showTab(type, id, back = false) {\r\n\tif (windows_stack.length == 0) {\r\n\t\twindows_stack.push({ tab: main_selected })\r\n\t} else if (!back) {\r\n\t\twindows_stack.push(currentStack)\r\n\t}\r\n\r\n\twindow.tab = type == 'artist' ? 'artist_tab' : 'tracklist_tab'\r\n\r\n\tcurrentStack = { type: type, id: id }\r\n\tlet tabcontent = document.getElementsByClassName('main_tabcontent')\r\n\r\n\tfor (let i = 0; i < tabcontent.length; i++) {\r\n\t\ttabcontent[i].style.display = 'none'\r\n\t}\r\n\tdocument.getElementById(tab).style.display = 'block'\r\n\tTrackPreview.stopStackedTabsPreview()\r\n}\r\n\r\nfunction backTab() {\r\n\tif (windows_stack.length == 1) {\r\n\t\tdocument.getElementById(`main_${main_selected}link`).click()\r\n\t} else {\r\n\t\tlet tabObj = windows_stack.pop()\r\n\t\tif (tabObj.type == 'artist') {\r\n\t\t\tArtistTab.reset()\r\n\t\t} else {\r\n\t\t\tTracklistTab.reset()\r\n\t\t}\r\n\t\tsocket.emit('getTracklist', { type: tabObj.type, id: tabObj.id })\r\n\t\tshowTab(tabObj.type, tabObj.id, true)\r\n\t}\r\n\tTrackPreview.stopStackedTabsPreview()\r\n}\r\n\r\nexport default {\r\n\tlinkListeners,\r\n\tartistView,\r\n\talbumView,\r\n\tplaylistView,\r\n\tanalyzeLink\r\n}\r\n","import MainSearch from './components/main-search.js'\r\nimport Utils from './utils.js'\r\nimport QualityModal from './quality-modal.js'\r\nimport Downloads from './downloads.js'\r\nimport { socket } from './socket.js'\r\nimport Tabs from './tabs.js'\r\n\r\nfunction linkListeners() {\r\n\tdocument.getElementById('content').addEventListener('scroll', Utils.debounce(handleContentScroll, 100))\r\n\tdocument.getElementById('searchbar').addEventListener('keyup', handleSearchBarKeyup)\r\n}\r\n\r\n// Load more content when the search page is at the end\r\nfunction handleContentScroll(event) {\r\n\tlet contentElement = event.target\r\n\r\n\tif (contentElement.scrollTop + contentElement.clientHeight >= contentElement.scrollHeight) {\r\n\t\tif (\r\n\t\t\tmain_selected === 'search_tab' &&\r\n\t\t\t['track_search', 'album_search', 'artist_search', 'playlist_search'].indexOf(search_selected) != -1\r\n\t\t) {\r\n\t\t\tMainSearch.scrolledSearch(search_selected.split('_')[0])\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction handleSearchBarKeyup(e) {\r\n\tif (e.keyCode == 13) {\r\n\t\tlet term = this.value\r\n\t\tif (Utils.isValidURL(term)) {\r\n\t\t\tif (e.ctrlKey) {\r\n\t\t\t\tQualityModal.open(term)\r\n\t\t\t} else {\r\n\t\t\t\tif (window.main_selected == 'analyzer_tab') {\r\n\t\t\t\t\tTabs.analyzeLink(term)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tDownloads.sendAddToQueue(term)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (term != MainSearch.query || main_selected == 'search_tab') {\r\n\t\t\t\tdocument.getElementById('search_tab_content').style.display = 'none'\r\n\t\t\t\tsocket.emit('mainSearch', { term: term })\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('search_all_tab').click()\r\n\t\t\t\tdocument.getElementById('search_tab_content').style.display = 'block'\r\n\t\t\t\tdocument.getElementById('main_search_tablink').click()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default {\r\n\tlinkListeners\r\n}\r\n","import { socket } from './modules/socket.js'\r\nimport { toast } from './modules/toasts.js'\r\nimport Downloads from './modules/downloads.js'\r\nimport QualityModal from './modules/quality-modal.js'\r\nimport Tabs from './modules/tabs.js'\r\nimport Search from './modules/search.js'\r\nimport TrackPreview from './modules/track-preview.js'\r\n\r\n/* ===== Socketio listeners ===== */\r\n\r\n// Debug messages for socketio\r\nsocket.on('message', function (msg) {\r\n\tconsole.log(msg)\r\n})\r\n\r\nsocket.on('logging_in', function () {\r\n\ttoast('Logging in', 'loading', false, 'login-toast')\r\n})\r\n\r\nsocket.on('logged_in', function (data) {\r\n\tswitch (data.status) {\r\n\t\tcase 1:\r\n\t\tcase 3:\r\n\t\t\ttoast('Logged in', 'done', true, 'login-toast')\r\n\t\t\tif (data.arl) {\r\n\t\t\t\tlocalStorage.setItem('arl', data.arl)\r\n\t\t\t\t$('#login_input_arl').val(data.arl)\r\n\t\t\t}\r\n\t\t\t$('#open_login_prompt').hide()\r\n\t\t\tif (data.user) {\r\n\t\t\t\t$('#settings_username').text(data.user.name)\r\n\t\t\t\t$('#settings_picture').attr(\r\n\t\t\t\t\t'src',\r\n\t\t\t\t\t`https://e-cdns-images.dzcdn.net/images/user/${data.user.picture}/125x125-000000-80-0-0.jpg`\r\n\t\t\t\t)\r\n\t\t\t\t// $('#logged_in_info').show()\r\n\t\t\t\tdocument.getElementById('logged_in_info').classList.remove('hide')\r\n\t\t\t}\r\n\t\t\tbreak\r\n\t\tcase 2:\r\n\t\t\ttoast('Already logged in', 'done', true, 'login-toast')\r\n\t\t\tif (data.user) {\r\n\t\t\t\t$('#settings_username').text(data.user.name)\r\n\t\t\t\t$('#settings_picture').attr(\r\n\t\t\t\t\t'src',\r\n\t\t\t\t\t`https://e-cdns-images.dzcdn.net/images/user/${data.user.picture}/125x125-000000-80-0-0.jpg`\r\n\t\t\t\t)\r\n\t\t\t\t// $('#logged_in_info').show()\r\n\t\t\t\tdocument.getElementById('logged_in_info').classList.remove('hide')\r\n\t\t\t}\r\n\t\t\tbreak\r\n\t\tcase 0:\r\n\t\t\ttoast(\"Couldn't log in\", 'close', true, 'login-toast')\r\n\t\t\tlocalStorage.removeItem('arl')\r\n\t\t\t$('#login_input_arl').val('')\r\n\t\t\t$('#open_login_prompt').show()\r\n\t\t\tdocument.getElementById('logged_in_info').classList.add('hide')\r\n\t\t\t// $('#logged_in_info').hide()\r\n\t\t\t$('#settings_username').text('Not Logged')\r\n\t\t\t$('#settings_picture').attr('src', `https://e-cdns-images.dzcdn.net/images/user/125x125-000000-80-0-0.jpg`)\r\n\t\t\tbreak\r\n\t}\r\n})\r\n\r\nsocket.on('logged_out', function () {\r\n\ttoast('Logged out', 'done', true, 'login-toast')\r\n\tlocalStorage.removeItem('arl')\r\n\t$('#login_input_arl').val('')\r\n\t$('#open_login_prompt').show()\r\n\tdocument.getElementById('logged_in_info').classList.add('hide')\r\n\t// $('#logged_in_info').hide()\r\n\t$('#settings_username').text('Not Logged')\r\n\t$('#settings_picture').attr('src', `https://e-cdns-images.dzcdn.net/images/user/125x125-000000-80-0-0.jpg`)\r\n})\r\n\r\n/* ===== App initialization ===== */\r\nfunction startApp() {\r\n\tDownloads.init()\r\n\tQualityModal.init()\r\n\tTabs.linkListeners()\r\n\tSearch.linkListeners()\r\n\tTrackPreview.init()\r\n\r\n\tdocument.getElementById('logged_in_info').classList.add('hide')\r\n\r\n\tif (localStorage.getItem('arl')) {\r\n\t\tlet arl = localStorage.getItem('arl')\r\n\r\n\t\tsocket.emit('login', arl)\r\n\t\t$('#login_input_arl').val(arl)\r\n\t}\r\n\tif ('true' === localStorage.getItem('slimDownloads')) {\r\n\t\tdocument.getElementById('download_list').classList.add('slim')\r\n\t}\r\n\tlet spotifyUser = localStorage.getItem('spotifyUser')\r\n\tif (spotifyUser != '') {\r\n\t\tsocket.emit('update_userSpotifyPlaylists', spotifyUser)\r\n\t}\r\n\t// Open default tab\r\n\tdocument.getElementById('main_home_tablink').click()\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', startApp)\r\n"],"names":["init","linkListeners","QualityModal"],"mappings":"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"}