diff --git a/js/browser.js b/js/browser.js
index 54b32fc6..65d44767 100644
--- a/js/browser.js
+++ b/js/browser.js
@@ -1,6 +1,6 @@
-module.exports = function(base) {
+export default function(base) {
const supportsAudioApi = !!(base.AudioContext || base.webkitAudioContext);
const supportsCanvas = !!(base.document.createElement('canvas').getContext);
this.isCompatible = supportsAudioApi && supportsCanvas;
-};
+}
diff --git a/js/components/ActionButtons.jsx b/js/components/ActionButtons.jsx
index 3d8f65c3..23d42087 100644
--- a/js/components/ActionButtons.jsx
+++ b/js/components/ActionButtons.jsx
@@ -21,4 +21,4 @@ const mapDispatchToProps = (dispatch) => ({
stop: () => dispatch(stop())
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(ActionButtons);
+export default connect(mapStateToProps, mapDispatchToProps)(ActionButtons);
diff --git a/js/components/Balance.jsx b/js/components/Balance.jsx
index 4051e1fa..c6e580bc 100644
--- a/js/components/Balance.jsx
+++ b/js/components/Balance.jsx
@@ -34,4 +34,4 @@ const mapDispatchToProps = (dispatch) => ({
hideMarquee: () => dispatch({type: UNSET_FOCUS})
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Balance);
+export default connect(mapStateToProps, mapDispatchToProps)(Balance);
diff --git a/js/components/CharacterString.jsx b/js/components/CharacterString.jsx
index 7680e2f3..9df409b0 100644
--- a/js/components/CharacterString.jsx
+++ b/js/components/CharacterString.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import Character from './Character';
-module.exports = (props) => {
+export default (props) => {
const text = `${props.children}`;
const chars = text.split('');
return
diff --git a/js/components/Close.jsx b/js/components/Close.jsx
index 78b553a4..f9091ead 100644
--- a/js/components/Close.jsx
+++ b/js/components/Close.jsx
@@ -16,4 +16,4 @@ const mapDispatchToProps = (dispatch) => ({
closeWinamp: () => dispatch(close())
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Close);
+export default connect(mapStateToProps, mapDispatchToProps)(Close);
diff --git a/js/components/ClutterBar.jsx b/js/components/ClutterBar.jsx
index 9bf19721..477b73ef 100644
--- a/js/components/ClutterBar.jsx
+++ b/js/components/ClutterBar.jsx
@@ -32,4 +32,4 @@ const mapDispatchToProps = (dispatch) => ({
}
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(ClutterBar);
+export default connect(mapStateToProps, mapDispatchToProps)(ClutterBar);
diff --git a/js/components/ContextMenu.jsx b/js/components/ContextMenu.jsx
index 2f6b9c40..60c3ed1f 100644
--- a/js/components/ContextMenu.jsx
+++ b/js/components/ContextMenu.jsx
@@ -67,4 +67,4 @@ const mapDispatchToProps = (dispatch, ownProps) => ({
setSkin: (filename) => dispatch(setSkinFromFilename(filename))
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(ContextMenu);
+export default connect(mapStateToProps, mapDispatchToProps)(ContextMenu);
diff --git a/js/components/DragTarget.jsx b/js/components/DragTarget.jsx
index a3cc1cc9..5f161615 100644
--- a/js/components/DragTarget.jsx
+++ b/js/components/DragTarget.jsx
@@ -27,4 +27,4 @@ class DragTarget extends React.Component {
}
}
-module.exports = DragTarget;
+export default DragTarget;
diff --git a/js/components/Eject.jsx b/js/components/Eject.jsx
index 211ffc3b..84edd458 100644
--- a/js/components/Eject.jsx
+++ b/js/components/Eject.jsx
@@ -14,4 +14,4 @@ const mapDispatchToProps = (dispatch, ownProps) => ({
openFileDialog: () => dispatch(openFileDialog(ownProps.fileInput))
});
-module.exports = connect(() => ({}), mapDispatchToProps)(Eject);
+export default connect(() => ({}), mapDispatchToProps)(Eject);
diff --git a/js/components/EqAuto.jsx b/js/components/EqAuto.jsx
index 8334969c..70af76f6 100644
--- a/js/components/EqAuto.jsx
+++ b/js/components/EqAuto.jsx
@@ -26,4 +26,4 @@ class EqAuto extends React.Component {
}
}
-module.exports = connect((state) => state.equalizer)(EqAuto);
+export default connect((state) => state.equalizer)(EqAuto);
diff --git a/js/components/EqOn.jsx b/js/components/EqOn.jsx
index 77cba08f..df898a9a 100644
--- a/js/components/EqOn.jsx
+++ b/js/components/EqOn.jsx
@@ -26,4 +26,4 @@ class EqOn extends React.Component {
}
}
-module.exports = connect((state) => state.equalizer)(EqOn);
+export default connect((state) => state.equalizer)(EqOn);
diff --git a/js/components/EqToggleButton.jsx b/js/components/EqToggleButton.jsx
index 90aba899..e669b22e 100644
--- a/js/components/EqToggleButton.jsx
+++ b/js/components/EqToggleButton.jsx
@@ -21,4 +21,4 @@ const mapDispatchToProps = (dispatch) => ({
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(EqToggleButton);
+export default connect(mapStateToProps, mapDispatchToProps)(EqToggleButton);
diff --git a/js/components/EqualizerWindow.jsx b/js/components/EqualizerWindow.jsx
index ea0f0310..ec425df6 100644
--- a/js/components/EqualizerWindow.jsx
+++ b/js/components/EqualizerWindow.jsx
@@ -80,4 +80,4 @@ const mapDispatchToProps = (dispatch) => ({
dispatch
});
-module.exports = connect((state) => state, mapDispatchToProps)(EqualizerWindow);
+export default connect((state) => state, mapDispatchToProps)(EqualizerWindow);
diff --git a/js/components/Kbps.jsx b/js/components/Kbps.jsx
index 79fb425b..54638d8a 100644
--- a/js/components/Kbps.jsx
+++ b/js/components/Kbps.jsx
@@ -8,4 +8,4 @@ const Kbps = (props) =>
{props.kbps}
;
-module.exports = connect((state) => state.media)(Kbps);
+export default connect((state) => state.media)(Kbps);
diff --git a/js/components/Khz.jsx b/js/components/Khz.jsx
index 3a94f84c..e926b89b 100644
--- a/js/components/Khz.jsx
+++ b/js/components/Khz.jsx
@@ -8,4 +8,4 @@ const Khz = (props) =>
{props.khz}
;
-module.exports = connect((state) => state.media)(Khz);
+export default connect((state) => state.media)(Khz);
diff --git a/js/components/MonoStereo.jsx b/js/components/MonoStereo.jsx
index 8fe4557c..43280c86 100644
--- a/js/components/MonoStereo.jsx
+++ b/js/components/MonoStereo.jsx
@@ -8,4 +8,4 @@ const MonoStereo = (props) =>
;
-module.exports = connect((state) => state.media)(MonoStereo);
+export default connect((state) => state.media)(MonoStereo);
diff --git a/js/components/PlaylistWindow.jsx b/js/components/PlaylistWindow.jsx
index 4d4a273d..baaae8cf 100644
--- a/js/components/PlaylistWindow.jsx
+++ b/js/components/PlaylistWindow.jsx
@@ -32,4 +32,4 @@ const PlaylistWindow = (props) => {
);
};
-module.exports = connect((state) => state.display.skinPlaylistStyle)(PlaylistWindow);
+export default connect((state) => state.display.skinPlaylistStyle)(PlaylistWindow);
diff --git a/js/components/Position.jsx b/js/components/Position.jsx
index 7ea77da1..77d745f2 100644
--- a/js/components/Position.jsx
+++ b/js/components/Position.jsx
@@ -57,4 +57,4 @@ const mapDispatchToProps = (dispatch) => ({
}
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Position);
+export default connect(mapStateToProps, mapDispatchToProps)(Position);
diff --git a/js/components/Repeat.jsx b/js/components/Repeat.jsx
index 6d2f439b..7c333b48 100644
--- a/js/components/Repeat.jsx
+++ b/js/components/Repeat.jsx
@@ -21,4 +21,4 @@ const mapDispatchToProps = (dispatch) => ({
handleClick: () => dispatch(toggleRepeat())
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Repeat);
+export default connect(mapStateToProps, mapDispatchToProps)(Repeat);
diff --git a/js/components/Shade.jsx b/js/components/Shade.jsx
index b7778ecb..17b22c3f 100644
--- a/js/components/Shade.jsx
+++ b/js/components/Shade.jsx
@@ -9,4 +9,4 @@ const mapDispatchToProps = (dispatch) => ({
handleClick: () => dispatch({type: TOGGLE_SHADE_MODE})
});
-module.exports = connect(() => ({}), mapDispatchToProps)(Shade);
+export default connect(() => ({}), mapDispatchToProps)(Shade);
diff --git a/js/components/ShadeTime.jsx b/js/components/ShadeTime.jsx
index d73604b8..fab1a32f 100644
--- a/js/components/ShadeTime.jsx
+++ b/js/components/ShadeTime.jsx
@@ -29,4 +29,4 @@ class Time extends React.Component {
}
}
-module.exports = connect((state) => state.media)(Time);
+export default connect((state) => state.media)(Time);
diff --git a/js/components/Shuffle.jsx b/js/components/Shuffle.jsx
index 9fe170f0..727ddc3e 100644
--- a/js/components/Shuffle.jsx
+++ b/js/components/Shuffle.jsx
@@ -18,4 +18,4 @@ const mapStateToProps = (state) => ({
const mapDispatchToProps = (dispatch) => ({
handleClick: () => dispatch(toggleShuffle())
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Shuffle);
+export default connect(mapStateToProps, mapDispatchToProps)(Shuffle);
diff --git a/js/components/Skin.jsx b/js/components/Skin.jsx
index bb65fe2d..bfcc2278 100644
--- a/js/components/Skin.jsx
+++ b/js/components/Skin.jsx
@@ -168,4 +168,4 @@ const Skin = (props) => {
return ;
};
-module.exports = connect((state) => ({skinImages: state.display.skinImages}))(Skin);
+export default connect((state) => ({skinImages: state.display.skinImages}))(Skin);
diff --git a/js/components/Time.jsx b/js/components/Time.jsx
index 784832af..4306d340 100644
--- a/js/components/Time.jsx
+++ b/js/components/Time.jsx
@@ -24,4 +24,4 @@ const mapDispatchToProps = (dispatch) => ({
toggleTimeMode: () => dispatch({type: TOGGLE_TIME_MODE})
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Time);
+export default connect(mapStateToProps, mapDispatchToProps)(Time);
diff --git a/js/components/Visualizer.jsx b/js/components/Visualizer.jsx
index dce1ade0..45ed4894 100644
--- a/js/components/Visualizer.jsx
+++ b/js/components/Visualizer.jsx
@@ -200,4 +200,4 @@ const mapDispatchToProps = (dispatch) => ({
toggleVisualizer: () => dispatch({type: TOGGLE_VISUALIZER_STYLE})
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Visualizer);
+export default connect(mapStateToProps, mapDispatchToProps)(Visualizer);
diff --git a/js/components/Volume.jsx b/js/components/Volume.jsx
index b44152fa..592f67b9 100644
--- a/js/components/Volume.jsx
+++ b/js/components/Volume.jsx
@@ -36,4 +36,4 @@ const mapDispatchToProps = (dispatch) => ({
setVolume: (e) => dispatch(setVolume(e.target.value))
});
-module.exports = connect(mapStateToProps, mapDispatchToProps)(Volume);
+export default connect(mapStateToProps, mapDispatchToProps)(Volume);
diff --git a/js/components/WindowManager.jsx b/js/components/WindowManager.jsx
index 1662d109..97c4f1a2 100644
--- a/js/components/WindowManager.jsx
+++ b/js/components/WindowManager.jsx
@@ -140,4 +140,4 @@ class WindowManager extends React.Component {
);
}
}
-module.exports = WindowManager;
+export default WindowManager;
diff --git a/js/hotkeys.js b/js/hotkeys.js
index 5dd80591..740cb9ff 100644
--- a/js/hotkeys.js
+++ b/js/hotkeys.js
@@ -14,7 +14,7 @@ import {
TOGGLE_LLAMA_MODE
} from './actionTypes';
-module.exports = function(winamp, {dispatch}) {
+export default function(winamp, {dispatch}) {
let keylog = [];
const trigger = [
78, // N
diff --git a/js/media.js b/js/media.js
index d83279dd..34e88a2f 100644
--- a/js/media.js
+++ b/js/media.js
@@ -2,7 +2,7 @@
import {BANDS} from './constants';
import MyFile from './myFile';
-module.exports = {
+export default {
_context: new (window.AudioContext || window.webkitAudioContext)(),
_source: null,
_buffer: null,
diff --git a/js/myFile.js b/js/myFile.js
index b48ed87b..dd2b9502 100644
--- a/js/myFile.js
+++ b/js/myFile.js
@@ -1,6 +1,6 @@
// Custom object representing a file
// `File` is already a builtin, so we use `MyFile`
-module.exports = function() {
+export default function() {
this.reader = new FileReader();
this.name = null;
this.url = null;
diff --git a/js/skinParser.js b/js/skinParser.js
index 0defa820..4874138b 100644
--- a/js/skinParser.js
+++ b/js/skinParser.js
@@ -96,4 +96,4 @@ const parseSkin = (file) => getBufferFromFile(file)
.then(getSkinDataFromFiles)
.then(collectCssAndColors);
-module.exports = parseSkin;
+export default parseSkin;
diff --git a/js/utils.js b/js/utils.js
index 5d1f34f0..b42b1c0a 100644
--- a/js/utils.js
+++ b/js/utils.js
@@ -1,4 +1,4 @@
-const getTimeObj = (time) => {
+export const getTimeObj = (time) => {
const minutes = Math.floor(time / 60);
const seconds = time % 60;
@@ -10,7 +10,7 @@ const getTimeObj = (time) => {
};
};
-const getTimeStr = (time) => {
+export const getTimeStr = (time) => {
const timeObj = getTimeObj(time);
return [
timeObj.minutesFirstDigit,
@@ -21,7 +21,7 @@ const getTimeStr = (time) => {
].join('');
};
-const parseViscolors = (text) => {
+export const parseViscolors = (text) => {
const entries = text.split('\n');
const regex = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/;
const colors = [];
@@ -40,7 +40,7 @@ const parseViscolors = (text) => {
};
// Dumb ini parser that just gets all the key/value pairs
-const parseIni = (text) => {
+export const parseIni = (text) => {
const lines = text.split(/[\r\n]+/g);
const data = {};
lines.forEach((line) => {
@@ -52,12 +52,4 @@ const parseIni = (text) => {
return data;
};
-const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
-
-module.exports = {
- getTimeObj,
- getTimeStr,
- parseViscolors,
- parseIni,
- clamp
-};
+export const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
diff --git a/js/winamp.js b/js/winamp.js
index d828fca7..02cee1f9 100755
--- a/js/winamp.js
+++ b/js/winamp.js
@@ -14,7 +14,7 @@ const fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.style.display = 'none';
-module.exports = {
+export default {
media: Media.init(fileInput),
fileInput: fileInput,
init: function(options) {