unveil
Version:
A React-based Reactive Presentation Framework
70 lines (53 loc) • 5.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _rxjs = require('rxjs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _react2.default.createClass({
displayName: 'UIControls',
propTypes: {
navigator: _react2.default.PropTypes.object.isRequired
},
isValidMotion: function isValidMotion(motion) {
return this.motions.indexOf(motion) !== -1;
},
componentWillMount: function componentWillMount() {
this.motions = this.props.navigator.motionNames;
this.clicks = new _rxjs.Subject();
this.clicks.pluck('target', 'id').filter(this.isValidMotion).subscribe(this.props.navigator.next);
},
componentWillUnmount: function componentWillUnmount() {
this.clicks.complete();
},
next: function next(e) {
this.clicks.next(e);
e.preventDefault();
},
buttons: function buttons() {
var toButton = function (m) {
var options = {
"key": m,
"href": '', // @todo add right href here
"ref": 'button-' + m,
"id": m,
"onClick": this.next,
"className": this.props.navigator.isPossibleMotion(m) && 'enabled' || 'disabled'
};
return _react2.default.createElement('a', options);
}.bind(this);
return this.motions.map(toButton);
},
render: function render() {
return _react2.default.createElement(
'div',
{ className: 'ui-controls' },
this.buttons()
);
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL1VJQ29udHJvbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQUtlLGdCQUFNLFdBQU4sQ0FBa0I7OztBQUUvQixhQUFXO0FBQ1QsZUFBVyxnQkFBTSxTQUFOLENBQWdCLE1BQWhCLENBQXVCLFVBQXZCO0dBRGI7O0FBSUEsaUJBQWUsdUJBQVUsTUFBVixFQUFrQjtBQUMvQixXQUFPLEtBQUssT0FBTCxDQUFhLE9BQWIsQ0FBcUIsTUFBckIsTUFBaUMsQ0FBQyxDQUFELENBRFQ7R0FBbEI7O0FBSWYsc0JBQW9CLDhCQUFZO0FBQzlCLFNBQUssT0FBTCxHQUFlLEtBQUssS0FBTCxDQUFXLFNBQVgsQ0FBcUIsV0FBckIsQ0FEZTtBQUU5QixTQUFLLE1BQUwsR0FBYyxtQkFBZCxDQUY4QjtBQUc5QixTQUFLLE1BQUwsQ0FDRyxLQURILENBQ1MsUUFEVCxFQUNtQixJQURuQixFQUVHLE1BRkgsQ0FFVSxLQUFLLGFBQUwsQ0FGVixDQUdHLFNBSEgsQ0FHYSxLQUFLLEtBQUwsQ0FBVyxTQUFYLENBQXFCLElBQXJCLENBSGIsQ0FIOEI7R0FBWjs7QUFTcEIsd0JBQXNCLGdDQUFZO0FBQ2hDLFNBQUssTUFBTCxDQUFZLFFBQVosR0FEZ0M7R0FBWjs7QUFJdEIsUUFBTSxjQUFVLENBQVYsRUFBYTtBQUNqQixTQUFLLE1BQUwsQ0FBWSxJQUFaLENBQWlCLENBQWpCLEVBRGlCO0FBRWpCLE1BQUUsY0FBRixHQUZpQjtHQUFiOztBQUtOLFdBQVMsbUJBQVk7QUFDbkIsUUFBSSxXQUFXLFVBQVUsQ0FBVixFQUFhO0FBQzFCLFVBQU0sVUFBVTtBQUNkLGVBQU8sQ0FBUDtBQUNBLGdCQUFRLEVBQVI7QUFDQSwyQkFBaUIsQ0FBakI7QUFDQSxjQUFNLENBQU47QUFDQSxtQkFBVyxLQUFLLElBQUw7QUFDWCxxQkFBYyxLQUFLLEtBQUwsQ0FBVyxTQUFYLENBQXFCLGdCQUFyQixDQUFzQyxDQUF0QyxLQUE0QyxTQUE1QyxJQUF5RCxVQUF6RDtPQU5WLENBRG9CO0FBUzFCLGFBQU8sbUNBQU8sT0FBUCxDQUFQLENBVDBCO0tBQWIsQ0FVYixJQVZhLENBVVIsSUFWUSxDQUFYLENBRGU7O0FBYW5CLFdBQU8sS0FBSyxPQUFMLENBQWEsR0FBYixDQUFpQixRQUFqQixDQUFQLENBYm1CO0dBQVo7O0FBZ0JULFVBQVEsa0JBQVk7QUFDbEIsV0FBUTs7UUFBSyxXQUFVLGFBQVYsRUFBTDtNQUE4QixLQUFLLE9BQUwsRUFBOUI7S0FBUixDQURrQjtHQUFaOztDQTVDSyIsImZpbGUiOiJVSUNvbnRyb2xzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICBwcm9wVHlwZXM6IHtcbiAgICBuYXZpZ2F0b3I6IFJlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9LFxuXG4gIGlzVmFsaWRNb3Rpb246IGZ1bmN0aW9uIChtb3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5tb3Rpb25zLmluZGV4T2YobW90aW9uKSAhPT0gLTE7XG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5tb3Rpb25zID0gdGhpcy5wcm9wcy5uYXZpZ2F0b3IubW90aW9uTmFtZXM7XG4gICAgdGhpcy5jbGlja3MgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuY2xpY2tzXG4gICAgICAucGx1Y2soJ3RhcmdldCcsICdpZCcpXG4gICAgICAuZmlsdGVyKHRoaXMuaXNWYWxpZE1vdGlvbilcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5wcm9wcy5uYXZpZ2F0b3IubmV4dCk7XG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNsaWNrcy5jb21wbGV0ZSgpO1xuICB9LFxuXG4gIG5leHQ6IGZ1bmN0aW9uIChlKSB7XG4gICAgdGhpcy5jbGlja3MubmV4dChlKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH0sXG5cbiAgYnV0dG9uczogZnVuY3Rpb24gKCkge1xuICAgIGxldCB0b0J1dHRvbiA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBcImtleVwiOiBtLFxuICAgICAgICBcImhyZWZcIjogJycsIC8vIEB0b2RvIGFkZCByaWdodCBocmVmIGhlcmVcbiAgICAgICAgXCJyZWZcIjogYGJ1dHRvbi0ke219YCxcbiAgICAgICAgXCJpZFwiOiBtLFxuICAgICAgICBcIm9uQ2xpY2tcIjogdGhpcy5uZXh0LFxuICAgICAgICBcImNsYXNzTmFtZVwiOiAodGhpcy5wcm9wcy5uYXZpZ2F0b3IuaXNQb3NzaWJsZU1vdGlvbihtKSAmJiAnZW5hYmxlZCcgfHwgJ2Rpc2FibGVkJylcbiAgICAgIH07XG4gICAgICByZXR1cm4gPGEgey4uLm9wdGlvbnN9PjwvYT47XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXMubW90aW9ucy5tYXAodG9CdXR0b24pO1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoPGRpdiBjbGFzc05hbWU9XCJ1aS1jb250cm9sc1wiPnt0aGlzLmJ1dHRvbnMoKX08L2Rpdj4pO1xuICB9XG5cbn0pO1xuIl19