import baseToString from "./_baseToString";
import castSlice from "./_castSlice";
import hasUnicode from "./_hasUnicode";
import stringSize from "./_stringSize";
import stringToArray from "./_stringToArray";
import repeat from "../#repeat";

/**
 * Creates the padding for `string` based on `length`. The `chars` string
 * is truncated if the number of characters exceeds `length`.
 *
 * @private
 * @param {number} length The padding length.
 * @param {string} [chars=' '] The string used as padding.
 * @returns {string} Returns the padding for `string`.
 */
function createPadding(length: number, chars?: string): string {
    chars = chars === undefined ? " " : baseToString(chars);
    const charsLength = chars.length;
    if (charsLength < 2) {
        return charsLength ? repeat(chars, length) : chars;
    }
    const result = repeat(chars, Math.ceil(length / stringSize(chars)));
    return hasUnicode(chars) ? castSlice(stringToArray(result), 0, length).join("") : result.slice(0, length);
}

export default createPadding;
// import repeat from "../repeat.js";
// import baseToString from "./baseToString.js";
// import castSlice from "./castSlice.js";
// import hasUnicode from "./hasUnicode.js";
// import stringSize from "./stringSize.js";
// import stringToArray from "./stringToArray.js";

// /**
//  * Creates the padding for `string` based on `length`. The `chars` string
//  * is truncated if the number of characters exceeds `length`.
//  *
//  * @private
//  * @param {number} length The padding length.
//  * @param {string} [chars=' '] The string used as padding.
//  * @returns {string} Returns the padding for `string`.
//  */
// function createPadding(length, chars) {
//     chars = chars === undefined ? " " : baseToString(chars);

//     const charsLength = chars.length;
//     if (charsLength < 2) {
//         return charsLength ? repeat(chars, length) : chars;
//     }
//     const result = repeat(chars, Math.ceil(length / stringSize(chars)));
//     return hasUnicode(chars) ? castSlice(stringToArray(result), 0, length).join("") : result.slice(0, length);
// }

// export default createPadding;
