shinkansen-engine
Version:
86 lines (77 loc) • 1.67 kB
JSX
/**
* @typedef {EngineTypes.OnEventType} OnEventType
* @typedef {EngineTypes.Components.Pinion.PinionType} PinionType
* @typedef {EngineTypes.Components.Pinion.ParamsType} ParamsType
* @typedef {EngineTypes.Components.Gears.GearsProps} GearsProps
*/
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Pinion from '#engine/components/pinion'
import Gears from '#engine/components/gears'
/**
* @type {OnEventType}
*/
function DEFAULT_HANDLE_EVENT () {
/* */
}
/**
* @type {ParamsType}
*/
const DEFAULT_PARAMS = {
components: {},
errors: []
}
/**
* @type {GearsProps}
*/
const DEFAULT_GEARS = {}
export default class Engine extends Component {
render () {
const {
/**
* @type {PinionType}
*/
pinion,
/**
* @type {ParamsType}
*/
params = DEFAULT_PARAMS,
/**
* @type {OnEventType}
*/
onChange = DEFAULT_HANDLE_EVENT,
/**
* @type {GearsType}
*/
gears: {
reverse,
forward,
pattern
} = DEFAULT_GEARS
} = this.props
return (
<div className='shinkansen-engine'>
<Pinion
pinion={pinion}
params={params}
onChange={onChange}
/>
<Gears
reverse={reverse}
forward={forward}
pattern={pattern}
/>
</div>
)
}
}
Engine.propTypes = {
pinion: PropTypes.shape({}).isRequired,
params: PropTypes.shape({}),
gears: PropTypes.shape({
forward: PropTypes.shape({}),
reverse: PropTypes.shape({}),
pattern: PropTypes.string
}),
onChange: PropTypes.func
}