PageSourceSearch

https://klining-spb24.ru/_s/lib/calendar/dist/js/calendar.js?v2.3.13

js klining-spb24.ru collected 2026-10-09 17:48:13 UTC 44,180 bytes, 25 lines download raw bytes

1"use strict";(()=>{var A={clickOnIcon:{on(){this.input.$icon.on(`click.${this.instanceId}`,()=>{let{showed:i}=this.main;i?this.dispatch("hideCalendar"):this.dispatch("showCalendar")})},off(){this.input.$icon.off(`click.${this.instanceId}`)}},resizeWindow:{on(){let i;$(window).on(`resize.${this.instanceId}`,()=>{clearTimeout(i),i=setTimeout(()=>{this.dispatch("resize")},200)})},off(){$(window).off(`resize.${this.instanceId}`)}},keyupOnInput:{on(){this.input.$element.on(`keyup.${this.instanceId}`,i=>{let e=i.keyCode===27,t=i.keyCode===13;(e||t)&&this.dispatch("hideCalendar")})},off(){this.input.$element.off(`keyup.${this.instanceId}`)}},onInput:{on(){let{dateMask:i}=this.config.getMasks(),{type:e}=this.config.get();this.input.$element.on(`input.${this.instanceId}`,t=>{let a=this.input.dateMask({event:t});e==="date"&&a.length===i.mask.length&&this.dispatch("presentView")}),this.input.$element.on(`change.${this.instanceId}`,()=>{this.input.parse()})},off(){this.input.$element.off(`input.${this.instanceId} change.${this.instanceId}`)}},scrollOnCalendarList:{on(){let{$sheet:i}=this.sheet,{mobile:e}=this.main,t=50,a,s,o=!1,r=!1,n=h=>{let d=Date.now();if(!(h||a==null||d-a>t))return;let c=this.sheet.checkNeedAddYear();c.need&&(c.directions.forEach(f=>{this.dispatch("addYear",{direction:f})}),a=d)};i.on(`scroll.${this.instanceId}`,()=>{r=!0,e||n(),clearTimeout(s),s=setTimeout(()=>{r=!1,o||n(!0)},150)}),i.on(`touchstart.${this.instanceId}`,h=>{o=!!h.touches.length}),i.on(`touchend.${this.instanceId}`,h=>{o=!!h.touches.length,r||n(!0)})},off(){let{$sheet:i}=this.sheet;i.off(`scroll.${this.instanceId} touchstart.${this.instanceId} touchend.${this.instanceId}`)}},clickOnDay:{on(){this.sheet.$sheet.on(`click.${this.instanceId}`,".f-calendar__sheet--day",i=>{i.preventDefault();let e=$(i.target).closest(".f-calendar__sheet--day");e.hasClass("f-calendar__sheet--day_stub")||this.dispatch("selectDateByClick",{date:Number(e.attr("date")),month:Number(e.attr("month")),year:Number(e.attr("year")),disabled:e.hasClass("f-calendar__sheet--day_disabled")})})},off(){this.sheet.$sheet.off(`click.${this.instanceId}`)}},clickOutCalendar:{on(){$(document).on(`click.${this.instanceId}`,i=>{let e=$(i.target);!e.closest(this.main.$calendar).length&&!e.closest(this.input.$icon).length&&!e.is(this.input.$element)&&!e.is($("body"))&&!e.is(this.input.$overlay)&&this.dispatch("hideCalendar")}),$(document).on("focus.calendar","input, .f-calendar__input-overlay",i=>{$(i.currentTarget).attr("element-id")!==this.instanceId&&this.dispatch("hideCalendar")})},off(){$(document).off(`click.${this.instanceId}`),$(document).off("focus.calendar","input, .f-calendar__input-overlay")}},clickOnOverlay:{on(){this.input.$overlay.on(`click.${this.instanceId}`,()=>{this.dispatch("showCalendar")})},off(){this.input.$overlay.off(`click.${this.instanceId}`)}},focusOnInput:{on(){this.input.$element.on(`focus.${this.instanceId}`,()=>{let{showed:i}=this.main;i||this.dispatch("showCalendar")})},off(){this.input.$element.off(`focus.${this.instanceId}`)}},swipeController:{on(){let i={start:0,current:0,distance:0};this.main.$holder.on(`touchstart.${this.instanceId}`,e=>{i.start=e.touches[0].screenY,i.distance=0,this.main.$calendar.addClass("f-calendar_swipe")}),this.main.$holder.on(`touchmove.${this.instanceId}`,e=>{i.current=e.touches[0].screenY,i.distance=i.current-i.start,i.progress=i.distance/(window.innerHeight-150),!(i.distance<0)&&(this.main.$container.css("transform",`translateY(${i.distance}px)`),this.main.$overlay.css("opacity",Math.max(0,1-i.progress)))}),this.main.$holder.on(`touchend.${this.instanceId}`,()=>{this.main.$calendar.removeClass("f-calendar_swipe"),this.main.$container.removeAttr("style"),this.main.$overlay.removeAttr("style");let e=$(window).height()/6;(i.distance>e||i.distance===0)&&this.dispatch("hideCalendar")})},off(){this.main.$holder.off(`touchstart.${this.instanceId}`),this.main.$holder.off(`touchmove.${this.instanceId}`),this.main.$holder.off(`touchend.${this.instanceId}`)}},clickOnTimeSelectorCloseBtn:{on(){if(!this.timeSelector)return!1;this.timeSelector.$time_selector_close_btn.on(`click.${this.instanceId}`,()=>{this.dispatch("hideTimeSelector")})}
1,off(){if(!this.timeSelector)return!1;this.timeSelector.$time_selector_close_btn.off(`click.${this.instanceId}`)}},clickOnTimeSelectorItem:{on(){if(!this.timeSelector)return!1;this.timeSelector.$time_selector.on(`click.${this.instanceId}`,".f-calendar__time-selector--item",i=>{let e=$(i.target);e.hasClass("f-calendar__time-selector--item_stub")||this.dispatch("selectTimeByClick",{hour:Number(e.attr("hour")),minute:Number(e.attr("minute"))})})},off(){if(!this.timeSelector)return!1;this.timeSelector.$time_selector.off(`click.${this.instanceId}`)}},clickOnDateSelectorTrigger:{on(){if(!this.dateSelector)return!1;this.dateSelector.$date_selector_trigger.on(`click.${this.instanceId}`,()=>{this.dateSelector.showed?this.dispatch("hideDateSelector"):this.dispatch("showDateSelector")})},off(){if(!this.dateSelector)return!1;this.dateSelector.$date_selector_trigger.off(`click.${this.instanceId}`)}},clickOnDateSelectorCloseBtn:{on(){if(!this.dateSelector)return!1;this.dateSelector.$date_selector_close_btn.on(`click.${this.instanceId}`,()=>{let{showed:i}=this.dateSelector;i?this.dispatch("hideDateSelector"):this.dispatch("hideCalendar")})},off(){if(!this.dateSelector)return!1;this.dateSelector.$date_selector_close_btn.off(`click.${this.instanceId}`)}},clickOutDateSelector:{on(){if(!this.dateSelector)return!1;$(document).on(`click.${this.instanceId}`,i=>{!this.dateSelector.$date_selector_container.is(i.target)&&this.dateSelector.$date_selector_container.has(i.target).length===0&&this.dispatch("hideDateSelector")})},off(){if(!this.dateSelector)return!1;$(document).off(`click.${this.instanceId}`)}},clickOnDateSelector:{on(){if(!this.dateSelector)return!1;let i=()=>{let t=this.dateSelector.$date_selector_month_list.find(".f-calendar__date-selector--month-item_active");return Number(t.attr("month"))},e=()=>{let t=this.dateSelector.$date_selector_year_list.find(".f-calendar__date-selector--year-item_active");return Number(t.attr("year"))};this.dateSelector.$date_selector_month_list.on(`click.${this.instanceId}`,".f-calendar__date-selector--month-item",t=>{let a=$(t.target);if(a.hasClass("f-calendar__date-selector--month-item_disabled"))return;let s=Number(a.attr("month")),o=e();this.dispatch("selectByDateSelector",{month:s,year:o,direction:"month"})}),this.dateSelector.$date_selector_year_list.on(`click.${this.instanceId}`,".f-calendar__date-selector--year-item",t=>{let a=$(t.target),s=Number(a.attr("year")),o=i();this.dispatch("selectByDateSelector",{month:o,year:s,direction:"year"})})},off(){if(!this.dateSelector)return!1;this.dateSelector.$date_selector_month_list.off(`click.${this.instanceId}`),this.dateSelector.$date_selector_year_list.off(`click.${this.instanceId}`)}}},B=class{constructor(e){this.root=e,this.listeners=[]}getListeners(){return this.listeners}addListener(e){this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e,0);t>=0&&this.listeners.splice(t,1)}includesListener(e){return this.listeners.includes(e,0)}on(e){if(!A[e])return console.warn(`on(${e}) - Unknown listener`),!1;if(this.includesListener(e))return!0;this.addListener(e),A[e].on.call(this.root)}off(e){if(!A[e])return console.warn(`off(${e}) - Unknown listener`),!1;if(!this.includesListener(e))return!0;this.removeListener(e),A[e].off.call(this.root)}},E=B;var b=class{constructor(e){this.state=null,this.root=e,this.relay=new E(e)}init(){this.relay.on("clickOnIcon"),this.setState("create")}setState(e){switch(this.state=e,e){case"create":R.call(this);break;case"show":U.call(this);break;case"hide":N.call(this);break;case"sheet-freeze-on":W.call(this);break;case"sheet-freeze-off":Z.call(this);break;case"time-selector-show":q.call(this);break;case"time-selector-hide":G.call(this);break;case"date-selector-show":J.call(this);break;case"date-selector-hide":K.call(this);break;default:console.warn(`Listener: Unknown state - "${this.state}"`)}}};function R(){this.relay.on("resizeWindow"),this.relay.on("onInput"),N.call(this)}function U(){this.relay.off("focusOnInput"),this.relay.off("clickOnOverlay"),setTimeout(()=>{this.relay.on("keyupOnInput"),this.relay.on("scrollOnCalendarList"),this.relay.on("clickOnDay"),this.relay.on("clickOutCalendar"),this.relay.on("swipeController"),this.relay.on("clickOnDateSelectorTrigger"),this.relay.on("clickOnDateSelectorCloseBtn")},16)}function N(){this.relay.off("keyupOnInput"),this.relay.off("scrollOnCalendarList"),this.relay.off("clickOnDay"),this.relay.off("clickOutCalendar"),this.relay.off("swipeController"),this.relay.off("clickOnDateSelectorTrigger"),this.relay.off("clickOnDateSelectorCloseBtn"),this.relay.on("focusOnInput"),this.relay.on("clickOnOverlay")}function W(){this.relay.off("scrollOnCalendarList")}function Z(){this.relay.on("scrollOnCalendarList")}function q(){this.relay.on("clickOnTimeSelectorCloseBtn"),this.relay.on("clickOnTimeSelectorItem")}function G(){this.relay.off("clickOnTimeSelectorCloseBtn"),this.relay.off("clickOnTimeSelectorItem")}function J(){this.relay.off("clickOnDay"),this.relay.off("clickOutCalendar"),this.relay.on("clickOutDateSelector"),this.relay.on("clickOnDateSelector")}function K(){this.relay.off("clickOutDateSelector"),this.relay.off("clickOnDateSelector"),this.relay.on("clickOutCalendar"),this.relay.on("clickOnDay")}var Q={type:"date",debug:!1,showDateSelector:!0,closeOnSelect:!0,upperLimit:new Date(new Date().getFullYear()+5,0,1),lowerLimit:new Date(new Date().getFullYear()-100,0,1),dateFormat:{hour12:!1,firstDay:1,dateMask:"DD.MM.YYYY",dateLiteral
1:".",timeMask:"HH:MM",timeLiteral:":",dateTimeLiteral:", "},workDays:[0,1,2,3,4,5,6],locale:{}},k=class{constructor(e,t){this.config={...Q,...t},X.call(this),ee.call(this),j.call(this)}get(){return this.config}getMasks(){return this.masks}};function X(){let{config:i}=this;i.upperLimit instanceof Date&&(i.upperLimit={date:i.upperLimit.getDate(),month:i.upperLimit.getMonth(),year:i.upperLimit.getFullYear(),hour:i.upperLimit.getHours(),minute:i.upperLimit.getMinutes()}),i.lowerLimit instanceof Date&&(i.lowerLimit={date:i.lowerLimit.getDate(),month:i.lowerLimit.getMonth(),year:i.lowerLimit.getFullYear(),hour:i.lowerLimit.getHours(),minute:i.lowerLimit.getMinutes()}),i.workDays=i.workDays.map(e=>+e),i.workTime&&(i.workTime.interval=Number(i.workTime.interval),i.workTime.start.hour=Number(i.workTime.start.hour),i.workTime.start.minute=Number(i.workTime.start.minute),i.workTime.finish.hour=Number(i.workTime.finish.hour),i.workTime.finish.minute=Number(i.workTime.finish.minute))}function ee(){let{locale:i}=this.config,{month:e,month_d:t}=i;this.config.locale={...i,month:[e.january,e.february,e.march,e.april,e.may,e.june,e.july,e.august,e.september,e.october,e.november,e.december],month_d:[t.january,t.february,t.march,t.april,t.may,t.june,t.july,t.august,t.september,t.october,t.november,t.december]}}function j(){let{dateFormat:i}
1=this.config,{dateLiteral:e,timeLiteral:t,dateTimeLiteral:a}=i,{dateMask:s,timeMask:o}=i;s=s.toUpperCase().replace(/D+/,"DD").replace(/M+/,"MM").replace(/Y+/,"YYYY"),o=o.toLowerCase().replace(/h+/,"hh").replace(/m+/,"mm").replace(/t+/,"tt"),i.hour12&&!/tt/.test(o)&&(o+=" tt");let r=`${s}${a}${o}`,n=s.search(/D/),h=s.search(/M/),d=s.search(/Y/);if(n===-1||h===-1||d===-1){i.dateMask=`DD${e}MM${e}YYYY`,j();return}let l=r.search(/h/),c=r.search(/m/),f=r.search(/t/);if(l===-1||c===-1){i.timeMask=`hh${t}mm`,j();return}let _=[{subject:"date",position:n},{subject:"month",position:h},{subject:"year",position:d}].sort((m,p)=>m.position-p.position).filter(m=>m.position>=0),u=[{subject:"hour",position:l},{subject:"minute",position:c},{subject:"ampm",position:f}].sort((m,p)=>m.position-p.position).filter(m=>m.position>=0),g=[{subject:"date",position:n},{subject:"month",position:h},{subject:"year",position:d},{subject:"hour",position:l},{subject:"minute",position:c},{subject:"ampm",position:f}].sort((m,p)=>m.position-p.position).filter(m=>m.position>=0);this.masks={dateTimeMask:{divider:a,mask:r,order:g},dateMask:{divider:e,mask:s,order:_},timeMask:{divider:t,mask:o,order:u}}}var z={showCalendar(){let{showed:i,mobile:e}=this.main;if(i)return;if(this.main.build(),this.dateSelector){let s=this.dateSelector.buildHeader();this.main.setDateSelectorHeader(s),this.dateSelector.initObserver()}this.main.mount(),this.main.show(),this.sheet.build(),this.main.toPosition(),this.listener.setState("show"),this.dispatch("presentView"),this.input.$icon.addClass("focus"),this.input.$element.addClass("focus"),e||this.input.focus();let t=this.config.get(),a=this.input.getState();t.type==="datetime"&&(a.parsed.date!=null&&a.parsed.month!=null&&a.parsed.year!=null?this.dispatch("showTimeSelector"):this.dispatch("hideTimeSelector")),e&&this.sLocker.setState("sheet-show")},hideCalendar(i=!1){let{showed:e,mobile:t}=this.main;e&&(this.main.hide(),t||this.input.blur(),this.input.$icon.removeClass("focus"),this.input.$element.removeClass("focus"),setTimeout(()=>{this.main.destroy()},i?0:t?700:150),this.input.checkError(),this.dispatch("hideDateSelector"),this.listener.setState("hide"),this.sLocker.setState("sheet-hide"))},selectDateByClick(i){let{disabled:e}=i;if(e)return;let t=this.config.get(),{mobile:a}=this.main,{parsed:s}=this.input.getState();i.date===s.date&&i.month===s.month&&i.year===s.year||(this.input.setDate(i),this.sheet.setActiveDay()),setTimeout(()=>{t.type==="datetime"?this.dispatch("showTimeSelector"):(t.closeOnSelect||a)&&this.dispatch("hideCalendar")},80)},addYear(i){this.sheet.addYear(i),this.sheet.setActiveDay()},resize(){this.main.checkMobile(),this.main.toPosition(),this.input.checkMobile();let{mobile:i}=this.main;i&&this.main.showed?this.sLocker.setState("sheet-show"):this.sLocker.setState("sheet-hide"),this.dispatch("presentView")},presentView(){let{showed:i}=this.main;if(!i)return;let e=this.input.parse(),t=e.valid&&e.value.length,a=t?e.parsed:this.helper.getCurrentDay();this.sheet.findDay(a)||(this.listener.setState("sheet-freeze-on"),this.sheet.clear(),this.dispatch("addYear",{year:a.year-1}),this.dispatch("addYear",{year:a.year}),this.dispatch("addYear",{year:a.year+1}),this.listener.setState("sheet-freeze-off")),this.sheet.scroll.toDate(a.month,a.year),this.dateSelector&&this.dateSelector.setHeader(a),t?this.sheet.setActiveDay():this.sheet.clearActiveDay()},showTimeSelector(){if(!this.timeSelector)return!1;let i=this.input.getState();this.timeSelector.build(),this.timeSelector.show(i),this.listener.setState("time-selector-show"),this.sLocker.setState("time-selector-show")},hideTimeSelector(){if(!this.timeSelector)return!1;this.timeSelector.hide(),this.listener.setState("time-selector-hide"),this.sLocker.setState("time-selector-hide")},selectTimeByClick({hour:i,minute:e}){this.timeSelector&&this.timeSelector.selectTime({hour:i,minute:e}),this.input.setTime({hour:i,minute:e}),this.sheet.setActiveDay();let t=this.config.get(),{mobile:a}=this.main;t.closeOnSelect||a?this.dispatch("hideCalendar"):this.dispatch("hideTimeSelector")},showDateSelector(){if(!this.dateSelector||this.dateSelector.showed)return!1;let i=this.dateSelector.buildSelector();this.main.$container.append(i),this.dateSelector.showSelector(),this.dateSelector.highligthItems(),this.dateSelector.scrollYearListToActive(),setTimeout(()=>{this.listener.setState("date-selector-show"),this.sLocker.setState("date-selector-show")},100)},hideDateSelector(){if(!this.dateSelector||!this.dateSelector.showed)return!1;this.dateSelector.hideSelector(),this.listener.setState("date-selector-hide"),this.sLocker.setState("date-selector-hide")},selectByDateSelector(i){let{month:e,year:t,direction:a}=i,s=(h,d)=>{let{upperLimit:l,lowerLimit:c}=this.config.get(),f=d===l.year&&h>l.month,_=d===c.year&&h<c.month;
1return{month:f?l.month:_?c.month:h,year:d}},o=({month:h,year:d})=>{this.sheet.years.includes(d)||(this.listener.setState("sheet-freeze-on"),this.sheet.clear(),this.dispatch("addYear",{year:d}),this.listener.setState("sheet-freeze-off")),this.sheet.scroll.toDate(h,d),this.dateSelector.highligthItems({month:h,year:d})},r=h=>{this.dateSelector.setAndCheckSelectedStage(h)&&this.dispatch("hideDateSelector")},n=s(e,t);o(n),r(a)}};function F(i,e){if(!z[i]){console.warn(`DISPATCH - Unknown action "${i}"`);return}z[i].call(this,e);let{debug:t}=this.config.get();t&&console.log("DISPATCH - ",i,e,this)}var D=class{constructor(e){this.root=e,this.locked=!1}setState(e){if(typeof scrollLock=="object")switch(e){case"sheet-show":this._setStateSheetShow();break;case"sheet-hide":this._setStateSheetHide();break;case"time-selector-show":this._setStateTimeSelectorShow();break;case"time-selector-hide":this._setStateTimeSelectorHide();break;case"date-selector-show":this._setStateDateSelectorShow();break;case"date-selector-hide":this._setStateDateSelectorHide();break;default:console.warn(`Unknow state - ${e}`);break}}_setStateSheetShow(){if(this.locked)return;this.locked=!0;let e=$(".f-calendar__sheet")[0];typeof scrollLock=="object"&&scrollLock.disablePageScroll(e)}_setStateSheetHide(){this._unlock()}_setStateTimeSelectorShow(){let e=$(".f-calendar__time-selector--list")[0];typeof scrollLock=="object"&&scrollLock.addScrollableTarget(e)}_setStateTimeSelectorHide(){let e=$(".f-calendar__time-selector--list")[0];typeof scrollLock=="object"&&scrollLock.removeScrollableTarget(e)}_setStateDateSelectorShow(){let e=$(".f-calendar__date-selector--year-list")[0],t=$(".f-calendar__sheet")[0];typeof scrollLock=="object"&&(scrollLock.addScrollableTarget(e),scrollLock.removeScrollableTarget(t)),this.root.sheet.$sheet.on("mousewheel.lock touchmove.lock touchstart.lock",a=>(a.preventDefault(),a.stopPropagation(),!1))}_setStateDateSelectorHide(){let e=$(".f-calendar__sheet")[0],t=$(".f-calendar__date-selector--year-list")[0];typeof scrollLock=="object"&&(scrollLock.addScrollableTarget(e),scrollLock.removeScrollableTarget(t)),this.root.sheet.$sheet.off(".lock")}_unlock(){if(!this.locked)return;this.locked=!1;let e=$(".f-calendar__sheet")[0];typeof scrollLock=="object"&&scrollLock.enablePageScroll(e)}};function v(i){return i<10?`0${i}`:i}var L=class{constructor(e){this.config=e.config}getCurrentDay(){let e=new Date;return{date:e.getDate(),month:e.getMonth(),year:e.getFullYear(),hour:e.getHours(),minute:e.getMinutes()}}getDateStr(e){let{dateMask:t}=this.config.getMasks(),{date:a,month:s,year:o}=e;return a=a!=null?v(a):"",s=s!=null?v(s+1):"",o=o??"",t.mask.replace(/D+/,a).replace(/M+/,s).replace(/Y+/,o)}getTimeStr(e){let t=this.config.get(),{hour12:a}=t.dateFormat,{timeMask:s}=this.config.getMasks(),{hour:o,minute:r}=e;if(o==null||r==null)return"";let n="";return a&&(o===24&&(o=0),n=o>=12?"PM":"AM",o=o%12||12),o=a?o:v(o),r=v(r),s.mask.replace(/h+/,o).replace(/m+/,r).replace(/t+/,n)}getDateAndTimeStr(e){let{dateTimeMask:t}=this.config.getMasks(),a=this.getDateStr(e),s=this.getTimeStr(e);return s?`${a}${t.divider}${s}`:a}getDateFromParsed({date:e,month:t,year:a,hour:s,minute:o}){try{return new Date(+a,+t,+e,+s||0,+o||0,0,0)}catch{return null}}checkDateIsValid({date:e,month:t,year:a,hour:s,minute:o}){let r=this.getDateFromParsed({date:e,month:t,year:a,hour:s,minute:o});return r&&r.getDate()===+e&&r.getMonth()===+t&&r.getFullYear()===+a&&s==null||r.getHours()===+s&&o==null||r.getMinutes()===+o}getISOString(e){let{type:t}=this.config.get();return t==="datetime"?e.toISOString():`${e.getFullYear()}-${v(e.getMonth()+1)}-${v(e.getDate())}`}};var C=class{constructor({root:e,element:t}){this.instanceId=e.instanceId,this.config=e.config,this.main=e.main,this.helper=e.helper,this.$element=$(t),this.$parent=this.$element.parent(),this.$icon=this.$parent.find(".f-calendar__input-icon"),this.$overlay=$('<div class="f-calendar__input-overlay"></div>'),this.$element.addClass("f-calendar__element"),this.state={valid:!0,value:"",valueISO:"",date:null,parsed:{date:null,month:null,year:null,hour:null,minute:null}},this.lastInputValue="",this.dateMask()}get isFocused(){return this.$element.is(":focus")}focus(){this.$element.focus()}blur(){this.$element.blur()}hideOverlay(){this.$overlay.hide()}showOverlay(){this.$overlay.show()}checkMobile(){let{mobile:e}=this.main,{workTime:t}=this.config.get(),a=!!(e||t);this.$element.attr("readonly",a),a?this.showOverlay():this.hideOverlay()}preBuild(){let e=this.$parent;this.$element.attr("autocomplete","off"),this.$element.attr("element-id",this.instanceId),e.append(this.$overlay),this.checkMobile()}parse(){let e=this.$element.val(),{type:t,dateFormat:a}=this.config.get(),{dateMask:s,timeMask:o,dateTimeMask:r}=this.config.getMasks(),n=this.state.parsed;n.day=null,n.year=null,n.month=null,n.date=null,n.hour=null,n.minute=null;let h=e.slice(0,s.mask.length),d=e.slice(s.mask.length+r.divider.length);if(h&&h.split(s.divider).forEach((l,c)=>{if(l==null||l=="")return;l=Number(l)||null;let f=s.order[c].subject;f==="month"&&(l-=1),n[f]=l}),d&&(d.split(o.divider).forEach((l,c)=>{if(l==null||l==="")return;l=Number((l||"").replace(/\D/g,""))||0;let f=o.order[c].subject;n[f]=l}),a.hour12)){let l=/pm/i.test(d);n.hour===12?n.hour=l?12:0:l&&(n.hour=12+n.hour)}if(this.state.valid=!1,this.state.date=null,this.state.valueISO="",this.state.dateValue="",this.state.timeValue="",!e)this.state.valid=!0;else{let l=n.year&&n.month>=0&&n.date;if(t==="datetime"&&l&&(l=n.hour!=null&&n.minute!=null),l){let c=this.helper.getDateFromParsed(n);n.day=c.getDay(),this.state.date=c,this.state.valueISO=this.helper.getISOString(c)||"",this.state.valid=this.validate(n).valid}this.state.dateValue=this.helper.getDateStr(n),this.state.timeValue=this.helper.getTimeStr(n)}return this.state.parsed=n,this.state.value=e,this.state}validate(e){let{workDays:t,lowerLimit:a,upperLimit:s}=this.config.get();if(!this.helper.checkDateIsValid(e))return{valid:!1,error:"date_invalid"};if(t&&!t.includes(e.day))return{valid:!1,error:"weekday"};let n=e.year===a.year&&e.month===a.month?e.date>=a.date:!0,h=e.year===a.year?e.month>
1=a.month:!0,d=e.year===s.year&&e.month===s.month?e.date<=s.date:!0,l=e.year===s.year?e.month<=s.month:!0,c=n&&d,f=h&&l,_=e.year>=a.year&&e.year<=s.year;return c&&f&&_?{valid:!0}:{valid:!1,error:"limit_is_exceeded"}}getState(){return this.state}checkError(){return this.parse().valid?!1:this.config.get().locale.errors.invalid_date}dateMask({event:e}={}){let{type:t,dateFormat:a}=this.config.get(),{dateMask:s,dateTimeMask:o}=this.config.getMasks(),{hour12:r}=a,n=t==="datetime"?o:s,h=n.mask.length,l=this.$element[0].value.slice(0,h).split(""),c=s.divider,f=s.divider.length,_=o.divider,u=":",g=s.order[1].position-f,m=s.order[2].position-f,p=n.mask.indexOf(_),S=n.mask.indexOf(u)-1,H=n.mask.indexOf("tt")-2,V=l.length<this.lastInputValue.length,y=l.filter(w=>/[0-9APM]/.test(w));[g,m].forEach(w=>{(!V||l.length>w)&&y.length>=w&&y.splice(w,0,c)}),t==="datetime"&&y.length>=p&&(y.splice(p,0,_),(!V||l.length>S)&&y.length>=S&&y.splice(S,0,u),r&&l.length>H&&y.splice(H,0," "));let P=y.join("");return this.setInputValue(P,e?!1:"change"),this.lastInputValue=P,P}setDate(e){let t=this.helper.getDateStr(e),a=this.helper.getDateFromParsed(e),s=a.getDay()||0;this.state.valid=!0,this.state.value=t,this.state.date=a,this.state.valueISO=this.helper.getISOString(a),this.state.parsed={day:s,date:e.date,month:e.month,year:e.year},this.setInputValue(t)}setTime(e){if(!this.state.value.length)return!1;this.state.parsed.hour=e.hour,this.state.parsed.minute=e.minute,this.state.value=this.helper.getDateAndTimeStr(this.state.parsed),this.state.date=this.helper.getDateFromParsed(this.state.parsed),this.setInputValue(this.state.value)}setInputValue(e,t="change"){if(this.$element.val(e),this.$element.attr("value",e),t){let a=new Event(t,{bubbles:!0,cancelable:!0});this.$element[0].dispatchEvent(a)}}};var T=class{constructor(e){this.root=e,this.instanceId=e.instanceId,this.config=e.config,this.input=e.input,this.sheet=e.sheet,this.dateSelector=e.dateSelector,this.mobile=!1,this.showed=!1,this.builded=!1,this.firstPositioning=!0,this.calendarIndent=0,this.$calendar=$('<div class="f-calendar"></div>'),this.$overlay=$('<div class="f-calendar__overlay"></div>'),this.$holder=$('<div class="f-calendar__holder"></div>'),this.$container=$('<div class="f-calendar__container"></div>'),this.$week_days=$('<div class="f-calendar__week-days"></div>')}checkMobile(){return this.mobile=$(window).width()<=767,this.mobile}build(){let e=this.config.get();this.$calendar.attr("calendar-id",this.instanceId),this.$calendar.append(this.$overlay),this.$container.append(this.$holder),this.$calendar.append(this.$container),this.$container.append(this.$week_days),this.$insertTo=$(e.insertTo),(this.mobile||!this.$insertTo.length)&&(this.$insertTo=$("body")),this.$insertTo.append(this.$calendar),this.buildWeekDays(),this.builded=!0}setDateSelectorHeader(e){if(!e)return!1;this.$container.prepend(e),this.$calendar.addClass("f-calendar_has-header")}buildWeekDays(){if(this.builded)return;let{locale:e,dateFormat:t}=this.config.get(),a=[e.days.su,e.days.mo,e.days.tu,e.days.we,e.days.th,e.days.fr,e.days.sa];if(t.firstDay!==0){let s=a.slice(0,t.firstDay);a.splice(0,t.firstDay),a=[...a,...s]}a.forEach(s=>{let o=$('<div class="f-calendar__week-days--day"></div>');o.html(s),this.$week_days.append(o)})}show(){this.showed=!0,requestAnimationFrame(()=>{this.$calendar.addClass("f-calendar_opened")})}hide(){this.showed=!1,requestAnimationFrame(()=>{this.$calendar.removeClass("f-calendar_opened")})}mount(){this.$calendar.addClass("f-calendar_mounted")}toPosition(){if(!this.showed)return;let e={top:0,left:0};if(!this.mobile){let t=this.root.input.$element,{$calendar:a,$insertTo:s}=this,o=a[0].getBoundingClientRect(),r=t[0].getBoundingClientRect(),n=s[0].getBoundingClientRect(),h=n.top-s[0].scrollTop,d=n.left-s[0].scrollLeft,l=h+s[0].scrollHeight;if(e.top=r.top-h,e.left=r.left-d,this.firstPositioning){let f=l-r.bottom-10;f>o.height?this.calendarIndent=r.height:r.top-h-10>o.height?this.calendarIndent=-o.height:this.calendarIndent=r.height+(o.height-f)*-1,this.firstPositioning=!1}e.top+=this.calendarIndent}this.$calendar.css({top:`${e.top}px`,left:`${e.left}px`})}destroy(){this.$calendar.removeClass("f-calendar_mounted"),this.$calendar.detach()}};var I=class{constructor(e){this.sheet=e,this.main=e.main,this.config=e.config}getPosition(){return this.sheet.$sheet[0].scrollTop}getHeight(){return this.sheet.$sheet[0].scrollHeight}toPosition(e){e=Math.round(e),this.sheet.$sheet[0].scrollTo({top:e,behavior:"instant"})}toDate(e,t){let{showDateSelector:a}=this.config.get(),s=this.sheet.$sheet.find(`.f-calendar__sheet--year[year=${t}]`),o=s.find(`.f-calendar__sheet--month[month=${e}]`);if(!o.length){console.warn(`scroll.toDate(month: ${e}, year: ${t}) - not found`);return}let r=s[0].offsetTop+o[0].offsetTop;if(a){let n=o.find(".f-calendar__sheet--month-header");r+=n[0].offsetHeight}this.toPosition(r)}};var M=class{constructor(e){this.sheet=e,this.scroll=e.scroll,this.config=e.config,this.input=e.input,this.main=e.main,this.root=e.root}build(e){return te.call(this,e)}};function te(i){let e=se.call(this,i),t=`<div class="f-calendar__sheet--year" year="${i}">`;return e.forEach((a,s)=>{if(!a.length)return;let o=d=>{let l="";return d.forEach(({date:c,day:f,disabled:_,month:u,stub:g,year:m})=>{let p="f-calendar__sheet--day";_&&(p+=" f-calendar__sheet--day_disabled"),g&&(p+=" f-calendar__sheet--day_stub");let S=["<div",`class="${p}"`,`date="${c||""}"`,`month="${u}"`,`year="${m||""}"`,`day="${f||""}"`,">",!g&&c||"","</div>"].join(" ");l+=S}),l},r=d=>{let l="";return d.forEach(c=>{let f=['<div class="f-calendar__sheet--week">',o(c),"</div>"].join(" ");l+=f}),l},n=`${a}, ${i}`,h=ie.call(this,i,s);t+=[`<div class="f-calendar__sheet--month" month="${s}" year="${i||""}">`,'<div class="f-calendar__sheet--month-header">
1',`<div class="f-calendar__sheet--month-title">${n}</div>`,'<div class="f-calendar__sheet--month-hr"></div>',"</div>",r(h),"</div>"].join(" ")}),t+="</div>",t}function se(i){let e=this.config.get(),t=e.locale.month,a=[...t];return e.lowerLimit.year===i&&t.forEach((s,o)=>{o<e.lowerLimit.month&&(a[o]="")}),e.upperLimit.year===i&&t.forEach((s,o)=>{o>e.upperLimit.month&&(a[o]="")}),a}function ie(i,e){let{type:t,lowerLimit:a,upperLimit:s,workDays:o,workTime:r,dateFormat:n}=this.config.get(),h=[],d=a.year===i&&a.month===e,l=s.year===i&&s.month===e,c=this.root.helper.getCurrentDay(),f=new Date(i,e);for(;f.getDay()!==n.firstDay;)f.setDate(f.getDate()-1),h.unshift({day:f.getDay(),stub:!0});for(f=new Date(i,e);f.getMonth()===e;){let u={date:f.getDate(),month:f.getMonth(),year:f.getFullYear(),day:f.getDay()},g=c.year===u.year&&c.month===u.month&&c.date===u.date;if(u.disabled=d&&u.date<a.date||l&&u.date>s.date||o&&!o.includes(u.day),t==="datetime"&&!u.disabled&&g){let m=a.year===c.year&&a.month===c.month&&c.date===a.date;u.disabled=m&&(c.hour>r.finish.hour||c.hour===r.finish.hour&&c.minute>=r.finish.minute)}h.push(u),f.setDate(f.getDate()+1)}for(;f.getDay()!==n.firstDay;)h.push({day:f.getDay(),stub:!0}),f.setDate(f.getDate()+1);let _=[];return h.forEach(u=>{u.day===n.firstDay&&_.push([]),_[_.length-1].push(u)}),_}var O=class{constructor(e){this.root=e,this.main=e.main,this.config=e.config,this.helper=e.helper,this.input=e.input,this.maxYears=2,this.years=[],this.$sheet=$('<div class="f-calendar__sheet f-calendar_scrollable"></div>');let t='<svg class="f-calendar__sheet--loader-icon" viewBox="25 25 50 50"><circle class="f-calendar__sheet--loader-circle" cx="50" cy="50" r="19"></circle></svg>';this.$loaderBefore=$(`<div class="f-calendar__sheet--loader f-calendar__sheet--loader_before">${t}</div>`),this.$loaderAfter=$(`<div class="f-calendar__sheet--loader f-calendar__sheet--loader_after">${t}</div>`),this.scroll=new I(this),this.yearBuilder=new M(this)}build(){this.$sheet.prepend(this.$loaderBefore),this.$sheet.append(this.$loaderAfter),this.main.$container.append(this.$sheet)}clear(){this.$sheet.find(".f-calendar__sheet--year").remove(),this.years=[]}checkLoaders(){let{upperLimit:e,lowerLimit:t}=this.config.get(),a=this.years[0]===t.year,s=this.years[this.years.length-1]===e.year;this.$loaderBefore.toggleClass("f-calendar__sheet--loader-hide",a),this.$loaderAfter.toggleClass("f-calendar__sheet--loader-hide",s)}checkNeedAddYear(){let{upperLimit:e,lowerLimit:t}=this.config.get(),a={need:!1,bounceOut:!1,directions:[]},s=this.$sheet[0],o=this.$sheet.outerHeight(),r=o*2,n=s.scrollHeight,h=Math.round(s.scrollTop),d=Math.round(n-h-o),l=this.years[0]>t.year,c=this.years[this.years.length-1]<e.year;return h<0||d<0?a.bounceOut=!0:(l&&h<=r&&(a.need=!0,a.directions.push("before")),c&&d<=r&&(a.need=!0,a.directions.push("after"))),a}findDay(e){let{date:t,month:a,year:s,disabled:o}=e,r=this.$sheet.find(`[date=${t}][month=${a}][year=${s}]`);return o||(r=r.not(".f-calendar__sheet--day_disabled")),r.length?r:null}addYear({year:e,direction:t}){let a=this.config.get(),s=this.years;if(!e&&!t)return!1;if(!e&&t&&(t==="before"?e=s[0]-1:e=s[s.length-1]+1),e&&(!s.length||s[0]>e?t="before":t="after"),e>=a.lowerLimit.year&&e<=a.upperLimit.year&&!this.years.includes(e)){let r=this.yearBuilder.build(e),n=this.scroll.getPosition(),h=[];t==="before"?(s.unshift(e),s.length>this.maxYears&&(h=s.slice(this.maxYears,s.length)),this.$loaderBefore.after(r)):(s.push(e),s.length>this.maxYears&&(h=s.slice(0,s.length-this.maxYears)),this.$loaderAfter.before(r));let d=h.map(c=>this.removeYear(c)),l=this.getYearEl(e);if(t==="before"){let c=l.outerHeight();n+=c}else{let c=d.reduce((f,_)=>f+_.height,0);n-=c}this.checkLoaders(),this.root.dateSelector&&this.root.dateSelector.observeYear(l[0]),n=Math.max(1,n),this.scroll.toPosition(n)}}removeYear(e){let t=this.years.indexOf(e);t>=0&&this.years.splice(t,1);let a=this.getYearEl(e),s=a.outerHeight();return this.root.dateSelector&&this.root.dateSelector.unobserveYear(a[0]),a.remove(),{year:e,index:t,height:s}}getYearEl(e){return this.$sheet.find(`.f-calendar__sheet--year[year=${e}]`)}clearActiveDay(){this.$sheet.find(".f-calendar__sheet--day_active").removeClass("f-calendar__sheet--day_active"),this.$sheet.find(".f-calendar__time-badge").remove()}setActiveDay(){this.clearActiveDay();let{dateFormat:e,type:t}=this.config.get(),s=this.input.getState().parsed,o=this.helper.getCurrentDay();if(!s)return;let r=this.$sheet.find(`.f-calendar__sheet--day[date=${o.date}][month=${o.month}][year=${o.year}]`),n=this.$sheet.find(`.f-calendar__sheet--day[date=${s.date}][month=${s.month}][year=${s.year}]`).not(".f-calendar__sheet--day_disabled").not(".f-calendar__sheet--day_stub");if(r.addClass("f-calendar__sheet--day_current"),n.addClass("f-calendar__sheet--day_active"),t!=="datetime"||typeof s.hour!="number"||typeof s.minute!="number")return;let h=this.helper.getTimeStr(s),d=e.hour12,l=$([`<div class="f-calendar__time-badge${d?" f-calendar__time-badge_ampm":""}">`,`${h}`.trim(),"</div>"].join(" "));n.append(l)}};var Y=class{constructor(e){this.input=e.input,this.main=e.main,this.config=e.config,this.helper=e.helper,this.showed=!1,this.builded=!1}build(){if(this.builded)return;let e=this.config.get(),{workTime:t,dateFormat:a,locale:s}=e,o=4,r=t.start.hour,n=t.start.minute,h=t.finish.hour===0?24:t.finish.hour,d=t.finish.minute,l=t.interval,c=0,f=()=>{this.$time_selector=$('<div class="f-calendar__time-selector"></div>'),this.$time_selector_close_btn=$(`
2                <div class="f-calendar__time-selector--close-btn">
3                    <svg class="back-icon" width="10" height="10" viewB
3ox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
4                        <path fill-rule="evenodd" clip-rule="evenodd" d="M4.00018 5.00005L8.00018 9.00005L7.00018 10.0001L2.00018 5.00005L7.00018 5.34058e-05L8.00018 1.00005L4.00018 5.00005Z" fill="#222D39"/>
5                    </svg>
6                </div>
7            `),this.$header=$('<div class="f-calendar__time-selector--header"></div>'),this.$body=$('<div class="f-calendar__time-selector--body"></div>'),this.$title=$(`<div class="f-calendar__time-selector--title">${s.choose_time_desc}</div>`),this.$list=$('<div class="f-calendar__time-selector--list f-calendar_scrollable"></div>')},_=()=>{this.$list.append(this.$title);let g=r,m=n;for(;g<=h;){if(m===60){g+=1,m=0;continue}if(g===24||g===h&&m===d)break;let H=this.helper.getTimeStr({hour:g,minute:m}),V=$(`<div class="f-calendar__time-selector--item" hour="${g}" minute="${m}"">${H}</div>`);this.$list.append(V),c+=1,m+=l}let p=c%o>0?o-c%o:0;if(p)for(;p>0;)this.$list.append($('<div class="f-calendar__time-selector--item f-calendar__time-selector--item_stub"> </div>')),p-=1},u=()=>{this.$list.prepend(this.$title),this.$body.append(this.$list),this.$time_selector.append(this.$time_selector_close_btn),this.$time_selector.append(this.$header),this.$time_selector.append(this.$body),this.main.$container.append(this.$time_selector),a.hour12&&this.$time_selector.addClass("f-calendar__time-selector_ampm")};f(),_(),u(),this.builded=!0}show(e){if(!this.builded)return!1;this.showed=!0;let{locale:t}=this.config.get(),{date:a,month:s,year:o}=e.parsed;this.selectTime(e.parsed),this._checkLimits(),this.$header.html(`${a} ${t.month_d[s]}, ${o}`),this.$time_selector.addClass("f-calendar__time-selector_opened");let r=this.$list.find(".f-calendar__time-selector--item_active");r.length||(r=this.$list.find(".f-calendar__time-selector--item").not(".f-calendar__time-selector--item_disabled").first()),this.scroll(r)}hide(){if(!this.builded)return!1;this.showed=!1,this.$time_selector.removeClass("f-calendar__time-selector_opened")}selectTime({hour:e,minute:t}){this.clearSelectedTime(),this.$time_selector.find(`[hour=${e}][minute=${t}]`).addClass("f-calendar__time-selector--item_active")}clearSelectedTime(){this.$time_selector.find(".f-calendar__time-selector--item_active").removeClass("f-calendar__time-selector--item_active")}scroll(e){if(!e.length){console.warn("TimeSelector.scroll() - Time not found");return}this.$list.scrollTop(0);let t=this.$list[0].getBoundingClientRect(),a=e[0].getBoundingClientRect();if(t.bottom-20<a.bottom){let o=e[0].offsetTop-100;this.$list.scrollTop(o)}}_checkLimits(){let{dateRange:e,upperLimit:t,lowerLimit:a}=this.config.get(),s=this.input.state.parsed,o=this.$list.find(".f-calendar__time-selector--item").not(".f-calendar__time-selector--item_stub");o.removeClass("f-calendar__time-selector--item_disabled"),e==="future"?s.date===a.date&&s.month===a.month&&s.year===a.year&&o.each((n,h)=>{let d=$(h),l=Number(d.attr("hour")),c=Number(d.attr("minute"));(l<a.hour||l===a.hour&&c<=a.minute)&&d.addClass("f-calendar__time-selector--item_disabled")}):e==="past"&&s.date===t.date&&s.month===t.month&&s.year===t.year&&o.each((n,h)=>{let d=$(h),l=Number(d.attr("hour")),c=Number(d.attr("minute"));(l>t.hour||l===t.hour&&c>=t.minute)&&d.addClass("f-calendar__time-selector--item_disabled")})}};var x=class{constructor(e){this.root=e,this.sheet=e.sheet,this.config=e.config,this.$date_selector_header=$('<div class="f-calendar__date-selector--header"> </div>'),this.$date_selector_trigger=$('<div class="f-calendar__date-selector--trigger"> </div>'),this.$date_selector_current_date=$('<div class="f-calendar__date-selector--current-date"></div>'),this.$date_selector_arrows=$('<div class="f-calendar__date-selector--arrows"> </div>'),this.$date_selector_arrow_down=$(`
8            <div class="f-calendar__date-selector--arrow-down">
9                <svg width="10" height="6" viewBox="0 0 10 6" fill="none" xmlns="http://www.w3.org/2000/svg">
10                    <path fill-rule="evenodd" clip-rule="evenodd" d="M5 4L9 0L10 1L5 6L0 1L1 0L5 4Z" fill="#222D39"/>
11                </svg>
12            </div>
13        `),this.$date_selector_arrow_up=$(`
14            <div class="f-calendar__date-selector--arrow-up" style="display: none">
15                <svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
16                    <path fill-rule="evenodd" clip-rule="evenodd" d="M5 4L9 8L10 7L5 2L0 7L1 8L5 4Z" fill="#222D39"/>
17                </svg>
18            </div>
19        `),this.$date_selector_close_btn=$(`
20            <div class="f-calendar__date-selector--close-btn">
21                <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
22                    <path fill-rule="evenodd" clip-rule="evenodd" d="M6 5L11 0L12 1L7 6L12 11L11 12L6 7L1 12L0 11L5 6L0 1L1 0L6 5Z" fill="currentColor"/>
23                </svg>
24            </div>
25        `),this.$date_selector=$('<div class="f-calendar__date-selector"></div>'),this.$date_selector_container=$('<div class="f-calendar__date-selector--container"></div>'),this.$date_selector_year_list=$('<div class="f-calendar__date-selector--year-list f-calendar_scrollable"></div>'),this.$date_selector_month_list=$('<div class="f-calendar__date-selector--month-list"></div>'),this.observerInited=null,this.buildedSelector=!1,this.observed=[],this.showed=!1,this.viewedDate={month:0,year:0},this.selectedStage={month:!1,year:!1}}buildHeader(){return this.$date_selector_trigger.append(this.$date_selector_current_date),this.$date_selector_arrows.append(this.$date_selector_arrow_down),this.$date_selector_arrows.append(this.$date_selector_arrow_up),this.$date_selector_trigger.append(this.$date_selector_arrows),this.$date_selector_header.append(this.$date_selector_trigger),this.$date_selector_header.append(this.$date_selector_close_btn),this.$date_selector_header}buildSelector(){if(this.buildedSelector)return this.$date_selector;this.$date_selector_container.append(this.$date_selector_month_list),this.$date_selector_container.append(this.$date_selector_year_list),this.$date_selector.append(this.$date_selector_container);let e=this.config.get();e.locale.month.forEach((o,r)=>{let n=$(`<div class="f-calendar__date-selector--month-item">${o}</div>`);n.attr("month",r),this.$date_selector_month_list.append(n)});let t=e.upperLimit.year,a=e.lowerLimit.year,s=t;for(;s>=a;){let o=$(`<div class="f-calendar__date-selector--year-item">${s}</div>`);o.attr("year",s),this.$date_selector_year_list.append(o),s-=1}return this.buildedSelector=!0,this.$date_selector}showSelector(){this.showed=!0,this.$date_selector_arrow_down.hide(),this.$date_selector_arrow_up.fadeIn(),this.$date_selector.addClass("f-calendar__date-selector_opened"),this.selectedStage={month:!1,year:!1}}hideSelector(){this.showed=!1,this.$date_selector_arrow_up.hide(),this.$date_selector_arrow_down.fadeIn(),this.$date_selector.removeClass("f-calendar__date-selector_opened")}initObserver(){if(this.observerInited)return!1;this.observerInited=!0;let e;this.sheet.$sheet.off("scroll.dateSelector"),this.sheet.$sheet.on("scroll.dateSelector",$.throttle(t=>{let s=t.currentTarget.scrollTop,o=null;if(this.observed.some(r=>{let n=r.el,h=r.months,d=n.offsetTop,l=d+n.offsetHeight;if(d-25<=s&&l>=s)return h.some(c=>{let f=c.offsetTop-25;if(s<=d+f)return!0;o=c})}),o&&e!==o){e=o;let r={month:Number(o.getAttribute("month")),year:Number(o.getAttribute("year"))};this.setHeader(r),this.viewedDate=r}},50))}observeYear(e){let t=$(e),a=e.getAttribute("year"),s=t.find(".f-calendar__sheet--month").map((o,r)=>
25r).toArray();this.observed.push({el:e,year:a,months:s}),this.observed=this.observed.sort((o,r)=>o.year-r.year)}unobserveYear(e){let t=e.getAttribute("year"),a=this.observed.findIndex(s=>s.year===t);a>=0&&this.observed.splice(a,1)}scrollYearListToActive(){let e=this.$date_selector_year_list.find(`[year=${this.viewedDate.year}]`);if(!e.length){console.warn("scrollToYear() - Year not found");return}this.$date_selector_year_list.scrollTop(0);let t=e[0].offsetTop;this.$date_selector_year_list.scrollTop(t-100)}setHeader({month:e,year:t}){let{locale:a}=this.config.get();typeof+e=="number"&&(this.viewedDate.month=+e),typeof+t=="number"&&(this.viewedDate.year=+t);let s=`${a.month[e]}, ${t}`;this.$date_selector_current_date.html(s)}highligthItems(e){this.showed&&(e||(e=this.viewedDate),this._highligthActive(e),this._highligthDisabled(e))}_highligthActive({month:e,year:t}){this.$date_selector_month_list.find(".f-calendar__date-selector--month-item").removeClass("f-calendar__date-selector--month-item_active"),this.$date_selector_year_list.find(".f-calendar__date-selector--year-item").removeClass("f-calendar__date-selector--year-item_active"),this.$date_selector_month_list.find(`.f-calendar__date-selector--month-item[month=${e}]`).addClass("f-calendar__date-selector--month-item_active"),this.$date_selector_year_list.find(`.f-calendar__date-selector--year-item[year=${t}]`).addClass("f-calendar__date-selector--year-item_active")}_highligthDisabled({year:e}){let{upperLimit:t,lowerLimit:a}=this.config.get();if(this._clearDisabledMonth(),a.year===e){let s=0;for(;s<a.month;)this.$date_selector_month_list.find(`[month=${s}]`).addClass("f-calendar__date-selector--month-item_disabled"),s+=1}if(t.year===e){let s=t.month;for(;s<=11;)s+=1,this.$date_selector_month_list.find(`[month=${s}]`).addClass("f-calendar__date-selector--month-item_disabled")}}_clearDisabledMonth(){this.$date_selector_month_list.find(".f-calendar__date-selector--month-item").removeClass("f-calendar__date-selector--month-item_disabled")}setAndCheckSelectedStage(e){return e==="month"?this.selectedStage.month=!0:e==="year"&&(this.selectedStage.year=!0),this.selectedStage.month&&this.selectedStage.year}};(function(){class i{constructor(t,a){this.opts=a,this.instanceId=`calendar_${Math.round(1e5-.5+Math.random()*9e5)}`,this.dispatch=F.bind(this),this.config=new k(this,a),this.listener=new b(this),this.sLocker=new D(this),this.helper=new L(this),this.main=new T(this),this.input=new C({root:this,element:t}),this.sheet=new O(this);let s=this.config.get();s.type==="datetime"&&(this.timeSelector=new Y(this)),s.showDateSelector&&(this.dateSelector=new x(this)),this.main.checkMobile(),this.input.preBuild(),this.listener.init();let o=navigator.userAgent.toLowerCase(),r=o.indexOf("safari")!==-1&&o.match(/version\/(\d+)/);this.input.isFocused&&r?document.activeElement.blur():!this.main.mobile&&this.input.isFocused&&this.dispatch("showCalendar")}}$.fn.calendar=function(e){return(this.length&&this).each((a,s)=>{let o=$(s),r=new i(s,e);o.data("calendar",r)})}})();})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.