Files
front/dist/assets/vendor/imask/esm/masked/range.js
2021-12-28 13:34:18 +01:00

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 };