From 0364de731da15e1ebe74203747498415c8a36da9 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sun, 1 Apr 2018 09:15:33 -0700 Subject: [PATCH] Remove bundle --- .gitignore | 1 + examples/webpack/bundle.js | 41936 ----------------------------------- 2 files changed, 1 insertion(+), 41936 deletions(-) delete mode 100644 examples/webpack/bundle.js diff --git a/.gitignore b/.gitignore index e199ab42..8af6f995 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules /built /coverage /experiments/winamp-skin-museum +/examples/webpack/bundle.js diff --git a/examples/webpack/bundle.js b/examples/webpack/bundle.js deleted file mode 100644 index ba1f7ae4..00000000 --- a/examples/webpack/bundle.js +++ /dev/null @@ -1,41936 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 1); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_winamp2_js__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_winamp2_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_winamp2_js__); - -new __WEBPACK_IMPORTED_MODULE_0_winamp2_js___default.a({ - initialTracks: [ - { - metaData: { - artist: "DJ Mike Llama", - title: "Llama Whippin' Intro" - }, - url: - "https://cdn.rawgit.com/captbaritone/winamp2-js/43434d82/mp3/llama-2.91.mp3" - } - ], - initialSkin: { - url: - "https://cdn.rawgit.com/captbaritone/winamp2-js/43434d82/skins/base-2.91.wsz" - } -}).renderWhenReady(document.getElementById("app")); - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(Buffer, global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;(function webpackUniversalModuleDefinition(root, factory) { - if(true) - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["winamp2js"] = factory(); - else - root["winamp2js"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 135); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -if (true) { - module.exports = __webpack_require__(153); -} else { - module.exports = require('./cjs/react.development.js'); -} - - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Provider__ = __webpack_require__(163); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_connectAdvanced__ = __webpack_require__(106); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__connect_connect__ = __webpack_require__(170); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Provider", function() { return __WEBPACK_IMPORTED_MODULE_0__components_Provider__["b"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "createProvider", function() { return __WEBPACK_IMPORTED_MODULE_0__components_Provider__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "connectAdvanced", function() { return __WEBPACK_IMPORTED_MODULE_1__components_connectAdvanced__["a"]; }); -/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return __WEBPACK_IMPORTED_MODULE_2__connect_connect__["a"]; }); - - - - - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _getIterator2 = __webpack_require__(31); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _keys = __webpack_require__(24); - -var _keys2 = _interopRequireDefault(_keys); - -var _from = __webpack_require__(60); - -var _from2 = _interopRequireDefault(_from); - -var _regenerator = __webpack_require__(25); - -var _regenerator2 = _interopRequireDefault(_regenerator); - -var _asyncToGenerator2 = __webpack_require__(26); - -var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); - -exports.play = play; -exports.pause = pause; -exports.stop = stop; -exports.nextN = nextN; -exports.next = next; -exports.previous = previous; -exports.seekForward = seekForward; -exports.seekBackward = seekBackward; -exports.close = close; -exports.setVolume = setVolume; -exports.adjustVolume = adjustVolume; -exports.scrollVolume = scrollVolume; -exports.setBalance = setBalance; -exports.toggleRepeat = toggleRepeat; -exports.toggleShuffle = toggleShuffle; -exports.addTracksFromReferences = addTracksFromReferences; -exports.loadFilesFromReferences = loadFilesFromReferences; -exports.fetchMediaDuration = fetchMediaDuration; -exports.loadMediaFiles = loadMediaFiles; -exports.loadMediaFile = loadMediaFile; -exports.fetchMediaTags = fetchMediaTags; -exports.setSkinFromArrayBuffer = setSkinFromArrayBuffer; -exports.setSkinFromFileReference = setSkinFromFileReference; -exports.setSkinFromUrl = setSkinFromUrl; -exports.openEqfFileDialog = openEqfFileDialog; -exports.openMediaFileDialog = openMediaFileDialog; -exports.openSkinFileDialog = openSkinFileDialog; -exports.setEqBand = setEqBand; -exports.setEqToMax = setEqToMax; -exports.setEqToMid = setEqToMid; -exports.setEqToMin = setEqToMin; -exports.setPreamp = setPreamp; -exports.toggleEq = toggleEq; -exports.downloadPreset = downloadPreset; -exports.toggleDoubleSizeMode = toggleDoubleSizeMode; -exports.toggleEqualizerShadeMode = toggleEqualizerShadeMode; -exports.toggleMainWindowShadeMode = toggleMainWindowShadeMode; -exports.togglePlaylistShadeMode = togglePlaylistShadeMode; -exports.closeEqualizerWindow = closeEqualizerWindow; -exports.cropPlaylist = cropPlaylist; -exports.removeSelectedTracks = removeSelectedTracks; -exports.removeAllTracks = removeAllTracks; -exports.reverseList = reverseList; -exports.randomizeList = randomizeList; -exports.sortListByTitle = sortListByTitle; -exports.toggleVisualizerStyle = toggleVisualizerStyle; -exports.setPlaylistScrollPosition = setPlaylistScrollPosition; -exports.setPlaylistSize = setPlaylistSize; -exports.scrollNTracks = scrollNTracks; -exports.scrollPlaylistByDelta = scrollPlaylistByDelta; -exports.scrollUpFourTracks = scrollUpFourTracks; -exports.scrollDownFourTracks = scrollDownFourTracks; -exports.dragSelected = dragSelected; -exports.downloadHtmlPlaylist = downloadHtmlPlaylist; -exports.updateWindowPositions = updateWindowPositions; - -var _winampEqf = __webpack_require__(227); - -var _fileUtils = __webpack_require__(84); - -var _skinParser = __webpack_require__(230); - -var _skinParser2 = _interopRequireDefault(_skinParser); - -var _constants = __webpack_require__(8); - -var _selectors = __webpack_require__(18); - -var _utils = __webpack_require__(13); - -var _actionTypes = __webpack_require__(3); - -var _loadQueue = __webpack_require__(243); - -var _loadQueue2 = _interopRequireDefault(_loadQueue); - -var _resizeUtils = __webpack_require__(121); - -var _snapUtils = __webpack_require__(123); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Lower is better -var DURATION_VISIBLE_PRIORITY = 5; -var META_DATA_VISIBLE_PRIORITY = 10; -var DURATION_PRIORITY = 15; -var META_DATA_PRIORITY = 20; - -var loadQueue = new _loadQueue2.default({ threads: 4 }); - -function playRandomTrack() { - return function (dispatch, getState) { - var _getState = getState(), - _getState$playlist = _getState.playlist, - trackOrder = _getState$playlist.trackOrder, - currentTrack = _getState$playlist.currentTrack; - - var nextId = void 0; - do { - nextId = trackOrder[Math.floor(trackOrder.length * Math.random())]; - } while (nextId === currentTrack && trackOrder.length > 1); - // TODO: Sigh... Technically, we should detect if we are looping only repeat if we are. - // I think this would require pre-computing the "random" order of a playlist. - dispatch({ type: _actionTypes.PLAY_TRACK, id: nextId }); - }; -} - -function play() { - return function (dispatch, getState) { - var state = getState(); - if (state.media.status === "STOPPED" && state.playlist.curentTrack == null && state.playlist.trackOrder.length === 0) { - dispatch(openMediaFileDialog()); - } else { - dispatch({ type: _actionTypes.PLAY }); - } - }; -} - -function pause() { - return function (dispatch, getState) { - var status = getState().media.status; - - dispatch({ type: status === "PLAYING" ? _actionTypes.PAUSE : _actionTypes.PLAY }); - }; -} - -function stop() { - return { type: _actionTypes.STOP }; -} - -function nextN(n) { - return function (dispatch, getState) { - var state = getState(); - if (state.media.shuffle) { - dispatch(playRandomTrack()); - return; - } - var nextTrackId = (0, _selectors.nextTrack)(state, n); - if (nextTrackId == null) { - return; - } - dispatch({ type: _actionTypes.PLAY_TRACK, id: nextTrackId }); - }; -} - -function next() { - return nextN(1); -} - -function previous() { - return nextN(-1); -} - -function seekForward(seconds) { - return function (dispatch, getState) { - var _getState2 = getState(), - media = _getState2.media; - - var timeElapsed = media.timeElapsed, - length = media.length; - - var newTimeElapsed = timeElapsed + seconds; - var newPercentComplete = newTimeElapsed / length; - dispatch({ type: _actionTypes.SEEK_TO_PERCENT_COMPLETE, percent: newPercentComplete }); - }; -} - -function seekBackward(seconds) { - return seekForward(-seconds); -} - -function close() { - return function (dispatch) { - dispatch({ type: _actionTypes.STOP }); - dispatch({ type: _actionTypes.CLOSE_WINAMP }); - }; -} - -function setVolume(volume) { - return { - type: _actionTypes.SET_VOLUME, - volume: (0, _utils.clamp)(volume, 0, 100) - }; -} - -function adjustVolume(volumeDiff) { - return function (dispatch, getState) { - var currentVolume = getState().media.volume; - return dispatch(setVolume(currentVolume + volumeDiff)); - }; -} - -function scrollVolume(e) { - e.preventDefault(); - return function (dispatch, getState) { - var currentVolume = getState().media.volume; - // Using pixels as percentage difference here is a bit arbirary, but... oh well. - return dispatch(setVolume(currentVolume + e.deltaY)); - }; -} - -function setBalance(balance) { - balance = (0, _utils.clamp)(balance, -100, 100); - // The balance clips to the center - if (Math.abs(balance) < 25) { - balance = 0; - } - return { - type: _actionTypes.SET_BALANCE, - balance: balance - }; -} - -function toggleRepeat() { - return { type: _actionTypes.TOGGLE_REPEAT }; -} - -function toggleShuffle() { - return { type: _actionTypes.TOGGLE_SHUFFLE }; -} - -function setEqFromFileReference(fileReference) { - var _this = this; - - return function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(dispatch) { - var arrayBuffer, eqf, preset; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return (0, _fileUtils.genArrayBufferFromFileReference)(fileReference); - - case 2: - arrayBuffer = _context.sent; - eqf = (0, _winampEqf.parser)(arrayBuffer); - preset = eqf.presets[0]; - - - dispatch(setPreamp((0, _utils.normalize)(preset.preamp))); - _constants.BANDS.forEach(function (band) { - dispatch(setEqBand(band, (0, _utils.normalize)(preset["hz" + band]))); - }); - - case 7: - case "end": - return _context.stop(); - } - } - }, _callee, _this); - })); - - return function (_x) { - return _ref.apply(this, arguments); - }; - }(); -} - -function addTracksFromReferences(fileReferences, loadStyle, atIndex) { - var tracks = (0, _from2.default)(fileReferences).map(function (file) { - return { - blob: file, - defaultName: file.name - }; - }); - return loadMediaFiles(tracks, loadStyle, atIndex); -} - -var SKIN_FILENAME_MATCHER = new RegExp("(wsz|zip)$", "i"); -var EQF_FILENAME_MATCHER = new RegExp("eqf$", "i"); -function loadFilesFromReferences(fileReferences) { - var loadStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.LOAD_STYLE.PLAY; - var atIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - return function (dispatch) { - if (fileReferences.length < 1) { - return; - } else if (fileReferences.length === 1) { - var fileReference = fileReferences[0]; - if (SKIN_FILENAME_MATCHER.test(fileReference.name)) { - dispatch(setSkinFromFileReference(fileReference)); - return; - } else if (EQF_FILENAME_MATCHER.test(fileReference.name)) { - dispatch(setEqFromFileReference(fileReference)); - return; - } - } - dispatch(addTracksFromReferences(fileReferences, loadStyle, atIndex)); - }; -} - -function fetchMediaDuration(url, id) { - return function (dispatch, getState) { - loadQueue.push(function () { - return (0, _fileUtils.genMediaDuration)(url).then(function (duration) { - return dispatch({ type: _actionTypes.SET_MEDIA_DURATION, duration: duration, id: id }); - }).catch(function () { - // TODO: Should we update the state to indicate that we don't know the length? - }); - }, function () { - var trackIsVisible = (0, _selectors.getTrackIsVisibleFunction)(getState()); - return trackIsVisible(id) ? DURATION_VISIBLE_PRIORITY : DURATION_PRIORITY; - }); - }; -} - -var counter = 0; -function uniqueId() { - return counter++; -} - -function loadMediaFiles(tracks) { - var loadStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var atIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - - return function (dispatch) { - if (loadStyle === _constants.LOAD_STYLE.PLAY) { - // I'm the worst. It just so happens that in every case that we autoPlay, - // we should also clear all tracks. - dispatch(removeAllTracks()); - } - tracks.forEach(function (track, i) { - var priority = i === 0 && loadStyle != null ? loadStyle : null; - dispatch(loadMediaFile(track, priority, atIndex + i)); - }); - }; -} - -function loadMediaFile(track) { - var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var atIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - - return function (dispatch) { - var id = uniqueId(); - var url = track.url, - blob = track.blob, - defaultName = track.defaultName, - metaData = track.metaData, - duration = track.duration; - - var canonicalUrl = url; - if (canonicalUrl == null) { - if (blob == null) { - throw new Error("Expected track to have either a blob or a url"); - } - canonicalUrl = URL.createObjectURL(track.blob); - } - dispatch({ - type: _actionTypes.ADD_TRACK_FROM_URL, - url: canonicalUrl, - defaultName: defaultName, - id: id, - atIndex: atIndex - }); - switch (priority) { - case _constants.LOAD_STYLE.BUFFER: - dispatch({ type: _actionTypes.BUFFER_TRACK, id: id }); - break; - case _constants.LOAD_STYLE.PLAY: - dispatch({ type: _actionTypes.PLAY_TRACK, id: id }); - break; - default: - // If we're not going to load this right away, - // we should set duration on our own - if (duration != null) { - dispatch({ type: _actionTypes.SET_MEDIA_DURATION, duration: duration, id: id }); - } else { - dispatch(fetchMediaDuration(canonicalUrl, id)); - } - } - - if (metaData != null) { - var artist = metaData.artist, - title = metaData.title; - - dispatch({ type: _actionTypes.SET_MEDIA_TAGS, artist: artist, title: title, id: id }); - } else if (blob != null) { - // Blobs can be loaded quickly - dispatch(fetchMediaTags(blob, id)); - } else { - dispatch(queueFetchingMediaTags(id)); - } - }; -} - -function queueFetchingMediaTags(id) { - return function (dispatch, getState) { - var track = (0, _selectors.getTracks)(getState())[id]; - return loadQueue.push(function () { - return dispatch(fetchMediaTags(track.url, id)); - }, function () { - var trackIsVisible = (0, _selectors.getTrackIsVisibleFunction)(getState()); - return trackIsVisible(track.id) ? META_DATA_VISIBLE_PRIORITY : META_DATA_PRIORITY; - }); - }; -} - -function fetchMediaTags(file, id) { - return function (dispatch) { - dispatch({ type: _actionTypes.MEDIA_TAG_REQUEST_INITIALIZED, id: id }); - return (0, _fileUtils.genMediaTags)(file).then(function (data) { - var _data$tags = data.tags, - artist = _data$tags.artist, - title = _data$tags.title; - // There's more data here, but we don't have a use for it yet: - // https://github.com/aadsm/jsmediatags#shortcuts - - dispatch({ type: _actionTypes.SET_MEDIA_TAGS, artist: artist, title: title, id: id }); - }).catch(function () { - dispatch({ type: _actionTypes.MEDIA_TAG_REQUEST_FAILED, id: id }); - }); - }; -} - -function setSkinFromArrayBuffer(arrayBuffer) { - var _this2 = this; - - return function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(dispatch) { - var skinData; - return _regenerator2.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return (0, _skinParser2.default)(arrayBuffer); - - case 2: - skinData = _context2.sent; - - dispatch({ - type: _actionTypes.SET_SKIN_DATA, - skinImages: skinData.images, - skinColors: skinData.colors, - skinPlaylistStyle: skinData.playlistStyle, - skinCursors: skinData.cursors, - skinRegion: skinData.region, - skinGenLetterWidths: skinData.genLetterWidths - }); - - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2, _this2); - })); - - return function (_x8) { - return _ref2.apply(this, arguments); - }; - }(); -} - -function setSkinFromFileReference(skinFileReference) { - var _this3 = this; - - return function () { - var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(dispatch) { - var arrayBuffer; - return _regenerator2.default.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.next = 2; - return (0, _fileUtils.genArrayBufferFromFileReference)(skinFileReference); - - case 2: - arrayBuffer = _context3.sent; - - dispatch(setSkinFromArrayBuffer(arrayBuffer)); - - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, _this3); - })); - - return function (_x9) { - return _ref3.apply(this, arguments); - }; - }(); -} - -function setSkinFromUrl(url) { - var _this4 = this; - - return function () { - var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(dispatch) { - var arrayBuffer; - return _regenerator2.default.wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return (0, _fileUtils.genArrayBufferFromUrl)(url); - - case 2: - arrayBuffer = _context4.sent; - - dispatch(setSkinFromArrayBuffer(arrayBuffer)); - - case 4: - case "end": - return _context4.stop(); - } - } - }, _callee4, _this4); - })); - - return function (_x10) { - return _ref4.apply(this, arguments); - }; - }(); -} - -// This function is private, since Winamp consumers can provide means for -// opening files via other methods. Only use the file type specific -// versions below, since they can defer to the user-defined behavior. -function _openFileDialog(accept) { - var _this5 = this; - - return function () { - var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(dispatch) { - var fileReferences; - return _regenerator2.default.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - _context5.next = 2; - return (0, _fileUtils.promptForFileReferences)({ accept: accept }); - - case 2: - fileReferences = _context5.sent; - - dispatch(loadFilesFromReferences(fileReferences)); - - case 4: - case "end": - return _context5.stop(); - } - } - }, _callee5, _this5); - })); - - return function (_x11) { - return _ref5.apply(this, arguments); - }; - }(); -} - -function openEqfFileDialog() { - return _openFileDialog(".eqf"); -} - -function openMediaFileDialog() { - return _openFileDialog(); -} - -function openSkinFileDialog() { - return _openFileDialog(".zip, .wsz"); -} - -function setEqBand(band, value) { - return { type: _actionTypes.SET_BAND_VALUE, band: band, value: value }; -} - -function _setEqTo(value) { - return function (dispatch) { - (0, _keys2.default)(_constants.BANDS).forEach(function (key) { - var band = _constants.BANDS[key]; - dispatch({ - type: _actionTypes.SET_BAND_VALUE, - value: value, - band: band - }); - }); - }; -} - -function setEqToMax() { - return _setEqTo(100); -} - -function setEqToMid() { - return _setEqTo(50); -} - -function setEqToMin() { - return _setEqTo(0); -} - -function setPreamp(value) { - return { - type: _actionTypes.SET_BAND_VALUE, - band: "preamp", - value: value - }; -} - -function toggleEq() { - return function (dispatch, getState) { - var type = getState().equalizer.on ? _actionTypes.SET_EQ_OFF : _actionTypes.SET_EQ_ON; - dispatch({ type: type }); - }; -} - -function downloadPreset() { - return function (dispatch, getState) { - var state = getState(); - var data = (0, _selectors.getEqfData)(state); - var arrayBuffer = (0, _winampEqf.creator)(data); - var base64 = (0, _utils.base64FromArrayBuffer)(arrayBuffer); - var dataURI = "data:application/zip;base64," + base64; - (0, _utils.downloadURI)(dataURI, "entry.eqf"); - }; -} - -// Dispatch an action and, if needed rearrange the windows to preserve -// the existing edge relationship. -// -// Works by checking the edges before the action is dispatched. Then, -// after disatching, calculating what position change would be required -// to restore those relationships. -function withWindowGraphIntegrity(action) { - return function (dispatch, getState) { - var state = getState(); - var graph = (0, _selectors.getWindowGraph)(state); - var originalSizes = (0, _selectors.getWindowSizes)(state); - - dispatch(action); - - var newSizes = (0, _selectors.getWindowSizes)(getState()); - var sizeDiff = {}; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(newSizes)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var window = _step.value; - - var original = originalSizes[window]; - var current = newSizes[window]; - sizeDiff[window] = { - height: current.height - original.height, - width: current.width - original.width - }; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - var positionDiff = (0, _resizeUtils.getPositionDiff)(graph, sizeDiff); - var windowPositions = (0, _selectors.getWindowPositions)(state); - - var newPositions = {}; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(windowPositions)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var key = _step2.value; - - newPositions[key] = (0, _snapUtils.applyDiff)(windowPositions[key], positionDiff[key]); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - dispatch(updateWindowPositions(newPositions)); - }; -} - -function toggleDoubleSizeMode() { - return withWindowGraphIntegrity({ type: _actionTypes.TOGGLE_DOUBLESIZE_MODE }); -} - -function toggleEqualizerShadeMode() { - return withWindowGraphIntegrity({ type: _actionTypes.TOGGLE_EQUALIZER_SHADE_MODE }); -} - -function toggleMainWindowShadeMode() { - return withWindowGraphIntegrity({ type: _actionTypes.TOGGLE_MAIN_SHADE_MODE }); -} - -function togglePlaylistShadeMode() { - return withWindowGraphIntegrity({ type: _actionTypes.TOGGLE_PLAYLIST_SHADE_MODE }); -} - -function closeEqualizerWindow() { - return { type: _actionTypes.CLOSE_EQUALIZER_WINDOW }; -} - -function cropPlaylist() { - return function (dispatch, getState) { - var state = getState(); - if ((0, _selectors.getSelectedTrackObjects)(state).length === 0) { - return; - } - - var _getState3 = getState(), - tracks = _getState3.playlist.tracks; - - dispatch({ - type: _actionTypes.REMOVE_TRACKS, - ids: (0, _keys2.default)(tracks).filter(function (id) { - return !tracks[id].selected; - }) - }); - }; -} - -function removeSelectedTracks() { - return function (dispatch, getState) { - var _getState4 = getState(), - tracks = _getState4.playlist.tracks; - - dispatch({ - type: _actionTypes.REMOVE_TRACKS, - ids: (0, _keys2.default)(tracks).filter(function (id) { - return tracks[id].selected; - }) - }); - }; -} - -function removeAllTracks() { - return { type: _actionTypes.REMOVE_ALL_TRACKS }; -} - -function reverseList() { - return { type: _actionTypes.REVERSE_LIST }; -} - -function randomizeList() { - return { type: _actionTypes.RANDOMIZE_LIST }; -} - -function sortListByTitle() { - return function (dispatch, getState) { - var state = getState(); - var trackOrder = (0, _utils.sort)(state.playlist.trackOrder, function (i) { - return ("" + state.playlist.tracks[i].title).toLowerCase(); - }); - return dispatch({ type: _actionTypes.SET_TRACK_ORDER, trackOrder: trackOrder }); - }; -} - -function toggleVisualizerStyle() { - return { type: _actionTypes.TOGGLE_VISUALIZER_STYLE }; -} - -function setPlaylistScrollPosition(position) { - return { type: _actionTypes.SET_PLAYLIST_SCROLL_POSITION, position: position }; -} - -function setPlaylistSize(size) { - return { type: _actionTypes.PLAYLIST_SIZE_CHANGED, size: size }; -} - -function scrollNTracks(n) { - return function (dispatch, getState) { - var state = getState(); - var overflow = (0, _selectors.getOverflowTrackCount)(state); - var currentOffset = (0, _selectors.getScrollOffset)(state); - var position = overflow ? (0, _utils.clamp)((currentOffset + n) / overflow, 0, 1) : 0; - return dispatch({ - type: _actionTypes.SET_PLAYLIST_SCROLL_POSITION, - position: position * 100 - }); - }; -} - -function scrollPlaylistByDelta(e) { - e.preventDefault(); - return function (dispatch, getState) { - var state = getState(); - if ((0, _selectors.getOverflowTrackCount)(state)) { - e.stopPropagation(); - } - var totalPixelHeight = state.playlist.trackOrder.length * _constants.TRACK_HEIGHT; - var percentDelta = e.deltaY / totalPixelHeight * 100; - dispatch({ - type: _actionTypes.SET_PLAYLIST_SCROLL_POSITION, - position: (0, _utils.clamp)(state.display.playlistScrollPosition + percentDelta, 0, 100) - }); - }; -} - -function scrollUpFourTracks() { - return scrollNTracks(-4); -} - -function scrollDownFourTracks() { - return scrollNTracks(4); -} - -function findLastIndex(arr, cb) { - for (var i = arr.length - 1; i >= 0; i--) { - if (cb(arr[i])) { - return i; - } - } - return -1; -} - -function dragSelected(offset) { - return function (dispatch, getState) { - var _getState5 = getState(), - _getState5$playlist = _getState5.playlist, - trackOrder = _getState5$playlist.trackOrder, - tracks = _getState5$playlist.tracks; - - var firstSelected = trackOrder.findIndex(function (trackId) { - return tracks[trackId] && tracks[trackId].selected; - }); - if (firstSelected === -1) { - return; - } - var lastSelected = findLastIndex(trackOrder, function (trackId) { - return tracks[trackId] && tracks[trackId].selected; - }); - if (lastSelected === -1) { - throw new Error("We found a first selected, but not a last selected."); - } - // Ensure we don't try to drag off either end. - var min = -firstSelected; - var max = trackOrder.length - 1 - lastSelected; - var normalizedOffset = (0, _utils.clamp)(offset, min, max); - if (normalizedOffset !== 0) { - dispatch({ type: _actionTypes.DRAG_SELECTED, offset: normalizedOffset }); - } - }; -} - -function downloadHtmlPlaylist() { - return function (dispatch, getState) { - var uri = (0, _selectors.getPlaylistURL)(getState()); - (0, _utils.downloadURI)(uri, "Winamp Playlist.html"); - }; -} - -function updateWindowPositions(positions) { - return { type: _actionTypes.UPDATE_WINDOW_POSITIONS, positions: positions }; -} - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var ADD_TRACK_FROM_URL = exports.ADD_TRACK_FROM_URL = "ADD_TRACK_FROM_URL"; -var CLOSE_WINAMP = exports.CLOSE_WINAMP = "CLOSE_WINAMP"; -var CLOSE_EQUALIZER_WINDOW = exports.CLOSE_EQUALIZER_WINDOW = "CLOSE_EQUALIZER_WINDOW"; -var IS_PLAYING = exports.IS_PLAYING = "IS_PLAYING"; -var IS_STOPPED = exports.IS_STOPPED = "IS_STOPPED"; -var PAUSE = exports.PAUSE = "PAUSE"; -var PLAY = exports.PLAY = "PLAY"; -var SEEK_TO_PERCENT_COMPLETE = exports.SEEK_TO_PERCENT_COMPLETE = "SEEK_TO_PERCENT_COMPLETE"; -var SET_BALANCE = exports.SET_BALANCE = "SET_BALANCE"; -var SET_BAND_VALUE = exports.SET_BAND_VALUE = "SET_BAND_VALUE"; -var SET_FOCUS = exports.SET_FOCUS = "SET_FOCUS"; -var SET_BAND_FOCUS = exports.SET_BAND_FOCUS = "SET_BAND_FOCUS"; -var SET_FOCUSED_WINDOW = exports.SET_FOCUSED_WINDOW = "SET_FOCUSED_WINDOW"; -var SET_MEDIA = exports.SET_MEDIA = "SET_MEDIA"; -var SET_SCRUB_POSITION = exports.SET_SCRUB_POSITION = "SET_SCRUB_POSITION"; -var SET_SKIN_DATA = exports.SET_SKIN_DATA = "SET_SKIN_DATA"; -var SET_VOLUME = exports.SET_VOLUME = "SET_VOLUME"; -var START_WORKING = exports.START_WORKING = "START_WORKING"; -var STEP_MARQUEE = exports.STEP_MARQUEE = "STEP_MARQUEE"; -var STOP = exports.STOP = "STOP"; -var STOP_WORKING = exports.STOP_WORKING = "STOP_WORKING"; -var TOGGLE_DOUBLESIZE_MODE = exports.TOGGLE_DOUBLESIZE_MODE = "TOGGLE_DOUBLESIZE_MODE"; -var TOGGLE_EQUALIZER_WINDOW = exports.TOGGLE_EQUALIZER_WINDOW = "TOGGLE_EQUALIZER_WINDOW"; -var TOGGLE_PLAYLIST_WINDOW = exports.TOGGLE_PLAYLIST_WINDOW = "TOGGLE_PLAYLIST_WINDOW"; -var SET_EQ_AUTO = exports.SET_EQ_AUTO = "SET_EQ_AUTO"; -var SET_EQ_ON = exports.SET_EQ_ON = "SET_EQ_ON"; -var SET_EQ_OFF = exports.SET_EQ_OFF = "SET_EQ_OFF"; -var TOGGLE_LLAMA_MODE = exports.TOGGLE_LLAMA_MODE = "TOGGLE_LLAMA_MODE"; -var TOGGLE_REPEAT = exports.TOGGLE_REPEAT = "TOGGLE_REPEAT"; -var TOGGLE_MAIN_SHADE_MODE = exports.TOGGLE_MAIN_SHADE_MODE = "TOGGLE_MAIN_SHADE_MODE"; -var TOGGLE_EQUALIZER_SHADE_MODE = exports.TOGGLE_EQUALIZER_SHADE_MODE = "TOGGLE_EQUALIZER_SHADE_MODE"; -var TOGGLE_PLAYLIST_SHADE_MODE = exports.TOGGLE_PLAYLIST_SHADE_MODE = "TOGGLE_PLAYLIST_SHADE_MODE"; -var TOGGLE_SHUFFLE = exports.TOGGLE_SHUFFLE = "TOGGLE_SHUFFLE"; -var TOGGLE_TIME_MODE = exports.TOGGLE_TIME_MODE = "TOGGLE_TIME_MODE"; -var TOGGLE_VISUALIZER_STYLE = exports.TOGGLE_VISUALIZER_STYLE = "TOGGLE_VISUALIZER_STYLE"; -var UNSET_FOCUS = exports.UNSET_FOCUS = "UNSET_FOCUS"; -var UPDATE_TIME_ELAPSED = exports.UPDATE_TIME_ELAPSED = "UPDATE_TIME_ELAPSED"; -var SET_USER_MESSAGE = exports.SET_USER_MESSAGE = "SET_USER_MESSAGE"; -var UNSET_USER_MESSAGE = exports.UNSET_USER_MESSAGE = "UNSET_USER_MESSAGE"; -var SET_PLAYLIST_SCROLL_POSITION = exports.SET_PLAYLIST_SCROLL_POSITION = "SET_PLAYLIST_SCROLL_POSITION"; -var CLICKED_TRACK = exports.CLICKED_TRACK = "CLICKED_TRACK"; -var CTRL_CLICKED_TRACK = exports.CTRL_CLICKED_TRACK = "CTRL_CLICKED_TRACK"; -var SHIFT_CLICKED_TRACK = exports.SHIFT_CLICKED_TRACK = "SHIFT_CLICKED_TRACK"; -var SELECT_ALL = exports.SELECT_ALL = "SELECT_ALL"; -var SELECT_ZERO = exports.SELECT_ZERO = "SELECT_ZERO"; -var INVERT_SELECTION = exports.INVERT_SELECTION = "INVERT_SELECTION"; -var PLAYLIST_SIZE_CHANGED = exports.PLAYLIST_SIZE_CHANGED = "PLAYLIST_SIZE_CHANGED"; -var REMOVE_ALL_TRACKS = exports.REMOVE_ALL_TRACKS = "REMOVE_ALL_TRACKS"; -var CROP_TRACKS = exports.CROP_TRACKS = "CROP_TRACKS"; -var FILE_INFO = exports.FILE_INFO = "FILE_INFO"; -var REMOVE_TRACKS = exports.REMOVE_TRACKS = "REMOVE_TRACKS"; -var SET_AVALIABLE_SKINS = exports.SET_AVALIABLE_SKINS = "SET_AVALIABLE_SKINS"; -var REVERSE_LIST = exports.REVERSE_LIST = "REVERSE_LIST"; -var RANDOMIZE_LIST = exports.RANDOMIZE_LIST = "RANDOMIZE_LIST"; -var SET_TRACK_ORDER = exports.SET_TRACK_ORDER = "SET_TRACK_ORDER"; -var PLAY_TRACK = exports.PLAY_TRACK = "PLAY_TRACK"; -var BUFFER_TRACK = exports.BUFFER_TRACK = "BUFFER_TRACK"; -var DRAG_SELECTED = exports.DRAG_SELECTED = "DRAG_SELECTED"; -var SET_MEDIA_TAGS = exports.SET_MEDIA_TAGS = "SET_MEDIA_TAGS"; -var SET_MEDIA_DURATION = exports.SET_MEDIA_DURATION = "SET_MEDIA_DURATION"; -var OPEN_GEN_WINDOW = exports.OPEN_GEN_WINDOW = "OPEN_GEN_WINDOW"; -var CLOSE_GEN_WINDOW = exports.CLOSE_GEN_WINDOW = "CLOSE_GEN_WINDOW"; -var MEDIA_TAG_REQUEST_INITIALIZED = exports.MEDIA_TAG_REQUEST_INITIALIZED = "MEDIA_TAG_REQUEST_INITIALIZED"; -var MEDIA_TAG_REQUEST_FAILED = exports.MEDIA_TAG_REQUEST_FAILED = "MEDIA_TAG_REQUEST_FAILED"; -var NETWORK_CONNECTED = exports.NETWORK_CONNECTED = "NETWORK_CONNECTED"; -var NETWORK_DISCONNECTED = exports.NETWORK_DISCONNECTED = "NETWORK_DISCONNECTED"; -var UPDATE_WINDOW_POSITIONS = exports.UPDATE_WINDOW_POSITIONS = "UPDATE_WINDOW_POSITIONS"; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -exports.default = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.3' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/* global define */ - -(function () { - 'use strict'; - - var hasOwn = {}.hasOwnProperty; - - function classNames () { - var classes = []; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - if (!arg) continue; - - var argType = typeof arg; - - if (argType === 'string' || argType === 'number') { - classes.push(arg); - } else if (Array.isArray(arg)) { - classes.push(classNames.apply(null, arg)); - } else if (argType === 'object') { - for (var key in arg) { - if (hasOwn.call(arg, key) && arg[key]) { - classes.push(key); - } - } - } - } - - return classes.join(' '); - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = classNames; - } else if (true) { - // register as 'classnames', consistent with npm package name - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { - return classNames; - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { - window.classNames = classNames; - } -}()); - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _defineProperty = __webpack_require__(103); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - (0, _defineProperty2.default)(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; -}(); - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var BANDS = exports.BANDS = [60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000]; - -var WINDOWS = exports.WINDOWS = { - MAIN: "MAIN", - PLAYLIST: "PLAYLIST", - EQUALIZER: "EQUALIZER" -}; - -var LOAD_STYLE = exports.LOAD_STYLE = { - BUFFER: "BUFFER", - PLAY: "PLAY" -}; - -var MEDIA_TAG_REQUEST_STATUS = exports.MEDIA_TAG_REQUEST_STATUS = { - INITIALIZED: "INITIALIZED", - FAILED: "FAILED", - COMPLETE: "COMPLETE", - NOT_REQUESTED: "NOT_REQUESTED" -}; - -var UTF8_ELLIPSIS = exports.UTF8_ELLIPSIS = "\u2026"; -var CHARACTER_WIDTH = exports.CHARACTER_WIDTH = 5; -var PLAYLIST_RESIZE_SEGMENT_WIDTH = exports.PLAYLIST_RESIZE_SEGMENT_WIDTH = 25; -var PLAYLIST_RESIZE_SEGMENT_HEIGHT = exports.PLAYLIST_RESIZE_SEGMENT_HEIGHT = 29; -var MIN_PLAYLIST_WINDOW_WIDTH = exports.MIN_PLAYLIST_WINDOW_WIDTH = 275; -var TRACK_HEIGHT = exports.TRACK_HEIGHT = 13; -var LETTERS = exports.LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""); - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _typeof2 = __webpack_require__(124); - -var _typeof3 = _interopRequireDefault(_typeof2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; -}; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _setPrototypeOf = __webpack_require__(259); - -var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); - -var _create = __webpack_require__(263); - -var _create2 = _interopRequireDefault(_create); - -var _typeof2 = __webpack_require__(124); - -var _typeof3 = _interopRequireDefault(_typeof2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass))); - } - - subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass; -}; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(16); -var core = __webpack_require__(5); -var ctx = __webpack_require__(23); -var hide = __webpack_require__(27); -var PROTOTYPE = 'prototype'; - -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var IS_WRAP = type & $export.W; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE]; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; - var key, own, out; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - if (own && key in exports) continue; - // export native or passed - out = own ? target[key] : source[key]; - // prevent global pollution for namespaces - exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] - // bind timers to global for call from export context - : IS_BIND && own ? ctx(out, global) - // wrap global constructors for prevent change them in library - : IS_WRAP && target[key] == out ? (function (C) { - var F = function (a, b, c) { - if (this instanceof C) { - switch (arguments.length) { - case 0: return new C(); - case 1: return new C(a); - case 2: return new C(a, b); - } return new C(a, b, c); - } return C.apply(this, arguments); - }; - F[PROTOTYPE] = C[PROTOTYPE]; - return F; - // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% - if (IS_PROTO) { - (exports.virtual || (exports.virtual = {}))[key] = out; - // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% - if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); - } - } -}; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _assign = __webpack_require__(80); - -var _assign2 = _interopRequireDefault(_assign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _assign2.default || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.arrayWithout = exports.arrayWith = exports.spliceIn = exports.filterObject = exports.mapObject = exports.moveSelected = exports.sort = exports.shuffle = exports.arraysAreEqual = exports.segment = exports.merge = exports.denormalize = exports.normalize = exports.percentToIndex = exports.percentToRange = exports.toPercent = exports.base64FromArrayBuffer = exports.clamp = exports.parseIni = exports.parseViscolors = exports.getTimeStr = exports.getTimeObj = undefined; - -var _from = __webpack_require__(60); - -var _from2 = _interopRequireDefault(_from); - -var _set = __webpack_require__(39); - -var _set2 = _interopRequireDefault(_set); - -var _keys = __webpack_require__(24); - -var _keys2 = _interopRequireDefault(_keys); - -var _getIterator2 = __webpack_require__(31); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _assign = __webpack_require__(80); - -var _assign2 = _interopRequireDefault(_assign); - -var _toConsumableArray2 = __webpack_require__(82); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - -exports.downloadURI = downloadURI; -exports.debounce = debounce; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var getTimeObj = exports.getTimeObj = function getTimeObj(time) { - if (time == null) { - // If we clean up `` we don't need to do this any more. - return { - minutesFirstDigit: " ", - minutesSecondDigit: " ", - secondsFirstDigit: " ", - secondsSecondDigit: " " - }; - } - var minutes = Math.floor(time / 60); - var seconds = time % 60; - - var digits = time == null ? [" ", " ", " ", " "] : [Math.floor(minutes / 10), Math.floor(minutes % 10), Math.floor(seconds / 10), Math.floor(seconds % 10)]; - - var minutesFirstDigit = digits[0], - minutesSecondDigit = digits[1], - secondsFirstDigit = digits[2], - secondsSecondDigit = digits[3]; - - - return { - minutesFirstDigit: minutesFirstDigit, - minutesSecondDigit: minutesSecondDigit, - secondsFirstDigit: secondsFirstDigit, - secondsSecondDigit: secondsSecondDigit - }; -}; - -var getTimeStr = exports.getTimeStr = function getTimeStr(time) { - var truncate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - - if (time == null) { - return ""; - } - - var _getTimeObj = getTimeObj(time), - minutesFirstDigit = _getTimeObj.minutesFirstDigit, - minutesSecondDigit = _getTimeObj.minutesSecondDigit, - secondsFirstDigit = _getTimeObj.secondsFirstDigit, - secondsSecondDigit = _getTimeObj.secondsSecondDigit; - - return [truncate ? minutesFirstDigit || "" : minutesFirstDigit, minutesSecondDigit, ":", secondsFirstDigit, secondsSecondDigit].join(""); -}; - -var parseViscolors = exports.parseViscolors = function parseViscolors(text) { - var entries = text.split("\n"); - var regex = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/; - var colors = []; - // changed to a hard number to deal with empty lines at the end... - // plus it's only meant to be an exact quantity of numbers anyway. - // - @PAEz - for (var i = 0; i < 24; i++) { - var matches = regex.exec(entries[i]); - if (matches) { - colors[i] = "rgb(" + matches.slice(1, 4).join(",") + ")"; - } else { - console.error("Error in VISCOLOR.TXT on line " + i); - } - } - return colors; -}; - -var SECTION_REGEX = /^\s*\[(.+?)\]\s*$/; -var PROPERTY_REGEX = /^\s*([^;].*)\s*=\s*(.*)\s*$/; - -var parseIni = exports.parseIni = function parseIni(text) { - var section = void 0, - match = void 0; - return text.split(/[\r\n]+/g).reduce(function (data, line) { - if ((match = line.match(PROPERTY_REGEX)) && section != null) { - var value = match[2].replace(/(^")|("$)|(^')|('$)/gi, ""); - data[section][match[1].trim().toLowerCase()] = value; - } else if (match = line.match(SECTION_REGEX)) { - section = match[1].trim().toLowerCase(); - data[section] = {}; - } - return data; - }, {}); -}; - -var clamp = exports.clamp = function clamp(value, min, max) { - return Math.min(Math.max(value, min), max); -}; - -var base64FromArrayBuffer = exports.base64FromArrayBuffer = function base64FromArrayBuffer(arrayBuffer) { - var dataView = new Uint8Array(arrayBuffer); - return window.btoa(String.fromCharCode.apply(String, (0, _toConsumableArray3.default)(dataView))); -}; - -// https://stackoverflow.com/a/15832662/1263117 -function downloadURI(uri, name) { - var link = document.createElement("a"); - link.download = name; - link.href = uri; - window.document.body.appendChild(link); - link.click(); - window.document.body.removeChild(link); -} - -var toPercent = exports.toPercent = function toPercent(min, max, value) { - return (value - min) / (max - min); -}; - -var percentToRange = exports.percentToRange = function percentToRange(percent, min, max) { - return min + Math.round(percent * (max - min)); -}; - -var percentToIndex = exports.percentToIndex = function percentToIndex(percent, length) { - return percentToRange(percent, 0, length - 1); -}; - -var rebound = function rebound(oldMin, oldMax, newMin, newMax) { - return function (oldValue) { - return percentToRange(toPercent(oldMin, oldMax, oldValue), newMin, newMax); - }; -}; - -// Convert a .eqf value to a 1-100 -var normalize = exports.normalize = rebound(1, 64, 1, 100); - -// Convert a 0-100 to an .eqf value -var denormalize = exports.denormalize = rebound(1, 100, 1, 64); - -// Merge a `source` object to a `target` recursively -var merge = exports.merge = function merge(target, source) { - // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(source)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - - if (source[key] instanceof Object) (0, _assign2.default)(source[key], merge(target[key], source[key])); - } - - // Join `target` and modified `source` - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - (0, _assign2.default)(target || {}, source); - return target; -}; - -// Maps a value in a range (defined my min/max) to a value in an array (options). -var segment = exports.segment = function segment(min, max, value, newValues) { - var ratio = toPercent(min, max, value); - /* - | 0 | 1 | 2 | - 0 1 2 3 - */ - return newValues[percentToIndex(ratio, newValues.length)]; -}; - -var arraysAreEqual = exports.arraysAreEqual = function arraysAreEqual(a, b) { - return a.length === b.length && a.every(function (value, i) { - return value === b[i]; - }); -}; - -// https://bost.ocks.org/mike/shuffle/ -// Shuffle an array in O(n) -var shuffle = exports.shuffle = function shuffle(array) { - var sorted = [].concat((0, _toConsumableArray3.default)(array)); - var m = sorted.length; - - // While there remain elements to shuffle… - while (m) { - // Pick a remaining element… - var i = Math.floor(Math.random() * m--); - - // And swap it with the current element. - var val = sorted[m]; - sorted[m] = sorted[i]; - sorted[i] = val; - } - - return sorted; -}; - -var sort = exports.sort = function sort(array, iteratee) { - return [].concat((0, _toConsumableArray3.default)(array)).sort(function (a, b) { - var aKey = iteratee(a); - var bKey = iteratee(b); - if (aKey < bKey) { - return -1; - } else if (aKey > bKey) { - return 1; - } - return 0; - }); -}; - -var moveSelected = exports.moveSelected = function moveSelected(arr, isSelected, offset) { - var newArr = new Array(arr.length); - var next = 0; - for (var i = 0; i < newArr.length; i++) { - var from = i - offset; - // Is a value supposed to move here? - if (from >= 0 && from < arr.length && isSelected(from)) { - newArr[i] = arr[from]; - } else { - while (next < arr.length && isSelected(next)) { - next++; - } - newArr[i] = arr[next]; - next++; - } - } - return newArr; -}; - -var mapObject = exports.mapObject = function mapObject(obj, iteratee) { - return ( - // TODO: Could return the original reference if no values change - (0, _keys2.default)(obj).reduce(function (newObj, key) { - newObj[key] = iteratee(obj[key], key); - return newObj; - }, {}) - ); -}; - -var filterObject = exports.filterObject = function filterObject(obj, predicate) { - return ( - // TODO: Could return the original reference if no values change - (0, _keys2.default)(obj).reduce(function (newObj, key) { - if (predicate(obj[key], key)) { - newObj[key] = obj[key]; - } - return newObj; - }, {}) - ); -}; - -var spliceIn = exports.spliceIn = function spliceIn(original, start, newValues) { - var newArr = [].concat((0, _toConsumableArray3.default)(original)); - newArr.splice.apply(newArr, [start, 0].concat((0, _toConsumableArray3.default)(newValues))); - return newArr; -}; - -var arrayWith = exports.arrayWith = function arrayWith(arr, value) { - var s = new _set2.default(arr); - s.add(value); - return (0, _from2.default)(s); -}; - -var arrayWithout = exports.arrayWithout = function arrayWithout(arr, value) { - var s = new _set2.default(arr); - s.delete(value); - return (0, _from2.default)(s); -}; - -function debounce(func, delay) { - var token = void 0; - return function () { - var _this = this; - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - if (token != null) { - clearTimeout(token); - } - token = setTimeout(function () { - func.apply(_this, args); - }, delay); - }; -} - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(70)('wks'); -var uid = __webpack_require__(55); -var Symbol = __webpack_require__(16).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(248), __esModule: true }; - -/***/ }), -/* 16 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -if (false) { - var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' && - Symbol.for && - Symbol.for('react.element')) || - 0xeac7; - - var isValidElement = function(object) { - return typeof object === 'object' && - object !== null && - object.$$typeof === REACT_ELEMENT_TYPE; - }; - - // By explicitly using `prop-types` you are opting into new development behavior. - // http://fb.me/prop-types-in-prod - var throwOnDirectAccess = true; - module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess); -} else { - // By explicitly using `prop-types` you are opting into new production behavior. - // http://fb.me/prop-types-in-prod - module.exports = __webpack_require__(164)(); -} - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getWindowGraph = exports.getPlaylistURL = exports.getMediaText = exports.getMinimalMediaText = exports.getCurrentTrackDisplayName = exports.getTrackDisplayName = exports.getDuration = exports.getPlaylist = exports.getVisibleTracks = exports.getTrackIsVisibleFunction = exports.getVisibleTrackIds = exports.getScrollOffset = exports.getPlaylistScrollPosition = exports.getOverflowTrackCount = exports.getNumberOfVisibleTracks = exports.nextTrack = exports.getCurrentTrackId = exports.getCurrentTrackNumber = exports.getCurrentTrackIndex = exports.getRunningTimeMessage = exports.getSelectedTrackObjects = exports.getOrderedTracks = exports.getTrackCount = exports.getTracks = exports.getEqfData = undefined; - -var _extends2 = __webpack_require__(12); - -var _extends3 = _interopRequireDefault(_extends2); - -var _keys = __webpack_require__(24); - -var _keys2 = _interopRequireDefault(_keys); - -var _getIterator2 = __webpack_require__(31); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _values = __webpack_require__(236); - -var _values2 = _interopRequireDefault(_values); - -exports.getWindowPositions = getWindowPositions; -exports.getPlaylistWindowPixelSize = getPlaylistWindowPixelSize; -exports.getWindowSizes = getWindowSizes; - -var _reselect = __webpack_require__(239); - -var _utils = __webpack_require__(13); - -var _constants = __webpack_require__(8); - -var _playlistHtml = __webpack_require__(240); - -var _playlist = __webpack_require__(113); - -var fromPlaylist = _interopRequireWildcard(_playlist); - -var _resizeUtils = __webpack_require__(121); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var getEqfData = exports.getEqfData = function getEqfData(state) { - var sliders = state.equalizer.sliders; - - var preset = { - name: "Entry1", - preamp: (0, _utils.denormalize)(sliders.preamp) - }; - _constants.BANDS.forEach(function (band) { - preset["hz" + band] = (0, _utils.denormalize)(sliders[band]); - }); - var eqfData = { - presets: [preset], - type: "Winamp EQ library file v1.1" - }; - return eqfData; -}; - -var getTracks = exports.getTracks = function getTracks(state) { - return state.playlist.tracks; -}; -var getTrackOrder = function getTrackOrder(state) { - return state.playlist.trackOrder; -}; - -var getTrackCount = exports.getTrackCount = (0, _reselect.createSelector)(getTrackOrder, function (trackOrder) { - return trackOrder.length; -}); - -var getOrderedTracks = exports.getOrderedTracks = (0, _reselect.createSelector)(getTracks, getTrackOrder, function (tracks, trackOrder) { - return trackOrder.filter(function (id) { - return tracks[id]; - }); -}); - -var getOrderedTrackObjects = (0, _reselect.createSelector)(getTracks, getOrderedTracks, function (tracks, trackOrder) { - return trackOrder.map(function (id) { - return tracks[id]; - }); -}); - -var getSelectedTrackObjects = exports.getSelectedTrackObjects = (0, _reselect.createSelector)(getOrderedTrackObjects, function (tracks) { - return tracks.filter(function (track) { - return track.selected; - }); -}); - -// If a duration is `null`, it counts as zero, which seems fine enough. -var runningTimeFromTracks = function runningTimeFromTracks(tracks) { - return tracks.reduce(function (time, track) { - return time + Number(track.duration); - }, 0); -}; - -var getTotalRunningTime = (0, _reselect.createSelector)(getOrderedTrackObjects, runningTimeFromTracks); - -var getSelectedRunningTime = (0, _reselect.createSelector)(getSelectedTrackObjects, runningTimeFromTracks); - -// Note: We should append "+" to these values if some of the tracks are of unknown time. -var getRunningTimeMessage = exports.getRunningTimeMessage = (0, _reselect.createSelector)(getTotalRunningTime, getSelectedRunningTime, function (totalRunningTime, selectedRunningTime) { - return (0, _utils.getTimeStr)(selectedRunningTime) + "/" + (0, _utils.getTimeStr)(totalRunningTime); -}); - -// TODO: use slectors to get memoization -var getCurrentTrackIndex = exports.getCurrentTrackIndex = function getCurrentTrackIndex(state) { - return state.playlist.trackOrder.indexOf(state.playlist.currentTrack); -}; - -var getCurrentTrackNumber = exports.getCurrentTrackNumber = (0, _reselect.createSelector)(getCurrentTrackIndex, function (currentTrackIndex) { - return currentTrackIndex + 1; -}); - -var getCurrentTrackId = exports.getCurrentTrackId = function getCurrentTrackId(state) { - return state.playlist.currentTrack; -}; - -var nextTrack = exports.nextTrack = function nextTrack(state) { - var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var trackOrder = state.playlist.trackOrder, - repeat = state.media.repeat; - - var trackCount = getTrackCount(state); - if (trackCount === 0) { - return null; - } - - var currentIndex = getCurrentTrackIndex(state); - - var nextIndex = currentIndex + n; - if (repeat) { - nextIndex = nextIndex % trackCount; - if (nextIndex < 0) { - // Handle wrapping around backwards - nextIndex += trackCount; - } - return trackOrder[nextIndex]; - } - - if (currentIndex === trackCount - 1 && n > 0) { - return null; - } else if (currentIndex === 0 && n < 0) { - return null; - } - - nextIndex = (0, _utils.clamp)(nextIndex, 0, trackCount - 1); - return trackOrder[nextIndex]; -}; - -var BASE_WINDOW_HEIGHT = 58; -var getNumberOfVisibleTracks = exports.getNumberOfVisibleTracks = function getNumberOfVisibleTracks(state) { - var playlistSize = state.display.playlistSize; - - return Math.floor((BASE_WINDOW_HEIGHT + _constants.PLAYLIST_RESIZE_SEGMENT_HEIGHT * playlistSize[1]) / _constants.TRACK_HEIGHT); -}; - -var getOverflowTrackCount = exports.getOverflowTrackCount = (0, _reselect.createSelector)(getTrackCount, getNumberOfVisibleTracks, function (trackCount, numberOfVisibleTracks) { - return Math.max(0, trackCount - numberOfVisibleTracks); -}); - -var _getPlaylistScrollPosition = function _getPlaylistScrollPosition(state) { - return state.display.playlistScrollPosition; -}; - -var getPlaylistScrollPosition = exports.getPlaylistScrollPosition = (0, _reselect.createSelector)(getOverflowTrackCount, _getPlaylistScrollPosition, function (overflowTrackCount, playlistScrollPosition) { - if (overflowTrackCount === 0) { - return 0; - } - return Math.round(Math.round(overflowTrackCount * playlistScrollPosition / 100) / overflowTrackCount * 100); -}); - -var getScrollOffset = exports.getScrollOffset = (0, _reselect.createSelector)(_getPlaylistScrollPosition, getTrackCount, getNumberOfVisibleTracks, function (playlistScrollPosition, trackCount, numberOfVisibleTracks) { - var overflow = Math.max(0, trackCount - numberOfVisibleTracks); - return (0, _utils.percentToIndex)(playlistScrollPosition / 100, overflow + 1); -}); - -var getVisibleTrackIds = exports.getVisibleTrackIds = (0, _reselect.createSelector)(getScrollOffset, getTrackOrder, getNumberOfVisibleTracks, function (offset, trackOrder, numberOfVisibleTracks) { - return trackOrder.slice(offset, offset + numberOfVisibleTracks); -}); - -var getTrackIsVisibleFunction = exports.getTrackIsVisibleFunction = (0, _reselect.createSelector)(getVisibleTrackIds, function (visibleTrackIds) { - return function (id) { - return visibleTrackIds.includes(id); - }; -}); - -var getVisibleTracks = exports.getVisibleTracks = (0, _reselect.createSelector)(getVisibleTrackIds, getTracks, function (visibleTrackIds, tracks) { - return visibleTrackIds.map(function (id) { - return tracks[id]; - }); -}); - -var getPlaylist = exports.getPlaylist = function getPlaylist(state) { - return state.playlist; -}; - -var getDuration = exports.getDuration = function getDuration(state) { - var currentTrack = state.playlist.tracks[state.playlist.currentTrack]; - return currentTrack && currentTrack.duration; -}; - -var getTrackDisplayName = exports.getTrackDisplayName = function getTrackDisplayName(state, trackId) { - return fromPlaylist.getTrackDisplayName(getPlaylist(state), trackId); -}; - -var getCurrentTrackDisplayName = exports.getCurrentTrackDisplayName = function getCurrentTrackDisplayName(state) { - var id = getCurrentTrackId(state); - return getTrackDisplayName(state, id); -}; - -var getMinimalMediaText = exports.getMinimalMediaText = (0, _reselect.createSelector)(getCurrentTrackNumber, getCurrentTrackDisplayName, function (trackNumber, name) { - return name == null ? null : trackNumber + ". " + name; -}); - -var getMediaText = exports.getMediaText = (0, _reselect.createSelector)(getMinimalMediaText, getDuration, function (minimalMediaText, duration) { - return minimalMediaText == null ? null : // TODO: Maybe the ` *** ` should actually be added by the marquee - minimalMediaText + " (" + (0, _utils.getTimeStr)(duration) + ") *** "; -}); - -var getNumberOfTracks = function getNumberOfTracks(state) { - return getTrackOrder(state).length; -}; -var getPlaylistDuration = (0, _reselect.createSelector)(getTracks, function (tracks) { - return (0, _values2.default)(tracks).reduce(function (total, track) { - return total + track.duration; - }, 0); -}); - -// TODO: Move to action creator -var getPlaylistURL = exports.getPlaylistURL = (0, _reselect.createSelector)(function (state) { - return state; -}, getNumberOfTracks, getPlaylistDuration, getTrackOrder, getTracks, function (state, numberOfTracks, playlistDuration, trackOrder, tracks) { - return (0, _playlistHtml.createPlaylistURL)({ - numberOfTracks: numberOfTracks, - averageTrackLength: (0, _utils.getTimeStr)(playlistDuration / numberOfTracks), - // TODO: Handle hours - playlistLengthMinutes: Math.floor(playlistDuration / 60), - playlistLengthSeconds: Math.floor(playlistDuration % 60), - tracks: trackOrder.map(function (id, i) { - return i + 1 + ". " + getTrackDisplayName(state, id) + " (" + (0, _utils.getTimeStr)(tracks[id].duration) + ")"; - }) - }); -}); - -function getWindowPositions(state) { - return state.windows.positions; -} - -var WINDOW_WIDTH = 275; -var WINDOW_HEIGHT = 116; -var DEFAUT_WINDOW_SIZE = { - height: WINDOW_HEIGHT, - width: WINDOW_WIDTH -}; -var SHADE_WINDOW_HEIGHT = 14; - -function getPlaylistWindowPixelSize(state) { - var playlistSize = state.display.playlistSize; - - return { - height: WINDOW_HEIGHT + playlistSize[1] * _constants.PLAYLIST_RESIZE_SEGMENT_HEIGHT, - width: _constants.MIN_PLAYLIST_WINDOW_WIDTH + playlistSize[0] * _constants.PLAYLIST_RESIZE_SEGMENT_WIDTH - }; -} - -function getGenericWindowSize(size, shade, doubled) { - var doubledMultiplier = doubled ? 2 : 1; - return { - height: (shade ? SHADE_WINDOW_HEIGHT : size.height) * doubledMultiplier, - width: size.width * doubledMultiplier - }; -} - -function getWindowSizes(state) { - var _state$display = state.display, - doubled = _state$display.doubled, - mainShade = _state$display.mainShade, - equalizerShade = _state$display.equalizerShade, - playlistShade = _state$display.playlistShade; - - var main = getGenericWindowSize(DEFAUT_WINDOW_SIZE, mainShade, doubled); - var equalizer = getGenericWindowSize(DEFAUT_WINDOW_SIZE, equalizerShade, doubled); - var playlist = getGenericWindowSize(getPlaylistWindowPixelSize(state), playlistShade, false // The playlist cannot be doubled - ); - return { main: main, equalizer: equalizer, playlist: playlist }; -} - -var getWindowGraph = exports.getWindowGraph = (0, _reselect.createSelector)(getWindowPositions, getWindowSizes, function (windowPositions, windowSizes) { - var windowData = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(windowPositions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - - windowData.push((0, _extends3.default)({ key: key }, windowPositions[key], windowSizes[key])); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return (0, _resizeUtils.generateGraph)(windowData); -}); - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(21); -var IE8_DOM_DEFINE = __webpack_require__(89); -var toPrimitive = __webpack_require__(67); -var dP = Object.defineProperty; - -exports.f = __webpack_require__(22) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(20); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -// Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(28)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -// optional / simple context binding -var aFunction = __webpack_require__(40); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(221), __esModule: true }; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(136); - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _promise = __webpack_require__(51); - -var _promise2 = _interopRequireDefault(_promise); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (fn) { - return function () { - var gen = fn.apply(this, arguments); - return new _promise2.default(function (resolve, reject) { - function step(key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - return _promise2.default.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); - } - } - - return step("next"); - }); - }; -}; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -var dP = __webpack_require__(19); -var createDesc = __webpack_require__(41); -module.exports = __webpack_require__(22) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(68); -var defined = __webpack_require__(64); -module.exports = function (it) { - return IObject(defined(it)); -}; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(223), __esModule: true }; - -/***/ }), -/* 32 */ -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function(useSourceMap) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - if(item[2]) { - return "@media " + item[2] + "{" + content + "}"; - } else { - return content; - } - }).join(""); - }; - - // import a list of modules into the list - list.i = function(modules, mediaQuery) { - if(typeof modules === "string") - modules = [[null, modules, ""]]; - var alreadyImportedModules = {}; - for(var i = 0; i < this.length; i++) { - var id = this[i][0]; - if(typeof id === "number") - alreadyImportedModules[id] = true; - } - for(i = 0; i < modules.length; i++) { - var item = modules[i]; - // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { - if(mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if(mediaQuery) { - item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; - } - list.push(item); - } - } - }; - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' - }); - - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} - -// Adapted from convert-source-map (MIT) -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - - return '/*# ' + data + ' */'; -} - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ - -var stylesInDom = {}; - -var memoize = function (fn) { - var memo; - - return function () { - if (typeof memo === "undefined") memo = fn.apply(this, arguments); - return memo; - }; -}; - -var isOldIE = memoize(function () { - // Test for IE <= 9 as proposed by Browserhacks - // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 - // Tests for existence of standard globals is to allow style-loader - // to operate correctly into non-standard environments - // @see https://github.com/webpack-contrib/style-loader/issues/177 - return window && document && document.all && !window.atob; -}); - -var getElement = (function (fn) { - var memo = {}; - - return function(selector) { - if (typeof memo[selector] === "undefined") { - var styleTarget = fn.call(this, selector); - // Special case to return head of iframe instead of iframe itself - if (styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch(e) { - styleTarget = null; - } - } - memo[selector] = styleTarget; - } - return memo[selector] - }; -})(function (target) { - return document.querySelector(target) -}); - -var singleton = null; -var singletonCounter = 0; -var stylesInsertedAtTop = []; - -var fixUrls = __webpack_require__(269); - -module.exports = function(list, options) { - if (typeof DEBUG !== "undefined" && DEBUG) { - if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment"); - } - - options = options || {}; - - options.attrs = typeof options.attrs === "object" ? options.attrs : {}; - - // Force single-tag solution on IE6-9, which has a hard limit on the # of