diff --git a/.eslintrc b/.eslintrc index cb9e01d5..2bc1ff9a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -23,6 +23,7 @@ }, "rules": { + "arrow-body-style": ["error", "as-needed"], "arrow-parens": "error", "arrow-spacing": "error", "block-scoped-var": "warn", diff --git a/js/actionCreators.js b/js/actionCreators.js index d0f473e7..28ece710 100644 --- a/js/actionCreators.js +++ b/js/actionCreators.js @@ -89,14 +89,12 @@ export function toggleShuffle(mediaPlayer) { export function setSkinFromFile(skinFile) { return (dispatch) => { dispatch({type: 'START_LOADING'}); - skinParser(skinFile).then((skinData) => { - return dispatch({ - type: 'SET_SKIN_DATA', - skinImages: skinData.images, - skinColors: skinData.colors, - skinPlaylistStyle: skinData.playlistStyle - }); - }); + skinParser(skinFile).then((skinData) => dispatch({ + type: 'SET_SKIN_DATA', + skinImages: skinData.images, + skinColors: skinData.colors, + skinPlaylistStyle: skinData.playlistStyle + })); }; } @@ -117,13 +115,11 @@ export function openFileDialog(winamp) { export function setEqBand(mediaPlayer, band, value) { mediaPlayer.setEqBand(band, value); - return (dispatch) => { - return dispatch({ - type: 'SET_BAND_VALUE', - band, - value - }); - }; + return (dispatch) => dispatch({ + type: 'SET_BAND_VALUE', + band, + value + }); } function _setEqTo(mediaPlayer, value) { @@ -154,11 +150,9 @@ export function setEqToMin(mediaPlayer) { export function setPreamp(mediaPlayer, value) { mediaPlayer.setPreamp(value); - return (dispatch) => { - return dispatch({ - type: 'SET_BAND_VALUE', - band: 'preamp', - value - }); - }; + return (dispatch) => dispatch({ + type: 'SET_BAND_VALUE', + band: 'preamp', + value + }); } diff --git a/js/components/CharacterString.jsx b/js/components/CharacterString.jsx index 799ca8e7..9419d762 100644 --- a/js/components/CharacterString.jsx +++ b/js/components/CharacterString.jsx @@ -5,9 +5,7 @@ module.exports = (props) => { const text = `${props.children}`; const chars = text.split(''); return
- {chars.map((character, index) => { - return {character}; - })}; + {chars.map((character, index) => {character})};
; }; diff --git a/js/components/EqualizerWindow.jsx b/js/components/EqualizerWindow.jsx index 4f9827c0..9cda7042 100644 --- a/js/components/EqualizerWindow.jsx +++ b/js/components/EqualizerWindow.jsx @@ -18,9 +18,7 @@ import EqGraph from './EqGraph.jsx'; import '../../css/equalizer-window.css'; -const bandClassName = (band) => { - return `band-${band}`; -}; +const bandClassName = (band) => `band-${band}`; class EqualizerWindow extends React.Component { constructor(props) { diff --git a/js/components/Kbps.jsx b/js/components/Kbps.jsx index 5f986501..30f332f0 100644 --- a/js/components/Kbps.jsx +++ b/js/components/Kbps.jsx @@ -4,10 +4,8 @@ import {connect} from 'react-redux'; import CharacterString from './CharacterString.jsx'; -const Kbps = (props) => { - return - {props.kbps} - ; -}; +const Kbps = (props) => + {props.kbps} +; module.exports = connect((state) => state.media)(Kbps); diff --git a/js/components/Khz.jsx b/js/components/Khz.jsx index ac29eeae..d1249c9e 100644 --- a/js/components/Khz.jsx +++ b/js/components/Khz.jsx @@ -4,10 +4,8 @@ import {connect} from 'react-redux'; import CharacterString from './CharacterString.jsx'; -const Khz = (props) => { - return - {props.khz} - ; -}; +const Khz = (props) => + {props.khz} +; module.exports = connect((state) => state.media)(Khz); diff --git a/js/components/Marquee.jsx b/js/components/Marquee.jsx index 390350e1..2556650f 100644 --- a/js/components/Marquee.jsx +++ b/js/components/Marquee.jsx @@ -20,13 +20,9 @@ const getPositionText = (duration, seekToPercent) => { return `Seek to: ${newElapsedStr}/${durationStr} (${seekToPercent}%)`; }; -const getMediaText = (name, duration) => { - return `${name} (${getTimeStr(duration)}) *** `; -}; +const getMediaText = (name, duration) => `${name} (${getTimeStr(duration)}) *** `; -const getDoubleSizeModeText = (enabled) => { - return `${enabled ? 'Disable' : 'Enable'} doublesize mode`; -}; +const getDoubleSizeModeText = (enabled) => `${enabled ? 'Disable' : 'Enable'} doublesize mode`; const isLong = (text) => text.length > 30; diff --git a/js/components/MonoStereo.jsx b/js/components/MonoStereo.jsx index 45bf7079..8fe4557c 100644 --- a/js/components/MonoStereo.jsx +++ b/js/components/MonoStereo.jsx @@ -3,11 +3,9 @@ import {connect} from 'react-redux'; import classnames from 'classnames'; -const MonoStereo = (props) => { - return
-
-
-
; -}; +const MonoStereo = (props) =>
+
+
+
; module.exports = connect((state) => state.media)(MonoStereo); diff --git a/js/components/Skin.jsx b/js/components/Skin.jsx index 7fc8597d..bb65fe2d 100644 --- a/js/components/Skin.jsx +++ b/js/components/Skin.jsx @@ -145,9 +145,7 @@ Object.keys(FONT_LOOKUP).forEach((character) => { }); -const numExIsUsed = (skinImages) => { - return !!skinImages.DIGIT_0_EX; -}; +const numExIsUsed = (skinImages) => !!skinImages.DIGIT_0_EX; const Skin = (props) => { if (!props.skinImages) { diff --git a/js/skinParser.js b/js/skinParser.js index 68a23231..0defa820 100644 --- a/js/skinParser.js +++ b/js/skinParser.js @@ -2,16 +2,12 @@ import SKIN_SPRITES from './skinSprites'; import JSZip from '../node_modules/jszip/dist/jszip'; // Hack import {parseViscolors, parseIni} from './utils'; -const bmpUriFromFile = (file) => { - return `data:image/bmp;base64,${btoa(file.asBinary())}`; -}; +const bmpUriFromFile = (file) => `data:image/bmp;base64,${btoa(file.asBinary())}`; // "Promisify" processBuffer -const getBufferFromFile = (file) => { - return new Promise((resolve) => { - file.processBuffer(resolve); - }); -}; +const getBufferFromFile = (file) => new Promise((resolve) => { + file.processBuffer(resolve); +}); const getZipFromBuffer = (buffer) => new JSZip(buffer); @@ -24,59 +20,51 @@ const getSpriteSheetFilesFromZip = (zip) => { }; // Extract the CSS rules for a given file, and add them to the object -const extractCss = (spriteObj) => { - return new Promise((resolve) => { - const uri = bmpUriFromFile(spriteObj.file); - const img = new Image(); +const extractCss = (spriteObj) => new Promise((resolve) => { + const uri = bmpUriFromFile(spriteObj.file); + const img = new Image(); - img.onload = () => { - const canvas = document.createElement('canvas'); - const images = {}; - spriteObj.sprites.forEach((sprite) => { - canvas.height = sprite.height; - canvas.width = sprite.width; + img.onload = () => { + const canvas = document.createElement('canvas'); + const images = {}; + spriteObj.sprites.forEach((sprite) => { + canvas.height = sprite.height; + canvas.width = sprite.width; - const context = canvas.getContext('2d'); - context.drawImage(img, -sprite.x, -sprite.y); - const image = canvas.toDataURL(); - if (sprite.name) { - images[sprite.name] = image; - } - }); - resolve({...spriteObj, images}); - }; - img.src = uri; - }); -}; + const context = canvas.getContext('2d'); + context.drawImage(img, -sprite.x, -sprite.y); + const image = canvas.toDataURL(); + if (sprite.name) { + images[sprite.name] = image; + } + }); + resolve({...spriteObj, images}); + }; + img.src = uri; +}); // Extract the color data from a VISCOLOR.TXT file and add it to the object -const extractColors = (spriteObj) => { - return { - ...spriteObj, - colors: parseViscolors(spriteObj.file.asText()) - }; -}; +const extractColors = (spriteObj) => ({ + ...spriteObj, + colors: parseViscolors(spriteObj.file.asText()) +}); // Extract the color data from a VISCOLOR.TXT file and add it to the object -const extractPlaylistStyle = (spriteObj) => { - return { - ...spriteObj, - playlistStyle: parseIni(spriteObj.file.asText()) - }; -}; +const extractPlaylistStyle = (spriteObj) => ({ + ...spriteObj, + playlistStyle: parseIni(spriteObj.file.asText()) +}); -const getSkinDataFromFiles = (spriteObjs) => { - return Promise.all(spriteObjs.map((spriteObj) => { - switch (spriteObj.name) { - case 'VISCOLOR': - return extractColors(spriteObj); - case 'PLEDIT.TXT': - return extractPlaylistStyle(spriteObj); - default: - return extractCss(spriteObj); - } - })); -}; +const getSkinDataFromFiles = (spriteObjs) => Promise.all(spriteObjs.map((spriteObj) => { + switch (spriteObj.name) { + case 'VISCOLOR': + return extractColors(spriteObj); + case 'PLEDIT.TXT': + return extractPlaylistStyle(spriteObj); + default: + return extractCss(spriteObj); + } +})); const collectCssAndColors = (spriteObjs) => { let images = {}; @@ -102,12 +90,10 @@ const collectCssAndColors = (spriteObjs) => { }; // A promise that, given a File object, returns a skin style object -const parseSkin = (file) => { - return getBufferFromFile(file) +const parseSkin = (file) => getBufferFromFile(file) .then(getZipFromBuffer) .then(getSpriteSheetFilesFromZip) .then(getSkinDataFromFiles) .then(collectCssAndColors); -}; module.exports = parseSkin; diff --git a/js/snapUtils.js b/js/snapUtils.js index f88986ca..f9a591ed 100644 --- a/js/snapUtils.js +++ b/js/snapUtils.js @@ -10,14 +10,10 @@ export const right = (box) => box.x + box.width; export const near = (a, b) => Math.abs(a - b) < SNAP_DISTANCE; // http://stackoverflow.com/a/3269471/1263117 -export const overlapX = (a, b) => { - return left(a) <= right(b) + SNAP_DISTANCE && +export const overlapX = (a, b) => left(a) <= right(b) + SNAP_DISTANCE && left(b) <= right(a) + SNAP_DISTANCE; -}; -export const overlapY = (a, b) => { - return top(a) <= bottom(b) + SNAP_DISTANCE && +export const overlapY = (a, b) => top(a) <= bottom(b) + SNAP_DISTANCE && top(b) <= bottom(a) + SNAP_DISTANCE; -}; export const snap = (boxA, boxB) => { let x, y; diff --git a/js/utils.js b/js/utils.js index 020801a9..5d1f34f0 100644 --- a/js/utils.js +++ b/js/utils.js @@ -52,9 +52,7 @@ const parseIni = (text) => { return data; }; -const clamp = (value, min, max) => { - return Math.min(Math.max(value, min), max); -}; +const clamp = (value, min, max) => Math.min(Math.max(value, min), max); module.exports = { getTimeObj,