/** * Created by avim on 12/2/2014. */ define(['react', 'firebase', 'lodash', './fiddle.rt', 'jquery'], function (React, Firebase, _, fiddleTemplate, $) { 'use strict' function generateRandomId() { var uuid = 'xxxxxxxx'.replace(/[xy]/g, function (c) { var r = _.random(0, 15) return (c === 'x' ? r : r & 0x3 | 0x8).toString(16) }) return uuid } var Fiddle = React.createClass({ displayName: 'Fiddle', componentDidMount: function () { if (window.location.hash) { var newHash = window.location.hash.replace('#', '') var firebase = new Firebase('https://reacttemplates.firebaseio-demo.com/') firebase.child('fiddles').child(newHash).on('value', function (snapshot) { this.refs.playground.setState(snapshot.val()) Firebase.goOffline() }.bind(this)) } else { Firebase.goOffline() } }, save: function () { var newHash = generateRandomId() window.location.hash = newHash Firebase.goOnline() var playgroundState = this.refs.playground.state var firebase = new Firebase('https://reacttemplates.firebaseio-demo.com/') firebase.child('fiddles').child(newHash).set(playgroundState, function () { Firebase.goOffline() alert('Saved the fiddle, you can share your url') //eslint-disable-line no-alert }) }, clear: function () { this.refs.playground.clear() }, loadSample: function (name) { //require(['text!./samples/' + name + '.rt', 'text!./samples/' + name + '.code'], function (rt, code) { // var currentState = { // templateHTML: rt, // templateProps: code // }; // //this.updateSample(currentState); // this.refs.playground.setState(currentState); //}); var playground = this.refs.playground $.get('playground/samples/' + name + '.rt', null, function (data/*, textStatus, jqXHR*/) { var rt = data $.get('playground/samples/' + name + '.code', null, function (data2/*, textStatus2, jqXHR2*/) { var currentState = { templateHTML: rt, templateProps: _.template(data2)({name: 'template'}) } //this.updateSample(currentState); playground.setState(currentState) }) }) //this.refs.playground.clear(); }, render: fiddleTemplate }) return Fiddle })