Current section
Files
Jump to
Current section
Files
priv/static/thesis-editor.js
(function() { 'use strict'; var globals = typeof window === 'undefined' ? global : window; if (typeof globals.require === 'function') return; var modules = {}; var cache = {}; var aliases = {}; var has = ({}).hasOwnProperty; var endsWith = function(str, suffix) { return str.indexOf(suffix, str.length - suffix.length) !== -1; }; var _cmp = 'components/'; var unalias = function(alias, loaderPath) { var start = 0; if (loaderPath) { if (loaderPath.indexOf(_cmp) === 0) { start = _cmp.length; } if (loaderPath.indexOf('/', start) > 0) { loaderPath = loaderPath.substring(start, loaderPath.indexOf('/', start)); } } var result = aliases[alias + '/index.js'] || aliases[loaderPath + '/deps/' + alias + '/index.js']; if (result) { return _cmp + result.substring(0, result.length - '.js'.length); } return alias; }; var _reg = /^\.\.?(\/|$)/; var expand = function(root, name) { var results = [], part; var parts = (_reg.test(name) ? root + '/' + name : name).split('/'); for (var i = 0, length = parts.length; i < length; i++) { part = parts[i]; if (part === '..') { results.pop(); } else if (part !== '.' && part !== '') { results.push(part); } } return results.join('/'); }; var dirname = function(path) { return path.split('/').slice(0, -1).join('/'); }; var localRequire = function(path) { return function expanded(name) { var absolute = expand(dirname(path), name); return globals.require(absolute, path); }; }; var initModule = function(name, definition) { var module = {id: name, exports: {}}; cache[name] = module; definition(module.exports, localRequire(name), module); return module.exports; }; var require = function(name, loaderPath) { var path = expand(name, '.'); if (loaderPath == null) loaderPath = '/'; path = unalias(name, loaderPath); if (has.call(cache, path)) return cache[path].exports; if (has.call(modules, path)) return initModule(path, modules[path]); var dirIndex = expand(path, './index'); if (has.call(cache, dirIndex)) return cache[dirIndex].exports; if (has.call(modules, dirIndex)) return initModule(dirIndex, modules[dirIndex]); throw new Error('Cannot find module "' + name + '" from '+ '"' + loaderPath + '"'); }; require.alias = function(from, to) { aliases[to] = from; }; require.register = require.define = function(bundle, fn) { if (typeof bundle === 'object') { for (var key in bundle) { if (has.call(bundle, key)) { modules[key] = bundle[key]; } } } else { modules[bundle] = fn; } }; require.list = function() { var result = []; for (var item in modules) { if (has.call(modules, item)) { result.push(item); } } return result; }; require.brunch = true; require._cache = cache; globals.require = require;})();require.register("web/static/js/components/add_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var AddButton = function (_React$Component) { _inherits(AddButton, _React$Component); function AddButton() { _classCallCheck(this, AddButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(AddButton).apply(this, arguments)); } _createClass(AddButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { onClick: this.props.onPress, className: "thesis-button add" }, _react2.default.createElement( "div", { className: "tooltip" }, "Add New Page" ), _react2.default.createElement("i", { className: "fa fa-plus fa-2x" }) ); } }]); return AddButton;}(_react2.default.Component);exports.default = AddButton;});require.register("web/static/js/components/attribution_text", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var AttributionText = function (_React$Component) { _inherits(AttributionText, _React$Component); function AttributionText() { _classCallCheck(this, AttributionText); return _possibleConstructorReturn(this, Object.getPrototypeOf(AttributionText).apply(this, arguments)); } _createClass(AttributionText, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { className: "attribution" }, _react2.default.createElement( "a", { href: "//github.com/infinitered/thesis-phoenix", target: "_blank" }, "Thesis" ), "Â is maintained by ", _react2.default.createElement( "a", { href: "//infinite.red", target: "_blank" }, "Infinite Red" ) ); } }]); return AttributionText;}(_react2.default.Component);exports.default = AttributionText;});require.register("web/static/js/components/cancel_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var CancelButton = function (_React$Component) { _inherits(CancelButton, _React$Component); function CancelButton() { _classCallCheck(this, CancelButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(CancelButton).apply(this, arguments)); } _createClass(CancelButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { onClick: this.props.onPress, className: "thesis-button cancel" }, _react2.default.createElement( "div", { className: "tooltip" }, "Discard Changes" ), _react2.default.createElement("i", { className: "fa fa-remove fa-2x" }) ); } }]); return CancelButton;}(_react2.default.Component);exports.default = CancelButton;});require.register("web/static/js/components/delete_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var DeleteButton = function (_React$Component) { _inherits(DeleteButton, _React$Component); function DeleteButton() { _classCallCheck(this, DeleteButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(DeleteButton).apply(this, arguments)); } _createClass(DeleteButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { className: "thesis-button delete" }, _react2.default.createElement( "div", { className: "tooltip" }, "Delete This Page" ), _react2.default.createElement("i", { className: "fa fa-trash fa-2x" }) ); } }]); return DeleteButton;}(_react2.default.Component);exports.default = DeleteButton;});require.register("web/static/js/components/edit_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var EditButton = function (_React$Component) { _inherits(EditButton, _React$Component); function EditButton() { _classCallCheck(this, EditButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(EditButton).apply(this, arguments)); } _createClass(EditButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { onClick: this.props.onPress, className: "thesis-button edit" }, _react2.default.createElement( "div", { className: "tooltip" }, this.props.text ), _react2.default.createElement("i", { className: "fa fa-edit fa-2x" }) ); } }]); return EditButton;}(_react2.default.Component);exports.default = EditButton;});require.register("web/static/js/components/save_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var SaveButton = function (_React$Component) { _inherits(SaveButton, _React$Component); function SaveButton() { _classCallCheck(this, SaveButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(SaveButton).apply(this, arguments)); } _createClass(SaveButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { onClick: this.props.onPress, className: "thesis-button save" }, _react2.default.createElement( "div", { className: "tooltip" }, "Save Changes" ), _react2.default.createElement("i", { className: "fa fa-save fa-2x" }) ); } }]); return SaveButton;}(_react2.default.Component);exports.default = SaveButton;});require.register("web/static/js/components/settings_button", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }var SettingsButton = function (_React$Component) { _inherits(SettingsButton, _React$Component); function SettingsButton() { _classCallCheck(this, SettingsButton); return _possibleConstructorReturn(this, Object.getPrototypeOf(SettingsButton).apply(this, arguments)); } _createClass(SettingsButton, [{ key: "render", value: function render() { return _react2.default.createElement( "div", { onClick: this.props.onPress, className: "thesis-button settings" }, _react2.default.createElement( "div", { className: "tooltip" }, "Page Settings" ), _react2.default.createElement("i", { className: "fa fa-wrench fa-2x" }) ); } }]); return SettingsButton;}(_react2.default.Component);exports.default = SettingsButton;});require.register("web/static/js/components/settings_tray", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }// NOTES// add 'invalid' class to input to give it a red background// add error text to the errors div and toggle the 'hidden' property// add the 'disabled' property to inputs that can't be editted if page is staticvar SettingsTray = function (_React$Component) { _inherits(SettingsTray, _React$Component); function SettingsTray(props) { _classCallCheck(this, SettingsTray); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(SettingsTray).call(this, props)); _this.state = { title: _this.props.pageTitle, description: _this.props.pageDescription, isValid: true }; _this.titleChange = _this.titleChange.bind(_this); _this.descriptionChange = _this.descriptionChange.bind(_this); _this.onSave = _this.onSave.bind(_this); return _this; } _createClass(SettingsTray, [{ key: "titleChange", value: function titleChange(event) { this.setState({ title: event.target.value }); } }, { key: "descriptionChange", value: function descriptionChange(event) { this.setState({ description: event.target.value }); } }, { key: "onSave", value: function onSave() { this.props.onSubmit(this.state); } }, { key: "render", value: function render() { return _react2.default.createElement( "div", { className: "tray-container" }, _react2.default.createElement( "div", { className: "tray-wrap" }, _react2.default.createElement( "div", { className: "tray-title" }, "Page Settings" ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "Page Path" ), _react2.default.createElement("input", { type: "text", value: this.props.path, disabled: true }) ) ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "Page Title" ), _react2.default.createElement("input", { type: "text", placeholder: "Example Title", value: this.state.title, onChange: this.titleChange }) ) ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "Page Description" ), _react2.default.createElement("textarea", { placeholder: "Example page description.", value: this.state.description, onChange: this.descriptionChange }) ) ), _react2.default.createElement("div", { className: "thesis-field-row errors", hidden: this.state.isValid }), _react2.default.createElement( "div", { className: "thesis-field-row cta" }, _react2.default.createElement( "button", { className: "thesis-tray-cancel", onClick: this.props.onCancel }, "Cancel" ), _react2.default.createElement( "button", { className: "thesis-tray-save", onClick: this.onSave }, "Apply" ) ) ) ); } }]); return SettingsTray;}(_react2.default.Component);exports.default = SettingsTray;});require.register("web/static/js/content_types/html_editor", function(exports, require, module) {'use strict';Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _mediumEditor = require('medium-editor');var _mediumEditor2 = _interopRequireDefault(_mediumEditor);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 HtmlEditor = function () { function HtmlEditor(thesis) { _classCallCheck(this, HtmlEditor); this.thesis = thesis; this.editor = null; this.editors = document.querySelectorAll('.thesis-content-html'); this.enabled = false; this.changedHtmlEditor = this.changedHtmlEditor.bind(this); } _createClass(HtmlEditor, [{ key: 'enable', value: function enable() { if (this.enabled) return; if (!this.editor) { this.editor = new _mediumEditor2.default(this.editors, this.mediumEditorOptions()); this.editor.subscribe('editableInput', this.changedHtmlEditor); } this.enabled = true; } }, { key: 'disable', value: function disable() { if (!this.enabled) return; this.editor.destroy(); this.editor = null; this.enabled = false; } }, { key: 'content', value: function content(ed) { return ed.innerHTML; } }, { key: 'changedHtmlEditor', value: function changedHtmlEditor(event, editable) { editable.classList.add('modified'); // TODO: Find a better way to represent that this has been modified this.thesis.setState({ pageModified: true }); } }, { key: 'mediumEditorOptions', value: function mediumEditorOptions() { // https://github.com/yabwe/medium-editor#toolbar-options return { autoLink: true, toolbar: { buttons: ['bold', 'italic', 'underline', 'anchor', 'h1', 'h2', 'h3', 'quote', 'orderedlist', 'unorderedlist', 'removeFormat', 'justifyLeft', 'justifyCenter', 'justifyRight'], static: true, align: 'center', sticky: true, updateOnEmptySelection: true }, paste: { forcePlainText: false, cleanPastedHTML: true, cleanAttrs: ['class', 'style', 'dir'], cleanTags: ['meta', 'pre'] } }; } }]); return HtmlEditor;}();exports.default = HtmlEditor;});require.register("web/static/js/content_types/image_editor", function(exports, require, module) {'use strict';Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require('react');var _react2 = _interopRequireDefault(_react);var _image_tray = require('./image_tray');var _image_tray2 = _interopRequireDefault(_image_tray);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 ImageEditor = function () { function ImageEditor(thesis) { _classCallCheck(this, ImageEditor); this.thesis = thesis; this.editors = document.querySelectorAll('.thesis-content-image, .thesis-content-background_image'); this.enabled = false; this.clicked = this.clicked.bind(this); this.onSubmit = this.onSubmit.bind(this); } _createClass(ImageEditor, [{ key: 'enable', value: function enable() { if (this.enabled) return; for (var i = 0; i < this.editors.length; i++) { this.editors[i].addEventListener('click', this.clicked, false); } this.enabled = true; } }, { key: 'disable', value: function disable() { if (!this.enabled) return; for (var i = 0; i < this.editors.length; i++) { this.editors[i].removeEventListener('click', this.clicked, false); } this.enabled = false; } }, { key: 'clicked', value: function clicked(e) { var id = e.currentTarget.getAttribute('data-thesis-content-id'); var type = e.currentTarget.getAttribute('data-thesis-content-type'); var meta = JSON.parse(e.currentTarget.getAttribute('data-thesis-content-meta')); var url = ''; if (type === 'image') { url = e.currentTarget.querySelector('img').getAttribute('src'); } else if (type === 'background_image') { url = this.getUrlFromStyle(e.currentTarget.style.backgroundImage); } // TODO: Find a better way this.thesis.setState({ pageModified: true, trayOpen: true, trayType: 'image-url', trayData: { contentId: id, url: url, alt: meta.alt } }); } }, { key: 'tray', value: function tray(trayData) { return _react2.default.createElement(_image_tray2.default, { data: trayData, onCancel: this.thesis.trayCanceled, onSubmit: this.onSubmit }); } }, { key: 'onSubmit', value: function onSubmit(data) { var editor = document.querySelector('[data-thesis-content-id="' + data.contentId + '"'); editor.classList.add('modified'); var meta = JSON.stringify({ alt: data.alt }); editor.setAttribute('data-thesis-content-meta', meta); var type = editor.getAttribute('data-thesis-content-type'); if (type === 'image') { var img = editor.querySelector('img'); img.src = data.url; img.alt = data.alt; } else if (type === 'background_image') { editor.style.backgroundImage = 'url("' + data.url + '")'; } // TODO: better way to close tray this.thesis.setState({ trayOpen: false, pageModified: true, trayData: null }); } }, { key: 'getContent', value: function getContent(ed) { var type = ed.getAttribute('data-thesis-content-type'); if (type === 'image') { return ed.querySelector('img').getAttribute('src'); } else { return this.getUrlFromStyle(ed.style.backgroundImage); } } }, { key: 'getUrlFromStyle', value: function getUrlFromStyle(style) { return style.replace('url("', '').replace('")', ''); } }]); return ImageEditor;}();exports.default = ImageEditor;});require.register("web/static/js/content_types/image_tray", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }// NOTES// add 'invalid' class to input to give it a red background// add error text to the errors div and toggle the 'hidden' property// add the 'disabled' property to inputs that can't be editted if page is staticvar ImageTray = function (_React$Component) { _inherits(ImageTray, _React$Component); function ImageTray(props) { _classCallCheck(this, ImageTray); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ImageTray).call(this, props)); _this.state = { contentId: _this.props.data.contentId, url: _this.props.data.url, alt: _this.props.data.alt, isValid: true }; _this.urlChange = _this.urlChange.bind(_this); _this.altChange = _this.altChange.bind(_this); _this.onSave = _this.onSave.bind(_this); return _this; } _createClass(ImageTray, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (nextProps.data !== null) { this.setState({ contentId: nextProps.data.contentId, url: nextProps.data.url, alt: nextProps.data.alt, isValid: true }); } } }, { key: "urlChange", value: function urlChange(event) { this.setState({ url: event.target.value }); } }, { key: "altChange", value: function altChange(event) { this.setState({ alt: event.target.value }); } }, { key: "onSave", value: function onSave() { this.props.onSubmit(this.state); } }, { key: "previewImageStyle", value: function previewImageStyle() { return { backgroundImage: "url(" + this.state.url + ")" }; } }, { key: "render", value: function render() { return _react2.default.createElement( "div", { className: "tray-container" }, _react2.default.createElement( "div", { className: "tray-wrap" }, _react2.default.createElement( "div", { className: "tray-title" }, "Image URL" ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement("div", { className: "tray-image-preview", style: this.previewImageStyle() }) ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "Image URL" ), _react2.default.createElement("input", { type: "text", placeholder: "http://placekitten.com/200/300", value: this.state.url, onChange: this.urlChange }) ) ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "Alt Text" ), _react2.default.createElement("input", { type: "text", placeholder: "Describe the image", value: this.state.alt, onChange: this.altChange }) ) ), _react2.default.createElement("div", { className: "thesis-field-row errors", hidden: this.state.isValid }), _react2.default.createElement( "div", { className: "thesis-field-row cta" }, _react2.default.createElement( "button", { className: "thesis-tray-cancel", onClick: this.props.onCancel }, "Cancel" ), _react2.default.createElement( "button", { className: "thesis-tray-save", onClick: this.onSave }, "Apply" ) ) ) ); } }]); return ImageTray;}(_react2.default.Component);exports.default = ImageTray;});require.register("web/static/js/content_types/raw_html_editor", function(exports, require, module) {'use strict';Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require('react');var _react2 = _interopRequireDefault(_react);var _raw_html_tray = require('./raw_html_tray');var _raw_html_tray2 = _interopRequireDefault(_raw_html_tray);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 RawHtmlEditor = function () { function RawHtmlEditor(thesis) { _classCallCheck(this, RawHtmlEditor); this.thesis = thesis; this.editors = document.querySelectorAll('.thesis-content-raw_html'); this.clicked = this.clicked.bind(this); this.onSubmit = this.onSubmit.bind(this); this.enabled = false; } _createClass(RawHtmlEditor, [{ key: 'enable', value: function enable() { if (this.enabled) return; for (var i = 0; i < this.editors.length; i++) { this.editors[i].addEventListener('click', this.clicked, false); } this.enabled = true; } }, { key: 'disable', value: function disable() { if (!this.enabled) return; for (var i = 0; i < this.editors.length; i++) { this.editors[i].removeEventListener('click', this.clicked, false); } this.enabled = false; } }, { key: 'content', value: function content(ed) { return ed.innerHTML; } }, { key: 'clicked', value: function clicked(e) { var id = e.currentTarget.getAttribute('data-thesis-content-id'); var content = e.currentTarget.innerHTML.trim(); // TODO: Not very happy about how this reaches back into the Thesis editor // to set its state. Refactor in the future. this.thesis.setState({ pageModified: true, trayOpen: true, trayType: 'raw-html', trayData: { contentId: id, content: content } }); } }, { key: 'onSubmit', value: function onSubmit(data) { var editor = document.querySelector('[data-thesis-content-id="' + data.contentId + '"'); editor.classList.add('modified'); editor.innerHTML = data.content; // TODO: Not very happy about how this reaches back into the Thesis editor // to set its state. Refactor in the future. this.thesis.setState({ trayOpen: false, pageModified: true }); } }, { key: 'tray', value: function tray(data) { return _react2.default.createElement(_raw_html_tray2.default, { data: data, onCancel: this.thesis.trayCanceled, onSubmit: this.onSubmit }); } }]); return RawHtmlEditor;}();exports.default = RawHtmlEditor;});require.register("web/static/js/content_types/raw_html_tray", function(exports, require, module) {"use strict";Object.defineProperty(exports, "__esModule", { value: true});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; }; }();var _react = require("react");var _react2 = _interopRequireDefault(_react);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }// NOTES// add 'invalid' class to input to give it a red background// add error text to the errors div and toggle the 'hidden' property// add the 'disabled' property to inputs that can't be editted if page is staticvar RawHtmlTray = function (_React$Component) { _inherits(RawHtmlTray, _React$Component); function RawHtmlTray(props) { _classCallCheck(this, RawHtmlTray); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RawHtmlTray).call(this, props)); _this.state = { contentId: _this.props.data.contentId, content: _this.props.data.content, isValid: true }; _this.contentChange = _this.contentChange.bind(_this); _this.onSave = _this.onSave.bind(_this); return _this; } _createClass(RawHtmlTray, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (nextProps.data !== null) { this.setState({ contentId: nextProps.data.contentId, content: nextProps.data.content.trim(), isValid: true }); } } }, { key: "contentChange", value: function contentChange(event) { this.setState({ content: event.target.value }); } }, { key: "onSave", value: function onSave() { this.props.onSubmit(this.state); } }, { key: "render", value: function render() { return _react2.default.createElement( "div", { className: "tray-container" }, _react2.default.createElement( "div", { className: "tray-wrap" }, _react2.default.createElement( "div", { className: "tray-title" }, "Raw HTML" ), _react2.default.createElement( "div", { className: "thesis-field-row" }, _react2.default.createElement( "label", null, _react2.default.createElement( "span", null, "HTML code" ), _react2.default.createElement("textarea", { placeholder: "<h1>Any HTML you like</h1>", value: this.state.content, onChange: this.contentChange }) ) ), _react2.default.createElement("div", { className: "thesis-field-row errors", hidden: this.state.isValid }), _react2.default.createElement( "div", { className: "thesis-field-row cta" }, _react2.default.createElement( "button", { className: "thesis-tray-cancel", onClick: this.props.onCancel }, "Cancel" ), _react2.default.createElement( "button", { className: "thesis-tray-save", onClick: this.onSave }, "Apply" ) ) ) ); } }]); return RawHtmlTray;}(_react2.default.Component);exports.default = RawHtmlTray;});require.register("web/static/js/content_types/text_editor", function(exports, require, module) {'use strict';Object.defineProperty(exports, "__esModule", { value: true});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; }; }();function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }var TextEditor = function () { function TextEditor(thesis) { _classCallCheck(this, TextEditor); this.thesis = thesis; this.editors = document.querySelectorAll('.thesis-content-text'); this.enabled = false; this.changed = this.changed.bind(this); } _createClass(TextEditor, [{ key: 'enable', value: function enable() { if (this.enabled) return; for (var i = 0; i < this.editors.length; i++) { var ed = this.editors[i]; ed.contentEditable = true; ed.addEventListener('input', this.changed, false); ed.addEventListener('keydown', this.changed, false); } this.enabled = true; } }, { key: 'disable', value: function disable() { if (!this.enabled) return; for (var i = 0; i < this.editors.length; i++) { var ed = this.editors[i]; ed.contentEditable = false; ed.removeEventListener('input', this.changed, false); ed.removeEventListener('keydown', this.changed, false); } this.enabled = false; } }, { key: 'content', value: function content(ed) { return ed.textContent; } }, { key: 'changed', value: function changed(e) { e.currentTarget.classList.add('modified'); if (e.keyCode === 13) e.preventDefault(); // TODO: Change this this.thesis.setState({ pageModified: true }); } }]); return TextEditor;}();exports.default = TextEditor;});require.register("web/static/js/thesis-editor", function(exports, require, module) {'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; }; }();var _react = require('react');var _react2 = _interopRequireDefault(_react);var _reactDom = require('react-dom');var _reactDom2 = _interopRequireDefault(_reactDom);var _add_button = require('./components/add_button');var _add_button2 = _interopRequireDefault(_add_button);var _delete_button = require('./components/delete_button');var _delete_button2 = _interopRequireDefault(_delete_button);var _settings_button = require('./components/settings_button');var _settings_button2 = _interopRequireDefault(_settings_button);var _cancel_button = require('./components/cancel_button');var _cancel_button2 = _interopRequireDefault(_cancel_button);var _save_button = require('./components/save_button');var _save_button2 = _interopRequireDefault(_save_button);var _edit_button = require('./components/edit_button');var _edit_button2 = _interopRequireDefault(_edit_button);var _settings_tray = require('./components/settings_tray');var _settings_tray2 = _interopRequireDefault(_settings_tray);var _attribution_text = require('./components/attribution_text');var _attribution_text2 = _interopRequireDefault(_attribution_text);var _net = require('./utilities/net');var _net2 = _interopRequireDefault(_net);var _html_editor = require('./content_types/html_editor');var _html_editor2 = _interopRequireDefault(_html_editor);var _raw_html_editor = require('./content_types/raw_html_editor');var _raw_html_editor2 = _interopRequireDefault(_raw_html_editor);var _image_editor = require('./content_types/image_editor');var _image_editor2 = _interopRequireDefault(_image_editor);var _text_editor = require('./content_types/text_editor');var _text_editor2 = _interopRequireDefault(_text_editor);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"); } }function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }// Content typesvar ThesisEditor = function (_React$Component) { _inherits(ThesisEditor, _React$Component); function ThesisEditor(props) { _classCallCheck(this, ThesisEditor); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ThesisEditor).call(this, props)); _this.state = { editing: false, pageModified: false, pageToolsHidden: true, trayOpen: false, trayType: null }; _this.htmlEditor = new _html_editor2.default(_this); _this.rawHtmlEditor = new _raw_html_editor2.default(_this); _this.imageEditor = new _image_editor2.default(_this); _this.textEditor = new _text_editor2.default(_this); // Rebind context _this.trayCanceled = _this.trayCanceled.bind(_this); _this.settingsTraySubmitted = _this.settingsTraySubmitted.bind(_this); _this.cancelPressed = _this.cancelPressed.bind(_this); _this.savePressed = _this.savePressed.bind(_this); _this.editPressed = _this.editPressed.bind(_this); // this.addPagePressed = this.addPagePressed.bind(this) _this.pageSettingsPressed = _this.pageSettingsPressed.bind(_this); return _this; } _createClass(ThesisEditor, [{ key: 'pathname', value: function pathname() { return window.location.pathname; } }, { key: 'pageTitle', value: function pageTitle() { return document.title; } }, { key: 'pageDescription', value: function pageDescription() { var desc = this.descriptionMetaTag(); return desc ? desc.content : null; } }, { key: 'descriptionMetaTag', value: function descriptionMetaTag() { return document.querySelectorAll('meta[name=description]')[0]; } }, { key: 'trayCanceled', value: function trayCanceled() { this.setState({ trayOpen: false, trayData: null }); } }, { key: 'settingsTraySubmitted', value: function settingsTraySubmitted(page) { document.title = page.title; var desc = this.descriptionMetaTag(); if (desc) { desc.content = page.description; } this.setState({ trayOpen: false, pageModified: true }); } }, { key: 'editPressed', value: function editPressed() { var _this2 = this; if (this.state.editing) { if (this.state.pageModified) { this.cancelPressed(); } else { this.setState({ editing: false, pageModified: false, trayOpen: false }); setTimeout(function () { return _this2.setState({ pageToolsHidden: true }); }, 800); } } else { this.setState({ editing: true, pageToolsHidden: false, trayOpen: false }); } } }, { key: 'savePressed', value: function savePressed() { var _this3 = this; var page = { slug: this.pathname(), title: this.pageTitle(), description: this.pageDescription() }; var contents = this.contentEditorContents(); this.postToServer(page, contents); this.setState({ editing: false, pageModified: false, trayOpen: false }); setTimeout(function () { return _this3.setState({ pageToolsHidden: true }); }, 800); } }, { key: 'cancelPressed', value: function cancelPressed() { if (window.confirm('Discard changes and reload the page?')) { this.setState({ editing: false }); window.location.reload(); } } // addPagePressed () { // this.setState({trayOpen: !this.state.trayOpen, trayType: 'add-page'}) // } }, { key: 'pageSettingsPressed', value: function pageSettingsPressed() { if (this.state.trayOpen && this.state.trayType !== 'page-settings') { this.setState({ trayType: 'page-settings' }); } else { this.setState({ trayOpen: !this.state.trayOpen, trayType: 'page-settings' }); } } }, { key: 'postToServer', value: function postToServer(page, contents) { _net2.default.put('/thesis/update', { page: page, contents: contents }).then(function (resp) { console.log('SUCCESS'); console.log(resp); }).catch(function (err) { console.log('ERROR'); console.log(err); }); } }, { key: 'allContentEditors', value: function allContentEditors() { return document.querySelectorAll('.thesis-content'); } }, { key: 'addContentEditors', value: function addContentEditors() { this.htmlEditor.enable(); this.rawHtmlEditor.enable(); this.imageEditor.enable(); this.textEditor.enable(); } }, { key: 'removeContentEditors', value: function removeContentEditors() { this.htmlEditor.disable(); this.rawHtmlEditor.disable(); this.imageEditor.disable(); this.textEditor.disable(); } }, { key: 'contentEditorContents', value: function contentEditorContents() { var contents = []; var editors = this.allContentEditors(); for (var i = 0; i < editors.length; i++) { var ed = editors[i]; var id = ed.getAttribute('data-thesis-content-id'); var t = ed.getAttribute('data-thesis-content-type'); var meta = ed.getAttribute('data-thesis-content-meta'); var content = this.getContent(t, ed); var glob = ed.getAttribute('data-thesis-content-global'); contents.push({ name: id, content_type: t, content: content, meta: meta, global: glob }); } return contents; } }, { key: 'getContent', value: function getContent(t, ed) { if (t === 'image' || t === 'background_image') { return this.imageEditor.getContent(ed); } else if (t === 'text') { return this.textEditor.content(ed); } else if (t === 'html') { return this.htmlEditor.content(ed); } else if (t === 'raw_html') { return this.rawHtmlEditor.content(ed); } else { return ed.innerHTML; } } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { var el = document.querySelector('body'); var editors = this.allContentEditors(); if (this.state.editing) { el.classList.add('thesis-editing'); this.addContentEditors(); } else { el.classList.remove('thesis-editing'); this.removeContentEditors(); } if (this.state.pageModified) { el.classList.add('thesis-page-modified'); } else { el.classList.remove('thesis-page-modified'); for (var i = 0; i < editors.length; i++) { editors[i].classList.remove('modified'); } } if (this.state.trayOpen) { el.classList.add('thesis-tray-open'); } else { el.classList.remove('thesis-tray-open'); } } }, { key: 'renderEditorClass', value: function renderEditorClass() { var classes = ''; classes += this.state.editing ? ' active ' : ''; classes += this.state.pageToolsHidden ? ' thesis-page-tools-hidden ' : ''; return classes; } }, { key: 'renderEditButtonText', value: function renderEditButtonText() { return this.state.editing ? 'Editing Page' : 'Edit Page'; } }, { key: 'renderFaderClass', value: function renderFaderClass() { return this.renderEditorClass(); } }, { key: 'renderTrayClass', value: function renderTrayClass() { return this.state.trayType; } }, { key: 'renderTray', value: function renderTray() { if (this.state.trayType == 'page-settings') { return _react2.default.createElement(_settings_tray2.default, { path: this.pathname(), hasErrors: false, pageTitle: this.pageTitle(), pageDescription: this.pageDescription(), onCancel: this.trayCanceled, onSubmit: this.settingsTraySubmitted }); } else if (this.state.trayType == "image-url") { return this.imageEditor.tray(this.state.trayData); } else if (this.state.trayType == "raw-html") { return this.rawHtmlEditor.tray(this.state.trayData); } } }, { key: 'render', value: function render() { return _react2.default.createElement( 'div', { id: 'thesis' }, _react2.default.createElement( 'div', { id: 'thesis-editor', className: this.renderEditorClass() }, _react2.default.createElement(_save_button2.default, { onPress: this.savePressed }), _react2.default.createElement(_settings_button2.default, { onPress: this.pageSettingsPressed }), _react2.default.createElement(_cancel_button2.default, { onPress: this.cancelPressed }), _react2.default.createElement(_edit_button2.default, { onPress: this.editPressed, text: this.renderEditButtonText() }) ), _react2.default.createElement('div', { id: 'thesis-fader', className: this.renderFaderClass() }), _react2.default.createElement( 'div', { id: 'thesis-tray', className: this.renderTrayClass() }, this.renderTray(), _react2.default.createElement(_attribution_text2.default, null) ) ); } }]); return ThesisEditor;}(_react2.default.Component);_reactDom2.default.render(_react2.default.createElement(ThesisEditor, null), document.querySelector('#thesis-container'));});require.register("web/static/js/utilities/net", function(exports, require, module) {'use strict';Object.defineProperty(exports, "__esModule", { value: true});require('whatwg-fetch');// Polyfill for fetchfunction checkStatus(response) { if (response.status >= 200 && response.status < 300) { return response; } else { var error = new Error(response.statusText); error.response = response; throw error; }}function parseJSON(response) { return response.json();}/* Usage: Net.post('/thesis/something', {my: "body"}) .then((response) => { console.log(response) }) .catch((error) => { console.log(error) })*/var Net = { get: function get(path, body) { return Net.request(path, body, 'GET'); }, post: function post(path, body) { return Net.request(path, body, 'POST'); }, put: function put(path, body) { return Net.request(path, body, 'PUT'); }, patch: function patch(path, body) { return Net.request(path, body, 'PATCH'); }, delete: function _delete(path, body) { return Net.request(path, body, 'DELETE'); }, request: function request(path, body, method) { return window.fetch(path, { method: method, credentials: 'same-origin', headers: new window.Headers({ 'Accept': 'application/json', 'Content-Type': 'application/json' }), body: JSON.stringify(body) }).then(checkStatus).then(parseJSON); }};exports.default = Net;});require('web/static/js/thesis-editor');