@7pmlabs/design-system 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/design-system101.js +1 -1
- package/dist/design-system101.mjs +3 -3
- package/dist/design-system103.js +1 -1
- package/dist/design-system103.js.map +1 -1
- package/dist/design-system103.mjs +2138 -1069
- package/dist/design-system103.mjs.map +1 -1
- package/dist/design-system104.js +1 -1
- package/dist/design-system104.js.map +1 -1
- package/dist/design-system104.mjs +1103 -25
- package/dist/design-system104.mjs.map +1 -1
- package/dist/design-system105.js +1 -1
- package/dist/design-system105.js.map +1 -1
- package/dist/design-system105.mjs +25 -67
- package/dist/design-system105.mjs.map +1 -1
- package/dist/design-system106.js +1 -1
- package/dist/design-system106.js.map +1 -1
- package/dist/design-system106.mjs +60 -2165
- package/dist/design-system106.mjs.map +1 -1
- package/dist/design-system113.js +1 -1
- package/dist/design-system113.mjs +6 -2
- package/dist/design-system113.mjs.map +1 -1
- package/dist/design-system114.js +1 -1
- package/dist/design-system114.mjs +3 -5
- package/dist/design-system114.mjs.map +1 -1
- package/dist/design-system115.js +1 -1
- package/dist/design-system115.mjs +2 -4
- package/dist/design-system115.mjs.map +1 -1
- package/dist/design-system116.js +1 -1
- package/dist/design-system116.mjs +2 -2
- package/dist/design-system118.js +1 -1
- package/dist/design-system118.mjs +13 -13
- package/dist/design-system13.js +1 -1
- package/dist/design-system13.mjs +2 -2
- package/dist/design-system148.js +1 -1
- package/dist/design-system148.js.map +1 -1
- package/dist/design-system148.mjs +7 -11
- package/dist/design-system148.mjs.map +1 -1
- package/dist/design-system149.js +1 -1
- package/dist/design-system149.js.map +1 -1
- package/dist/design-system149.mjs +9 -7
- package/dist/design-system149.mjs.map +1 -1
- package/dist/design-system15.js +1 -1
- package/dist/design-system15.mjs +2 -2
- package/dist/design-system150.js +1 -1
- package/dist/design-system150.js.map +1 -1
- package/dist/design-system150.mjs +11 -9
- package/dist/design-system150.mjs.map +1 -1
- package/dist/design-system153.js +1 -1
- package/dist/design-system153.js.map +1 -1
- package/dist/design-system153.mjs +16 -2
- package/dist/design-system153.mjs.map +1 -1
- package/dist/design-system154.js +1 -1
- package/dist/design-system154.js.map +1 -1
- package/dist/design-system154.mjs +5 -15
- package/dist/design-system154.mjs.map +1 -1
- package/dist/design-system155.js +1 -1
- package/dist/design-system155.js.map +1 -1
- package/dist/design-system155.mjs +5 -5
- package/dist/design-system155.mjs.map +1 -1
- package/dist/design-system156.js +1 -1
- package/dist/design-system156.js.map +1 -1
- package/dist/design-system156.mjs +8 -5
- package/dist/design-system156.mjs.map +1 -1
- package/dist/design-system157.js +1 -1
- package/dist/design-system157.js.map +1 -1
- package/dist/design-system157.mjs +6 -8
- package/dist/design-system157.mjs.map +1 -1
- package/dist/design-system158.js +1 -1
- package/dist/design-system158.js.map +1 -1
- package/dist/design-system158.mjs +5 -6
- package/dist/design-system158.mjs.map +1 -1
- package/dist/design-system159.js +1 -1
- package/dist/design-system159.js.map +1 -1
- package/dist/design-system159.mjs +4 -4
- package/dist/design-system159.mjs.map +1 -1
- package/dist/design-system160.js +1 -1
- package/dist/design-system160.js.map +1 -1
- package/dist/design-system160.mjs +6 -5
- package/dist/design-system160.mjs.map +1 -1
- package/dist/design-system161.js +1 -1
- package/dist/design-system161.js.map +1 -1
- package/dist/design-system161.mjs +4 -4
- package/dist/design-system161.mjs.map +1 -1
- package/dist/design-system162.js +1 -1
- package/dist/design-system162.js.map +1 -1
- package/dist/design-system162.mjs +5 -6
- package/dist/design-system162.mjs.map +1 -1
- package/dist/design-system163.js +1 -1
- package/dist/design-system163.js.map +1 -1
- package/dist/design-system163.mjs +39 -5
- package/dist/design-system163.mjs.map +1 -1
- package/dist/design-system164.js +1 -1
- package/dist/design-system164.js.map +1 -1
- package/dist/design-system164.mjs +6 -39
- package/dist/design-system164.mjs.map +1 -1
- package/dist/design-system165.js +1 -1
- package/dist/design-system165.js.map +1 -1
- package/dist/design-system165.mjs +5 -6
- package/dist/design-system165.mjs.map +1 -1
- package/dist/design-system166.js +1 -1
- package/dist/design-system166.js.map +1 -1
- package/dist/design-system166.mjs +16 -6
- package/dist/design-system166.mjs.map +1 -1
- package/dist/design-system167.js +1 -1
- package/dist/design-system167.js.map +1 -1
- package/dist/design-system167.mjs +2 -16
- package/dist/design-system167.mjs.map +1 -1
- package/dist/design-system168.js +1 -1
- package/dist/design-system168.js.map +1 -1
- package/dist/design-system168.mjs +2 -8
- package/dist/design-system168.mjs.map +1 -1
- package/dist/design-system169.js +1 -1
- package/dist/design-system169.js.map +1 -1
- package/dist/design-system169.mjs +8 -2
- package/dist/design-system169.mjs.map +1 -1
- package/dist/design-system18.js +1 -1
- package/dist/design-system18.mjs +1 -1
- package/dist/design-system194.js +1 -1
- package/dist/design-system194.mjs +1 -1
- package/dist/design-system195.js +1 -1
- package/dist/design-system195.mjs +1 -1
- package/dist/design-system203.js +1 -1
- package/dist/design-system203.mjs +1 -1
- package/dist/design-system26.js +1 -1
- package/dist/design-system26.js.map +1 -1
- package/dist/design-system26.mjs +53 -51
- package/dist/design-system26.mjs.map +1 -1
- package/dist/design-system89.js +1 -1
- package/dist/design-system89.mjs +1 -1
- package/dist/design-system92.js +1 -1
- package/dist/design-system92.mjs +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system103.mjs","sources":["../node_modules/air-datepicker/air-datepicker.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AirDatepicker=t():e.AirDatepicker=t()}(this,(function(){return function(){\"use strict\";var e={d:function(t,i){for(var s in i)e.o(i,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:i[s]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return j}});var i={days:\"days\",months:\"months\",years:\"years\",day:\"day\",month:\"month\",year:\"year\",eventChangeViewDate:\"changeViewDate\",eventChangeCurrentView:\"changeCurrentView\",eventChangeFocusDate:\"changeFocusDate\",eventChangeSelectedDate:\"changeSelectedDate\",eventChangeTime:\"changeTime\",eventChangeLastSelectedDate:\"changeLastSelectedDate\",actionSelectDate:\"selectDate\",actionUnselectDate:\"unselectDate\",cssClassWeekend:\"-weekend-\"},s={classes:\"\",inline:!1,locale:{days:[\"Воскресенье\",\"Понедельник\",\"Вторник\",\"Среда\",\"Четверг\",\"Пятница\",\"Суббота\"],daysShort:[\"Вос\",\"Пон\",\"Вто\",\"Сре\",\"Чет\",\"Пят\",\"Суб\"],daysMin:[\"Вс\",\"Пн\",\"Вт\",\"Ср\",\"Чт\",\"Пт\",\"Сб\"],months:[\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],monthsShort:[\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],today:\"Сегодня\",clear:\"Очистить\",dateFormat:\"dd.MM.yyyy\",timeFormat:\"HH:mm\",firstDay:1},startDate:new Date,firstDay:\"\",weekends:[6,0],dateFormat:\"\",altField:\"\",altFieldDateFormat:\"T\",toggleSelected:!0,keyboardNav:!0,selectedDates:!1,container:\"\",isMobile:!1,visible:!1,position:\"bottom left\",offset:12,view:i.days,minView:i.days,showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:\"\",maxDate:\"\",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:\", \",range:!1,dynamicRange:!0,buttons:!1,monthsField:\"monthsShort\",showEvent:\"focus\",autoClose:!1,prevHtml:'<svg><path d=\"M 17,12 l -5,5 l 5,5\"></path></svg>',nextHtml:'<svg><path d=\"M 14,12 l 5,5 l -5,5\"></path></svg>',navTitles:{days:\"MMMM, <i>yyyy</i>\",months:\"yyyy\",years:\"yyyy1 - yyyy2\"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:\" \",timeFormat:\"\",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:!1,onChangeViewDate:!1,onChangeView:!1,onRenderCell:!1,onShow:!1,onHide:!1,onClickDayName:!1};function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return\"string\"==typeof e?t.querySelector(e):e}function n(){let{tagName:e=\"div\",className:t=\"\",innerHtml:i=\"\",id:s=\"\",attrs:a={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=document.createElement(e);return t&&n.classList.add(...t.split(\" \")),s&&(n.id=s),i&&(n.innerHTML=i),a&&r(n,a),n}function r(e,t){for(let[i,s]of Object.entries(t))void 0!==s&&e.setAttribute(i,s);return e}function h(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function o(e){let t=e.getHours(),i=t%12==0?12:t%12;return{year:e.getFullYear(),month:e.getMonth(),fullMonth:e.getMonth()+1<10?\"0\"+(e.getMonth()+1):e.getMonth()+1,date:e.getDate(),fullDate:e.getDate()<10?\"0\"+e.getDate():e.getDate(),day:e.getDay(),hours:t,fullHours:l(t),hours12:i,fullHours12:l(i),minutes:e.getMinutes(),fullMinutes:e.getMinutes()<10?\"0\"+e.getMinutes():e.getMinutes()}}function l(e){return e<10?\"0\"+e:e}function d(e){let t=10*Math.floor(e.getFullYear()/10);return[t,t+9]}function c(){let e=[];for(var t=arguments.length,i=new Array(t),s=0;s<t;s++)i[s]=arguments[s];return i.forEach((t=>{if(\"object\"==typeof t)for(let i in t)t[i]&&e.push(i);else t&&e.push(t)})),e.join(\" \")}function u(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.days;if(!e||!t)return!1;let a=o(e),n=o(t),r={[i.days]:a.date===n.date&&a.month===n.month&&a.year===n.year,[i.months]:a.month===n.month&&a.year===n.year,[i.years]:a.year===n.year};return r[s]}function p(e,t,i){let s=g(e,!1).getTime(),a=g(t,!1).getTime();return i?s>=a:s>a}function m(e,t){return!p(e,t,!0)}function g(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=new Date(e.getTime());return\"boolean\"!=typeof t||t||D(i),i}function D(e){return e.setHours(0,0,0,0),e}function v(e,t,i){e.length?e.forEach((e=>{e.addEventListener(t,i)})):e.addEventListener(t,i)}function y(e,t){return!(!e||e===document||e instanceof DocumentFragment)&&(e.matches(t)?e:y(e.parentNode,t))}function f(e,t,i){return e>i?i:e<t?t:e}function w(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];return i.filter((e=>e)).forEach((t=>{for(let[i,s]of Object.entries(t))if(void 0!==s&&\"[object Object]\"===s.toString()){let t=void 0!==e[i]?e[i].toString():void 0,a=s.toString(),n=Array.isArray(s)?[]:{};e[i]=e[i]?t!==a?n:e[i]:n,w(e[i],s)}else e[i]=s})),e}function b(e){let t=e;return e instanceof Date||(t=new Date(e)),isNaN(t.getTime())&&(console.log('Unable to convert value \"'.concat(e,'\" to Date object')),t=!1),t}function k(e){let t=\"\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;\";return new RegExp(\"(^|>|\"+t+\")(\"+e+\")($|<|\"+t+\")\",\"g\")}function C(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class _{constructor(){let{type:e,date:t,dp:i,opts:s,body:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};C(this,\"focus\",(()=>{this.$cell.classList.add(\"-focus-\"),this.focused=!0})),C(this,\"removeFocus\",(()=>{this.$cell.classList.remove(\"-focus-\"),this.focused=!1})),C(this,\"select\",(()=>{this.$cell.classList.add(\"-selected-\"),this.selected=!0})),C(this,\"removeSelect\",(()=>{this.$cell.classList.remove(\"-selected-\",\"-range-from-\",\"-range-to-\"),this.selected=!1})),C(this,\"onChangeSelectedDate\",(()=>{this.isDisabled||(this._handleSelectedStatus(),this.opts.range&&this._handleRangeStatus())})),C(this,\"onChangeFocusDate\",(e=>{if(!e)return void(this.focused&&this.removeFocus());let t=u(e,this.date,this.type);t?this.focus():!t&&this.focused&&this.removeFocus(),this.opts.range&&this._handleRangeStatus()})),C(this,\"render\",(()=>(this.$cell.innerHTML=this._getHtml(),this.$cell.adpCell=this,this.$cell))),this.type=e,this.singleType=this.type.slice(0,-1),this.date=t,this.dp=i,this.opts=s,this.body=a,this.customData=!1,this.init()}init(){let{range:e,onRenderCell:t}=this.opts;t&&(this.customData=t({date:this.date,cellType:this.singleType,datepicker:this.dp})),this._createElement(),this._bindDatepickerEvents(),this._handleInitialFocusStatus(),this.dp.hasSelectedDates&&(this._handleSelectedStatus(),e&&this._handleRangeStatus())}_bindDatepickerEvents(){this.dp.on(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(i.eventChangeFocusDate,this.onChangeFocusDate)}unbindDatepickerEvents(){this.dp.off(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(i.eventChangeFocusDate,this.onChangeFocusDate)}_createElement(){var e;let{year:t,month:i,date:s}=o(this.date),a=(null===(e=this.customData)||void 0===e?void 0:e.attrs)||{};this.$cell=n({className:this._getClassName(),attrs:{\"data-year\":t,\"data-month\":i,\"data-date\":s,...a}})}_getClassName(){var e,t;let s=new Date,{selectOtherMonths:a,selectOtherYears:n}=this.opts,{minDate:r,maxDate:h}=this.dp,{day:l}=o(this.date),d=this._isOutOfMinMaxRange(),p=null===(e=this.customData)||void 0===e?void 0:e.disabled,m=c(\"air-datepicker-cell\",\"-\".concat(this.singleType,\"-\"),{\"-current-\":u(s,this.date,this.type),\"-min-date-\":r&&u(r,this.date,this.type),\"-max-date-\":h&&u(h,this.date,this.type)}),g=\"\";switch(this.type){case i.days:g=c({\"-weekend-\":this.dp.isWeekend(l),\"-other-month-\":this.isOtherMonth,\"-disabled-\":this.isOtherMonth&&!a||d||p});break;case i.months:g=c({\"-disabled-\":d||p});break;case i.years:g=c({\"-other-decade-\":this.isOtherDecade,\"-disabled-\":d||this.isOtherDecade&&!n||p})}return c(m,g,null===(t=this.customData)||void 0===t?void 0:t.classes)}_getHtml(){var e;let{year:t,month:s,date:a}=o(this.date),{showOtherMonths:n,showOtherYears:r}=this.opts;if(null!==(e=this.customData)&&void 0!==e&&e.html)return this.customData.html;switch(this.type){case i.days:return!n&&this.isOtherMonth?\"\":a;case i.months:return this.dp.locale[this.opts.monthsField][s];case i.years:return!r&&this.isOtherDecade?\"\":t}}_isOutOfMinMaxRange(){let{minDate:e,maxDate:t}=this.dp,{type:s,date:a}=this,{month:n,year:r,date:h}=o(a),l=s===i.days,d=s===i.years,c=!!e&&new Date(r,d?e.getMonth():n,l?h:e.getDate()),u=!!t&&new Date(r,d?t.getMonth():n,l?h:t.getDate());return e&&t?m(c,e)||p(u,t):e?m(c,e):t?p(u,t):void 0}destroy(){this.unbindDatepickerEvents()}_handleRangeStatus(){let{rangeDateFrom:e,rangeDateTo:t}=this.dp,i=c({\"-in-range-\":e&&t&&(s=this.date,a=e,n=t,p(s,a)&&m(s,n)),\"-range-from-\":e&&u(this.date,e,this.type),\"-range-to-\":t&&u(this.date,t,this.type)});var s,a,n;this.$cell.classList.remove(\"-range-from-\",\"-range-to-\",\"-in-range-\"),i&&this.$cell.classList.add(...i.split(\" \"))}_handleSelectedStatus(){let e=this.dp._checkIfDateIsSelected(this.date,this.type);e?this.select():!e&&this.selected&&this.removeSelect()}_handleInitialFocusStatus(){u(this.dp.focusDate,this.date,this.type)&&this.focus()}get isDisabled(){return this.$cell.matches(\".-disabled-\")}get isOtherMonth(){return this.dp.isOtherMonth(this.date)}get isOtherDecade(){return this.dp.isOtherDecade(this.date)}}function M(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}let $={[i.days]:'<div class=\"air-datepicker-body--day-names\"></div>'+'<div class=\"air-datepicker-body--cells -'.concat(i.days,'-\"></div>'),[i.months]:'<div class=\"air-datepicker-body--cells -'.concat(i.months,'-\"></div>'),[i.years]:'<div class=\"air-datepicker-body--cells -'.concat(i.years,'-\"></div>')};const S=\".air-datepicker-cell\";class T{constructor(e){let{dp:t,type:s,opts:a}=e;M(this,\"handleClick\",(e=>{let t=e.target.closest(S).adpCell;if(t.isDisabled)return;if(!this.dp.isMinViewReached)return void this.dp.down();let i=this.dp._checkIfDateIsSelected(t.date,t.type);i?this.dp._handleAlreadySelectedDates(i,t.date):this.dp.selectDate(t.date)})),M(this,\"handleDayNameClick\",(e=>{let t=e.target.getAttribute(\"data-day-index\");this.opts.onClickDayName({dayIndex:Number(t),datepicker:this.dp})})),M(this,\"onChangeCurrentView\",(e=>{e!==this.type?this.hide():(this.show(),this.render())})),M(this,\"onMouseOverCell\",(e=>{let t=y(e.target,S);this.dp.setFocusDate(!!t&&t.adpCell.date)})),M(this,\"onMouseOutCell\",(()=>{this.dp.setFocusDate(!1)})),M(this,\"onClickBody\",(e=>{let{onClickDayName:t}=this.opts,i=e.target;i.closest(S)&&this.handleClick(e),t&&i.closest(\".air-datepicker-body--day-name\")&&this.handleDayNameClick(e)})),M(this,\"onMouseDown\",(e=>{this.pressed=!0;let t=y(e.target,S),i=t&&t.adpCell;u(i.date,this.dp.rangeDateFrom)&&(this.rangeFromFocused=!0),u(i.date,this.dp.rangeDateTo)&&(this.rangeToFocused=!0)})),M(this,\"onMouseMove\",(e=>{if(!this.pressed||!this.dp.isMinViewReached)return;e.preventDefault();let t=y(e.target,S),i=t&&t.adpCell,{selectedDates:s,rangeDateTo:a,rangeDateFrom:n}=this.dp;if(!i||i.isDisabled)return;let{date:r}=i;if(2===s.length){if(this.rangeFromFocused&&!p(r,a)){let{hours:e,minutes:t}=o(n);r.setHours(e),r.setMinutes(t),this.dp.rangeDateFrom=r,this.dp.replaceDate(n,r)}if(this.rangeToFocused&&!m(r,n)){let{hours:e,minutes:t}=o(a);r.setHours(e),r.setMinutes(t),this.dp.rangeDateTo=r,this.dp.replaceDate(a,r)}}})),M(this,\"onMouseUp\",(()=>{this.pressed=!1,this.rangeFromFocused=!1,this.rangeToFocused=!1})),M(this,\"onChangeViewDate\",((e,t)=>{if(!this.isVisible)return;let s=d(e),a=d(t);switch(this.dp.currentView){case i.days:if(u(e,t,i.months))return;break;case i.months:if(u(e,t,i.years))return;break;case i.years:if(s[0]===a[0]&&s[1]===a[1])return}this.render()})),M(this,\"render\",(()=>{this.destroyCells(),this._generateCells(),this.cells.forEach((e=>{this.$cells.appendChild(e.render())}))})),this.dp=t,this.type=s,this.opts=a,this.cells=[],this.$el=\"\",this.pressed=!1,this.isVisible=!0,this.init()}init(){this._buildBaseHtml(),this.type===i.days&&this.renderDayNames(),this.render(),this._bindEvents(),this._bindDatepickerEvents()}_bindEvents(){let{range:e,dynamicRange:t}=this.opts;v(this.$el,\"mouseover\",this.onMouseOverCell),v(this.$el,\"mouseout\",this.onMouseOutCell),v(this.$el,\"click\",this.onClickBody),e&&t&&(v(this.$el,\"mousedown\",this.onMouseDown),v(this.$el,\"mousemove\",this.onMouseMove),v(window.document,\"mouseup\",this.onMouseUp))}_bindDatepickerEvents(){this.dp.on(i.eventChangeViewDate,this.onChangeViewDate),this.dp.on(i.eventChangeCurrentView,this.onChangeCurrentView)}_buildBaseHtml(){this.$el=n({className:\"air-datepicker-body -\".concat(this.type,\"-\"),innerHtml:$[this.type]}),this.$names=a(\".air-datepicker-body--day-names\",this.$el),this.$cells=a(\".air-datepicker-body--cells\",this.$el)}_getDayNamesHtml(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dp.locale.firstDay,t=\"\",s=this.dp.isWeekend,{onClickDayName:a}=this.opts,n=e,r=0;for(;r<7;){let e=n%7,h=c(\"air-datepicker-body--day-name\",{[i.cssClassWeekend]:s(e),\"-clickable-\":!!a}),o=this.dp.locale.daysMin[e];t+='<div class=\"'.concat(h,\"\\\" data-day-index='\").concat(e,\"'>\").concat(o,\"</div>\"),r++,n++}return t}_getDaysCells(){let{viewDate:e,locale:{firstDay:t}}=this.dp,i=h(e),{year:s,month:a}=o(e),n=new Date(s,a,1),r=new Date(s,a,i),l=n.getDay()-t,d=6-r.getDay()+t;l=l<0?l+7:l,d=d>6?d-7:d;let c=function(e,t){let{year:i,month:s,date:a}=o(e);return new Date(i,s,a-t)}(n,l),u=i+l+d,p=c.getDate(),{year:m,month:g}=o(c),D=0;for(;D<u;){let e=new Date(m,g,p+D);this._generateCell(e),D++}}_generateCell(e){let{type:t,dp:i,opts:s}=this,a=new _({type:t,dp:i,opts:s,date:e,body:this});return this.cells.push(a),a}_generateDayCells(){this._getDaysCells()}_generateMonthCells(){let{year:e}=this.dp.parsedViewDate,t=0;for(;t<12;)this.cells.push(this._generateCell(new Date(e,t))),t++}_generateYearCells(){let e=d(this.dp.viewDate),t=e[0]-1,i=e[1]+1,s=t;for(;s<=i;)this.cells.push(this._generateCell(new Date(s,0))),s++}renderDayNames(){this.$names.innerHTML=this._getDayNamesHtml()}_generateCells(){switch(this.type){case i.days:this._generateDayCells();break;case i.months:this._generateMonthCells();break;case i.years:this._generateYearCells()}}show(){this.isVisible=!0,this.$el.classList.remove(\"-hidden-\")}hide(){this.isVisible=!1,this.$el.classList.add(\"-hidden-\")}destroyCells(){this.cells.forEach((e=>e.destroy())),this.cells=[],this.$cells.innerHTML=\"\"}destroy(){this.destroyCells(),this.dp.off(i.eventChangeViewDate,this.onChangeViewDate),this.dp.off(i.eventChangeCurrentView,this.onChangeCurrentView)}}function F(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class V{constructor(e){let{dp:t,opts:i}=e;F(this,\"onClickNav\",(e=>{let t=y(e.target,\".air-datepicker-nav--action\");if(!t)return;let i=t.dataset.action;this.dp[i]()})),F(this,\"onChangeViewDate\",(()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()})),F(this,\"onChangeCurrentView\",(()=>{this.render(),this._resetNavStatus(),this.handleNavStatus()})),F(this,\"onClickNavTitle\",(()=>{this.dp.isFinalView||this.dp.up()})),F(this,\"update\",(()=>{let{prevHtml:e,nextHtml:t}=this.opts;this.$prev.innerHTML=e,this.$next.innerHTML=t,this._resetNavStatus(),this.render(),this.handleNavStatus()})),F(this,\"renderDelay\",(()=>{setTimeout(this.render)})),F(this,\"render\",(()=>{this.$title.innerHTML=this._getTitle(),function(e,t){for(let i in t)t[i]?e.classList.add(i):e.classList.remove(i)}(this.$title,{\"-disabled-\":this.dp.isFinalView})})),this.dp=t,this.opts=i,this.init()}init(){this._createElement(),this._buildBaseHtml(),this._defineDOM(),this.render(),this.handleNavStatus(),this._bindEvents(),this._bindDatepickerEvents()}_defineDOM(){this.$title=a(\".air-datepicker-nav--title\",this.$el),this.$prev=a('[data-action=\"prev\"]',this.$el),this.$next=a('[data-action=\"next\"]',this.$el)}_bindEvents(){this.$el.addEventListener(\"click\",this.onClickNav),this.$title.addEventListener(\"click\",this.onClickNavTitle)}_bindDatepickerEvents(){this.dp.on(i.eventChangeViewDate,this.onChangeViewDate),this.dp.on(i.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.on(i.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.on(i.eventChangeTime,this.render))}destroy(){this.dp.off(i.eventChangeViewDate,this.onChangeViewDate),this.dp.off(i.eventChangeCurrentView,this.onChangeCurrentView),this.isNavIsFunction&&(this.dp.off(i.eventChangeSelectedDate,this.renderDelay),this.dp.opts.timepicker&&this.dp.off(i.eventChangeTime,this.render))}_createElement(){this.$el=n({tagName:\"nav\",className:\"air-datepicker-nav\"})}_getTitle(){let{dp:e,opts:t}=this,i=t.navTitles[e.currentView];return\"function\"==typeof i?i(e):e.formatDate(e.viewDate,i)}handleNavStatus(){let{disableNavWhenOutOfRange:e}=this.opts,{minDate:t,maxDate:s}=this.dp;if(!t&&!s||!e)return;let{year:a,month:n}=this.dp.parsedViewDate,r=!!t&&o(t),h=!!s&&o(s);switch(this.dp.currentView){case i.days:t&&r.month>=n&&r.year>=a&&this._disableNav(\"prev\"),s&&h.month<=n&&h.year<=a&&this._disableNav(\"next\");break;case i.months:t&&r.year>=a&&this._disableNav(\"prev\"),s&&h.year<=a&&this._disableNav(\"next\");break;case i.years:{let e=d(this.dp.viewDate);t&&r.year>=e[0]&&this._disableNav(\"prev\"),s&&h.year<=e[1]&&this._disableNav(\"next\");break}}}_disableNav(e){a('[data-action=\"'+e+'\"]',this.$el).classList.add(\"-disabled-\")}_resetNavStatus(){!function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.length?e.forEach((e=>{e.classList.remove(...i)})):e.classList.remove(...i)}(this.$el.querySelectorAll(\".air-datepicker-nav--action\"),\"-disabled-\")}_buildBaseHtml(){let{prevHtml:e,nextHtml:t}=this.opts;this.$el.innerHTML='<div class=\"air-datepicker-nav--action\" data-action=\"prev\">'.concat(e,\"</div>\")+'<div class=\"air-datepicker-nav--title\"></div>'+'<div class=\"air-datepicker-nav--action\" data-action=\"next\">'.concat(t,\"</div>\")}get isNavIsFunction(){let{navTitles:e}=this.opts;return Object.keys(e).find((t=>\"function\"==typeof e[t]))}}var x={today:{content:e=>e.locale.today,onClick:e=>e.setViewDate(new Date)},clear:{content:e=>e.locale.clear,onClick:e=>e.clear()}};class H{constructor(e){let{dp:t,opts:i}=e;this.dp=t,this.opts=i,this.init()}init(){this.createElement(),this.render()}createElement(){this.$el=n({className:\"air-datepicker-buttons\"})}destroy(){this.$el.parentNode.removeChild(this.$el)}clearHtml(){return this.$el.innerHTML=\"\",this}generateButtons(){let{buttons:e}=this.opts;Array.isArray(e)||(e=[e]),e.forEach((e=>{let t=e;\"string\"==typeof e&&x[e]&&(t=x[e]);let i=this.createButton(t);t.onClick&&this.attachEventToButton(i,t.onClick),this.$el.appendChild(i)}))}attachEventToButton(e,t){e.addEventListener(\"click\",(()=>{t(this.dp)}))}createButton(e){let{content:t,className:i,tagName:s=\"button\",attrs:a={}}=e,r=\"function\"==typeof t?t(this.dp):t;return n({tagName:s,innerHtml:\"<span tabindex='-1'>\".concat(r,\"</span>\"),className:c(\"air-datepicker-button\",i),attrs:a})}render(){this.generateButtons()}}function L(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class O{constructor(){let{opts:e,dp:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};L(this,\"toggleTimepickerIsActive\",(e=>{this.dp.timepickerIsActive=e})),L(this,\"onChangeSelectedDate\",(e=>{let{date:t,updateTime:i=!1}=e;t&&(this.setMinMaxTime(t),this.setCurrentTime(!!i&&t),this.addTimeToDate(t))})),L(this,\"onChangeLastSelectedDate\",(e=>{e&&(this.setTime(e),this.render())})),L(this,\"onChangeInputRange\",(e=>{let t=e.target;this[t.getAttribute(\"name\")]=t.value,this.updateText(),this.dp.trigger(i.eventChangeTime,{hours:this.hours,minutes:this.minutes})})),L(this,\"onMouseEnterLeave\",(e=>{let t=e.target.getAttribute(\"name\"),i=this.$minutesText;\"hours\"===t&&(i=this.$hoursText),i.classList.toggle(\"-focus-\")})),L(this,\"onFocus\",(()=>{this.toggleTimepickerIsActive(!0)})),L(this,\"onBlur\",(()=>{this.toggleTimepickerIsActive(!1)})),this.opts=e,this.dp=t;let{timeFormat:s}=this.dp.locale;s&&(s.match(k(\"h\"))||s.match(k(\"hh\")))&&(this.ampm=!0),this.init()}init(){this.setTime(this.dp.lastSelectedDate||this.dp.viewDate),this.createElement(),this.buildHtml(),this.defineDOM(),this.render(),this.bindDatepickerEvents(),this.bindDOMEvents()}bindDatepickerEvents(){this.dp.on(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.on(i.eventChangeLastSelectedDate,this.onChangeLastSelectedDate)}bindDOMEvents(){let e=\"input\";navigator.userAgent.match(/trident/gi)&&(e=\"change\"),v(this.$ranges,e,this.onChangeInputRange),v(this.$ranges,\"mouseenter\",this.onMouseEnterLeave),v(this.$ranges,\"mouseleave\",this.onMouseEnterLeave),v(this.$ranges,\"focus\",this.onFocus),v(this.$ranges,\"mousedown\",this.onFocus),v(this.$ranges,\"blur\",this.onBlur)}createElement(){this.$el=n({className:c(\"air-datepicker-time\",{\"-am-pm-\":this.dp.ampm})})}destroy(){this.dp.off(i.eventChangeSelectedDate,this.onChangeSelectedDate),this.dp.off(i.eventChangeLastSelectedDate,this.onChangeLastSelectedDate),this.$el.parentNode.removeChild(this.$el)}buildHtml(){let{ampm:e,hours:t,displayHours:i,minutes:s,minHours:a,minMinutes:n,maxHours:r,maxMinutes:h,dayPeriod:o,opts:{hoursStep:d,minutesStep:c}}=this;this.$el.innerHTML='<div class=\"air-datepicker-time--current\">'+' <span class=\"air-datepicker-time--current-hours\">'.concat(l(i),\"</span>\")+' <span class=\"air-datepicker-time--current-colon\">:</span>'+' <span class=\"air-datepicker-time--current-minutes\">'.concat(l(s),\"</span>\")+\" \".concat(e?\"<span class='air-datepicker-time--current-ampm'>\".concat(o,\"</span>\"):\"\")+'</div><div class=\"air-datepicker-time--sliders\"> <div class=\"air-datepicker-time--row\">'+' <input type=\"range\" name=\"hours\" value=\"'.concat(t,'\" min=\"').concat(a,'\" max=\"').concat(r,'\" step=\"').concat(d,'\"/>')+' </div> <div class=\"air-datepicker-time--row\">'+' <input type=\"range\" name=\"minutes\" value=\"'.concat(s,'\" min=\"').concat(n,'\" max=\"').concat(h,'\" step=\"').concat(c,'\"/>')+\" </div></div>\"}defineDOM(){let e=e=>a(e,this.$el);this.$ranges=this.$el.querySelectorAll('[type=\"range\"]'),this.$hours=e('[name=\"hours\"]'),this.$minutes=e('[name=\"minutes\"]'),this.$hoursText=e(\".air-datepicker-time--current-hours\"),this.$minutesText=e(\".air-datepicker-time--current-minutes\"),this.$ampm=e(\".air-datepicker-time--current-ampm\")}setTime(e){this.setMinMaxTime(e),this.setCurrentTime(e)}addTimeToDate(e){e&&(e.setHours(this.hours),e.setMinutes(this.minutes))}setMinMaxTime(e){if(this.setMinMaxTimeFromOptions(),e){let{minDate:t,maxDate:i}=this.dp;t&&u(e,t)&&this.setMinTimeFromMinDate(t),i&&u(e,i)&&this.setMaxTimeFromMaxDate(i)}}setCurrentTime(e){let{hours:t,minutes:i}=e?o(e):this;this.hours=f(t,this.minHours,this.maxHours),this.minutes=f(i,this.minMinutes,this.maxMinutes)}setMinMaxTimeFromOptions(){let{minHours:e,minMinutes:t,maxHours:i,maxMinutes:s}=this.opts;this.minHours=f(e,0,23),this.minMinutes=f(t,0,59),this.maxHours=f(i,0,23),this.maxMinutes=f(s,0,59)}setMinTimeFromMinDate(e){let{lastSelectedDate:t}=this.dp;this.minHours=e.getHours(),t&&t.getHours()>e.getHours()?this.minMinutes=this.opts.minMinutes:this.minMinutes=e.getMinutes()}setMaxTimeFromMaxDate(e){let{lastSelectedDate:t}=this.dp;this.maxHours=e.getHours(),t&&t.getHours()<e.getHours()?this.maxMinutes=this.opts.maxMinutes:this.maxMinutes=e.getMinutes()}getDayPeriod(e,t){let i=e,s=Number(e);e instanceof Date&&(i=o(e),s=Number(i.hours));let a=\"am\";if(t||this.ampm){switch(!0){case 12===s:case s>11:a=\"pm\"}s=s%12==0?12:s%12}return{hours:s,dayPeriod:a}}updateSliders(){r(this.$hours,{min:this.minHours,max:this.maxHours}).value=this.hours,r(this.$minutes,{min:this.minMinutes,max:this.maxMinutes}).value=this.minutes}updateText(){this.$hoursText.innerHTML=l(this.displayHours),this.$minutesText.innerHTML=l(this.minutes),this.ampm&&(this.$ampm.innerHTML=this.dayPeriod)}set hours(e){this._hours=e;let{hours:t,dayPeriod:i}=this.getDayPeriod(e);this.displayHours=t,this.dayPeriod=i}get hours(){return this._hours}render(){this.updateSliders(),this.updateText()}}function E(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class A{constructor(e){let{dp:t,opts:i}=e;E(this,\"pressedKeys\",new Set),E(this,\"hotKeys\",new Map([[[[\"Control\",\"ArrowRight\"],[\"Control\",\"ArrowUp\"]],e=>e.month++],[[[\"Control\",\"ArrowLeft\"],[\"Control\",\"ArrowDown\"]],e=>e.month--],[[[\"Shift\",\"ArrowRight\"],[\"Shift\",\"ArrowUp\"]],e=>e.year++],[[[\"Shift\",\"ArrowLeft\"],[\"Shift\",\"ArrowDown\"]],e=>e.year--],[[[\"Alt\",\"ArrowRight\"],[\"Alt\",\"ArrowUp\"]],e=>e.year+=10],[[[\"Alt\",\"ArrowLeft\"],[\"Alt\",\"ArrowDown\"]],e=>e.year-=10],[[\"Control\",\"Shift\",\"ArrowUp\"],(e,t)=>t.up()]])),E(this,\"handleHotKey\",(e=>{let t=this.hotKeys.get(e),i=o(this.getInitialFocusDate());t(i,this.dp);let{year:s,month:a,date:n}=i,r=h(new Date(s,a));r<n&&(n=r);let l=this.dp.getClampedDate(new Date(s,a,n));this.dp.setFocusDate(l,{viewDateTransition:!0})})),E(this,\"isHotKeyPressed\",(()=>{let e=!1,t=this.pressedKeys.size,i=e=>this.pressedKeys.has(e);for(let[s]of this.hotKeys){if(e)break;if(Array.isArray(s[0]))s.forEach((a=>{e||t!==a.length||(e=a.every(i)&&s)}));else{if(t!==s.length)continue;e=s.every(i)&&s}}return e})),E(this,\"isArrow\",(e=>e>=37&&e<=40)),E(this,\"onKeyDown\",(e=>{let{key:t,which:i}=e,{dp:s,dp:{focusDate:a},opts:n}=this;this.registerKey(t);let r=this.isHotKeyPressed();if(r)return e.preventDefault(),void this.handleHotKey(r);if(this.isArrow(i))return e.preventDefault(),void this.focusNextCell(t);if(\"Enter\"===t){if(s.currentView!==n.minView)return void s.down();if(a){let e=s._checkIfDateIsSelected(a);return void(e?s._handleAlreadySelectedDates(e,a):s.selectDate(a))}}\"Escape\"===t&&this.dp.hide()})),E(this,\"onKeyUp\",(e=>{this.removeKey(e.key)})),this.dp=t,this.opts=i,this.init()}init(){this.bindKeyboardEvents()}bindKeyboardEvents(){let{$el:e}=this.dp;e.addEventListener(\"keydown\",this.onKeyDown),e.addEventListener(\"keyup\",this.onKeyUp)}destroy(){let{$el:e}=this.dp;e.removeEventListener(\"keydown\",this.onKeyDown),e.removeEventListener(\"keyup\",this.onKeyUp),this.hotKeys=null,this.pressedKeys=null}getInitialFocusDate(){let{focusDate:e,currentView:t,selectedDates:s,parsedViewDate:{year:a,month:n}}=this.dp,r=e||s[s.length-1];if(!r)switch(t){case i.days:r=new Date(a,n,(new Date).getDate());break;case i.months:r=new Date(a,n,1);break;case i.years:r=new Date(a,0,1)}return r}focusNextCell(e){let t=this.getInitialFocusDate(),{currentView:s}=this.dp,{days:a,months:n,years:r}=i,h=o(t),l=h.year,d=h.month,c=h.date;switch(e){case\"ArrowLeft\":s===a&&(c-=1),s===n&&(d-=1),s===r&&(l-=1);break;case\"ArrowUp\":s===a&&(c-=7),s===n&&(d-=3),s===r&&(l-=4);break;case\"ArrowRight\":s===a&&(c+=1),s===n&&(d+=1),s===r&&(l+=1);break;case\"ArrowDown\":s===a&&(c+=7),s===n&&(d+=3),s===r&&(l+=4)}let u=this.dp.getClampedDate(new Date(l,d,c));this.dp.setFocusDate(u,{viewDateTransition:!0})}registerKey(e){this.pressedKeys.add(e)}removeKey(e){this.pressedKeys.delete(e)}}let N={on(e,t){this.__events||(this.__events={}),this.__events[e]?this.__events[e].push(t):this.__events[e]=[t]},off(e,t){this.__events&&this.__events[e]&&(this.__events[e]=this.__events[e].filter((e=>e!==t)))},removeAllEvents(){this.__events={}},trigger(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];this.__events&&this.__events[e]&&this.__events[e].forEach((e=>{e(...i)}))}};function I(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}let R=\"\",P=\"\",B=\"\",K=!1;class j{constructor(e,t){var r=this;if(I(this,\"viewIndexes\",[i.days,i.months,i.years]),I(this,\"next\",(()=>{let{year:e,month:t}=this.parsedViewDate;switch(this.currentView){case i.days:this.setViewDate(new Date(e,t+1,1));break;case i.months:this.setViewDate(new Date(e+1,t,1));break;case i.years:this.setViewDate(new Date(e+10,0,1))}})),I(this,\"prev\",(()=>{let{year:e,month:t}=this.parsedViewDate;switch(this.currentView){case i.days:this.setViewDate(new Date(e,t-1,1));break;case i.months:this.setViewDate(new Date(e-1,t,1));break;case i.years:this.setViewDate(new Date(e-10,0,1))}})),I(this,\"_finishHide\",(()=>{this.hideAnimation=!1,this._destroyComponents(),this.$container.removeChild(this.$datepicker)})),I(this,\"setPosition\",(function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(\"function\"==typeof(e=e||r.opts.position))return void(r.customHide=e({$datepicker:r.$datepicker,$target:r.$el,$pointer:r.$pointer,isViewChange:t,done:r._finishHide}));let i,s,{isMobile:a}=r.opts,n=r.$el.getBoundingClientRect(),h=r.$el.getBoundingClientRect(),o=r.$datepicker.offsetParent,l=r.$el.offsetParent,d=r.$datepicker.getBoundingClientRect(),c=e.split(\" \"),u=window.scrollY,p=window.scrollX,m=r.opts.offset,g=c[0],D=c[1];if(a)r.$datepicker.style.cssText=\"left: 50%; top: 50%\";else{if(o===l&&o!==document.body&&(h={top:r.$el.offsetTop,left:r.$el.offsetLeft,width:n.width,height:r.$el.offsetHeight},u=0,p=0),o!==l&&o!==document.body){let e=o.getBoundingClientRect();h={top:n.top-e.top,left:n.left-e.left,width:n.width,height:n.height},u=0,p=0}switch(g){case\"top\":i=h.top-d.height-m;break;case\"right\":s=h.left+h.width+m;break;case\"bottom\":i=h.top+h.height+m;break;case\"left\":s=h.left-d.width-m}switch(D){case\"top\":i=h.top;break;case\"right\":s=h.left+h.width-d.width;break;case\"bottom\":i=h.top+h.height-d.height;break;case\"left\":s=h.left;break;case\"center\":/left|right/.test(g)?i=h.top+h.height/2-d.height/2:s=h.left+h.width/2-d.width/2}r.$datepicker.style.cssText=\"left: \".concat(s+p,\"px; top: \").concat(i+u,\"px\")}})),I(this,\"_setInputValue\",(()=>{let{opts:e,$altField:t,locale:{dateFormat:i}}=this,{altFieldDateFormat:s,altField:a}=e;a&&t&&(t.value=this._getInputValue(s)),this.$el.value=this._getInputValue(i)})),I(this,\"_getInputValue\",(e=>{let{selectedDates:t,opts:i}=this,{multipleDates:s,multipleDatesSeparator:a}=i;if(!t.length)return\"\";let n=\"function\"==typeof e,r=n?e(s?t:t[0]):t.map((t=>this.formatDate(t,e)));return r=n?r:r.join(a),r})),I(this,\"_checkIfDateIsSelected\",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.days,s=!1;return r.selectedDates.some((i=>{let a=u(e,i,t);return s=a&&i,a})),s})),I(this,\"_scheduleCallAfterTransition\",(e=>{this._cancelScheduledCall(),e&&e(!1),this._onTransitionEnd=()=>{e&&e(!0)},this.$datepicker.addEventListener(\"transitionend\",this._onTransitionEnd,{once:!0})})),I(this,\"_cancelScheduledCall\",(()=>{this.$datepicker.removeEventListener(\"transitionend\",this._onTransitionEnd)})),I(this,\"setViewDate\",(e=>{if(!((e=b(e))instanceof Date))return;if(u(e,this.viewDate))return;let t=this.viewDate;this.viewDate=e;let{onChangeViewDate:s}=this.opts;if(s){let{month:e,year:t}=this.parsedViewDate;s({month:e,year:t,decade:this.curDecade})}this.trigger(i.eventChangeViewDate,e,t)})),I(this,\"setFocusDate\",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(!e||(e=b(e))instanceof Date)&&(r.focusDate=e,r.opts.range&&e&&r._handleRangeOnFocus(),r.trigger(i.eventChangeFocusDate,e,t))})),I(this,\"setCurrentView\",(e=>{if(this.viewIndexes.includes(e)){if(this.currentView=e,this.elIsInput&&this.visible&&this.setPosition(void 0,!0),this.trigger(i.eventChangeCurrentView,e),!this.views[e]){let t=this.views[e]=new T({dp:this,opts:this.opts,type:e});this.shouldUpdateDOM&&this.$content.appendChild(t.$el)}this.opts.onChangeView&&this.opts.onChangeView(e)}})),I(this,\"_updateLastSelectedDate\",(e=>{this.lastSelectedDate=e,this.trigger(i.eventChangeLastSelectedDate,e)})),I(this,\"destroy\",(()=>{let{showEvent:e,isMobile:t}=this.opts,i=this.$datepicker.parentNode;i&&i.removeChild(this.$datepicker),this.$el.removeEventListener(e,this._onFocus),this.$el.removeEventListener(\"blur\",this._onBlur),window.removeEventListener(\"resize\",this._onResize),t&&this._removeMobileAttributes(),this.keyboardNav&&this.keyboardNav.destroy(),this.views=null,this.nav=null,this.$datepicker=null,this.opts=null,this.$customContainer=null,this.viewDate=null,this.focusDate=null,this.selectedDates=null,this.rangeDateFrom=null,this.rangeDateTo=null})),I(this,\"update\",(e=>{let t=w({},this.opts);w(this.opts,e);let{timepicker:s,buttons:a,range:n,selectedDates:r,isMobile:h}=this.opts,o=this.visible||this.treatAsInline;this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this._handleLocale(),!t.selectedDates&&r&&this.selectDate(r),e.view&&this.setCurrentView(e.view),this._setInputValue(),t.range&&!n?(this.rangeDateTo=!1,this.rangeDateFrom=!1):!t.range&&n&&this.selectedDates.length&&(this.rangeDateFrom=this.selectedDates[0],this.rangeDateTo=this.selectedDates[1]),t.timepicker&&!s?(o&&this.timepicker.destroy(),this.timepicker=!1,this.$timepicker.parentNode.removeChild(this.$timepicker)):!t.timepicker&&s&&this._addTimepicker(),!t.buttons&&a?this._addButtons():t.buttons&&!a?(this.buttons.destroy(),this.$buttons.parentNode.removeChild(this.$buttons)):o&&t.buttons&&a&&this.buttons.clearHtml().render(),!t.isMobile&&h?(this.treatAsInline||B||this._createMobileOverlay(),this._addMobileAttributes(),this.visible&&this._showMobileOverlay()):t.isMobile&&!h&&(this._removeMobileAttributes(),this.visible&&(B.classList.remove(\"-active-\"),\"function\"!=typeof this.opts.position&&this.setPosition())),o&&(this.nav.update(),this.views[this.currentView].render(),this.currentView===i.days&&this.views[this.currentView].renderDayNames())})),I(this,\"isOtherMonth\",(e=>{let{month:t}=o(e);return t!==this.parsedViewDate.month})),I(this,\"isOtherYear\",(e=>{let{year:t}=o(e);return t!==this.parsedViewDate.year})),I(this,\"isOtherDecade\",(e=>{let{year:t}=o(e),[i,s]=d(this.viewDate);return t<i||t>s})),I(this,\"_onChangeSelectedDate\",(e=>{let{silent:t}=e;setTimeout((()=>{this._setInputValue(),this.opts.onSelect&&!t&&this._triggerOnSelect()}))})),I(this,\"_onChangeFocusedDate\",(function(e){let{viewDateTransition:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return;let i=!1;t&&(i=r.isOtherMonth(e)||r.isOtherYear(e)||r.isOtherDecade(e)),i&&r.setViewDate(e)})),I(this,\"_onChangeTime\",(e=>{let{hours:t,minutes:i}=e,s=new Date,{lastSelectedDate:a,opts:{onSelect:n}}=this,r=a;a||(r=s);let h=this.getCell(r,this.currentViewSingular),o=h&&h.adpCell;o&&o.isDisabled||(r.setHours(t),r.setMinutes(i),a?(this._setInputValue(),n&&this._triggerOnSelect()):this.selectDate(r))})),I(this,\"_onFocus\",(e=>{this.visible||this.show()})),I(this,\"_onBlur\",(e=>{this.inFocus||!this.visible||this.opts.isMobile||this.hide()})),I(this,\"_onMouseDown\",(e=>{this.inFocus=!0})),I(this,\"_onMouseUp\",(e=>{this.inFocus=!1,this.$el.focus()})),I(this,\"_onResize\",(()=>{this.visible&&\"function\"!=typeof this.opts.position&&this.setPosition()})),I(this,\"_onClickOverlay\",(()=>{this.visible&&this.hide()})),I(this,\"isWeekend\",(e=>this.opts.weekends.includes(e))),I(this,\"getClampedDate\",(e=>{let{minDate:t,maxDate:i}=this,s=e;return i&&p(e,i)?s=i:t&&m(e,t)&&(s=t),s})),this.$el=a(e),!this.$el)return;this.$datepicker=n({className:\"air-datepicker\"}),this.opts=w({},s,t),this.$customContainer=!!this.opts.container&&a(this.opts.container),this.$altField=a(this.opts.altField||!1),R||(R=a(\"body\"));let{view:h,startDate:l}=this.opts;l||(this.opts.startDate=new Date),\"INPUT\"===this.$el.nodeName&&(this.elIsInput=!0),this.inited=!1,this.visible=!1,this.viewDate=b(this.opts.startDate),this.focusDate=!1,this.initialReadonly=this.$el.getAttribute(\"readonly\"),this.customHide=!1,this.currentView=h,this.selectedDates=[],this.views={},this.keys=[],this.rangeDateFrom=\"\",this.rangeDateTo=\"\",this.timepickerIsActive=!1,this.treatAsInline=this.opts.inline||!this.elIsInput,this.init()}init(){let{opts:e,treatAsInline:t,opts:{inline:i,isMobile:s,selectedDates:a,keyboardNav:r,onlyTimepicker:h}}=this;var o;K||i||!this.elIsInput||(K=!0,P=n({className:o=j.defaultContainerId,id:o}),R.appendChild(P)),!s||B||t||this._createMobileOverlay(),this._handleLocale(),this._bindSubEvents(),this._createMinMaxDates(),this._limitViewDateByMaxMinDates(),this.elIsInput&&(i||this._bindEvents(),r&&!h&&(this.keyboardNav=new A({dp:this,opts:e}))),a&&this.selectDate(a,{silent:!0}),this.opts.visible&&!t&&this.show(),s&&!t&&this.$el.setAttribute(\"readonly\",!0),t&&this._createComponents()}_createMobileOverlay(){B=n({className:\"air-datepicker-overlay\"}),P.appendChild(B)}_createComponents(){let{opts:e,treatAsInline:t,opts:{inline:i,buttons:s,timepicker:a,position:n,classes:r,onlyTimepicker:h,isMobile:o}}=this;this._buildBaseHtml(),this.elIsInput&&(i||this._setPositionClasses(n)),!i&&this.elIsInput||this.$datepicker.classList.add(\"-inline-\"),r&&this.$datepicker.classList.add(...r.split(\" \")),h&&this.$datepicker.classList.add(\"-only-timepicker-\"),o&&!t&&this._addMobileAttributes(),this.views[this.currentView]=new T({dp:this,type:this.currentView,opts:e}),this.nav=new V({dp:this,opts:e}),a&&this._addTimepicker(),s&&this._addButtons(),this.$content.appendChild(this.views[this.currentView].$el),this.$nav.appendChild(this.nav.$el)}_destroyComponents(){for(let e in this.views)this.views[e].destroy();this.views={},this.nav.destroy(),this.timepicker&&this.timepicker.destroy()}_addMobileAttributes(){B.addEventListener(\"click\",this._onClickOverlay),this.$datepicker.classList.add(\"-is-mobile-\"),this.$el.setAttribute(\"readonly\",!0)}_removeMobileAttributes(){B.removeEventListener(\"click\",this._onClickOverlay),this.$datepicker.classList.remove(\"-is-mobile-\"),this.initialReadonly||\"\"===this.initialReadonly||this.$el.removeAttribute(\"readonly\")}_createMinMaxDates(){let{minDate:e,maxDate:t}=this.opts;this.minDate=!!e&&b(e),this.maxDate=!!t&&b(t)}_addTimepicker(){this.$timepicker=n({className:\"air-datepicker--time\"}),this.$datepicker.appendChild(this.$timepicker),this.timepicker=new O({dp:this,opts:this.opts}),this.$timepicker.appendChild(this.timepicker.$el)}_addButtons(){this.$buttons=n({className:\"air-datepicker--buttons\"}),this.$datepicker.appendChild(this.$buttons),this.buttons=new H({dp:this,opts:this.opts}),this.$buttons.appendChild(this.buttons.$el)}_bindSubEvents(){this.on(i.eventChangeSelectedDate,this._onChangeSelectedDate),this.on(i.eventChangeFocusDate,this._onChangeFocusedDate),this.on(i.eventChangeTime,this._onChangeTime)}_buildBaseHtml(){let{inline:e}=this.opts;var t,i;this.elIsInput?e?(t=this.$datepicker,(i=this.$el).parentNode.insertBefore(t,i.nextSibling)):this.$container.appendChild(this.$datepicker):this.$el.appendChild(this.$datepicker),this.$datepicker.innerHTML='<i class=\"air-datepicker--pointer\"></i><div class=\"air-datepicker--navigation\"></div><div class=\"air-datepicker--content\"></div>',this.$content=a(\".air-datepicker--content\",this.$datepicker),this.$pointer=a(\".air-datepicker--pointer\",this.$datepicker),this.$nav=a(\".air-datepicker--navigation\",this.$datepicker)}_handleLocale(){let{locale:e,dateFormat:t,firstDay:i,timepicker:s,onlyTimepicker:a,timeFormat:n,dateTimeSeparator:r}=this.opts;var h;this.locale=(h=e,JSON.parse(JSON.stringify(h))),t&&(this.locale.dateFormat=t),void 0!==n&&\"\"!==n&&(this.locale.timeFormat=n);let{timeFormat:o}=this.locale;if(\"\"!==i&&(this.locale.firstDay=i),s&&\"function\"!=typeof t){let e=o?r:\"\";this.locale.dateFormat=[this.locale.dateFormat,o||\"\"].join(e)}a&&\"function\"!=typeof t&&(this.locale.dateFormat=this.locale.timeFormat)}_setPositionClasses(e){if(\"function\"==typeof e)return void this.$datepicker.classList.add(\"-custom-position-\");let t=(e=e.split(\" \"))[0],i=e[1],s=\"air-datepicker -\".concat(t,\"-\").concat(i,\"- -from-\").concat(t,\"-\");this.$datepicker.classList.add(...s.split(\" \"))}_bindEvents(){this.$el.addEventListener(this.opts.showEvent,this._onFocus),this.$el.addEventListener(\"blur\",this._onBlur),this.$datepicker.addEventListener(\"mousedown\",this._onMouseDown),this.$datepicker.addEventListener(\"mouseup\",this._onMouseUp),window.addEventListener(\"resize\",this._onResize)}_limitViewDateByMaxMinDates(){let{viewDate:e,minDate:t,maxDate:i}=this;i&&p(e,i)&&this.setViewDate(i),t&&m(e,t)&&this.setViewDate(t)}formatDate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.viewDate,t=arguments.length>1?arguments[1]:void 0;if(e=b(e),!(e instanceof Date))return;let i=t,s=this.locale,a=o(e),n=d(e),r=j.replacer,h=\"am\";this.opts.timepicker&&this.timepicker&&(h=this.timepicker.getDayPeriod(e).dayPeriod);let l={T:e.getTime(),m:a.minutes,mm:a.fullMinutes,h:a.hours12,hh:a.fullHours12,H:a.hours,HH:a.fullHours,aa:h,AA:h.toUpperCase(),E:s.daysShort[a.day],EEEE:s.days[a.day],d:a.date,dd:a.fullDate,M:a.month+1,MM:a.fullMonth,MMM:s.monthsShort[a.month],MMMM:s.months[a.month],yy:a.year.toString().slice(-2),yyyy:a.year,yyyy1:n[0],yyyy2:n[1]};for(let[e,t]of Object.entries(l))i=r(i,k(e),t);return i}down(e){this._handleUpDownActions(e,\"down\")}up(e){this._handleUpDownActions(e,\"up\")}selectDate(e){let t,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{currentView:a,parsedViewDate:n,selectedDates:r}=this,{updateTime:h}=s,{moveToOtherMonthsOnSelect:o,moveToOtherYearsOnSelect:l,multipleDates:d,range:c,autoClose:u}=this.opts,m=r.length;if(Array.isArray(e))return e.forEach((e=>{this.selectDate(e,s)})),new Promise((e=>{setTimeout(e)}));if((e=b(e))instanceof Date){if(a===i.days&&e.getMonth()!==n.month&&o&&(t=new Date(e.getFullYear(),e.getMonth(),1)),a===i.years&&e.getFullYear()!==n.year&&l&&(t=new Date(e.getFullYear(),0,1)),t&&this.setViewDate(t),d&&!c){if(m===d)return;this._checkIfDateIsSelected(e)||r.push(e)}else if(c)switch(m){case 1:r.push(e),this.rangeDateTo||(this.rangeDateTo=e),p(this.rangeDateFrom,this.rangeDateTo)&&(this.rangeDateTo=this.rangeDateFrom,this.rangeDateFrom=e),this.selectedDates=[this.rangeDateFrom,this.rangeDateTo];break;case 2:this.selectedDates=[e],this.rangeDateFrom=e,this.rangeDateTo=\"\";break;default:this.selectedDates=[e],this.rangeDateFrom=e}else this.selectedDates=[e];return this.trigger(i.eventChangeSelectedDate,{action:i.actionSelectDate,silent:null==s?void 0:s.silent,date:e,updateTime:h}),this._updateLastSelectedDate(e),u&&!this.timepickerIsActive&&this.visible&&(d||c?c&&1===m&&this.hide():this.hide()),new Promise((e=>{setTimeout(e)}))}}unselectDate(e){let t=this.selectedDates,s=this;if((e=b(e))instanceof Date)return t.some(((a,n)=>{if(u(a,e))return t.splice(n,1),s.selectedDates.length?s._updateLastSelectedDate(s.selectedDates[s.selectedDates.length-1]):(s.rangeDateFrom=\"\",s.rangeDateTo=\"\",s._updateLastSelectedDate(!1)),this.trigger(i.eventChangeSelectedDate,{action:i.actionUnselectDate,date:e}),!0}))}replaceDate(e,t){let s=this.selectedDates.find((t=>u(t,e,this.currentView))),a=this.selectedDates.indexOf(s);a<0||u(this.selectedDates[a],t,this.currentView)||(this.selectedDates[a]=t,this.trigger(i.eventChangeSelectedDate,{action:i.actionSelectDate,date:t,updateTime:!0}),this._updateLastSelectedDate(t))}clear(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.selectedDates=[],this.rangeDateFrom=!1,this.rangeDateTo=!1,this.trigger(i.eventChangeSelectedDate,{action:i.actionUnselectDate,silent:e.silent}),new Promise((e=>{setTimeout(e)}))}show(){let{onShow:e,isMobile:t}=this.opts;this._cancelScheduledCall(),this.visible||this.hideAnimation||this._createComponents(),this.setPosition(this.opts.position),this.$datepicker.classList.add(\"-active-\"),this.visible=!0,e&&this._scheduleCallAfterTransition(e),t&&this._showMobileOverlay()}hide(){let{onHide:e,isMobile:t}=this.opts,i=this._hasTransition();this.visible=!1,this.hideAnimation=!0,this.$datepicker.classList.remove(\"-active-\"),this.customHide&&this.customHide(),this.elIsInput&&this.$el.blur(),this._scheduleCallAfterTransition((t=>{!this.customHide&&(t&&i||!t&&!i)&&this._finishHide(),e&&e(t)})),t&&B.classList.remove(\"-active-\")}_triggerOnSelect(){let e=[],t=[],{selectedDates:i,locale:s,opts:{onSelect:a,multipleDates:n,range:r}}=this,h=n||r,o=\"function\"==typeof s.dateFormat;i.length&&(e=i.map(g),t=o?n?s.dateFormat(e):e.map((e=>s.dateFormat(e))):e.map((e=>this.formatDate(e,s.dateFormat)))),a({date:h?e:e[0],formattedDate:h?t:t[0],datepicker:this})}_handleAlreadySelectedDates(e,t){let{range:i,toggleSelected:s}=this.opts;i?s?this.unselectDate(t):2!==this.selectedDates.length&&this.selectDate(t):s&&this.unselectDate(t),s||this._updateLastSelectedDate(e)}_handleUpDownActions(e,t){if(!((e=b(e||this.focusDate||this.viewDate))instanceof Date))return;let i=\"up\"===t?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),i<0&&(i=0),this.setViewDate(new Date(e.getFullYear(),e.getMonth(),1)),this.setCurrentView(this.viewIndexes[i])}_handleRangeOnFocus(){1===this.selectedDates.length&&(p(this.selectedDates[0],this.focusDate)?(this.rangeDateTo=this.selectedDates[0],this.rangeDateFrom=this.focusDate):(this.rangeDateTo=this.focusDate,this.rangeDateFrom=this.selectedDates[0]))}getCell(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.day;if(!((e=b(e))instanceof Date))return;let{year:s,month:a,date:n}=o(e),r='[data-year=\"'.concat(s,'\"]'),h='[data-month=\"'.concat(a,'\"]'),l='[data-date=\"'.concat(n,'\"]'),d={[i.day]:\"\".concat(r).concat(h).concat(l),[i.month]:\"\".concat(r).concat(h),[i.year]:\"\".concat(r)};return this.views[this.currentView].$el.querySelector(d[t])}_showMobileOverlay(){B.classList.add(\"-active-\")}_hasTransition(){return window.getComputedStyle(this.$datepicker).getPropertyValue(\"transition-duration\").split(\", \").reduce(((e,t)=>parseFloat(t)+e),0)>0}get shouldUpdateDOM(){return this.visible||this.treatAsInline}get parsedViewDate(){return o(this.viewDate)}get currentViewSingular(){return this.currentView.slice(0,-1)}get curDecade(){return d(this.viewDate)}get viewIndex(){return this.viewIndexes.indexOf(this.currentView)}get isFinalView(){return this.currentView===i.years}get hasSelectedDates(){return this.selectedDates.length>0}get isMinViewReached(){return this.currentView===this.opts.minView||this.currentView===i.days}get $container(){return this.$customContainer||P}static replacer(e,t,i){return e.replace(t,(function(e,t,s,a){return t+i+a}))}}var U;return I(j,\"defaults\",s),I(j,\"version\",\"3.3.0\"),I(j,\"defaultContainerId\",\"air-datepicker-global-container\"),U=j.prototype,Object.assign(U,N),t.default}()}));"],"names":["e","t","module","this","i","s","j","a","n","r","h","o","l","d","c","u","p","g","m","D","v","y","f","w","b","k","C","_","M","$","S","T","F","V","x","H","L","O","E","A","N","I","R","P","B","K","U"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"design-system103.mjs","sources":["../src/vendor/imask-7.1.3.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n ((global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.IMask = {})));\n})(this, (function (exports) { 'use strict';\n\n /** Checks if value is string */\n function isString(str) {\n return typeof str === 'string' || str instanceof String;\n }\n\n /** Checks if value is object */\n function isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n }\n function pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n }\n\n /** Direction */\n const DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n };\n\n /** Direction */\n\n function forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n }\n\n /** Escapes regular expression control chars */\n function escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }\n\n // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n function objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n }\n\n /** Selection range */\n\n /** Provides details of changing input */\n class ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }\n\n /** Applies mask on element */\n function IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n }\n\n // TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n // export function maskedClass(mask: string): typeof MaskedPattern;\n // export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n // export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n // export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n // export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n // export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n // export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n // export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n // export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n // export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n // export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n // export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n // export function maskedClass(mask: Masked): typeof Masked;\n // export function maskedClass(mask: typeof Masked): typeof Masked;\n // export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n // export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n // export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n // export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n // export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n // export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n // export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n // export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n // export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n // export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n // export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n /** Get Masked class by mask type */\n function maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n }\n function normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n }\n\n // TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n // From masked\n // export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n // // From masked class\n // export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n // // From mask opts\n // export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n // export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n /** Creates new {@link Masked} depending on mask type */\n function createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n }\n IMask.createMask = createMask;\n\n /** Generic element API to use with mask */\n class MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n }\n\n IMask.MaskElement = MaskElement;\n\n /** Bridge between HTMLElement and {@link Masked} */\n class HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }\n /** Mapping between HTMLElement events and mask internal events */\n HTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n };\n IMask.HTMLMaskElement = HTMLMaskElement;\n\n /** Bridge between InputElement and {@link Masked} */\n class HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n }\n IMask.HTMLMaskElement = HTMLMaskElement;\n\n class HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n }\n IMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\n /** Listens to element events and controls changes between element and {@link Masked} */\n class InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n }\n IMask.InputMask = InputMask;\n\n /** Provides details of changing model value */\n class ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n }\n IMask.ChangeDetails = ChangeDetails;\n\n /** Provides details of continuous extracted tail */\n class ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n }\n\n /** Append flags */\n\n /** Extract flags */\n\n // see https://github.com/microsoft/TypeScript/issues/6223\n\n /** Provides common masking stuff */\n class Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n }\n Masked.DEFAULTS = {\n skipInvalid: true\n };\n Masked.EMPTY_VALUES = [undefined, null, ''];\n IMask.Masked = Masked;\n\n class ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n }\n\n class PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n }\n\n class PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n }\n\n class PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n }\n PatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n };\n\n /** Masking by RegExp */\n class MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n }\n IMask.MaskedRegExp = MaskedRegExp;\n\n /** Pattern mask */\n class MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n }\n MaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n };\n MaskedPattern.STOP_CHAR = '`';\n MaskedPattern.ESCAPE_CHAR = '\\\\';\n MaskedPattern.InputDefinition = PatternInputDefinition;\n MaskedPattern.FixedDefinition = PatternFixedDefinition;\n IMask.MaskedPattern = MaskedPattern;\n\n /** Pattern which accepts ranges */\n class MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n }\n IMask.MaskedRange = MaskedRange;\n\n /** Date mask */\n class MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n }\n MaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n });\n MaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n };\n IMask.MaskedDate = MaskedDate;\n\n /** Dynamic mask for choosing appropriate mask in run-time */\n class MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n }\n MaskedDynamic.DEFAULTS = void 0;\n MaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n };\n IMask.MaskedDynamic = MaskedDynamic;\n\n /** Pattern which validates enum values */\n class MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n }\n IMask.MaskedEnum = MaskedEnum;\n\n /** Masking by custom Function */\n class MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n }\n IMask.MaskedFunction = MaskedFunction;\n\n /** Number mask */\n class MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n }\n MaskedNumber.UNMASKED_RADIX = '.';\n MaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\n MaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n };\n IMask.MaskedNumber = MaskedNumber;\n\n /** Mask pipe source and destination types */\n const PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n };\n /** Creates new pipe function depending on mask type, source and destination options */\n function createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n }\n\n /** Pipes value through mask depending on mask type, source and destination options */\n function pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n }\n IMask.PIPE_TYPE = PIPE_TYPE;\n IMask.createPipe = createPipe;\n IMask.pipe = pipe;\n\n try {\n globalThis.IMask = IMask;\n } catch {}\n\n exports.ChangeDetails = ChangeDetails;\n exports.ChunksTailDetails = ChunksTailDetails;\n exports.DIRECTION = DIRECTION;\n exports.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n exports.HTMLInputMaskElement = HTMLInputMaskElement;\n exports.HTMLMaskElement = HTMLMaskElement;\n exports.InputMask = InputMask;\n exports.MaskElement = MaskElement;\n exports.Masked = Masked;\n exports.MaskedDate = MaskedDate;\n exports.MaskedDynamic = MaskedDynamic;\n exports.MaskedEnum = MaskedEnum;\n exports.MaskedFunction = MaskedFunction;\n exports.MaskedNumber = MaskedNumber;\n exports.MaskedPattern = MaskedPattern;\n exports.MaskedRange = MaskedRange;\n exports.MaskedRegExp = MaskedRegExp;\n exports.PIPE_TYPE = PIPE_TYPE;\n exports.PatternFixedDefinition = PatternFixedDefinition;\n exports.PatternInputDefinition = PatternInputDefinition;\n exports.createMask = createMask;\n exports.createPipe = createPipe;\n exports.default = IMask;\n exports.forceDirection = forceDirection;\n exports.normalizeOpts = normalizeOpts;\n exports.pipe = pipe;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=imask.js.map\n\n/**\n * NOTE: Export for usage\n */\nexport default IMask;"],"names":["global","factory","this","exports","isString","str","isObject","obj","_obj$constructor","pick","keys","_","k","acc","_ref","v","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","b","a","arrA","arrB","dateA","dateB","regexpA","regexpB","ActionDetails","opts","IMask","el","maskedClass","mask","normalizeOpts","instanceOpts","_mask","createMask","nOpts","MaskedClass","MaskElement","start","end","HTMLMaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","event","handler","HTMLInputMaskElement","value","HTMLContenteditableMaskElement","root","selection","anchorOffset","focusOffset","range","InputMask","_this$masked","masked","val","ev","listeners","l","pos","newUnmaskedValue","newValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","cursorPos","hIndex","e","details","oldRawValue","offset","removeDirection","ChangeDetails","prep","ContinuousTailDetails","from","stop","tail","state","beforePos","shiftChar","Masked","flags","fromPos","toPos","ch","checkTail","consistentState","consistentTail","appended","beforeTailState","tailDetails","ci","d","fn","rawInput","ret","deleteCount","inserted","tailPos","eagerRemove","startChangePos","valLength","tval","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","chunk","lastBlockIter","chunkBlock","phDetails","remainChars","c","props","cstate","chunkShiftPos","PatternCursor","index","s","_this$block","PatternFixedDefinition","minPos","maxPos","appendEager","isResolved","PatternInputDefinition","parent","isOptional","placeholderChar","displayChar","lazy","eager","maskOpts","boundPos","_flags$_beforeTailSta","MaskedRegExp","MaskedPattern","defs","pattern","unmaskingBlock","optionalBlock","i","p","bNames","bName","expose","blockOpts","maskedBlock","char","isInput","def","_blocks","maskedState","bi","unmaskedValue","_this$_mapPosToBlock","startBlockIndex","blockIter","block","blockDetails","skip","chunkTail","bFromPos","bToPos","blockChunk","blockIndex","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","name","indices","gi","MaskedRange","to","maxLength","autofix","patternOpts","fromStr","toStr","sameCharsCount","minstr","maxstr","placeholder","num","nextVal","MaskedDate","blocks","patternBlocks","bk","date","day","month","year","MaskedDynamic","m","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","_flags$_beforeTailSta2","currentDetails","_this$currentMask","typedValue","_this$currentMask2","_this$currentMask3","_this$currentMask4","compiledMasks","currentMaskRef","currentMask","mi","overwrite","skipInvalid","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","i1","i2","MaskedEnum","_enum","eopts","lengths","requiredLength","optionalLength","MaskedFunction","MaskedNumber","mid","parts","prepCh","extendOnSeparators","count","slice","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","number","validnum","formatted","match","sign","zeros","dropFractional","n","PIPE_TYPE","createPipe","arg","pipe","IMask$1"],"mappings":"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"}
|