Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const exotic_1 = require("exotic");
const elements_1 = require("./elements");
let starCount = 0;
class Star extends react_1.default.PureComponent {
    /**
     * @description simplify factory
     */
    static from(attributes, props, addingNumber) {
        //
        if (exotic_1.isNumberPrimitive(attributes)) {
            starCount += 1;
            attributes = {
                value: attributes,
                key: attributes + starCount,
            };
        }
        return Star.renderStar(attributes, props, addingNumber);
    }
    // I think this is more for overall ratings
    // which maybe should be a feature and use renderprops
    //
    // @todo this should be renderStarWrap...
    // probably star should be a stronger component? (folder)
    static renderStar(attributes, props, addingNumber) {
        const { isNumberPrefix, isNumberSuffix } = props;
        if (isNumberPrefix && addingNumber) {
            return (react_1.default.createElement(elements_1.StarAndNumberWrap, null,
                react_1.default.createElement(elements_1.StarNumber, null, addingNumber),
                react_1.default.createElement(Star, Object.assign({}, attributes))));
        }
        if (isNumberSuffix && addingNumber) {
            return (react_1.default.createElement(elements_1.StarAndNumberWrap, null,
                react_1.default.createElement(Star, Object.assign({}, attributes)),
                react_1.default.createElement(elements_1.StarNumber, null, addingNumber)));
        }
        return react_1.default.createElement(Star, Object.assign({}, attributes));
    }
    render() {
        const { value } = this.props;
        // determine class name based on value for styling
        // if (isFloat(value)) {}
        // if (isInt(value)) {}
        const isFull = value > 0;
        const isEmpty = value <= 0;
        const attributes = {
            isFull,
            isEmpty,
            'data-percent': value,
        };
        return react_1.default.createElement(elements_1.StyledStarIcon, Object.assign({}, attributes));
    }
}
Star.defaultProps = {
    value: 1,
    isNumberPrefix: false,
    isNumberSuffix: false,
};
exports.Star = Star;
exports.default = Star;
//# sourceMappingURL=Star.js.map