158 lines
4.7 KiB
JavaScript
158 lines
4.7 KiB
JavaScript
import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray } from '../_rollupPluginBabelHelpers-a0b34764.js';
|
|
import MaskedPattern from './pattern.js';
|
|
import IMask from '../core/holder.js';
|
|
import '../core/utils.js';
|
|
import '../core/change-details.js';
|
|
import './base.js';
|
|
import '../core/continuous-tail-details.js';
|
|
import './pattern/input-definition.js';
|
|
import './factory.js';
|
|
import './pattern/fixed-definition.js';
|
|
import './pattern/chunk-tail-details.js';
|
|
import './regexp.js';
|
|
|
|
/** Pattern which accepts ranges */
|
|
|
|
var MaskedRange = /*#__PURE__*/function (_MaskedPattern) {
|
|
_inherits(MaskedRange, _MaskedPattern);
|
|
|
|
var _super = _createSuper(MaskedRange);
|
|
|
|
function MaskedRange() {
|
|
_classCallCheck(this, MaskedRange);
|
|
|
|
return _super.apply(this, arguments);
|
|
}
|
|
|
|
_createClass(MaskedRange, [{
|
|
key: "_matchFrom",
|
|
get:
|
|
/**
|
|
Optionally sets max length of pattern.
|
|
Used when pattern length is longer then `to` param length. Pads zeros at start in this case.
|
|
*/
|
|
|
|
/** Min bound */
|
|
|
|
/** Max bound */
|
|
|
|
/** */
|
|
function get() {
|
|
return this.maxLength - String(this.from).length;
|
|
}
|
|
/**
|
|
@override
|
|
*/
|
|
|
|
}, {
|
|
key: "_update",
|
|
value: function _update(opts) {
|
|
// TODO type
|
|
opts = Object.assign({
|
|
to: this.to || 0,
|
|
from: this.from || 0
|
|
}, opts);
|
|
var maxLength = String(opts.to).length;
|
|
if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);
|
|
opts.maxLength = maxLength;
|
|
var fromStr = String(opts.from).padStart(maxLength, '0');
|
|
var toStr = String(opts.to).padStart(maxLength, '0');
|
|
var sameCharsCount = 0;
|
|
|
|
while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {
|
|
++sameCharsCount;
|
|
}
|
|
|
|
opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\0') + '0'.repeat(maxLength - sameCharsCount);
|
|
|
|
_get(_getPrototypeOf(MaskedRange.prototype), "_update", this).call(this, opts);
|
|
}
|
|
/**
|
|
@override
|
|
*/
|
|
|
|
}, {
|
|
key: "isComplete",
|
|
get: function get() {
|
|
return _get(_getPrototypeOf(MaskedRange.prototype), "isComplete", this) && Boolean(this.value);
|
|
}
|
|
}, {
|
|
key: "boundaries",
|
|
value: function boundaries(str) {
|
|
var minstr = '';
|
|
var maxstr = '';
|
|
|
|
var _ref = str.match(/^(\D*)(\d*)(\D*)/) || [],
|
|
_ref2 = _slicedToArray(_ref, 3),
|
|
placeholder = _ref2[1],
|
|
num = _ref2[2];
|
|
|
|
if (num) {
|
|
minstr = '0'.repeat(placeholder.length) + num;
|
|
maxstr = '9'.repeat(placeholder.length) + num;
|
|
}
|
|
|
|
minstr = minstr.padEnd(this.maxLength, '0');
|
|
maxstr = maxstr.padEnd(this.maxLength, '9');
|
|
return [minstr, maxstr];
|
|
}
|
|
/**
|
|
@override
|
|
*/
|
|
|
|
}, {
|
|
key: "doPrepare",
|
|
value: function doPrepare(str) {
|
|
var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
str = _get(_getPrototypeOf(MaskedRange.prototype), "doPrepare", this).call(this, str, flags).replace(/\D/g, '');
|
|
if (!this.autofix) return str;
|
|
var fromStr = String(this.from).padStart(this.maxLength, '0');
|
|
var toStr = String(this.to).padStart(this.maxLength, '0');
|
|
var val = this.value;
|
|
var prepStr = '';
|
|
|
|
for (var ci = 0; ci < str.length; ++ci) {
|
|
var nextVal = val + prepStr + str[ci];
|
|
|
|
var _this$boundaries = this.boundaries(nextVal),
|
|
_this$boundaries2 = _slicedToArray(_this$boundaries, 2),
|
|
minstr = _this$boundaries2[0],
|
|
maxstr = _this$boundaries2[1];
|
|
|
|
if (Number(maxstr) < this.from) prepStr += fromStr[nextVal.length - 1];else if (Number(minstr) > this.to) prepStr += toStr[nextVal.length - 1];else prepStr += str[ci];
|
|
}
|
|
|
|
return prepStr;
|
|
}
|
|
/**
|
|
@override
|
|
*/
|
|
|
|
}, {
|
|
key: "doValidate",
|
|
value: function doValidate() {
|
|
var _get2;
|
|
|
|
var str = this.value;
|
|
var firstNonZero = str.search(/[^0]/);
|
|
if (firstNonZero === -1 && str.length <= this._matchFrom) return true;
|
|
|
|
var _this$boundaries3 = this.boundaries(str),
|
|
_this$boundaries4 = _slicedToArray(_this$boundaries3, 2),
|
|
minstr = _this$boundaries4[0],
|
|
maxstr = _this$boundaries4[1];
|
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), "doValidate", this)).call.apply(_get2, [this].concat(args));
|
|
}
|
|
}]);
|
|
|
|
return MaskedRange;
|
|
}(MaskedPattern);
|
|
IMask.MaskedRange = MaskedRange;
|
|
|
|
export { MaskedRange as default };
|