{"size": 3506, "ext": "js", "max_stars_repo_path": "sources/components/Class/Class.js", "max_stars_repo_name": "Itee/itee-doc", "max_stars_repo_stars_event_min_datetime": "2021-06-26T00:18:50.000Z", "max_stars_repo_stars_event_max_datetime": "2021-06-26T00:18:50.000Z", "max_issues_repo_path": "sources/components/Class/Class.js", "max_issues_repo_name": "Itee/itee-doc", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "sources/components/Class/Class.js", "max_forks_repo_name": "Itee/itee-doc", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": 1, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 41.2470588235, "max_line_length": 138, "alphanum_fraction": 0.6035367941}
const React              = require( 'react' )
const PropTypes          = require( 'prop-types' )
const Card               = require( 'react-bootstrap/Card' )
const Constructor        = require( './Constructor' )
const Description        = require( '../Commons/Description' )
const FunctionsCategory  = require( '../Commons/FunctionsCategory' )
const PropertiesCategory = require( '../Commons/PropertiesCategory' )
const AuthorsList        = require( '../Metas/AuthorsList' )
const ExceptionsList     = require( '../Metas/ExceptionsList' )
const InheritList        = require( '../Metas/InheritList' )
const LicensesList       = require( '../Metas/LicensesList' )
const RequiresList       = require( '../Metas/RequiresList' )
const ReturnsList        = require( '../Metas/ReturnsList' )
const SeeList            = require( '../Metas/SeeList' )
const SourcesList        = require( '../Metas/SourcesList' )

/**
 * @class
 * @classdesc The root component for documenting class
 * @augments React.Component
 * @author [Tristan Valcke]{@link https://github.com/Itee}
 * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
 */
class Class extends React.Component {

    /**
     * The main component render method
     *
     * @returns {JSX.Element}
     */
    render () {

        return (
            <Card id={ this.props.uuid } className="class m-3">

                <Card.Header as="h2">
                    <span className="class-title">Class:</span> <span className="class-name">{ this.props.name }</span>
                </Card.Header>

                <Card.Body>
                    <Description className="class-description" description={ this.props.description }></Description>
                    <Constructor className="class-constructor" { ...this.props }></Constructor>
                    <PropertiesCategory className="class-constants" name="Constants" values={ this.props.constants }></PropertiesCategory>
                    <PropertiesCategory className="class-members" name="Members" values={ this.props.members }></PropertiesCategory>
                    <FunctionsCategory className="class-methods" name="Methods" values={ this.props.methods }></FunctionsCategory>
                </Card.Body>

                <Card.Footer>
                    <AuthorsList authors={ this.props.authors }></AuthorsList>
                    <ExceptionsList exceptions={ this.props.exceptions }></ExceptionsList>
                    <InheritList inherits={ this.props.inherits }></InheritList>
                    <LicensesList licenses={ this.props.licenses }></LicensesList>
                    <RequiresList requires={ this.props.requires }></RequiresList>
                    <ReturnsList returns={ this.props.returns }></ReturnsList>
                    <SeeList sees={ this.props.see }></SeeList>
                    <SourcesList sources={ this.props.sources }></SourcesList>
                </Card.Footer>

            </Card>
        )

    }

}

Class.propTypes = {
    uuid:        PropTypes.string,
    name:        PropTypes.string,
    description: PropTypes.string,
    constants:   PropTypes.array,
    members:     PropTypes.array,
    methods:     PropTypes.array,
    authors:     PropTypes.array,
    exceptions:  PropTypes.array,
    inherits:    PropTypes.array,
    licenses:    PropTypes.array,
    requires:    PropTypes.array,
    returns:     PropTypes.array,
    see:         PropTypes.array,
    sources:     PropTypes.array
}

module.exports = Class

