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}
{editor}
); } } NunjucksModal.propTypes = { uniqueKey: PropTypes.string.isRequired, handleRender: PropTypes.func.isRequired, handleGetRenderContext: PropTypes.func.isRequired, workspace: PropTypes.object.isRequired }; export default NunjucksModal;