var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
var __rest = (this && this.__rest) || function (s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
};
import React from 'react';
import { forwardRefAndIconName } from '../../lib/forwardRefAndName.js';
import { ALIASES_TO_SIZES, DEFAULT_ICON_ALIAS } from './iconConstants.js';
var isAlias = function (size) {
    return typeof size === 'string' && Object.keys(ALIASES_TO_SIZES).includes(size);
};
var getAliasFromSize = function (size) {
    return Object.entries(ALIASES_TO_SIZES).sort(function (_a, _b) {
        var a = _a[1];
        var b = _b[1];
        return Math.abs(size - a) > Math.abs(size - b) ? 1 : -1;
    })[0][0];
};
export var iconSizer = function (sizes, iconName) {
    return forwardRefAndIconName(iconName, function (_a, ref) {
        var _b = _a.size, size = _b === void 0 ? DEFAULT_ICON_ALIAS : _b, props = __rest(_a, ["size"]);
        var alias = DEFAULT_ICON_ALIAS;
        if (size !== alias && isAlias(size)) {
            alias = size;
        }
        else if (typeof size === 'number') {
            alias = getAliasFromSize(size);
        }
        var Icon = sizes[alias]();
        return React.cloneElement(Icon, __assign({ ref: ref }, props));
    });
};
//# sourceMappingURL=iconSizer.js.map