UNPKG

unveil

Version:

A React-based Reactive Presentation Framework

70 lines (53 loc) 5.05 kB
'use strict'; 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