/******/ (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