import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, f as _slicedToArray, g as _get, h as _getPrototypeOf, i as _set } from '../_rollupPluginBabelHelpers-b054ecd2.js'; import MaskedPattern from './pattern.js'; import MaskedRange from './range.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 './pattern/cursor.js'; import './regexp.js'; /** Date mask */ var MaskedDate = /*#__PURE__*/function (_MaskedPattern) { _inherits(MaskedDate, _MaskedPattern); var _super = _createSuper(MaskedDate); /** Pattern mask for date according to {@link MaskedDate#format} */ /** Start date */ /** End date */ /** */ /** @param {Object} opts */ function MaskedDate(opts) { _classCallCheck(this, MaskedDate); return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts)); } /** @override */ _createClass(MaskedDate, [{ key: "_update", value: function _update(opts) { if (opts.mask === Date) delete opts.mask; if (opts.pattern) opts.mask = opts.pattern; var blocks = opts.blocks; opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block if (opts.min) opts.blocks.Y.from = opts.min.getFullYear(); if (opts.max) opts.blocks.Y.to = opts.max.getFullYear(); if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) { opts.blocks.m.from = opts.min.getMonth() + 1; opts.blocks.m.to = opts.max.getMonth() + 1; if (opts.blocks.m.from === opts.blocks.m.to) { opts.blocks.d.from = opts.min.getDate(); opts.blocks.d.to = opts.max.getDate(); } } Object.assign(opts.blocks, this.blocks, blocks); // add autofix Object.keys(opts.blocks).forEach(function (bk) { var b = opts.blocks[bk]; if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix; }); _get(_getPrototypeOf(MaskedDate.prototype), "_update", this).call(this, opts); } /** @override */ }, { key: "doValidate", value: function doValidate() { var _get2; var date = this.date; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), "doValidate", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max)); } /** Checks if date is exists */ }, { key: "isDateExist", value: function isDateExist(str) { return this.format(this.parse(str, this), this).indexOf(str) >= 0; } /** Parsed Date */ }, { key: "date", get: function get() { return this.typedValue; }, set: function set(date) { this.typedValue = date; } /** @override */ }, { key: "typedValue", get: function get() { return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), "typedValue", this) : null; }, set: function set(value) { _set(_getPrototypeOf(MaskedDate.prototype), "typedValue", value, this, true); } /** @override */ }, { key: "maskEquals", value: function maskEquals(mask) { return mask === Date || _get(_getPrototypeOf(MaskedDate.prototype), "maskEquals", this).call(this, mask); } }]); return MaskedDate; }(MaskedPattern); MaskedDate.DEFAULTS = { pattern: 'd{.}`m{.}`Y', format: function format(date) { if (!date) return ''; var day = String(date.getDate()).padStart(2, '0'); var month = String(date.getMonth() + 1).padStart(2, '0'); var year = date.getFullYear(); return [day, month, year].join('.'); }, parse: function parse(str) { var _str$split = str.split('.'), _str$split2 = _slicedToArray(_str$split, 3), day = _str$split2[0], month = _str$split2[1], year = _str$split2[2]; return new Date(year, month - 1, day); } }; MaskedDate.GET_DEFAULT_BLOCKS = function () { return { d: { mask: MaskedRange, from: 1, to: 31, maxLength: 2 }, m: { mask: MaskedRange, from: 1, to: 12, maxLength: 2 }, Y: { mask: MaskedRange, from: 1900, to: 9999 } }; }; IMask.MaskedDate = MaskedDate; export { MaskedDate as default };