UNPKG

@nbamford123/arwes

Version:

Futuristic Sci-Fi and Cyberpunk Graphical User Interface Framework for Web Apps

178 lines (146 loc) 5.15 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = Project; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _Animation = require('../Animation'); var _Animation2 = _interopRequireDefault(_Animation); var _Frame = require('../Frame'); var _Frame2 = _interopRequireDefault(_Frame); var _Words = require('../Words'); var _Words2 = _interopRequireDefault(_Words); var _Heading = require('../Heading'); var _Heading2 = _interopRequireDefault(_Heading); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function Project(props) { var theme = props.theme, classes = props.classes, sounds = props.sounds, Animation = props.Animation, Frame = props.Frame, Words = props.Words, Heading = props.Heading, animation = props.animation, animate = props.animate, show = props.show, node = props.node, header = props.header, headerSize = props.headerSize, icon = props.icon, className = props.className, children = props.children, etc = _objectWithoutProperties(props, ['theme', 'classes', 'sounds', 'Animation', 'Frame', 'Words', 'Heading', 'animation', 'animate', 'show', 'node', 'header', 'headerSize', 'icon', 'className', 'children']); var cls = (0, _classnames2.default)(classes.root, className); return _react2.default.createElement( Animation, _extends({ animate: animate, show: show, timeout: theme.animTime }, animation), function (anim) { return _react2.default.createElement(node, _extends({ className: (0, _classnames2.default)(cls, classes[anim.status]) }, etc), _react2.default.createElement( Frame, { animate: animate, show: show, timeout: theme.animTime, layer: 'primary', level: 0, corners: 4, hover: true, noBackground: true, onClick: function onClick() { return sounds.click && sounds.click.play(); } }, function (frameAnim) { return _react2.default.createElement( 'div', null, _react2.default.createElement( 'header', { className: classes.header }, _react2.default.createElement( Heading, { node: 'h1' }, _react2.default.createElement( Words, { animate: animate, show: frameAnim.entered }, header ) ), _react2.default.createElement( 'div', { className: classes.icon }, icon ) ), _react2.default.createElement('div', { className: classes.separator }), _react2.default.createElement( 'div', { className: classes.children }, typeof children === 'function' ? children(frameAnim) : children ) ); } )); } ); } Project.propTypes = { Animation: _propTypes2.default.any.isRequired, Frame: _propTypes2.default.any.isRequired, Words: _propTypes2.default.any.isRequired, Heading: _propTypes2.default.any.isRequired, theme: _propTypes2.default.any.isRequired, classes: _propTypes2.default.any.isRequired, animate: _propTypes2.default.bool, show: _propTypes2.default.bool, animation: _propTypes2.default.object, /** * It uses the `click` player. */ sounds: _propTypes2.default.object, /** * The HTML tag element to use. */ node: _propTypes2.default.string, /** * The HTML header used for the title. */ header: _propTypes2.default.string.isRequired, /** * The actual font size to use for the HTML header. */ headerSize: _propTypes2.default.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']), /** * The icon to decorate the project. */ icon: _propTypes2.default.any, /** * If function, receives the animation status object. */ children: _propTypes2.default.any }; Project.defaultProps = { Animation: _Animation2.default, Frame: _Frame2.default, Words: _Words2.default, Heading: _Heading2.default, show: true, sounds: {}, node: 'article', headerSize: 'h2', icon: _react2.default.createElement('i', { className: 'mdi mdi-package' }) };