UNPKG

unveil

Version:

A React-based Reactive Presentation Framework

104 lines (78 loc) 8.08 kB
'use strict'; var _isNan = require('babel-runtime/core-js/number/is-nan'); var _isNan2 = _interopRequireDefault(_isNan); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); Object.defineProperty(exports, "__esModule", { value: true }); var _rxjs = require('rxjs'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _marked = require('marked'); var _marked2 = _interopRequireDefault(_marked); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _react2.default.createClass({ displayName: 'Slide', scale: 1, propTypes: { name: _react2.default.PropTypes.string }, statics: { isSlide: function isSlide(e) { return _react2.default.isValidElement(e) && e.type.displayName === 'Slide'; } }, defaults: function defaults(overrides) { return (0, _assign2.default)({ className: 'slide-content' }, overrides); }, fromMarkdown: function fromMarkdown() { return (0, _marked2.default)(this.props.children).trim(); }, shouldUseMarkdown: function shouldUseMarkdown() { return this.props.markdown && !Array.isArray(this.props.children); }, componentDidUpdate: function componentDidUpdate() { var scale = this.getScale(); if ((0, _isNan2.default)(scale) || (0, _isNan2.default)(this.scale)) return; if (this.scale !== scale) { this.scale = scale; this.forceUpdate(); } }, getScale: function getScale() { var verticalScale = this.refs['slide-container'].offsetHeight / this.refs.slide.offsetHeight; var horizontalScale = this.refs['slide-container'].offsetWidth / this.refs.slide.offsetWidth; var scale = Math.min(verticalScale, horizontalScale); return scale > 1 && 1 || scale; }, componentDidMount: function componentDidMount() { ['load', 'resize'].forEach(function (event) { _rxjs.Observable.fromEvent(window, event).subscribe(function () { this.scale = this.getScale(); this.forceUpdate(); }.bind(this)); }.bind(this)); }, options: function options() { var opts = { ref: 'slide', id: this.props.name || "", style: { transform: 'translate(-50%, -50%) scale(' + this.scale + ')' } }; if (this.shouldUseMarkdown()) opts.dangerouslySetInnerHTML = { __html: this.fromMarkdown() };else opts.children = this.props.children; return this.defaults(opts); }, render: function render() { return _react2.default.createElement( 'section', { ref: 'slide-container', className: 'slide' }, _react2.default.createElement('section', this.options()) ); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL1NsaWRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQU1lLGdCQUFNLFdBQU4sQ0FBa0I7OztBQUUvQixTQUFPLENBQVA7O0FBRUEsYUFBVztBQUNULFVBQU0sZ0JBQU0sU0FBTixDQUFnQixNQUFoQjtHQURSOztBQUlBLFdBQVM7QUFDUCxhQUFTLGlCQUFVLENBQVYsRUFBYTtBQUNwQixhQUFPLGdCQUFNLGNBQU4sQ0FBcUIsQ0FBckIsS0FBMkIsRUFBRSxJQUFGLENBQU8sV0FBUCxLQUF1QixPQUF2QixDQURkO0tBQWI7R0FEWDs7QUFNQSxZQUFVLGtCQUFDLFNBQUQ7V0FBZ0Isc0JBQWM7QUFDdEMsaUJBQVcsZUFBWDtLQUR3QixFQUV2QixTQUZ1QjtHQUFoQjs7QUFJVixnQkFBYyx3QkFBWTtBQUN4QixXQUFPLHNCQUFPLEtBQUssS0FBTCxDQUFXLFFBQVgsQ0FBUCxDQUE0QixJQUE1QixFQUFQLENBRHdCO0dBQVo7O0FBSWQscUJBQW1CLDZCQUFZO0FBQzdCLFdBQU8sS0FBSyxLQUFMLENBQVcsUUFBWCxJQUF1QixDQUFDLE1BQU0sT0FBTixDQUFjLEtBQUssS0FBTCxDQUFXLFFBQVgsQ0FBZixDQUREO0dBQVo7O0FBSW5CLHNCQUFvQiw4QkFBWTtBQUM5QixRQUFJLFFBQVEsS0FBSyxRQUFMLEVBQVIsQ0FEMEI7O0FBRzlCLFFBQUcscUJBQWEsS0FBYixLQUF1QixxQkFBYSxLQUFLLEtBQUwsQ0FBcEMsRUFDRCxPQURGOztBQUdBLFFBQUcsS0FBSyxLQUFMLEtBQWUsS0FBZixFQUFzQjtBQUN2QixXQUFLLEtBQUwsR0FBYSxLQUFiLENBRHVCO0FBRXZCLFdBQUssV0FBTCxHQUZ1QjtLQUF6QjtHQU5rQjs7QUFZcEIsWUFBVSxvQkFBWTtBQUNwQixRQUFJLGdCQUFrQixLQUFLLElBQUwsQ0FBVSxpQkFBVixFQUE2QixZQUE3QixHQUE0QyxLQUFLLElBQUwsQ0FBVSxLQUFWLENBQWdCLFlBQWhCLENBRDlDO0FBRXBCLFFBQUksa0JBQWtCLEtBQUssSUFBTCxDQUFVLGlCQUFWLEVBQTZCLFdBQTdCLEdBQTRDLEtBQUssSUFBTCxDQUFVLEtBQVYsQ0FBZ0IsV0FBaEIsQ0FGOUM7QUFHcEIsUUFBSSxRQUFRLEtBQUssR0FBTCxDQUFTLGFBQVQsRUFBd0IsZUFBeEIsQ0FBUixDQUhnQjtBQUlwQixXQUFPLFFBQVEsQ0FBUixJQUFhLENBQWIsSUFBa0IsS0FBbEIsQ0FKYTtHQUFaOztBQU9WLHFCQUFtQiw2QkFBWTtBQUM3QixLQUFDLE1BQUQsRUFBUyxRQUFULEVBQW1CLE9BQW5CLENBQTRCLFVBQVUsS0FBVixFQUFpQjtBQUMzQyx1QkFBVyxTQUFYLENBQXFCLE1BQXJCLEVBQTZCLEtBQTdCLEVBQ0MsU0FERCxDQUNZLFlBQVk7QUFDdEIsYUFBSyxLQUFMLEdBQWEsS0FBSyxRQUFMLEVBQWIsQ0FEc0I7QUFFdEIsYUFBSyxXQUFMLEdBRnNCO09BQVosQ0FHVixJQUhVLENBR0wsSUFISyxDQURaLEVBRDJDO0tBQWpCLENBTTFCLElBTjBCLENBTXJCLElBTnFCLENBQTVCLEVBRDZCO0dBQVo7O0FBVW5CLFdBQVMsbUJBQVk7QUFDbkIsUUFBSSxPQUFPO0FBQ1QsV0FBSyxPQUFMO0FBQ0EsVUFBSSxLQUFLLEtBQUwsQ0FBVyxJQUFYLElBQW1CLEVBQW5CO0FBQ0osYUFBTztBQUNMLG9EQUEwQyxLQUFLLEtBQUwsTUFBMUM7T0FERjtLQUhFLENBRGU7QUFRbkIsUUFBRyxLQUFLLGlCQUFMLEVBQUgsRUFDRSxLQUFLLHVCQUFMLEdBQStCLEVBQUMsUUFBUSxLQUFLLFlBQUwsRUFBUixFQUFoQyxDQURGLEtBR0UsS0FBSyxRQUFMLEdBQWdCLEtBQUssS0FBTCxDQUFXLFFBQVgsQ0FIbEI7QUFJQSxXQUFPLEtBQUssUUFBTCxDQUFjLElBQWQsQ0FBUCxDQVptQjtHQUFaOztBQWVULFVBQVEsa0JBQVk7QUFDbEIsV0FBUTs7UUFBUyxLQUFJLGlCQUFKLEVBQXNCLFdBQVUsT0FBVixFQUEvQjtNQUNOLHlDQUFhLEtBQUssT0FBTCxFQUFiLENBRE07S0FBUixDQURrQjtHQUFaOztDQXRFSyIsImZpbGUiOiJTbGlkZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IG1hcmtlZCBmcm9tICdtYXJrZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgc2NhbGU6IDEsXG5cbiAgcHJvcFR5cGVzOiB7XG4gICAgbmFtZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZ1xuICB9LFxuXG4gIHN0YXRpY3M6IHtcbiAgICBpc1NsaWRlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGUpICYmIGUudHlwZS5kaXNwbGF5TmFtZSA9PT0gJ1NsaWRlJztcbiAgICB9XG4gIH0sXG5cbiAgZGVmYXVsdHM6IChvdmVycmlkZXMpID0+IChPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6ICdzbGlkZS1jb250ZW50J1xuICB9LCBvdmVycmlkZXMpKSxcblxuICBmcm9tTWFya2Rvd246IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWFya2VkKHRoaXMucHJvcHMuY2hpbGRyZW4pLnRyaW0oKTtcbiAgfSxcblxuICBzaG91bGRVc2VNYXJrZG93bjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm1hcmtkb3duICYmICFBcnJheS5pc0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICB9LFxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIGxldCBzY2FsZSA9IHRoaXMuZ2V0U2NhbGUoKTtcblxuICAgIGlmKE51bWJlci5pc05hTihzY2FsZSkgfHwgTnVtYmVyLmlzTmFOKHRoaXMuc2NhbGUpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5zY2FsZSAhPT0gc2NhbGUpIHtcbiAgICAgIHRoaXMuc2NhbGUgPSBzY2FsZTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0U2NhbGU6IGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgdmVydGljYWxTY2FsZSAgID0gdGhpcy5yZWZzWydzbGlkZS1jb250YWluZXInXS5vZmZzZXRIZWlnaHQgLyB0aGlzLnJlZnMuc2xpZGUub2Zmc2V0SGVpZ2h0O1xuICAgIGxldCBob3Jpem9udGFsU2NhbGUgPSB0aGlzLnJlZnNbJ3NsaWRlLWNvbnRhaW5lciddLm9mZnNldFdpZHRoICAvIHRoaXMucmVmcy5zbGlkZS5vZmZzZXRXaWR0aDtcbiAgICBsZXQgc2NhbGUgPSBNYXRoLm1pbih2ZXJ0aWNhbFNjYWxlLCBob3Jpem9udGFsU2NhbGUpO1xuICAgIHJldHVybiBzY2FsZSA+IDEgJiYgMSB8fCBzY2FsZTtcbiAgfSxcblxuICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIFsnbG9hZCcsICdyZXNpemUnXS5mb3JFYWNoKCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIE9ic2VydmFibGUuZnJvbUV2ZW50KHdpbmRvdywgZXZlbnQpXG4gICAgICAuc3Vic2NyaWJlKCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2NhbGUgPSB0aGlzLmdldFNjYWxlKCk7XG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcblxuICBvcHRpb25zOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IG9wdHMgPSB7XG4gICAgICByZWY6ICdzbGlkZScsXG4gICAgICBpZDogdGhpcy5wcm9wcy5uYW1lIHx8IFwiXCIsXG4gICAgICBzdHlsZToge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoJHt0aGlzLnNjYWxlfSlgXG4gICAgICB9XG4gICAgfTtcbiAgICBpZih0aGlzLnNob3VsZFVzZU1hcmtkb3duKCkpXG4gICAgICBvcHRzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge19faHRtbDogdGhpcy5mcm9tTWFya2Rvd24oKX07XG4gICAgZWxzZVxuICAgICAgb3B0cy5jaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdHMob3B0cyk7XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICg8c2VjdGlvbiByZWY9XCJzbGlkZS1jb250YWluZXJcIiBjbGFzc05hbWU9XCJzbGlkZVwiPlxuICAgICAgPHNlY3Rpb24gey4uLnRoaXMub3B0aW9ucygpfSAvPlxuICAgIDwvc2VjdGlvbj4pO1xuICB9XG5cbn0pO1xuIl19