hatchyt
Version:
Hatch your next idea.
88 lines (72 loc) • 3.55 kB
JavaScript
;
var _createClass = (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; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); // wraps a code
//mirror editor with some UI
Object.defineProperty(exports, "__esModule", {
value: true
});
var _configMenu = require('../components/configMenu');
var _configMenu2 = _interopRequireDefault(_configMenu);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Editor = (function () {
function Editor(container, options) {
_classCallCheck(this, Editor);
this.options = options;
this._id = options.id;
this.toolbar = document.createElement('div');
this.toolbar.classList.add('toolbar');
container.appendChild(this.toolbar);
this.mirror = CodeMirror(container, options);
if (options.configMenu) {
this.addButton({ className: 'choices', id: options.id });
}
if (options.templates) {
this.addButton({ text: 'Save Template', callback: this.saveTemplate });
}
}
_createClass(Editor, [{
key: 'saveTemplate',
value: function saveTemplate(e) {
var request = new XMLHttpRequest();
var form = new FormData();
var name = prompt('Enter name to save template as:');
if (!name) return;
form.append('name', [this._id, name].join('-'));
form.append('text', this.mirror.getValue());
request.open('post', '/template/');
request.send(form);
}
}, {
key: 'addButton',
value: function addButton(options) {
var _button$classList;
var button = document.createElement('div');
var classes = options.className ? [options.className] : ['btn', 'small'];
(_button$classList = button.classList).add.apply(_button$classList, classes);
if (options.id) {
ReactDOM.render(React.createElement(_configMenu2.default, { id: options.id, choices: this.options.configMenu, templates: this.options.templates, title: this.options.title || this.options.mode }), button);
}
if (options.callback) {
button.addEventListener(options.on || 'click', options.callback.bind(this));
}
if (options.text) {
var text = document.createTextNode(options.text);
button.appendChild(text);
}
this.toolbar.appendChild(button);
}
}, {
key: 'settings',
get: function get() {
return document.getElementById('config-menu-' + this._id).value;
}
}, {
key: 'templates',
get: function get() {
return document.getElementById('config-templates-' + this._id).value;
}
}]);
return Editor;
})();
exports.default = Editor;
//# sourceMappingURL=editor.js.map