mu-player
Version:
Play music from vk.com and soundcloud.com via Music Player Daemon
82 lines (73 loc) • 1.55 kB
JavaScript
import blessed from 'blessed';
import _ from 'lodash';
import Promise from 'bluebird';
import * as lfmActions from './../actions/lastfm-actions';
import errorHandler from '../helpers/error-handler';
export default (screen, items, displayProp, label) => {
let layout;
let list;
let layoutOpts = {
parent: screen,
top: 'center',
left: 'center',
width: '50%',
height: '50%',
content: 'Loading...',
tags: true,
label: label,
border: {
type: 'line'
}
};
let listOpts = {
top: 0,
tags: true,
padding: {
left: 1,
right: 1
},
input: true,
scrollable: true,
keys: true,
vi: true,
mouse: true,
scrollbar: {
ch: ' ',
inverse: true,
fg: 'gray'
},
style: {
selected: {
bg: 'yellow'
}
}
};
let clear = () => {
layout.destroy();
screen.blockEsc = false;
screen.restoreFocus();
};
screen.blockEsc = true;
list = blessed.list(listOpts);
list.key(['escape', 'left', 'right', 'tab'], () => clear());
list.key(['pageup'], () => {
list.up(list.height);
screen.render();
});
list.key(['pagedown'], () => {
list.down(list.height);
screen.render();
});
list.setItems(_.pluck(items, displayProp));
layout = blessed.box(layoutOpts);
layout.append(list);
screen.saveFocus();
list.focus();
screen.render();
return new Promise((resolve, reject) => {
list.on('select', (selected, index) => {
clear();
resolve(items[index]);
});
});
};