var React = require('react/addons') var ReactRouter = require('react-router') var CodeEditor = require('./CodeEditor') var Catalyst = require('../Mixins/Catalyst') var Select = require('react-select') var request = require('superagent') var PlanetActions = require('../Actions/PlanetActions') var getOptions = function (input, callback) { request .get('http://localhost:8000/tags/search') .query({name: input}) .send() .end(function (err, res) { if (err) { callback(err) return } callback(null, { options: res.body.map(function (tag) { return { label: tag.name, value: tag.name } }), complete: false }) }) } var SnippetForm = React.createClass({ mixins: [Catalyst.LinkedStateMixin, ReactRouter.State], propTypes: { close: React.PropTypes.func, snippet: React.PropTypes.object }, getInitialState: function () { var snippet = Object.assign({ description: '', mode: 'javascript', content: '', callSign: '', Tags: [] }, this.props.snippet) snippet.Tags = snippet.Tags.map(function (tag) { return { label: tag.name, value: tag.name } }) return { snippet: snippet } }, componentDidMount: function () { React.findDOMNode(this.refs.description).focus() }, handleTagsChange: function (selected, all) { var snippet = this.state.snippet snippet.Tags = all this.setState({snippet: snippet}) }, handleContentChange: function (e, value) { var snippet = this.state.snippet snippet.content = value this.setState({snippet: snippet}) }, submit: function () { var snippet = Object.assign({}, this.state.snippet) snippet.Tags = snippet.Tags.map(function (tag) { return tag.value }) if (this.props.snippet == null) { var params = this.getParams() var userName = params.userName var planetName = params.planetName PlanetActions.createSnippet(userName + '/' + planetName, snippet) } else { var snippetId = snippet.id delete snippet.id PlanetActions.updateSnippet(snippetId, snippet) } }, handleKeyDown: function (e) { if (e.keyCode === 13 && e.metaKey) { this.submit() e.stopPropagation() } }, render: function () { return (