UNPKG

nikki

Version:

A browser-based IDE written in NodeJS. For Real.

82 lines (76 loc) 1.64 kB
var state = require('./state'); var ui = require('./ui'); /** * Sets a new bar up, by interrupting * the previous one, adding a message and * a style to the new one. * * The setup method will expect you to call * bar.show() to actually make it visible. */ var setupBar = function(message, type) { var bar = ui.bar(); bar.finish(); bar.removeClass(); bar.addClass(type) bar.text(message); return bar; }; /** * Triggers a flash message of the given type. * * @param message * @param type */ var flash = function(message, type) { var bar = setupBar(message, 'message-' + type); bar.fadeIn(200).delay(3000).fadeOut('slow'); }; /** * State object. * * @type {{info: info, alert: alert, error: error}} */ module.exports = { hide: function() { ui.bar().removeClass().hide(); }, isOpen: function() { return ui.bar().is(':visible'); }, question: function() { var bar = ui.bar(); return this.isOpen() && bar.hasClass('message-question') && bar; }, ask: function(message, event, subject) { var bar = setupBar(message + ' (type y/n)', 'message-question'); bar.attr('event', event); bar.attr('subject', JSON.stringify(subject)); bar.show(); bar.focus(); }, /** * Triggers an info message. * * @param message */ info: function(message) { flash(message, 'info'); }, /** * Triggers an alert. * * @param message */ alert: function(message) { flash(message, 'alert'); }, /** * Triggers an error. * * @param message */ error: function(message) { flash(message, 'error'); } };