Created
May 16, 2016 01:44
-
-
Save anonymous/b7064ed7e0d78867c4b024421c0f2110 to your computer and use it in GitHub Desktop.
MPJeez // source http://jsbin.com/wevodu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>MPJeez</title> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.5.2/redux.min.js"></script> | |
<script src="https://fb.me/react-15.0.2.min.js"></script> | |
<script src="https://fb.me/react-dom-15.0.2.min.js"></script> | |
</head> | |
<body> | |
<div id="root"></div> | |
<script id="jsbin-javascript"> | |
'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 _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; | |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } | |
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | |
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 entry = function entry(state, action) { | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return { | |
id: action.id, | |
distance: action.distance, | |
fuelConsumed: action.fuelConsumed, | |
cost: action.cost | |
}; | |
default: | |
return state; | |
} | |
}; | |
var entries = function entries(state, action) { | |
if (state === undefined) state = []; | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return [].concat(_toConsumableArray(state), [entry(undefined, action)]); | |
default: | |
return state; | |
} | |
}; | |
var _Redux = Redux; | |
var combineReducers = _Redux.combineReducers; | |
var createStore = _Redux.createStore; | |
var mpjeez = combineReducers({ | |
entries: entries | |
}); | |
var store = createStore(mpjeez); | |
var _React = React; | |
var Component = _React.Component; | |
var nextEntryId = 0; | |
var SubmitEntry = function SubmitEntry(_ref) { | |
var onSubmitEntry = _ref.onSubmitEntry; | |
var distance = undefined, | |
fuelConsumed = undefined, | |
cost = undefined; | |
return React.createElement( | |
'form', | |
{ onSubmit: function (e) { | |
e.preventDefault(); | |
onSubmitEntry(distance.value, fuelConsumed.value, cost.value); | |
distance.value = ""; | |
fuelConsumed.value = ""; | |
cost.value = ""; | |
} }, | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'distance' }, | |
'Distance: ' | |
), | |
React.createElement('input', { id: 'distance', ref: function (node) { | |
distance = node; | |
} }) | |
), | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'fuelConsumed' }, | |
'Fuel Consumed: ' | |
), | |
React.createElement('input', { id: 'fuelConsumed', ref: function (node) { | |
fuelConsumed = node; | |
} }) | |
), | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'cost' }, | |
'Cost: ' | |
), | |
React.createElement('input', { id: 'cost', ref: function (node) { | |
cost = node; | |
} }) | |
), | |
React.createElement( | |
'button', | |
null, | |
'Add Entry' | |
) | |
); | |
}; | |
var RecentEntries = function RecentEntries(_ref2) { | |
var entries = _ref2.entries; | |
return React.createElement( | |
'ul', | |
null, | |
entries.map(function (entry) { | |
return React.createElement( | |
'li', | |
{ key: entry.id }, | |
React.createElement( | |
'h4', | |
null, | |
'MPG: ', | |
entry.distance / entry.fuelConsumed | |
), | |
React.createElement( | |
'p', | |
null, | |
'Distance: ', | |
entry.distance | |
), | |
React.createElement( | |
'p', | |
null, | |
'Fuel Consumed: ', | |
entry.fuelConsumed | |
), | |
React.createElement( | |
'p', | |
null, | |
'Cost: $', | |
entry.cost | |
) | |
); | |
}) | |
); | |
}; | |
var MPJeez = (function (_Component) { | |
_inherits(MPJeez, _Component); | |
function MPJeez() { | |
_classCallCheck(this, MPJeez); | |
_get(Object.getPrototypeOf(MPJeez.prototype), 'constructor', this).apply(this, arguments); | |
} | |
_createClass(MPJeez, [{ | |
key: 'render', | |
value: function render() { | |
return React.createElement( | |
'div', | |
null, | |
React.createElement(SubmitEntry, { onSubmitEntry: function (distance, fuelConsumed, cost) { | |
store.dispatch({ | |
type: 'ADD_ENTRY', | |
distance: distance, | |
fuelConsumed: fuelConsumed, | |
cost: cost, | |
id: nextEntryId++ | |
}); | |
} }), | |
React.createElement(RecentEntries, { entries: this.props.entries }) | |
); | |
} | |
}]); | |
return MPJeez; | |
})(Component); | |
var render = function render() { | |
ReactDOM.render(React.createElement(MPJeez, store.getState()), document.getElementById('root')); | |
}; | |
store.subscribe(render); | |
render(); | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">const entry = (state, action) => { | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return { | |
id: action.id, | |
distance: action.distance, | |
fuelConsumed: action.fuelConsumed, | |
cost: action.cost | |
}; | |
default: | |
return state; | |
} | |
}; | |
const entries = (state = [], action) => { | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return [ | |
...state, | |
entry(undefined, action) | |
]; | |
default: | |
return state; | |
} | |
}; | |
const { combineReducers, createStore } = Redux; | |
const mpjeez = combineReducers({ | |
entries: entries | |
}); | |
const store = createStore(mpjeez); | |
const { Component } = React; | |
let nextEntryId = 0; | |
const SubmitEntry = ({onSubmitEntry}) => { | |
let distance, fuelConsumed, cost; | |
return ( | |
<form onSubmit={(e) => { | |
e.preventDefault(); | |
onSubmitEntry(distance.value, fuelConsumed.value, cost.value); | |
distance.value = ""; | |
fuelConsumed.value = ""; | |
cost.value = ""; | |
}}> | |
<div> | |
<label htmlFor="distance">Distance: </label> | |
<input id="distance" ref={node => { distance = node; }} /> | |
</div> | |
<div> | |
<label htmlFor="fuelConsumed">Fuel Consumed: </label> | |
<input id="fuelConsumed" ref={node => { fuelConsumed = node; }} /> | |
</div> | |
<div> | |
<label htmlFor="cost">Cost: </label> | |
<input id="cost" ref={node => { cost = node; }} /> | |
</div> | |
<button>Add Entry</button> | |
</form> | |
); | |
}; | |
const RecentEntries = ({entries}) => { | |
return ( | |
<ul> | |
{entries.map(entry => | |
<li key={entry.id}> | |
<h4>MPG: {entry.distance / entry.fuelConsumed}</h4> | |
<p>Distance: {entry.distance}</p> | |
<p>Fuel Consumed: {entry.fuelConsumed}</p> | |
<p>Cost: ${entry.cost}</p> | |
</li> | |
)} | |
</ul> | |
); | |
}; | |
class MPJeez extends Component { | |
render(){ | |
return( | |
<div> | |
<SubmitEntry onSubmitEntry={(distance, fuelConsumed, cost) => { | |
store.dispatch({ | |
type: 'ADD_ENTRY', | |
distance: distance, | |
fuelConsumed: fuelConsumed, | |
cost: cost, | |
id: nextEntryId++ | |
}); | |
}} /> | |
<RecentEntries entries={this.props.entries} /> | |
</div> | |
) | |
} | |
} | |
const render = () => { | |
ReactDOM.render( | |
<MPJeez {...store.getState()} />, | |
document.getElementById('root') | |
); | |
}; | |
store.subscribe(render); | |
render(); | |
</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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 _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; | |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } | |
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | |
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 entry = function entry(state, action) { | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return { | |
id: action.id, | |
distance: action.distance, | |
fuelConsumed: action.fuelConsumed, | |
cost: action.cost | |
}; | |
default: | |
return state; | |
} | |
}; | |
var entries = function entries(state, action) { | |
if (state === undefined) state = []; | |
switch (action.type) { | |
case 'ADD_ENTRY': | |
return [].concat(_toConsumableArray(state), [entry(undefined, action)]); | |
default: | |
return state; | |
} | |
}; | |
var _Redux = Redux; | |
var combineReducers = _Redux.combineReducers; | |
var createStore = _Redux.createStore; | |
var mpjeez = combineReducers({ | |
entries: entries | |
}); | |
var store = createStore(mpjeez); | |
var _React = React; | |
var Component = _React.Component; | |
var nextEntryId = 0; | |
var SubmitEntry = function SubmitEntry(_ref) { | |
var onSubmitEntry = _ref.onSubmitEntry; | |
var distance = undefined, | |
fuelConsumed = undefined, | |
cost = undefined; | |
return React.createElement( | |
'form', | |
{ onSubmit: function (e) { | |
e.preventDefault(); | |
onSubmitEntry(distance.value, fuelConsumed.value, cost.value); | |
distance.value = ""; | |
fuelConsumed.value = ""; | |
cost.value = ""; | |
} }, | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'distance' }, | |
'Distance: ' | |
), | |
React.createElement('input', { id: 'distance', ref: function (node) { | |
distance = node; | |
} }) | |
), | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'fuelConsumed' }, | |
'Fuel Consumed: ' | |
), | |
React.createElement('input', { id: 'fuelConsumed', ref: function (node) { | |
fuelConsumed = node; | |
} }) | |
), | |
React.createElement( | |
'div', | |
null, | |
React.createElement( | |
'label', | |
{ htmlFor: 'cost' }, | |
'Cost: ' | |
), | |
React.createElement('input', { id: 'cost', ref: function (node) { | |
cost = node; | |
} }) | |
), | |
React.createElement( | |
'button', | |
null, | |
'Add Entry' | |
) | |
); | |
}; | |
var RecentEntries = function RecentEntries(_ref2) { | |
var entries = _ref2.entries; | |
return React.createElement( | |
'ul', | |
null, | |
entries.map(function (entry) { | |
return React.createElement( | |
'li', | |
{ key: entry.id }, | |
React.createElement( | |
'h4', | |
null, | |
'MPG: ', | |
entry.distance / entry.fuelConsumed | |
), | |
React.createElement( | |
'p', | |
null, | |
'Distance: ', | |
entry.distance | |
), | |
React.createElement( | |
'p', | |
null, | |
'Fuel Consumed: ', | |
entry.fuelConsumed | |
), | |
React.createElement( | |
'p', | |
null, | |
'Cost: $', | |
entry.cost | |
) | |
); | |
}) | |
); | |
}; | |
var MPJeez = (function (_Component) { | |
_inherits(MPJeez, _Component); | |
function MPJeez() { | |
_classCallCheck(this, MPJeez); | |
_get(Object.getPrototypeOf(MPJeez.prototype), 'constructor', this).apply(this, arguments); | |
} | |
_createClass(MPJeez, [{ | |
key: 'render', | |
value: function render() { | |
return React.createElement( | |
'div', | |
null, | |
React.createElement(SubmitEntry, { onSubmitEntry: function (distance, fuelConsumed, cost) { | |
store.dispatch({ | |
type: 'ADD_ENTRY', | |
distance: distance, | |
fuelConsumed: fuelConsumed, | |
cost: cost, | |
id: nextEntryId++ | |
}); | |
} }), | |
React.createElement(RecentEntries, { entries: this.props.entries }) | |
); | |
} | |
}]); | |
return MPJeez; | |
})(Component); | |
var render = function render() { | |
ReactDOM.render(React.createElement(MPJeez, store.getState()), document.getElementById('root')); | |
}; | |
store.subscribe(render); | |
render(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment