define(["require", "exports", "tslib", "react", "../../Utilities"], function (require, exports, tslib_1, React, Utilities_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var getClassNames = Utilities_1.classNamesFunction();
    // if the percentComplete is near 0, don't animate it.
    // This prevents animations on reset to 0 scenarios
    var ZERO_THRESHOLD = 0.01;
    /**
     * ProgressIndicator with no default styles.
     * [Use the `styles` API to add your own styles.](https://github.com/OfficeDev/office-ui-fabric-react/wiki/Styling)
     */
    var ProgressIndicatorBase = /** @class */ (function (_super) {
        tslib_1.__extends(ProgressIndicatorBase, _super);
        function ProgressIndicatorBase() {
            var _this = _super !== null && _super.apply(this, arguments) || this;
            _this._onRenderProgress = function (props) {
                var _a = _this.props, ariaValueText = _a.ariaValueText, barHeight = _a.barHeight, className = _a.className, styles = _a.styles, theme = _a.theme;
                var percentComplete = typeof _this.props.percentComplete === 'number' ? Math.min(100, Math.max(0, _this.props.percentComplete * 100)) : undefined;
                var classNames = getClassNames(styles, {
                    theme: theme,
                    className: className,
                    barHeight: barHeight,
                    indeterminate: percentComplete === undefined ? true : false
                });
                var progressBarStyles = {
                    width: percentComplete !== undefined ? percentComplete + '%' : undefined,
                    transition: percentComplete !== undefined && percentComplete < ZERO_THRESHOLD ? 'none' : undefined
                };
                var ariaValueMin = percentComplete !== undefined ? 0 : undefined;
                var ariaValueMax = percentComplete !== undefined ? 100 : undefined;
                var ariaValueNow = percentComplete !== undefined ? Math.floor(percentComplete) : undefined;
                return (React.createElement("div", { className: classNames.itemProgress },
                    React.createElement("div", { className: classNames.progressTrack }),
                    React.createElement("div", { className: classNames.progressBar, style: progressBarStyles, role: "progressbar", "aria-valuemin": ariaValueMin, "aria-valuemax": ariaValueMax, "aria-valuenow": ariaValueNow, "aria-valuetext": ariaValueText })));
            };
            return _this;
        }
        ProgressIndicatorBase.prototype.render = function () {
            var _a = this.props, barHeight = _a.barHeight, className = _a.className, _b = _a.label, label = _b === void 0 ? this.props.title : _b, // Fall back to deprecated value.
            description = _a.description, styles = _a.styles, theme = _a.theme, progressHidden = _a.progressHidden, _c = _a.onRenderProgress, onRenderProgress = _c === void 0 ? this._onRenderProgress : _c;
            var percentComplete = typeof this.props.percentComplete === 'number' ? Math.min(100, Math.max(0, this.props.percentComplete * 100)) : undefined;
            var classNames = getClassNames(styles, {
                theme: theme,
                className: className,
                barHeight: barHeight,
                indeterminate: percentComplete === undefined ? true : false
            });
            return (React.createElement("div", { className: classNames.root },
                label ? React.createElement("div", { className: classNames.itemName }, label) : null,
                !progressHidden
                    ? onRenderProgress(tslib_1.__assign({}, this.props, { percentComplete: percentComplete }), this._onRenderProgress)
                    : null,
                description ? React.createElement("div", { className: classNames.itemDescription }, description) : null));
        };
        ProgressIndicatorBase.defaultProps = {
            label: '',
            description: '',
            width: 180
        };
        return ProgressIndicatorBase;
    }(React.Component));
    exports.ProgressIndicatorBase = ProgressIndicatorBase;
});
//# sourceMappingURL=ProgressIndicator.base.js.map