UNPKG

hatchyt

Version:
88 lines (72 loc) 3.55 kB
'use strict'; 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