'use strict'; var bind = require('function-bind'); var ES = require('es-abstract/es7'); var slice = bind.call(Function.call, String.prototype.slice); module.exports = function padStart(maxLength) { var O = ES.RequireObjectCoercible(this); var S = ES.ToString(O); var stringLength = ES.ToLength(S.length); var fillString; if (arguments.length > 1) { fillString = arguments[1]; } var filler = typeof fillString === 'undefined' ? '' : ES.ToString(fillString); if (filler === '') { filler = ' '; } var intMaxLength = ES.ToLength(maxLength); if (intMaxLength <= stringLength) { return S; } var fillLen = intMaxLength - stringLength; while (filler.length < fillLen) { var fLen = filler.length; var remainingCodeUnits = fillLen - fLen; filler += fLen > remainingCodeUnits ? slice(filler, 0, remainingCodeUnits) : filler; } var truncatedStringFiller = filler.length > fillLen ? slice(filler, 0, fillLen) : filler; return truncatedStringFiller + S; };