import React, {PureComponent, PropTypes} from 'react';
import autobind from 'autobind-decorator';
import VariableEditor from '../templating/variable-editor';
import TagEditor from '../templating/tag-editor';
import Modal from '../base/modal';
import ModalBody from '../base/modal-body';
import ModalHeader from '../base/modal-header';
import ModalFooter from '../base/modal-footer';
import {trackEvent} from '../../../analytics';
@autobind
class NunjucksModal extends PureComponent {
constructor (props) {
super(props);
this.state = {
defaultTemplate: ''
};
this._onDone = null;
this._currentTemplate = null;
}
_setModalRef (n) {
this.modal = n;
}
_handleTemplateChange (template) {
this._currentTemplate = template;
}
_handleSubmit (e) {
e.preventDefault();
this.hide();
}
_handleModalHide () {
if (this._onDone) {
this._onDone(this._currentTemplate);
this.setState({defaultTemplate: ''});
}
}
show ({template, onDone}) {
trackEvent('Nunjucks', 'Editor', 'Show');
this._onDone = onDone;
this._currentTemplate = template;
this.setState({defaultTemplate: template});
this.modal.show();
}
hide () {
this.modal.hide();
trackEvent('Nunjucks', 'Editor', 'Hide');
}
render () {
const {handleRender, handleGetRenderContext, uniqueKey, workspace} = this.props;
const {defaultTemplate} = this.state;
let editor = null;
let title = '';
if (defaultTemplate.indexOf('{{') === 0) {
title = 'Variable';
editor = (
);
} else if (defaultTemplate.indexOf('{%') === 0) {
title = 'Tag';
editor = (
);
}
return (
Edit {title}
);
}
}
NunjucksModal.propTypes = {
uniqueKey: PropTypes.string.isRequired,
handleRender: PropTypes.func.isRequired,
handleGetRenderContext: PropTypes.func.isRequired,
workspace: PropTypes.object.isRequired
};
export default NunjucksModal;