File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/calendar/resourcebooking/dist/resourcebooking.bundle.min.js
Back
this.BX=this.BX||{};(function(e,t,s,i,a){"use strict";let r=e=>e,l;class o{constructor(e){if(new.target===o){throw new TypeError("Cannot construct Abstract instances directly")}this.name=null;this.classNames={wrap:e.wrapClassName||"calendar-resbook-webform-block",innerWrap:"calendar-resbook-webform-block-inner",title:"calendar-resbook-webform-block-title",field:"calendar-resbook-webform-block-field"};this.DOM={outerWrap:e.outerWrap,wrap:null,dataWrap:null,innerWrap:null,labelWrap:null};this.data=e.data;this.shown=false}isDisplayed(){return this.data.show!=="N"}isShown(){return this.shown}display(){this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Dom.create("div",{props:{className:this.classNames.wrap}}));this.DOM.dataWrap=this.DOM.wrap.appendChild(t.Tag.render(l||(l=r`<div data-bx-resource-data-wrap="Y"></div>`)));if(this.isDisplayed()){this.show({animation:false})}}refresh(e){this.refreshLabel(e);this.data=e;if(this.setDataConfig()){if(this.isDisplayed()){this.show({animation:true})}else{this.hide({animation:true})}}this.data=e}setDataConfig(){return true}refreshLabel(e){if(this.data.label!==e.label){t.Dom.adjust(this.DOM.labelWrap,{text:e.label})}}show(){if(this.DOM.innerWrap){this.hide()}this.DOM.innerWrap=this.DOM.wrap.appendChild(t.Dom.create("div",{props:{className:this.classNames.innerWrap}}));if(this.data.label||this.label){this.DOM.labelWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:this.classNames.title},text:this.data.label||this.label}))}this.DOM.controlWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:this.classNames.field}}));this.displayControl();this.shown=true}hide(){t.Dom.remove(this.DOM.innerWrap);this.DOM.innerWrap=null;this.shown=false}displayControl(){}showWarning(e){if(this.shown&&this.DOM.wrap&&this.DOM.innerWrap){t.Dom.addClass(this.DOM.wrap,"calendar-resbook-webform-block-error");this.displayErrorText(e||t.Loc.getMessage("WEBF_RES_BOOKING_REQUIRED_WARNING"))}}hideWarning(){if(this.DOM.wrap){t.Dom.removeClass(this.DOM.wrap,"calendar-resbook-webform-block-error");if(this.DOM.errorTextWrap){t.Dom.remove(this.DOM.errorTextWrap)}}}displayErrorText(e){if(this.DOM.errorTextWrap){t.Dom.remove(this.DOM.errorTextWrap)}this.DOM.errorTextWrap=this.DOM.innerWrap.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-error-text"},text:e}))}}class n{constructor(e){this.id="viewform-dropdown-select-"+Math.round(Math.random()*1e5);this.DOM={wrap:e.wrap};this.maxHeight=e.maxHeight;this.selectAllMessage=t.Loc.getMessage("WEBF_RES_SELECT_ALL");this.setSettings(e)}build(){this.DOM.select=this.DOM.wrap.appendChild(t.Dom.create("div",{attrs:{className:"calendar-resbook-webform-block-input calendar-resbook-webform-block-input-dropdown"},events:{click:this.openPopup.bind(this)}}));this.setSelectedValues(this.selected)}setSettings(e){this.handleChangesCallback=t.Type.isFunction(e.handleChangesCallback)?e.handleChangesCallback:null;this.values=e.values;this.selected=!t.Type.isArray(e.selected)?[e.selected]:e.selected;this.multiple=e.multiple}openPopup(){if(this.isPopupShown()){return this.closePopup()}let e=[];this.values.forEach((function(s){let i="menu-popup-no-icon";if(t.Type.isArray(this.selected)&&this.selected.includes(parseInt(s.id))){i+=" menu-item-selected"}e.push({id:s.id,className:i,text:t.Text.encode(s.title),onclick:this.menuItemClick.bind(this)})}),this);if(this.multiple&&e.length<=1){this.multiple=false}if(this.multiple){e.push({id:"select-all",text:this.selectAllMessage,onclick:this.selectAllItemClick.bind(this)})}this.popup=i.MenuManager.create(this.id,this.DOM.select,e,{className:"calendar-resbook-form-popup"+(this.multiple?" popup-window-resource-select":""),closeByEsc:true,autoHide:!this.multiple,offsetTop:0,offsetLeft:0,cacheable:false});this.popup.show(true);this.popupContainer=this.popup.popupWindow.popupContainer;this.popupContainer.style.width=parseInt(this.DOM.select.offsetWidth)+"px";if(this.multiple){this.popup.menuItems.forEach((function(e){let t;if(e.id==="select-all"){this.selectAllChecked=!this.values.find((function(e){return!this.selected.find((function(t){return t===e.id}))}),this);e.layout.item.className="menu-popup-item menu-popup-item-resource-all";e.layout.item.innerHTML='<div class="menu-popup-item-inner">'+'<div class="menu-popup-item-resource">'+'<input class="menu-popup-item-resource-checkbox menu-popup-item-all-resources-checkbox" type="checkbox"'+(this.selectAllChecked?'checked="checked"':"")+' id="'+e.id+'">'+'<label class="menu-popup-item-text" for="'+e.id+'">'+e.text+"</label>"+"</div>"+"</div>"}else{t=this.selected.find((function(t){return t===e.id}));e.layout.item.className="menu-popup-item";e.layout.item.innerHTML='<div class="menu-popup-item-inner">'+'<div class="menu-popup-item-resource">'+'<input class="menu-popup-item-resource-checkbox" type="checkbox"'+(t?'checked="checked"':"")+' id="'+e.id+'">'+'<label class="menu-popup-item-text" for="'+e.id+'">'+e.text+"</label>"+"</div>"+"</div>"}}),this);t.Event.unbind(document,"click",this.handleClick.bind(this));setTimeout(function(){t.Event.bind(document,"click",this.handleClick.bind(this))}.bind(this),50)}}closePopup(){if(this.isPopupShown()){this.popup.close();if(this.multiple){t.Event.unbind(document,"click",this.handleClick.bind(this))}}}isPopupShown(){return this.popup&&this.popup.popupWindow&&this.popup.popupWindow.isShown&&this.popup.popupWindow.isShown()&&this.popup.popupWindow.popupContainer&&t.Dom.isShown(this.popup.popupWindow.popupContainer)}menuItemClick(e,s){let i,a=e.target||e.srcElement,r,l;if(this.multiple){r=this.values.find((function(e){return e.id==s.id}));l=s.layout.item.querySelector(".menu-popup-item-resource-checkbox");if(r&&a&&(t.Dom.hasClass(a,"menu-popup-item")||t.Dom.hasClass(a,"menu-popup-item-resource-checkbox")||t.Dom.hasClass(a,"menu-popup-item-inner"))){if(!t.Dom.hasClass(a,"menu-popup-item-resource-checkbox")){l.checked=!l.checked}if(l.checked){this.selectItem(r)}else{this.deselectItem(r);i=this.popupContainer.querySelector(".menu-popup-item-all-resources-checkbox");this.selectAllChecked=false;if(i){i.checked=false}}this.setSelectedValues(this.selected);this.handleControlChanges()}}else{this.setSelectedValues([s.id]);this.handleControlChanges();this.closePopup()}}selectItem(e){if(!this.selected.includes(e.id)){this.selected.push(e.id)}}deselectItem(e){let t=this.selected.indexOf(parseInt(e.id));if(t>=0){this.selected=this.selected.slice(0,t).concat(this.selected.slice(t+1))}}selectAllItemClick(e,s){let i=e.target||e.srcElement;if(i&&(t.Dom.hasClass(i,"menu-popup-item")||t.Dom.hasClass(i,"menu-popup-item-resource-checkbox"))){let e=s.layout.item.querySelector(".menu-popup-item-resource-checkbox");if(t.Dom.hasClass(i,"menu-popup-item")){e.checked=!e.checked}let a,r=this.popupContainer.querySelectorAll("input.menu-popup-item-resource-checkbox");this.selectAllChecked=e.checked;for(a=0;a<r.length;a++){r[a].checked=this.selectAllChecked}this.selected=[];if(this.selectAllChecked){this.values.forEach((function(e){this.selected.push(e.id)}),this)}this.setSelectedValues(this.selected);this.handleControlChanges()}}handleClick(e){if(this.isPopupShown()&&!this.popupContainer.contains(e.target||e.srcElement)){this.closePopup({animation:true})}this.handleControlChanges()}getSelectedValues(){return this.selected}setSelectedValues(e){let s,i,a=[],r=[];for(s=0;s<e.length;s++){i=this.values.find((function(t){return t.id===e[s]}));if(i){a.push(i.title);r.push(i.id)}}this.selected=r;t.Dom.adjust(this.DOM.select,{text:a.length?a.join(", "):t.Loc.getMessage("USER_TYPE_RESOURCE_LIST_PLACEHOLDER")})}handleControlChanges(){if(this.handleChangesCallback){this.handleChangesCallback(this.getSelectedValues())}}}class h extends o{constructor(e){super(e);this.name="UserSelector";this.data=e.data||{};this.userList=[];this.userIndex={};this.values=[];this.defaultMode="auto";this.previewMode=e.previewMode===undefined;this.autoSelectDefaultValue=e.autoSelectDefaultValue;this.changeValueCallback=e.changeValueCallback;this.handleSettingsData(this.data,e.userIndex)}displayControl(){this.selectedValue=this.getSelectedUser();this.dropdownSelect=new n({wrap:this.DOM.controlWrap,values:this.userList,selected:this.selectedValue,handleChangesCallback:this.handleChanges.bind(this)});this.dropdownSelect.build()}refresh(e,t){this.refreshLabel(e);this.data=e;this.handleSettingsData(this.data,t);this.selectedValue=this.getSelectedUser();if(this.dropdownSelect){this.dropdownSelect.setSettings({values:this.userList,selected:this.selectedValue})}if(this.setDataConfig()){if(this.isDisplayed()){this.show({animation:true})}else{this.hide({animation:true})}}}handleSettingsData(e,s){if(t.Type.isPlainObject(s)){for(let e in s){if(s.hasOwnProperty(e)){this.userIndex[e]=s[e]}}}this.defaultMode=this.data.defaultMode==="none"?"none":"auto";let i=[];this.userList=[];if(this.data.value){let e=t.Type.isArray(this.data.value)?this.data.value:this.data.value.split("|");e.forEach((function(e){e=parseInt(e);if(e>0){i.push(e);if(this.userIndex[e]){this.userList.push({id:e,title:this.userIndex[e].displayName})}}}),this)}this.values=i}getSelectedUser(){let e=null;if(this.dropdownSelect){e=this.dropdownSelect.getSelectedValues();e=t.Type.isArray(e)&&e.length?e[0]:null}if(!e&&this.previewMode&&this.data.defaultMode==="auto"&&this.userList&&this.userList[0]){e=this.userList[0].id}if(!e&&this.autoSelectDefaultValue){e=this.autoSelectDefaultValue}return e}setSelectedUser(e){if(this.dropdownSelect){this.dropdownSelect.setSelectedValues([e])}else{this.autoSelectDefaultValue=parseInt(e)}}handleChanges(e){if(!this.previewMode&&t.Type.isFunction(this.changeValueCallback)){this.changeValueCallback(e[0]||null)}}}class d extends o{constructor(e){super(e);this.name="ResourceSelector";this.data=e.data;this.allResourceList=e.resourceList;this.autoSelectDefaultValue=e.autoSelectDefaultValue;this.changeValueCallback=e.changeValueCallback;this.handleSettingsData(e.data)}handleSettingsData(e){if(!t.Type.isArray(e.value)){let t=[];if(e.value){e.value.split("|").forEach((function(e){if(parseInt(e)>0){t.push(parseInt(e))}}))}this.data.value=t}this.resourceList=[];if(t.Type.isArray(this.allResourceList)&&t.Type.isArray(this.data.value)){this.allResourceList.forEach((function(e){if(this.data.value.includes(parseInt(e.id))){this.resourceList.push(e)}}),this)}this.setSelectedValues(this.getSelectedValues())}displayControl(){this.dropdownSelect=new n({wrap:this.DOM.controlWrap,values:this.resourceList,selected:this.selectedValues,multiple:this.data.multiple==="Y",handleChangesCallback:this.changeValueCallback});this.dropdownSelect.build()}refresh(e){this.refreshLabel(e);this.data=e;this.handleSettingsData(this.data);this.setSelectedValues(this.getSelectedValues());if(this.dropdownSelect){this.dropdownSelect.setSettings({values:this.resourceList,selected:this.selectedValues,multiple:this.data.multiple==="Y"})}if(this.setDataConfig()){if(this.isDisplayed()){this.show({animation:true})}else{this.hide({animation:true})}}}getSelectedValues(){let e=null;if(this.dropdownSelect){e=this.dropdownSelect.getSelectedValues()}if(!e&&this.autoSelectDefaultValue){e=[this.autoSelectDefaultValue]}if(!e&&this.data.defaultMode==="auto"){if(this.resourceList&&this.resourceList[0]){e=[this.resourceList[0].id]}}return e}setSelectedValues(e){this.selectedValues=e}setSelectedResource(e){if(this.dropdownSelect){this.dropdownSelect.setSelectedValues([e])}else{this.autoSelectDefaultValue=parseInt(e);this.selectedValues=[e]}}}class u extends o{constructor(e){super(e);this.name="ServiceSelector";this.data=e.data;this.serviceList=[];this.allServiceList=[];if(t.Type.isArray(e.serviceList)){e.serviceList.forEach((e=>{if(t.Type.isString(name)){e.name=e.name.trim()}this.allServiceList.push(e)}))}this.values=[];this.changeValueCallback=t.Type.isFunction(e.changeValueCallback)?e.changeValueCallback:null;if(e.selectedValue){this.setSelectedService(e.selectedValue)}this.handleSettingsData(this.data)}displayControl(){this.dropdownSelect=new n({wrap:this.DOM.controlWrap,values:this.serviceList,selected:this.getSelectedService(),handleChangesCallback:function(e){if(e&&e[0]){this.setSelectedService(e[0]);if(this.changeValueCallback){this.changeValueCallback()}}}.bind(this)});this.dropdownSelect.build()}refresh(e){this.refreshLabel(e);this.data=e;this.handleSettingsData(this.data);if(this.dropdownSelect){this.dropdownSelect.setSettings({values:this.serviceList,selected:this.getSelectedService()})}if(this.setDataConfig()){if(this.isDisplayed()){this.show({animation:true})}else{this.hide({animation:true})}}}handleSettingsData(){this.serviceIndex={};if(t.Type.isArray(this.allServiceList)){this.allServiceList.forEach((function(e){if(t.Type.isPlainObject(e)&&t.Type.isString(e.name)&&e.name.trim()!==""){this.serviceIndex[this.prepareServiceId(e.name)]=e}}),this)}this.serviceList=[];if(this.data.value){let e=t.Type.isArray(this.data.value)?this.data.value:this.data.value.split("|");e.forEach((function(e){let s=this.serviceIndex[this.prepareServiceId(e)];if(t.Type.isPlainObject(s)&&t.Type.isString(s.name)&&s.name.trim()!==""){this.serviceList.push({id:this.prepareServiceId(s.name),title:s.name+" - "+re.getDurationLabel(s.duration)})}}),this)}}setSelectedService(e){this.selectedService=e}getSelectedService(e){return e!==true?this.selectedService||null:this.serviceIndex[this.prepareServiceId(this.selectedService)]||null}prepareServiceId(e){return re.translit(e)}}class c extends o{constructor(e){super(e);this.name="DurationSelector";this.data=e.data;this.durationList=re.getDurationList(e.fullDay);this.changeValueCallback=e.changeValueCallback;this.defaultValue=e.defaultValue||this.data.defaultValue;this.handleSettingsData(e.data)}handleSettingsData(){this.durationItems=[];if(t.Type.isArray(this.durationList)){this.durationList.forEach((function(e){this.durationItems.push({id:e.value,title:e.label})}),this)}}displayControl(){this.DOM.durationInput=this.DOM.controlWrap.appendChild(t.Dom.create("INPUT",{attrs:{value:this.data.defaultValue||null,type:"text"},props:{className:"calendar-resbook-webform-block-input calendar-resbook-webform-block-input-dropdown"}}));this.durationControl=new he({input:this.DOM.durationInput,values:this.durationList,value:this.data.defaultValue||null,editable:this.data.manualInput==="Y",defaultValue:this.defaultValue,setFirstIfNotFound:true,onChangeCallback:this.changeValueCallback})}refresh(e){this.refreshLabel(e);this.data=e;this.handleSettingsData(this.data);if(this.setDataConfig()){if(this.isDisplayed()){this.show({animation:true});if(this.durationControl){this.durationControl.setValue(this.data.defaultValue||null)}}else{this.hide({animation:true})}}}getSelectedValue(){let e=null;if(this.durationControl){e=re.parseDuration(this.durationControl.getValue())}else{e=parseInt(this.defaultValue)}return e}}let p=e=>e,f,m,D,b,g,M,C,S,T,w,O,v,y;class k extends o{constructor(e){super(e);this.DOM={outerWrap:e.outerWrap,wrap:null};this.data=e.data||{};this.changeValueCallback=e.changeValueCallback;this.requestDataCallback=e.requestDataCallback;this.previewMode=e.previewMode===undefined;this.allowOverbooking=e.allowOverbooking;this.setDataConfig();this.displayed=true}display(e){e=e||{};this.setDateIndex(e.availableDateIndex);this.setCurrentDate(e.selectedValue);this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Tag.render(f||(f=p`<div class="calendar-resbook-webform-block"></div>`)));this.DOM.innerWrap=this.DOM.wrap.appendChild(t.Tag.render(m||(m=p`<div class="calendar-resbook-webform-block-inner"></div>`)));if(this.data.label){this.DOM.labelWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-title"},text:this.data.label+"*"}))}this.displayControl();this.shown=true}refresh(e,s){s=s||{};this.setDateIndex(s.availableDateIndex);this.setCurrentDate(s.selectedValue);this.data=e;t.Dom.adjust(this.DOM.labelWrap,{text:this.data.label+"*"});if(this.setDataConfig()){t.Dom.remove(this.DOM.controlWrap);this.displayControl()}if(this.style==="line"){this.lineDateControl.refreshDateAvailability()}}setDataConfig(){let e=this.data.style==="line"?"line":"popup",t=this.data.start==="today"?"today":"free",s=this.style!==e||this.start!==t;this.style=e;this.start=t;return s}hide(){t.Dom.remove(this.DOM.innerWrap);this.DOM.innerWrap=null}displayControl(){this.DOM.controlWrap=this.DOM.innerWrap.appendChild(t.Tag.render(D||(D=p`<div class="calendar-resbook-webform-block-date"></div>`)));if(this.style==="popup"){this.DOM.controlWrap.className="calendar-resbook-webform-block-calendar";this.popupSateControl=new E({wrap:this.DOM.controlWrap,isDateAvailable:this.isDateAvailable.bind(this),onChange:function(e){this.onChange(e)}.bind(this)});this.popupSateControl.build();this.popupSateControl.setValue(this.getValue())}else if(this.style==="line"){this.DOM.controlWrap.className="calendar-resbook-webform-block-date";this.lineDateControl=new W({wrap:this.DOM.controlWrap,isDateAvailable:this.isDateAvailable.bind(this),onChange:this.onChange.bind(this)});this.lineDateControl.build();this.lineDateControl.setValue(this.getValue())}}setCurrentDate(e){if(t.Type.isDate(e)){this.currentDate=e}}setDateIndex(e){if(t.Type.isPlainObject(e)){this.availableDateIndex=e}}isDateLoaded(e){if(t.Type.isDate(e)&&!this.isItPastDate(e)&&this.availableDateIndex){if(this.availableDateIndex[re.formatDate(null,e)]!==undefined){return true}if(t.Type.isFunction(this.requestDataCallback)){this.requestDataCallback({date:e})}}return false}isDateAvailable(e){if(this.previewMode||this.allowOverbooking){return true}if(t.Type.isDate(e)&&!this.isItPastDate(e)&&this.availableDateIndex){let s=re.formatDate(null,e);if(this.availableDateIndex[s]===undefined){if(t.Type.isFunction(this.requestDataCallback)){this.requestDataCallback({date:e})}return false}else{return this.availableDateIndex[s]}}return false}isItPastDate(e){if(t.Type.isDate(e)){let t=new Date,s=new Date(e.getTime());t.setHours(0,0,0,0);s.setHours(0,0,0,0);return s.getTime()<t.getTime()}return false}refreshCurrentValue(){this.onChange(this.getDisplayedValue())}getDisplayedValue(){return this.style==="popup"?this.popupSateControl.getValue():this.lineDateControl.getValue()}onChange(e){if(t.Type.isFunction(this.changeValueCallback)){let s=e;if(!t.Type.isDate(s)){s=this.getDisplayedValue()}this.setCurrentDate(e);this.changeValueCallback(e,s,this.isDateAvailable(s))}}getValue(){if(!this.currentDate){this.currentDate=new Date}return this.currentDate}}class E{constructor(e){this.DOM={outerWrap:e.wrap,wrap:null};this.value=null;this.datePicker=null;this.isDateAvailable=t.Type.isFunction(e.isDateAvailable)?e.isDateAvailable:function(){return true};this.onChange=t.Type.isFunction(e.onChange)?e.onChange:function(){}}build(){this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-strip"},events:{click:this.handleClick.bind(this)}}));this.DOM.valueInput=this.DOM.wrap.appendChild(t.Tag.render(b||(b=p`<input type="hidden" value=""/>`)));this.DOM.previousArrow=this.DOM.wrap.appendChild(t.Tag.render(g||(g=p`<span class="calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-prev" data-bx-resbook-date-meta="previous"/>`)));this.DOM.stateWrap=this.DOM.wrap.appendChild(t.Tag.render(M||(M=p`<span class="calendar-resbook-webform-block-strip-text" data-bx-resbook-date-meta="calendar"/>`)));this.DOM.stateWrapDate=this.DOM.stateWrap.appendChild(t.Tag.render(C||(C=p`<span class="calendar-resbook-webform-block-strip-date"/>`)));this.DOM.stateWrapDay=this.DOM.stateWrap.appendChild(t.Tag.render(S||(S=p`<span class="calendar-resbook-webform-block-strip-day"/>`)));this.DOM.nextArrow=this.DOM.wrap.appendChild(t.Tag.render(T||(T=p`<span class="calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-next" data-bx-resbook-date-meta="next"/>`)))}getValue(){return this.value}setValue(e){this.value=e;t.Dom.adjust(this.DOM.stateWrapDate,{text:re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_DATE_LINE"),e)});t.Dom.adjust(this.DOM.stateWrapDay,{text:re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_DAY_LINE"),e)});if(!this.isDateAvailable(e)||!t.Type.isDate(e)){this.onChange(false)}else{this.onChange(this.value)}}handleClick(e){let t,s=e.target||e.srcElement;if(s.hasAttribute("data-bx-resbook-date-meta")||(s=s.closest("[data-bx-resbook-date-meta]"))){let e=s.getAttribute("data-bx-resbook-date-meta");if(e==="previous"){t=this.getValue();t.setDate(t.getDate()-1);this.setValue(t)}else if(e==="next"){t=this.getValue();t.setDate(t.getDate()+1);this.setValue(t)}else if(e==="calendar"){this.openCalendarPopup()}}}openCalendarPopup(){this.DOM.valueInput.value=re.formatDate(null,this.getValue().getTime()/1e3);if(E.isExternalDatePickerEnabled()){this.openExternalDatePicker()}else{this.openBxCalendar()}}openBxCalendar(){BX.calendar({node:this.DOM.stateWrap,field:this.DOM.valueInput,bTime:false});if(BX.calendar.get().popup){re.unbindCustomEvent(BX.calendar.get().popup,"onPopupClose",this.handleCalendarClose.bind(this));re.bindCustomEvent(BX.calendar.get().popup,"onPopupClose",this.handleCalendarClose.bind(this))}}handleCalendarClose(){this.setValue(re.parseDate(this.DOM.valueInput.value))}static isExternalDatePickerEnabled(){if(t.Type.isNull(E.externalDatePickerIsEnabled)){E.externalDatePickerIsEnabled=!!(window.BX&&BX.UI&&BX.UI.Vue&&BX.UI.Vue.Components&&BX.UI.Vue.Components.DatePick)}return E.externalDatePickerIsEnabled}openExternalDatePicker(){if(t.Type.isNull(this.datePicker)){this.datePicker=new BX.UI.Vue.Components.DatePick({node:this.DOM.stateWrap,hasTime:false,events:{change:function(e){this.DOM.valueInput.value=e;this.handleCalendarClose()}.bind(this)}})}this.datePicker.value=this.DOM.valueInput.value;this.datePicker.toggle()}}E.externalDatePickerIsEnabled=null;class W{constructor(e){e=e||{};this.DOM={outerWrap:e.wrap,wrap:null};this.value=null;this.isDateAvailable=t.Type.isFunction(e.isDateAvailable)?e.isDateAvailable:function(){return true};this.onChange=t.Type.isFunction(e.onChange)?e.onChange:function(){};this.DAYS_DISPLAY_SIZE=30;this.DOM.dayNodes={};this.dayNodeIndex={}}build(){this.DOM.monthTitle=this.DOM.outerWrap.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-date-month"}}));this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-date-range"},events:{click:this.handleClick.bind(this)}}));this.DOM.controlStaticWrap=this.DOM.wrap.appendChild(t.Tag.render(w||(w=p`<div class="calendar-resbook-webform-block-date-range-static-wrap" ></div>`)));this.DOM.controlInnerWrap=this.DOM.controlStaticWrap.appendChild(t.Tag.render(O||(O=p`<div class="calendar-resbook-webform-block-date-range-inner-wrap" ></div>`)));this.DOM.valueInput=this.DOM.wrap.appendChild(t.Tag.render(v||(v=p`<input type="hidden" value=""/>`)));this.fillDays();this.initCustomScroll()}fillDays(){let e,t=this.getStartLoadDate(),s=new Date(t.getTime());for(e=0;e<this.DAYS_DISPLAY_SIZE;e++){this.addDateSlot(s);s.setDate(s.getDate()+1)}this.innerWidth=parseInt(this.DOM.controlInnerWrap.offsetWidth)}addDateSlot(e){let s=re.formatDate("Y-m-d",e.getTime()/1e3);this.dayNodeIndex[s]=new Date(e.getTime());this.DOM.dayNodes[s]=this.DOM.controlInnerWrap.appendChild(t.Dom.create("div",{attrs:{className:"calendar-resbook-webform-block-date-item"+(this.isDateAvailable(e)?"":" calendar-resbook-webform-block-date-item-off"),"data-bx-resbook-date-meta":s},html:'<div class="calendar-resbook-webform-block-date-item-inner">'+'<span class="calendar-resbook-webform-block-date-number">'+re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_DATE"),e)+"</span>"+'<span class="calendar-resbook-webform-block-date-day">'+re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_DAY_OF_THE_WEEK"),e)+"</span>"+"</div>"}))}refreshDateAvailability(){for(let e in this.DOM.dayNodes){if(this.DOM.dayNodes.hasOwnProperty(e)){if(this.isDateAvailable(this.dayNodeIndex[e])){t.Dom.removeClass(this.DOM.dayNodes[e],"calendar-resbook-webform-block-date-item-off")}else{t.Dom.addClass(this.DOM.dayNodes[e],"calendar-resbook-webform-block-date-item-off")}}}}handleClick(e){let t,s=e.target||e.srcElement;if(s.hasAttribute("data-bx-resbook-date-meta")||(s=s.closest("[data-bx-resbook-date-meta]"))){let e=s.getAttribute("data-bx-resbook-date-meta");if(e&&(t=re.parseDate(e,false,"YYYY-MM-DD"))){this.setValue(t)}}}setValue(e){if(t.Type.isDate(e)){this.value=e;let t=this.getDayNode(e);if(t){this.setSelected(t)}this.onChange(this.value)}}getValue(){return this.value}getDayNode(e){let t=re.formatDate("Y-m-d",e.getTime()/1e3);if(this.DOM.dayNodes[t]){return this.DOM.dayNodes[t]}else{this.fillDays(e);if(this.DOM.dayNodes[t]){return this.DOM.dayNodes[t]}}return null}setSelected(e){if(this.currentSelected){t.Dom.removeClass(this.currentSelected,"calendar-resbook-webform-block-date-item-select")}this.currentSelected=e;t.Dom.addClass(e,"calendar-resbook-webform-block-date-item-select")}getStartLoadDate(){if(!this.startLoadDate){this.startLoadDate=new Date}else{this.startLoadDate.setDate(this.startLoadDate.getDate()+this.DAYS_DISPLAY_SIZE)}return this.startLoadDate}initCustomScroll(){let e=this.DOM.wrap.appendChild(t.Tag.render(y||(y=p`<div class="calendar-resbook-webform-block-arrow-container" ></div>`)));this.DOM.leftArrow=e.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-prev"},events:{click:this.handlePreletrowClick.bind(this)}}));this.DOM.rightArrow=e.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-next"},events:{click:this.handleNextArrowClick.bind(this)}}));this.outerWidth=parseInt(this.DOM.controlStaticWrap.offsetWidth);this.innerWidth=parseInt(this.DOM.controlInnerWrap.offsetWidth);if("onwheel"in document){t.Event.bind(this.DOM.controlStaticWrap,"wheel",this.mousewheelScrollHandler.bind(this))}else{t.Event.bind(this.DOM.controlStaticWrap,"mousewheel",this.mousewheelScrollHandler.bind(this))}this.checkScrollPosition()}handleNextArrowClick(){this.DOM.controlStaticWrap.scrollLeft=this.DOM.controlStaticWrap.scrollLeft+100;this.checkScrollPosition()}handlePreletrowClick(){this.DOM.controlStaticWrap.scrollLeft=Math.max(this.DOM.controlStaticWrap.scrollLeft-100,0);this.checkScrollPosition()}mousewheelScrollHandler(e){e=e||window.event;let s=e.deltaY||e.detail||e.wheelDelta;if(Math.abs(s)>0){if(!t.Browser.isMac()){s=s*3}this.DOM.controlStaticWrap.scrollLeft=Math.max(this.DOM.controlStaticWrap.scrollLeft+s,0);this.checkScrollPosition();if(e.stopPropagation){e.preventDefault();e.stopPropagation()}return false}}checkScrollPosition(){if(this.outerWidth<=this.innerWidth){this.DOM.leftArrow.style.display=this.DOM.controlStaticWrap.scrollLeft===0?"none":"";if(this.innerWidth-this.outerWidth-4<=this.DOM.controlStaticWrap.scrollLeft){this.fillDays()}}this.updateMonthTitle()}updateMonthTitle(){if(!this.dayNodeOuterWidth){this.dayNodeOuterWidth=this.DOM.controlInnerWrap.childNodes[1].offsetLeft-this.DOM.controlInnerWrap.childNodes[0].offsetLeft;if(!this.dayNodeOuterWidth){return setTimeout(this.updateMonthTitle.bind(this),100)}}let e,s,i,a,r=Math.floor(this.DOM.controlStaticWrap.scrollLeft/this.dayNodeOuterWidth),l=Math.floor((this.DOM.controlStaticWrap.scrollLeft+this.outerWidth)/this.dayNodeOuterWidth);if(this.DOM.controlInnerWrap.childNodes[r]){i=this.DOM.controlInnerWrap.childNodes[r].getAttribute("data-bx-resbook-date-meta");if(i&&(a=re.parseDate(i,false,"YYYY-MM-DD"))){e=s=re.formatDate("f",a)}}if(this.DOM.controlInnerWrap.childNodes[l]){i=this.DOM.controlInnerWrap.childNodes[l].getAttribute("data-bx-resbook-date-meta");if(i&&(a=re.parseDate(i,false,"YYYY-MM-DD"))){s=re.formatDate("f",a)}}if(e&&s){t.Dom.adjust(this.DOM.monthTitle,{text:s===e?e:e+" - "+s})}}}let I=e=>e,A,x,_,F,L,V,R,N,P,B,U;class Y extends o{constructor(e){super(e);this.DOM={outerWrap:e.outerWrap,wrap:null};this.data=e.data||{};this.setDataConfig();this.timeFrom=this.data.timeFrom||e.timeFrom||7;if(e.timeFrom!==undefined){this.timeFrom=e.timeFrom}this.timeTo=this.data.timeTo||20;if(e.timeTo!==undefined){this.timeTo=e.timeTo}this.SLOTS_ROW_AMOUNT=6;this.id="time-selector-"+Math.round(Math.random()*1e3);this.popupSelectId=this.id+"-select-popup";this.previewMode=e.previewMode===undefined;this.changeValueCallback=e.changeValueCallback;this.timezone=e.timezone;this.timezoneOffset=e.timezoneOffset;this.timezoneOffsetLabel=e.timezoneOffsetLabel;this.timeMidday=12;this.timeEvening=17;this.displayed=true}setDataConfig(){let e=this.data.style==="select"?"select":"slots",t=this.data.showOnlyFree!=="N",s=this.data.showFinishTime==="Y",i=parseInt(this.data.scale||30),a=this.style!==e||this.showOnlyFree!==t||this.showFinishTime!==s||this.scale!==i;this.style=e;this.showOnlyFree=t;this.showFinishTime=s;this.scale=i;return a}display(){this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Tag.render(A||(A=I`<div class="calendar-resbook-webform-block"></div>`)));this.DOM.innerWrap=this.DOM.wrap.appendChild(t.Tag.render(x||(x=I`<div class="calendar-resbook-webform-block-inner"></div>`)));if(this.data.label){this.DOM.labelWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-title"},text:this.data.label+"*"}));if(this.timezone){this.DOM.timezoneLabelWrap=this.DOM.labelWrap.appendChild(t.Tag.render(_||(_=I`<div class="calendar-resbook-webform-block-title-timezone"></div>`)));t.Dom.adjust(this.DOM.timezoneLabelWrap,{html:t.Loc.getMessage("USER_TYPE_RESOURCE_TIMEZONE").replace("#TIMEZONE#",this.timezone+" "+this.timezoneOffsetLabel)})}}this.displayControl();this.setValue(this.getValue());this.shown=true}refresh(e,s){s=s||{};this.setSlotIndex(s.slotIndex);this.currentDate=s.currentDate||new Date;this.data=e;if(!this.isShown()){this.setDataConfig();this.display()}else{if(this.DOM.labelWrap&&this.data.label){t.Dom.adjust(this.DOM.labelWrap,{text:this.data.label+"*"})}if(this.timezone){if(!this.DOM.timezoneLabelWrap||!this.DOM.labelWrap.contains(this.DOM.timezoneLabelWrap)){this.DOM.timezoneLabelWrap=this.DOM.labelWrap.appendChild(t.Tag.render(F||(F=I`<div class="calendar-resbook-webform-block-title-timezone"></div>`)))}t.Dom.adjust(this.DOM.timezoneLabelWrap,{html:t.Loc.getMessage("USER_TYPE_RESOURCE_TIMEZONE").replace("#TIMEZONE#",this.timezone+" "+this.timezoneOffsetLabel)})}if(this.setDataConfig()||s.slotIndex||s.selectedValue){t.Dom.remove(this.DOM.controlWrap);this.displayControl()}}this.setCurrentValue(s.selectedValue||this.getValue())}setSlotIndex(e){if(t.Type.isPlainObject(e)){this.availableSlotIndex=e}}setCurrentValue(e){if(e&&(this.previewMode||this.availableSlotIndex[e])){this.setValue(e)}else{this.setValue(null)}}showEmptyWarning(){if(this.DOM.labelWrap){this.DOM.labelWrap.style.display="none"}if(!this.DOM.warningWrap){this.DOM.warningTextNode=t.Tag.render(L||(L=I`<span class="calendar-resbook-webform-block-notice-date"/>`));this.DOM.warningWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-notice"},children:[t.Tag.render(V||(V=I`<span class="calendar-resbook-webform-block-notice-icon"/>`)),this.DOM.warningTextNode,t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-notice-detail"},text:t.Loc.getMessage("WEBF_RES_BOOKING_BUSY_DAY_WARNING")})]}))}if(this.DOM.warningWrap){t.Dom.adjust(this.DOM.warningTextNode,{text:re.formatDate(t.Loc.getMessage("WEBF_RES_BUSY_DAY_DATE_FORMAT"),this.currentDate)});this.DOM.warningWrap.style.display="";this.noSlotsAvailable=true}}hideEmptyWarning(){this.noSlotsAvailable=false;if(this.DOM.labelWrap){this.DOM.labelWrap.style.display=""}if(this.DOM.warningWrap){this.DOM.warningWrap.style.display="none"}}displayControl(){let e=this.getSlotsInfo();this.slots=e.slots;if(!e.freeSlotsCount){this.showEmptyWarning()}else{this.hideEmptyWarning();if(this.style==="select"){this.createSelectControl()}else if(this.style==="slots"){this.createSlotsControl()}}}hide(){if(this.DOM.innerWrap){this.DOM.innerWrap.style.display="none"}}show(){if(this.DOM.innerWrap){this.DOM.innerWrap.style.display=""}}createSlotsControl(){if(this.DOM.controlWrap){t.Dom.remove(this.DOM.controlWrap)}this.DOM.controlWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-time"},events:{click:this.handleClick.bind(this)}}));if(!this.showFinishTime&&!re.isAmPmMode()){t.Dom.addClass(this.DOM.controlWrap,"calendar-resbook-webform-block-time-sm")}else if(!this.showFinishTime&&re.isAmPmMode()){t.Dom.addClass(this.DOM.controlWrap,"calendar-resbook-webform-block-time-md")}else if(re.isAmPmMode()){t.Dom.addClass(this.DOM.controlWrap,"calendar-resbook-webform-block-time-lg")}this.DOM.controlStaticWrap=this.DOM.controlWrap.appendChild(t.Tag.render(R||(R=I`<div class="calendar-resbook-webform-block-time-static-wrap"></div>`)));this.DOM.controlInnerWrap=this.DOM.controlStaticWrap.appendChild(t.Tag.render(N||(N=I`<div class="calendar-resbook-webform-block-time-inner-wrap"></div>`)));let e,s=3,i={},a=0,r;this.slots.forEach((function(e){if(!i[e.partOfTheDay]){i[e.partOfTheDay]={items:[]}}i[e.partOfTheDay].items.push(e)}));this.slots.forEach((function(l){if(!i[l.partOfTheDay].wrap){a=0;e=6;i[l.partOfTheDay].wrap=t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-col"},html:'<span class="calendar-resbook-webform-block-col-title">'+t.Loc.getMessage("WEBF_RES_PART_OF_THE_DAY_"+l.partOfTheDay.toUpperCase())+"</span>"});i[l.partOfTheDay].itemsWrap=i[l.partOfTheDay].wrap.appendChild(t.Tag.render(P||(P=I`<div class="calendar-resbook-webform-block-col-list"></div>`)));if(i[l.partOfTheDay].items.length>s*e){e=Math.ceil(i[l.partOfTheDay].items.length/s)}}if(a%e===0){r=i[l.partOfTheDay].itemsWrap.appendChild(t.Tag.render(B||(B=I`<div class="calendar-resbook-webform-block-col-list-inner"></div>`)))}if(r&&(!l.booked||!this.showOnlyFree)){r.appendChild(t.Dom.create("div",{attrs:{"data-bx-resbook-time-meta":"slot"+(l.booked?"-off":""),"data-bx-resbook-slot":l.time.toString(),className:"calendar-resbook-webform-block-col-item"+(l.selected?" calendar-resbook-webform-block-col-item-select":"")+(l.booked?" calendar-resbook-webform-block-col-item-off":"")},html:'<div class="calendar-resbook-webform-block-col-item-inner">'+'<span class="calendar-resbook-webform-block-col-time">'+l.fromTime+"</span>"+(this.showFinishTime?'- <span class="calendar-resbook-webform-block-col-time calendar-resbook-webform-block-col-time-end">'+l.toTime+"</span>":"")+"</div>"}));a++}i[l.partOfTheDay].itemsAmount=a}),this);let l;for(l in i){if(i.hasOwnProperty(l)&&i[l].itemsAmount>0){this.DOM.controlInnerWrap.appendChild(i[l].wrap)}}this.initCustomScrollForSlots()}createSelectControl(){if(this.DOM.controlWrap){t.Dom.remove(this.DOM.controlWrap)}this.DOM.controlWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-field"},events:{click:this.handleClick.bind(this)}}));this.DOM.timeSelectWrap=this.DOM.controlWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-block-strip"}}));this.DOM.valueInput=this.DOM.timeSelectWrap.appendChild(t.Dom.create("input",{attrs:{type:"hidden",value:""}}));this.DOM.previousArrow=this.DOM.timeSelectWrap.appendChild(t.Dom.create("span",{attrs:{className:"calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-prev","data-bx-resbook-time-meta":"previous"}}));this.DOM.stateWrap=this.DOM.timeSelectWrap.appendChild(t.Dom.create("span",{attrs:{className:"calendar-resbook-webform-block-strip-text","data-bx-resbook-time-meta":"select"}}));this.DOM.stateWrap=this.DOM.stateWrap.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-strip-date"}}));this.DOM.nextArrow=this.DOM.timeSelectWrap.appendChild(t.Dom.create("span",{attrs:{className:"calendar-resbook-webform-block-strip-arrow calendar-resbook-webform-block-strip-arrow-next","data-bx-resbook-time-meta":"next"}}));this.setValue(this.getValue())}setValue(e){let s=this.getSlotByTime(e);if(s){if(this.style==="select"&&t.Type.isDomNode(this.DOM.stateWrap)){t.Dom.adjust(this.DOM.stateWrap,{text:this.getTimeTextBySlot(s)})}else if(this.style==="slots"){this.setSelected(this.getSlotNode(s.time))}this.value=s.time}else{this.value=null}if(!this.previewMode&&t.Type.isFunction(this.changeValueCallback)){this.changeValueCallback(this.value)}}getValue(){if(!this.value&&(this.previewMode||this.style==="select")){this.value=this.slots[0].time}return this.value}hasAvailableSlots(){return!this.noSlotsAvailable}getTimeTextBySlot(e){return e.fromTime+(this.showFinishTime?" - "+e.toTime:"")}getSlotByTime(e){return t.Type.isArray(this.slots)?this.slots.find((function(t){return parseInt(t.time)===parseInt(e)})):null}handleClick(e){let t=e.target||e.srcElement;if(t.hasAttribute("data-bx-resbook-time-meta")||(t=t.closest("[data-bx-resbook-time-meta]"))){let e=t.getAttribute("data-bx-resbook-time-meta");if(this.style==="select"){if(e==="previous"){this.setValue(this.getValue()-this.scale)}else if(e==="next"){this.setValue(this.getValue()+this.scale)}else if(e==="select"){this.openSelectPopup()}}else if(e==="slot"){this.setValue(parseInt(t.getAttribute("data-bx-resbook-slot")))}}}getSlotsInfo(){let e=[],t,s=0,i,a,r,l,o,n="morning",h=0,d=this.timeFrom*60;while(d<this.timeTo*60){if(d>=this.timeEvening*60){n="evening"}else if(d>=this.timeMidday*60){n="afternoon"}a=Math.floor(d/60);r=d-a*60;i=d+this.scale;l=Math.floor(i/60);o=i-l*60;t={time:d,fromTime:re.formatTime(a,r),toTime:re.formatTime(l,o),partOfTheDay:n};if(this.previewMode){if(!h){t.selected=true}else if(Math.round(Math.random()*10)<=3){t.booked=true}}else if(this.availableSlotIndex){t.booked=!this.availableSlotIndex[d]}if(!t.booked){s++}e.push(t);d+=this.scale;h++}return{slots:e,freeSlotsCount:s}}initCustomScrollForSlots(){let e=this.DOM.controlWrap.appendChild(t.Tag.render(U||(U=I`<div class="calendar-resbook-webform-block-arrow-container" />`)));this.DOM.leftArrow=e.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-prev"},events:{click:this.handlePreletrowClick.bind(this)}}));this.DOM.rightArrow=e.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-arrow calendar-resbook-webform-block-arrow-next"},events:{click:this.handleNextArrowClick.bind(this)}}));this.outerWidth=parseInt(this.DOM.controlStaticWrap.offsetWidth);this.innerWidth=parseInt(this.DOM.controlInnerWrap.offsetWidth);if("onwheel"in document)t.Event.bind(this.DOM.controlStaticWrap,"wheel",this.mousewheelScrollHandler.bind(this));else t.Event.bind(this.DOM.controlStaticWrap,"mousewheel",this.mousewheelScrollHandler.bind(this));this.checkSlotsScroll()}handleNextArrowClick(){this.DOM.controlStaticWrap.scrollLeft=this.DOM.controlStaticWrap.scrollLeft+100;this.checkSlotsScroll()}handlePreletrowClick(){this.DOM.controlStaticWrap.scrollLeft=Math.max(this.DOM.controlStaticWrap.scrollLeft-100,0);this.checkSlotsScroll()}mousewheelScrollHandler(e){e=e||window.event;let s=e.deltaY||e.detail||e.wheelDelta;if(Math.abs(s)>0){if(!t.Browser.isMac()){s=s*5}this.DOM.controlStaticWrap.scrollLeft=Math.max(this.DOM.controlStaticWrap.scrollLeft+s,0);this.checkSlotsScroll();if(e.stopPropagation){e.preventDefault();e.stopPropagation()}return false}}checkSlotsScroll(){if(this.outerWidth<=this.innerWidth){this.DOM.leftArrow.style.display=this.DOM.controlStaticWrap.scrollLeft?"":"none";if(this.innerWidth-this.outerWidth-4<=this.DOM.controlStaticWrap.scrollLeft){this.DOM.rightArrow.style.display="none"}else{this.DOM.rightArrow.style.display=""}}}openSelectPopup(){if(this.isSelectPopupShown()){return this.closeSelectPopup()}this.popup=i.MenuManager.create(this.popupSelectId,this.DOM.stateWrap,this.getTimeSelectItems(),{className:"calendar-resbook-time-select-popup",angle:true,closeByEsc:true,autoHide:true,offsetTop:5,offsetLeft:10,cacheable:false});this.popup.show(true)}closeSelectPopup(){if(this.isSelectPopupShown()){this.popup.close();t.Event.unbind(document,"click",this.handleClick.bind(this))}}isSelectPopupShown(){return this.popup&&this.popup.popupWindow&&this.popup.popupWindow.isShown&&this.popup.popupWindow.isShown()}getTimeSelectItems(){let e=[];this.slots.forEach((function(t){if(this.showOnlyFree&&t.booked){return}let s="menu-popup-no-icon";if(t.booked){s+=" menu-item-booked"}if(t.selected){s+=" menu-item-selected"}e.push({className:s,text:this.getTimeTextBySlot(t),dataset:{value:t.time,booked:!!t.booked},onclick:this.menuItemClick.bind(this)})}),this);return e}menuItemClick(e,t){if(t&&t.dataset&&t.dataset.value){if(!t.dataset.booked){this.setValue(t.dataset.value)}}this.closeSelectPopup()}getSlotNode(e){let t,s=this.DOM.controlInnerWrap.querySelectorAll(".calendar-resbook-webform-block-col-item");for(t=0;t<s.length;t++){if(parseInt(s[t].getAttribute("data-bx-resbook-slot"))===parseInt(e)){return s[t]}}return null}setSelected(e){if(t.Type.isDomNode(e)){if(this.currentSelected){t.Dom.removeClass(this.currentSelected,"calendar-resbook-webform-block-col-item-select")}this.currentSelected=e;t.Dom.addClass(e,"calendar-resbook-webform-block-col-item-select")}}}let z=e=>e,H,X,j;class K{constructor(e){this.DOM={outerWrap:e.outerWrap};this.timezone=e.timezone;this.timezoneOffsetLabel=e.timezoneOffsetLabel;this.shown=false;this.built=false}isShown(){return this.shown}build(){this.DOM.wrap=this.DOM.outerWrap.appendChild(t.Tag.render(H||(H=z`<div class="calendar-resbook-webform-block-result" style="display: none" ></div>`)));this.DOM.innerWrap=this.DOM.wrap.appendChild(t.Tag.render(X||(X=z`<div class="calendar-resbook-webform-block-result-inner"></div>`)));this.DOM.labelWrap=this.DOM.innerWrap.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-result-text"},text:t.Loc.getMessage("WEBF_RES_BOOKING_STATUS_LABEL")}));this.DOM.statusWrap=this.DOM.innerWrap.appendChild(t.Tag.render(j||(j=z`<div class="calendar-resbook-webform-block-result-value"></div>`)));this.DOM.statusTimezone=this.DOM.innerWrap.appendChild(t.Dom.create("span",{props:{className:"calendar-resbook-webform-block-result-timezone"},text:this.timezoneOffsetLabel||"",style:{display:"none"}}));this.built=true}refresh(e){if(!this.built){this.build()}if(!this.isShown()){this.show()}if(e.dateFrom){this.DOM.labelWrap.style.display="";t.Dom.removeClass(this.DOM.wrap,"calendar-resbook-webform-block-result-error");if(this.timezone){this.DOM.statusTimezone.style.display=""}t.Dom.adjust(this.DOM.statusWrap,{text:this.getStatusText(e)})}else if(!e.dateFrom&&e.fullDay){this.DOM.labelWrap.style.display="none";this.DOM.statusTimezone.style.display="none";t.Dom.addClass(this.DOM.wrap,"calendar-resbook-webform-block-result-error");t.Dom.adjust(this.DOM.statusWrap,{text:t.Loc.getMessage("WEBF_RES_BOOKING_STATUS_DATE_IS_NOT_AVAILABLE")})}else{this.DOM.labelWrap.style.display="none";this.DOM.statusTimezone.style.display="none";t.Dom.removeClass(this.DOM.wrap,"calendar-resbook-webform-block-result-error");t.Dom.adjust(this.DOM.statusWrap,{text:t.Loc.getMessage("WEBF_RES_BOOKING_STATUS_NO_TIME_SELECTED")})}}getStatusText(e){let s=e.dateFrom,i=new Date(s.getTime()+e.duration*60*1e3+(e.fullDay?-1:0)),a="";if(e.fullDay){if(re.formatDate("Y-m-d",s.getTime()/1e3)===re.formatDate("Y-m-d",i.getTime()/1e3)){a=re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS"),s)}else{a=t.Loc.getMessage("WEBF_RES_DATE_FORMAT_FROM_TO").replace("#DATE_FROM#",re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS_SHORT"),s)).replace("#DATE_TO#",re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS_SHORT"),i))}}else{if(re.formatDate("Y-m-d",s.getTime()/1e3)===re.formatDate("Y-m-d",i.getTime()/1e3)){a=re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS"),s)+" "+t.Loc.getMessage("WEBF_RES_TIME_FORMAT_FROM_TO").replace("#TIME_FROM#",re.formatTime(s.getHours(),s.getMinutes())).replace("#TIME_TO#",re.formatTime(i.getHours(),i.getMinutes()))}else{a=t.Loc.getMessage("WEBF_RES_DATE_FORMAT_FROM_TO").replace("#DATE_FROM#",re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS_SHORT"),s)+" "+re.formatTime(s.getHours(),s.getMinutes())).replace("#DATE_TO#",re.formatDate(t.Loc.getMessage("WEBF_RES_DATE_FORMAT_STATUS_SHORT"),i)+" "+re.formatTime(i.getHours(),i.getMinutes()))}}return a}hide(){if(this.built&&this.shown){this.DOM.wrap.style.display="none";this.shown=false}}show(){if(this.built&&!this.shown){this.DOM.wrap.style.display="";this.shown=true}}setError(e){if(this.DOM.labelWrap){this.DOM.labelWrap.style.display="none"}t.Dom.addClass(this.DOM.wrap,"calendar-resbook-webform-block-result-error");t.Dom.adjust(this.DOM.statusWrap,{text:e})}isErrorSet(){return this.shown&&t.Dom.hasClass(this.DOM.wrap,"calendar-resbook-webform-block-result-error")}}let q=e=>e,G,Z,$,Q,J,ee;class te extends a.EventEmitter{constructor(e){super(e);this.setEventNamespace("BX.Calendar.LiveFieldController");this.params=e;this.actionAgent=e.actionAgent||BX.ajax.runAction;this.timeFrom=e.timeFrom||7;this.timeTo=e.timeTo||20;this.inputName=e.field.name+"[]";this.DATE_FORMAT=re.getDateFormat();this.DATETIME_FORMAT=re.getDateTimeFormat();this.userIndex=null;this.timezoneOffset=null;this.timezoneOffsetLabel=null;this.userFieldParams=null;this.loadedDates=[];this.externalSiteContext=t.Type.isFunction(e.actionAgent);this.accessibility={user:{},resource:{}};this.busySlotMatrix={user:{},resource:{}};this.DOM={wrap:this.params.wrap,valueInputs:[]}}init(){const e=this.getSettingsData();if(!e.users||!e.resources){throw new Error("Can't init resourcebooking field, because 'settings_data' parameter is not provided or has incorrect structure");return}this.scale=parseInt(e.time&&e.time.scale?e.time.scale:60,10);this.DOM.outerWrap=this.DOM.wrap.appendChild(t.Tag.render(G||(G=q`<div class="calendar-resbook-webform-wrapper"></div>`)));this.showMainLoader();this.requireFormData().then((()=>{this.hideMainLoader();this.buildFormControls();this.onChangeValues()}))}check(){let e=true;if(this.usersDisplayed()&&!this.getSelectedUser()){this.userControl.showWarning();e=false}if(e&&this.resourcesDisplayed()&&!this.getSelectedResources()){this.resourceControl.showWarning();e=false}if(e&&!this.getCurrentDuration()){if(this.durationControl){this.durationControl.showWarning()}else if(this.serviceControl){this.serviceControl.showWarning()}e=false}if(e&&(!this.dateControl.getValue()||this.statusControl.isErrorSet())){this.dateControl.showWarning();e=false}if(e&&this.timeSelectorDisplayed()&&!this.timeControl.getValue()){this.timeControl.showWarning();e=false}return e}buildFormControls(){this.DOM.innerWrap=this.DOM.outerWrap.appendChild(t.Tag.render(Z||(Z=q`<div class="calendar-resbook-webform-inner"></div>`)));this.DOM.inputsWrap=this.DOM.innerWrap.appendChild(t.Tag.render($||($=q`<div></div>`)));if(!this.getFieldParams()){this.statusControl=new K({outerWrap:this.DOM.innerWrap});this.statusControl.refresh({});this.statusControl.setError("[UF_NOT_FOUND] "+t.Loc.getMessage("WEBF_RES_BOOKING_UF_WARNING"))}else{if(this.externalSiteContext&&BX.ZIndexManager){const e=BX.ZIndexManager.getOrAddStack(document.body);e.baseIndex=1e5;e.sort()}this.preparaAutoSelectValues();this.displayUsersControl();this.displayResourcesControl();this.displayServicesControl();this.displayDurationControl();this.displayDateTimeControl();if(this.selectedUserId||this.selectedResourceId){this.refreshControlsState()}}}refreshControlsState(){if(this.selectorCanBeShown("resources")&&this.resourceControl&&!this.resourceControl.isShown()){this.resourceControl.display()}if(this.selectorCanBeShown("services")&&this.serviceControl&&!this.serviceControl.isShown()){this.serviceControl.display()}if(this.selectorCanBeShown("duration")&&this.durationControl&&!this.durationControl.isShown()){this.durationControl.display()}let e=this.getSettingsData();if(this.selectorCanBeShown("date")&&this.dateControl){if(this.dateControl.isShown()){this.dateControl.refresh(e.date,{availableDateIndex:this.getAvailableDateIndex({resources:this.getSelectedResources(),user:this.getSelectedUser(),duration:this.getCurrentDuration()})});if(this.timeControl){this.timeControl.refresh(e.time,{slotIndex:this.getSlotIndex({date:this.dateControl.getValue()}),currentDate:this.dateControl.getValue()})}}else{let t;if(e.date.start==="free"){t=this.getFreeDate({resources:this.getSelectedResources(),user:this.getSelectedUser(),duration:this.getCurrentDuration()})}else{t=new Date}this.dateControl.display({selectedValue:t,availableDateIndex:this.getAvailableDateIndex({resources:this.getSelectedResources(),user:this.getSelectedUser(),duration:this.getCurrentDuration()})})}}this.updateStatusControl();this.onChangeValues();re.fireCustomEvent(window,"crmWebFormFireResize")}onChangeValues(){let e=[],s="",i=this.getCurrentDate(),a=this.getCurrentDuration()*60,r=this.getCurrentServiceName(),l=[];t.Dom.clean(this.DOM.inputsWrap);this.DOM.valueInputs=[];if(t.Type.isDate(i)&&!this.statusControl.isErrorSet()){let o=this.getSelectedResources();if(t.Type.isArray(o)){o.forEach((function(e){l=l.concat({type:"resource",id:e})}))}let n=this.getSelectedUser();if(n){l=l.concat({type:"user",id:n})}s=re.formatDate(this.DATETIME_FORMAT,i.getTime()/1e3);l.forEach((function(i){let l=i.type+"|"+i.id+"|"+s+"|"+a+"|"+r;e.push(l);this.DOM.valueInputs.push(this.DOM.inputsWrap.appendChild(t.Tag.render(Q||(Q=q` <input name="${0}" value="${0}" type="hidden" > `),t.Text.encode(this.inputName),t.Text.encode(l))))}),this)}if(!l.length){e.push("empty");this.DOM.valueInputs.push(this.DOM.inputsWrap.appendChild(t.Tag.render(J||(J=q` <input name="${0}" value="empty" type="hidden" > `),t.Text.encode(this.inputName))))}this.emit("change",e)}showMainLoader(){if(this.DOM.wrap){this.hideMainLoader();let e=t.Tag.render(ee||(ee=q`<div class="calendar-resbook-webform-wrapper-loader-wrap"></div>`));e.appendChild(re.getLoader(160));this.DOM.mainLoader=this.DOM.outerWrap.appendChild(e)}}hideMainLoader(){t.Dom.remove(this.DOM.mainLoader)}showStatusLoader(){this.showMainLoader()}hideStatusLoader(){this.hideMainLoader()}requestAccessibilityData(e){if(!this.requestedFormData){this.showStatusLoader();this.requestedFormData=true;let t={from:e.date};this.requireFormData(t).then((()=>{this.hideStatusLoader();this.refreshControlsState();this.dateControl.refreshCurrentValue();this.onChangeValues();this.requestedFormData=false}))}}requireFormData(e){e=t.Type.isPlainObject(e)?e:{};return new Promise(((s,i)=>{let a={settingsData:this.getSettingsData()||null};if(!this.userFieldParams){a.fieldName=this.params.field.entity_field_name}let r=t.Type.isDate(e.from)?e.from:new Date,l;if(t.Type.isDate(e.to)){l=e.to}else{l=new Date(r.getTime());l.setDate(r.getDate()+60)}a.from=re.formatDate(this.DATE_FORMAT,r);a.to=re.formatDate(this.DATE_FORMAT,l);this.setLoadedDataLimits(r,l);this.actionAgent("calendar.api.resourcebookingajax.getfillformdata",{data:a}).then((e=>{if(!t.Type.isPlainObject(e)||!e.data){s(e)}else{if(t.Type.isNumber(e.data.timezoneOffset)){this.timezoneOffset=e.data.timezoneOffset;this.timezoneOffsetLabel=e.data.timezoneOffsetLabel}if(e.data.workTimeStart!==undefined&&e.data.workTimeEnd!==undefined){this.timeFrom=parseInt(e.data.workTimeStart);this.timeTo=parseInt(e.data.workTimeEnd)}if(e.data.fieldSettings){this.userFieldParams=e.data.fieldSettings}if(e.data.userIndex){this.userIndex=e.data.userIndex}this.handleAccessibilityData(e.data.usersAccessibility,"user");this.handleAccessibilityData(e.data.resourcesAccessibility,"resource");s(e.data)}}),(e=>{s(e)}))}))}setLoadedDataLimits(e,s){this.loadedDataFrom=t.Type.isDate(e)?e:re.parseDate(e);this.loadedDataTo=t.Type.isDate(s)?s:re.parseDate(s);this.loadedDates=this.loadedDates||[];this.loadedDatesIndex=this.loadedDatesIndex||{};let i,a=new Date(this.loadedDataFrom.getTime());while(true){i=re.formatDate(this.DATE_FORMAT,a);this.loadedDatesIndex[i]=this.loadedDates.length;this.loadedDates.push({key:re.formatDate(this.DATE_FORMAT,a),slots:{},slotsCount:{}});a.setDate(a.getDate()+1);if(a.getTime()>this.loadedDataTo.getTime()){break}}}fillDataIndex(e,t,s,i){let a=this.loadedDatesIndex[e];if(this.loadedDates[a]){if(!this.loadedDates[a].slots[t]){this.loadedDates[a].slots[t]={}}if(this.loadedDates[a].slotsCount[s+i]===undefined){this.loadedDates[a].slotsCount[s+i]=0}this.loadedDates[a].slots[t][s+i]=true;this.loadedDates[a].slotsCount[s+i]++}}handleAccessibilityData(e,s){if(t.Type.isPlainObject(e)&&(s==="user"||s==="resource")){for(let t in e){if(e.hasOwnProperty(t)){e[t].forEach((function(e){if(!e.from){e.from=re.parseDate(e.dateFrom);if(e.from){e.from.setSeconds(0,0);e.fromTimestamp=e.from.getTime()}}if(!e.to){e.to=re.parseDate(e.dateTo);if(e.to){if(e.fullDay){e.to.setHours(23,59,0,0)}else{e.to.setSeconds(0,0)}e.toTimestamp=e.to.getTime()}}if(e.from&&e.to){this.fillBusySlotMatrix(e,s,t)}}),this)}}this.accessibility[s]=re.mergeEx(this.accessibility[s],e)}}fillBusySlotMatrix(e,t,s){if(!this.busySlotMatrix[t][s]){this.busySlotMatrix[t][s]={}}let i=new Date(e.from.getTime()),a=re.formatDate(this.DATE_FORMAT,i),r=re.formatDate(this.DATE_FORMAT,e.to),l=i.getHours()*60+i.getMinutes(),o=Math.round((e.toTimestamp-e.fromTimestamp)/6e4),n=l+o,h=this.getTimeSlots(),d=0,u;if(o>0){while(true){if(!this.busySlotMatrix[t][s][a]){this.busySlotMatrix[t][s][a]={}}for(u=0;u<h.length;u++){if(l<h[u].time+this.scale&&n>h[u].time){this.busySlotMatrix[t][s][a][h[u].time]=true;this.fillDataIndex(a,h[u].time,t,s)}}if(a===r){break}else{i.setDate(i.getDate()+1);a=re.formatDate(this.DATE_FORMAT,i);l=0;if(a===r){n=e.to.getHours()*60+e.to.getMinutes()}else{n=1440}}d++;if(d>1e4){break}}}}getCaption(){return this.params.field.caption}getSettingsData(){return this.params.field.settings_data||{}}getUserIndex(){return this.userIndex}getFieldParams(){return this.userFieldParams}getSettings(){return{caption:this.getCaption(),data:this.getSettingsData()}}isUserSelectorInAutoMode(){return this.usersDisplayed()&&this.getSettingsData().users.show==="N"}isResourceSelectorInAutoMode(){return this.resourcesDisplayed()&&this.getSettingsData().resources.show==="N"}autoAdjustUserSelector(){let e=this.dateControl.getValue(),s=this.timeControl.getValue();if(t.Type.isDate(e)&&s){let t,i=this.loadedDates[this.loadedDatesIndex[re.formatDate(this.DATE_FORMAT,e)]];if(i.slots[s]){for(t=0;t<this.userControl.values.length;t++){if(!i.slots[s]["user"+this.userControl.values[t]]){this.userControl.setSelectedUser(this.userControl.values[t]);break}}}}}autoAdjustResourceSelector(){let e=this.dateControl.getValue(),s=this.timeControl.getValue();if(t.Type.isDate(e)&&s){let t,i,a=this.loadedDates[this.loadedDatesIndex[re.formatDate(this.DATE_FORMAT,e)]];if(a.slots[s]){for(t=0;t<this.resourceControl.resourceList.length;t++){i=parseInt(this.resourceControl.resourceList[t].id);if(!a.slots[s]["resource"+i]){this.resourceControl.setSelectedResource(i);break}}}}}preparaAutoSelectValues(){let e=this.getSettingsData(),t=this.usersDisplayed()&&(e.users.defaultMode==="auto"||e.users.show==="N"),s=this.resourcesDisplayed()&&(e.resources.defaultMode==="auto"||e.resources.show==="N"),i=e.date.start==="free",a=60,r,l;this.selectedUserId=false;this.selectedResourceId=false;r=new Date;for(l=0;l<=a;l++){this.getFreeEntitiesForDate(r,{autoSelectUser:t,autoSelectResource:s,slotsAmount:this.getDefaultDurationSlotsAmount()});if((this.selectedUserId||!t)&&(this.selectedResourceId||!s)){break}if(!i){break}r.setDate(r.getDate()+1)}}getFreeEntitiesForDate(e,t){let s=this.getSettingsData(),i=t.slotsAmount||1,a,r,l;if(t.autoSelectUser){r=this.getUsersValue();for(a=0;a<r.length;a++){if(this.checkSlotsForDate(e,i,{user:parseInt(r[a])})){this.selectedUserId=parseInt(r[a]);break}}}if(t.autoSelectResource){l=this.getResourceValue();for(a=0;a<l.length;a++){if(this.checkSlotsForDate(e,i,{resources:[parseInt(l[a])],user:this.selectedUserId||null})){this.selectedResourceId=parseInt(l[a]);break}}}}displayUsersControl(){if(this.usersDisplayed()){this.userControl=new h({outerWrap:this.DOM.innerWrap,data:this.getSettingsData().users,userIndex:this.getUserIndex(),previewMode:false,autoSelectDefaultValue:this.selectedUserId,changeValueCallback:function(e){this.emit("BX.Calendar.Resourcebooking.LiveFieldController:userChanged",new a.BaseEvent({data:{userId:e}}));this.refreshControlsState()}.bind(this)});this.userControl.display()}}displayResourcesControl(){let e={},t=this.getFieldParams(),s=this.getSettingsData();if(this.resourcesDisplayed()){this.getResourceValue().forEach((function(t){t=parseInt(t);if(t>0){e[t]=true}}));let i=[];t.SELECTED_RESOURCES.forEach((function(t){t.id=parseInt(t.id);if(e[t.id]){i.push(t)}}),this);this.resourceControl=new d({outerWrap:this.DOM.innerWrap,data:{show:s.resources.show,defaultMode:s.resources.defaultMode,label:s.resources.label,multiple:s.resources.multiple,value:s.resources.value},resourceList:i,autoSelectDefaultValue:this.selectedResourceId,changeValueCallback:function(){this.emit("BX.Calendar.Resourcebooking.LiveFieldController:resourceChanged");this.refreshControlsState()}.bind(this)});if(this.selectorCanBeShown("resources")){this.resourceControl.display()}}}displayServicesControl(){let e=this.getFieldParams(),t=this.getSettingsData();if(e.USE_SERVICES==="Y"&&t.services.value){let s=this.getServicesValue();this.serviceControl=new u({outerWrap:this.DOM.innerWrap,data:t.services,serviceList:e.SERVICE_LIST,selectedValue:s.length>0?s[0]:null,changeValueCallback:function(){this.emit("BX.Calendar.Resourcebooking.LiveFieldController:serviceChanged");this.refreshControlsState()}.bind(this)});if(this.selectorCanBeShown("services")){this.serviceControl.display()}}}displayDurationControl(){let e=this.getFieldParams(),t=this.getSettingsData();if(!this.serviceControl){this.durationControl=new c({outerWrap:this.DOM.innerWrap,data:t.duration,fullDay:e.FULL_DAY==="Y",changeValueCallback:function(){this.emit("BX.Calendar.Resourcebooking.LiveFieldController:durationChanged");this.refreshControlsState()}.bind(this)});if(this.selectorCanBeShown("duration")){this.durationControl.display()}}}displayDateTimeControl(){let e=false,t=null,s=this.getSettingsData(),i=this.getFieldParams();this.dateControl=new k({outerWrap:this.DOM.innerWrap,data:s.date,previewMode:false,allowOverbooking:i.ALLOW_OVERBOOKING==="Y",changeValueCallback:this.handleDateChanging.bind(this),requestDataCallback:this.requestAccessibilityData.bind(this)});if(this.timeSelectorDisplayed()){if(i.USE_USER_TIMEZONE==="N"){let t=-(new Date).getTimezoneOffset()*60;if(t!==this.timezoneOffset){e=i.TIMEZONE}}this.timeControl=new Y({outerWrap:this.DOM.innerWrap,data:s.time,previewMode:false,changeValueCallback:this.handleSelectedDateTimeChanging.bind(this),timeFrom:this.timeFrom,timeTo:this.timeTo,timezone:e,timezoneOffset:this.timezoneOffset,timezoneOffsetLabel:this.timezoneOffsetLabel})}this.statusControl=new K({outerWrap:this.DOM.innerWrap,timezone:e,timezoneOffsetLabel:this.timezoneOffsetLabel});if(this.selectorCanBeShown("date")){this.statusControl.show();if(s.date.start==="free"){t=this.getFreeDate({resources:this.getSelectedResources(),user:this.getSelectedUser(),duration:this.getCurrentDuration()})}this.dateControl.display({selectedValue:t});if(this.timeControl&&!this.timeControl.isShown()){this.timeControl.display()}}else{this.statusControl.hide()}}handleDateChanging(e,t){this.emit("BX.Calendar.Resourcebooking.LiveFieldController:dateChanged");if(this.timeSelectorDisplayed()){if(t){this.timeControl.show();let e,s=this.getCurrentDate();if(s){e=s.getHours()*60+s.getMinutes()}this.timeControl.refresh(this.getSettingsData().time,{slotIndex:this.getSlotIndex({date:t}),currentDate:t,selectedValue:e})}}else{this.handleSelectedDateTimeChanging(null,true)}this.onChangeValues()}handleSelectedDateTimeChanging(e,t){if(t!==false){if(this.updateTimeStatusTimeout){this.updateTimeStatusTimeout=clearTimeout(this.updateTimeStatusTimeout)}this.updateTimeStatusTimeout=setTimeout(function(){this.handleSelectedDateTimeChanging(e,false)}.bind(this),100)}else{if(this.isUserSelectorInAutoMode()){this.autoAdjustUserSelector()}if(this.isResourceSelectorInAutoMode()){this.autoAdjustResourceSelector()}this.updateStatusControl();re.fireCustomEvent(window,"crmWebFormFireResize")}this.onChangeValues()}updateStatusControl(){if(this.statusControl&&this.selectorCanBeShown("date")){let e=this.getCurrentDate();if(this.dateControl.isItPastDate(e)){this.statusControl.setError(t.Loc.getMessage("WEBF_RES_BOOKING_PAST_DATE_WARNING"))}else{if(this.timeSelectorDisplayed()){if(this.timeControl.hasAvailableSlots()){let t=this.timeControl.getValue();this.statusControl.refresh({dateFrom:t?e:null,duration:t?this.getCurrentDuration():null,fullDay:false})}else{this.statusControl.hide()}}else{this.statusControl.refresh({dateFrom:this.dateControl.isDateAvailable(e)?e:null,duration:this.getCurrentDuration(),fullDay:true})}}}}getFreeDate(e){let t=Math.ceil(e.duration/this.scale),s=null,i=this.loadedDataFrom;while(true){if(this.checkSlotsForDate(i,t,{resources:e.resources,user:e.user})){s=i;break}i.setDate(i.getDate()+1);if(i.getTime()>=this.loadedDataTo.getTime()){break}}return s}getAvailableDateIndex(e){let t,s,i={};if(this.timeSelectorDisplayed()){let t=Math.ceil(e.duration/this.scale);this.loadedDates.forEach((function(s){i[s.key]=this.checkSlotsForDate(s.key,t,{resources:e.resources,user:e.user})}),this)}else{let a,r,l,o,n=e.user?"user"+e.user:null,h=Math.ceil(e.duration/1440);r=1;for(a=this.loadedDates.length;a--;a>=0){t=true;s=true;l=this.loadedDates[a];if(n){t=!l.slotsCount[n]}if(t&&e.resources&&e.resources.length>0){for(o=0;o<e.resources.length;o++){s=s&&!l.slotsCount["resource"+e.resources[o]];if(!s){break}}}if(t&&s){r++}else{r=0}i[l.key]=t&&s&&h<=r}}return i}getSlotIndex(e){if(e.date){e.date=this.dateControl.getValue()}let s={};if(t.Type.isDate(e.date)){if(this.getFieldParams().ALLOW_OVERBOOKING!=="Y"&&(this.isUserSelectorInAutoMode()||this.isResourceSelectorInAutoMode())){const t=this.getFieldParams();let i,a,r,l,o=1,n=0,h=this.getTimeSlots(),d=re.formatDate(this.DATE_FORMAT,e.date),u=this.loadedDates[this.loadedDatesIndex[d]],c=Math.ceil(this.getCurrentDuration()/this.scale);if(this.checkIsTodayDate(d)){const e=new Date;const s=t.USE_USER_TIMEZONE==="N"?e.getTimezoneOffset()*60+this.timezoneOffset:0;n=e.getHours()*60+e.getMinutes()+s/60}h.forEach((function(e){s[e.time]=true}),this);if(this.isUserSelectorInAutoMode()){const e=this.getUsersValue();for(a=h.length;a--;a>=0){l=h[a].time;i=false;if(n&&l<n){s[l]=false;continue}for(r=0;r<e.length;r++){if(!u.slots[l]||!u.slots[l]["user"+e[r]]){i=true;break}}s[l]=s[l]&&i&&c<=o;o=i?o+1:1}}if(this.isResourceSelectorInAutoMode()){const e=this.getResourceValue();for(a=h.length;a--;a>=0){l=h[a].time;i=false;if(n&&l<n){s[l]=false;continue}for(r=0;r<e.length;r++){if(!u.slots[l]||!u.slots[l]["resource"+e[r]]){i=true;break}}s[l]=s[l]&&i&&c<=o;o=i?o+1:1}}}else{s=this.getAvailableSlotIndex({date:e.date||this.dateControl.getValue(),resources:this.getSelectedResources(),user:this.getSelectedUser(),duration:this.getCurrentDuration()})}}return s}getAvailableSlotIndex(e){let s=0;const i=this.getFieldParams();let a,r,l,o,n,h,d=e.user?"user"+e.user:null,u=Math.ceil(e.duration/this.scale),c,p,f=this.getTimeSlots(),m=i.ALLOW_OVERBOOKING==="Y",D={};f.forEach((function(e){D[e.time]=true}),this);if(t.Type.isDate(e.date)){a=re.formatDate(this.DATE_FORMAT,e.date);r=this.loadedDates[this.loadedDatesIndex[a]];h=1;if(this.checkIsTodayDate(a)){const e=new Date;const t=i.USE_USER_TIMEZONE==="N"?e.getTimezoneOffset()*60+this.timezoneOffset:0;s=e.getHours()*60+e.getMinutes()+t/60}for(l=f.length;l--;l>=0){n=f[l].time;if(s&&n<s){D[n]=false;continue}if(m){D[n]=u<=h;h++}else{c=true;p=true;if(d){c=!r.slots[n]||!r.slots[n][d]}if(e.resources&&e.resources.length>0){for(o=0;o<e.resources.length;o++){p=p&&(!r.slots[n]||!r.slots[n]["resource"+e.resources[o]]);if(!p){break}}}D[n]=c&&p&&u<=h;if(c&&p){h++}else{h=1}}}}return D}checkSlotsForDate(e,s,i){let a=true,r=true,l=t.Type.isDate(e)?re.formatDate(this.DATE_FORMAT,e):e;i=i||{};if(this.usersDisplayed()&&i.user){if(this.busySlotMatrix.user[i.user]&&!this.entityHasSlotsForDate({entityType:"user",entityId:i.user,dateKey:l,slotsAmount:s})){a=false}}if(this.resourcesDisplayed()&&a&&t.Type.isArray(i.resources)&&i.resources.length>0){i.resources.forEach((function(e){if(r&&this.busySlotMatrix.resource[e]&&!this.entityHasSlotsForDate({entityType:"resource",entityId:e,dateKey:l,slotsAmount:s})){r=false}}),this)}return a&&r}entityHasSlotsForDate(e){let t,s,i,a=0,r=false;if(this.busySlotMatrix[e.entityType][e.entityId]&&this.busySlotMatrix[e.entityType][e.entityId][e.dateKey]){t=this.busySlotMatrix[e.entityType][e.entityId][e.dateKey];s=this.getTimeSlots();for(i=0;i<s.length;i++){if(!t[s[i].time]){a++;if(a>=e.slotsAmount){r=true;break}}else{a=0}}}else{r=true}return r}getSelectedResources(){let e=null;if(this.resourceControl){e=this.resourceControl.getSelectedValues();if(t.Type.isArray(e)&&!e.length){e=null}}return e}getSelectedUser(){let e=null;if(this.userControl){e=this.userControl.getSelectedUser()}return e}getCurrentDuration(){let e=null;if(this.durationControl){e=this.durationControl.getSelectedValue()}else if(this.serviceControl){let t=this.serviceControl.getSelectedService(true);if(t&&t.duration){e=parseInt(t.duration)}}return e}getDefaultDurationSlotsAmount(){let e=this.getSettingsData(),s=this.getFieldParams(),i,a,r;if(s.USE_SERVICES==="Y"&&e.services.value){const e=this.getServicesValue();if(t.Type.isArray(s.SERVICE_LIST)&&e.length>0){for(a=0;a<s.SERVICE_LIST.length;a++){if(re.translit(s.SERVICE_LIST[a].name)===e[0]){i=parseInt(s.SERVICE_LIST[a].duration);break}}}}else{i=parseInt(e.duration.defaultValue)}r=Math.ceil(i/this.scale);return r}getCurrentServiceName(){let e="";if(this.serviceControl){let t=this.serviceControl.getSelectedService(true);if(t&&t.name){e=t.name}}return e}getCurrentDate(){let e=null;if(this.dateControl&&this.dateControl.isShown()){e=this.dateControl.getValue();if(this.timeSelectorDisplayed()){let t,s,i=this.timeControl.getValue();if(i){t=Math.floor(i/60);s=i-t*60;e.setHours(t,s,0,0)}}else{e.setHours(0,0,0,0)}}return e}getTimeSlots(){if(!this.slots){this.slots=[];let e;let t;let s=this.timeFrom*60;while(s<this.timeTo*60){t=s+this.scale;e={time:s};this.slots.push(e);s+=this.scale}}return this.slots}usersDisplayed(){if(this.useUsers===undefined){this.useUsers=this.getFieldParams()["USE_USERS"]==="Y"}return this.useUsers}resourcesDisplayed(){if(this.useResources===undefined){let e=this.getFieldParams();this.useResources=!!(e.USE_RESOURCES==="Y"&&e.SELECTED_RESOURCES)}return this.useResources}timeSelectorDisplayed(){if(this.useTime===undefined){this.useTime=this.getFieldParams().FULL_DAY!=="Y"}return this.useTime}selectorCanBeShown(e){let t=false;if(e==="resources"){if(this.resourcesDisplayed()&&!this.usersDisplayed()){t=true}else if(this.usersDisplayed()){t=this.getSelectedUser()}}else if(e==="date"||e==="services"||e==="duration"){if(this.usersDisplayed()&&this.resourcesDisplayed()){t=this.getSelectedUser()&&this.getSelectedResources()}else if(this.usersDisplayed()){t=this.getSelectedUser()}else if(this.resourcesDisplayed()){t=this.getSelectedResources()}}return t}checkIsTodayDate(e){if(!this.todayDateKey){let e=new Date;this.todayDateKey=re.formatDate(this.DATE_FORMAT,e)}return this.todayDateKey===e}getResourceValue(){const e=this.getSettingsData();let s=[];if(t.Type.isArray(e.resources.value)){s=e.resources.value}else if(t.Type.isString(e.resources.value)){s=e.resources.value.split("|")}return s}getUsersValue(){const e=this.getSettingsData();let s=[];if(t.Type.isArray(e.users.value)){s=e.users.value}else if(t.Type.isString(e.users.value)){s=e.users.value.split("|")}return s}getServicesValue(){const e=this.getSettingsData();let s=[];if(t.Type.isArray(e.services.value)){s=e.services.value}else if(t.Type.isString(e.services.value)){s=e.services.value.split("|")}return s}}class se{static run(e){let t="_",s=/[A-Z0-9]/i,i=/\s/,a=100,r=e.length,l="",o="",n;for(n=0;n<r;n++){let h,d=e.charAt(n);if(s.test(d)){h=d}else if(i.test(d)){if(n>0&&o!==t){h=t}else{h=""}}else{h=se.getChar(d);if(h===null){if(n>0&&n!==r-1&&o!==t){h=t}else{h=""}}}if(null!=h&&h.length>0){h=h.toLowerCase();l+=h;o=h}if(l.length>=a){break}}return l}static generateReplacementCharTable(){let e=",",s=(t.Loc.getMessage("TRANSLIT_FROM")||"").split(e),i=(t.Loc.getMessage("TRANSLIT_TO")||"").split(e),a,r;se.replacementCharTable=[];for(a=0,r=s.length;a<r;a++){se.replacementCharTable[a]=[s[a],i[a]]}}static getChar(e){if(se.replacementCharTable===null){se.generateReplacementCharTable()}for(let t=0,s=se.replacementCharTable.length;t<s;t++){if(e===se.replacementCharTable[t][0]){return se.replacementCharTable[t][1]}}return null}}se.replacementCharTable=null;let ie=e=>e,ae;class re{static getDateFormat(){if(t.Type.isNull(re.DATE_FORMAT)){re.DATE_FORMAT=de.convertBitrixFormat(t.Loc.getMessage("FORMAT_DATE"))}return re.DATE_FORMAT}static getDateTimeFormat(){if(t.Type.isNull(re.DATETIME_FORMAT)){re.DATETIME_FORMAT=de.convertBitrixFormat(t.Loc.getMessage("FORMAT_DATETIME"))}return re.DATETIME_FORMAT}static getTimeFormat(){if(t.Type.isNull(re.TIME_FORMAT)){let e=re.getDateTimeFormat();let t=re.getDateFormat();if(e.substr(0,t.length)===t){re.TIME_FORMAT=e.substr(t.length).trim()}else{re.TIME_FORMAT=de.convertBitrixFormat(de.isAmPmMode()?"H:MI:SS T":"HH:MI:SS")}re.TIME_FORMAT_SHORT=re.TIME_FORMAT.replace(":s","")}return re.TIME_FORMAT}static getTimeFormatShort(){if(t.Type.isNull(re.TIME_FORMAT_SHORT)){re.TIME_FORMAT_SHORT=re.getTimeFormat().replace(":s","")}return re.TIME_FORMAT_SHORT}static formatDate(e,s,i,a){if(e===null){e=re.getDateFormat()}if(t.Type.isDate(s)){s=s.getTime()/1e3}return de.format(e,s,i,a)}static parseDate(e,t,s,i){return de.parse(e,t,s,i)}static formatTime(e,t){let s=new Date;s.setHours(e,t,0);return de.format(re.getTimeFormatShort(),s.getTime()/1e3)}static translit(e){return t.Type.isString(e)?se.run(e).replace(/[^a-z0-9_]/gi,"_"):e}static getLoader(e,s){return t.Tag.render(ae||(ae=ie` <div class="${0}"> <svg class="calendar-loader-circular" style="width:${0}px; height:${0}px;" viewBox="25 25 50 50"> <circle class="calendar-loader-path" cx="50" cy="50" r="20" fill="none" stroke-miterlimit="10"/> <circle class="calendar-loader-inner-path" cx="50" cy="50" r="20" fill="none" stroke-miterlimit="10"/> </svg> </div> `),s||"calendar-loader",parseInt(e),parseInt(e))}static fireCustomEvent(e,s,i,a){if(window.BX&&t.Type.isFunction(BX.onCustomEvent)){return BX.onCustomEvent(e,s,i,a)}}static bindCustomEvent(e,s,i){if(window.BX&&t.Type.isFunction(BX.addCustomEvent)){return BX.addCustomEvent(e,s,i)}}static unbindCustomEvent(e,s,i){if(window.BX&&t.Type.isFunction(BX.removeCustomEvent)){return BX.removeCustomEvent(e,s,i)}}static isAmPmMode(){return de.isAmPmMode()}static mergeEx(){let e=Array.prototype.slice.call(arguments);if(e.length<2){return{}}let s=e.shift();for(let i=0;i<e.length;i++){for(let a in e[i]){if(typeof e[i]==="undefined"||e[i]==null||!e[i].hasOwnProperty(a)){continue}if(t.Type.isPlainObject(e[i][a])&&t.Type.isPlainObject(s[a])){re.mergeEx(s[a],e[i][a])}else{s[a]=t.Type.isPlainObject(e[i][a])?t.Runtime.clone(e[i][a]):e[i][a]}}}return s}static getDurationList(e){let t=[5,10,15,20,25,30,40,45,50,60,90,120,180,240,300,360,1440,1440*2,1440*3,1440*4,1440*5,1440*6,1440*7,1440*10],s,i,a=[];for(i=0;i<t.length;i++){s=t[i];if(e&&s%1440!==0){continue}a.push({value:s,label:re.getDurationLabel(s)})}return a}static getDurationLabel(e){let s;if(e%1440===0){s=t.Loc.getMessage("USER_TYPE_DURATION_X_DAY").replace("#NUM#",e/1440)}else if(e%60===0&&e!==60){s=t.Loc.getMessage("USER_TYPE_DURATION_X_HOUR").replace("#NUM#",e/60)}else{s=t.Loc.getMessage("USER_TYPE_DURATION_X_MIN").replace("#NUM#",e)}return s}static parseDuration(e){let s=e,i=parseInt(e),a=false,r=new RegExp("(\\d)\\s*("+t.Loc.getMessage("USER_TYPE_DURATION_REGEXP_DAY")+").*","ig"),l=new RegExp("(\\d)\\s*("+t.Loc.getMessage("USER_TYPE_DURATION_REGEXP_HOUR")+").*","ig");e=e.replace(r,(function(e,t){a=true;return t}));if(a){e=i*1440}else{e=s.replace(l,(function(e,t){a=true;return t}));if(a){e=i*60}else{e=i}}return parseInt(e)||0}static getSimpleTimeList(){if(t.Type.isNull(re.simpleTimeList)){let e,t=[];for(e=0;e<24;e++){t.push({value:e*60,label:this.formatTime(e,0)});t.push({value:e*60+30,label:this.formatTime(e,30)})}re.simpleTimeList=t}return re.simpleTimeList}static adaptTimeValue(e){e=parseInt(e.h*60)+parseInt(e.m);let t=re.getSimpleTimeList(),s=24*60,i=false,a;for(a=0;a<t.length;a++){if(Math.abs(t[a].value-e)<s){s=Math.abs(t[a].value-e);i=a;if(s<=15){break}}}return t[i||0]}static getDayLength(){return re.DAY_LENGTH}static showLimitationPopup(){if(top.BX.getClass("BX.UI.InfoHelper")){top.BX.UI.InfoHelper.show("limit_crm_booking")}}}re.simpleTimeList=null;re.DAY_LENGTH=864e5;re.TIME_FORMAT=null;re.TIME_FORMAT_SHORT=null;re.DATE_FORMAT=null;re.DATETIME_FORMAT=null;class le extends t.Event.EventEmitter{constructor(e){super(e);this.settings=e.settings||{};this.showTitle=e.displayTitle!==false;this.title=e.title||"";this.DOM={wrap:e.wrap}}build(){this.controls={};this.DOM.outerWrap=this.DOM.wrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-wrapper calendar-resbook-webform-wrapper-form"}}));this.DOM.innerWrap=this.DOM.outerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-inner"}}));if(this.settings.userfieldSettings.useUsers||this.settings.userfieldSettings.useResources){this.displayTitle();this.displayUsersControl();this.displayResourcesControl();this.displayServicesControl();this.displayDurationControl();this.displayDateControl();this.displayTimeControl()}else{this.displayWarning(t.Loc.getMessage("WEBF_RES_BOOKING_WARNING"))}}destroy(){t.Dom.remove(this.DOM.outerWrap)}displayTitle(){if(this.showTitle){this.DOM.titleWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-title"}})).appendChild(t.Dom.create("div",{props:{className:"calendar-resbook-webform-title-text"}}));this.updateTitle(this.title)}}updateTitle(e){if(this.showTitle){this.title=e;t.Dom.adjust(this.DOM.titleWrap,{text:this.title})}}displayWarning(e){this.DOM.warningWrap=this.DOM.innerWrap.appendChild(t.Dom.create("div",{props:{className:"ui-alert ui-alert-warning ui-alert-text-center ui-alert-icon-warning"},style:{marginBottom:0},html:'<span class="ui-alert-message">'+e+"</span>"}))}displayUsersControl(){if(this.settings.userfieldSettings.useUsers){if(this.settings.data.users.value===null&&t.Type.isArray(this.settings.userfieldSettings.users)){this.settings.data.users.value=this.settings.userfieldSettings.users}this.controls.users=new h({outerWrap:this.DOM.innerWrap,data:this.settings.data.users,userIndex:this.settings.userfieldSettings.userIndex});this.controls.users.display()}}displayResourcesControl(){if(this.settings.userfieldSettings.useResources){if(this.settings.data.resources.value===null&&t.Type.isArray(this.settings.userfieldSettings.resources)){this.settings.data.resources.value=[];this.settings.userfieldSettings.resources.forEach((function(e){this.settings.data.resources.value.push(parseInt(e.id))}),this)}this.controls.resources=new d({outerWrap:this.DOM.innerWrap,data:this.settings.data.resources,resourceList:this.settings.userfieldSettings.resources});this.controls.resources.display()}}displayServicesControl(){if(this.settings.userfieldSettings.useServices){if(this.settings.data.services.value===null&&t.Type.isArray(this.settings.userfieldSettings.services)){this.settings.data.services.value=[];this.settings.userfieldSettings.services.forEach((function(e){this.settings.data.services.value.push(e.name)}),this)}this.controls.services=new u({outerWrap:this.DOM.innerWrap,data:this.settings.data.services,serviceList:this.settings.userfieldSettings.services});this.controls.services.display()}}displayDurationControl(){if(!this.settings.userfieldSettings.useServices){this.controls.duration=new c({outerWrap:this.DOM.innerWrap,data:this.settings.data.duration,fullDay:this.settings.userfieldSettings.fullDay});this.controls.duration.display()}}displayDateControl(){this.controls.date=new k({outerWrap:this.DOM.innerWrap,data:this.settings.data.date});this.controls.date.display()}displayTimeControl(){if(!this.settings.userfieldSettings.fullDay){this.controls.time=new Y({outerWrap:this.DOM.innerWrap,data:this.settings.data.time});this.controls.time.display()}}refreshLayout(e){for(let s in this.controls){if(this.controls.hasOwnProperty(s)&&t.Type.isFunction(this.controls[s].refresh)){this.controls[s].refresh(e[s]||this.settings.data[s])}}}getInnerWrap(){return this.DOM.innerWrap}getOuterWrap(){return this.DOM.outerWrap}}class oe extends le{constructor(e){super(e)}}class ne extends le{constructor(e){super(e)}build(){super.build();this.DOM.outerWrap.className="calendar-resbook-webform-wrapper calendar-resbook-webform-wrapper-preview calendar-resbook-webform-wrapper-dark"}}class he extends t.Event.EventEmitter{constructor(e){super(e);this.id=e.id||"bx-select-input-"+Math.round(Math.random()*1e6);if(t.Type.isFunction(e.getValues)){this.getValues=e.getValues;this.values=this.getValues()}else{this.values=e.values||false}this.input=e.input;this.defaultValue=e.defaultValue||"";this.openTitle=e.openTitle||"";this.className=e.className||"";this.currentValue=e.value;this.currentValueIndex=e.valueIndex;this.onChangeCallback=t.Type.isFunction(e.onChangeCallback)?e.onChangeCallback:null;this.onAfterMenuOpen=e.onAfterMenuOpen||null;this.zIndex=e.zIndex||1200;this.disabled=e.disabled;this.editable=e.editable!==false;this.setFirstIfNotFound=!!e.setFirstIfNotFound;if(this.onChangeCallback){t.Event.bind(this.input,"change",this.onChangeCallback);t.Event.bind(this.input,"keyup",this.onChangeCallback)}this.curInd=false;if(t.Type.isArray(this.values)){t.Event.bind(this.input,"click",this.onClick.bind(this));if(this.editable){t.Event.bind(this.input,"focus",this.onFocus.bind(this));t.Event.bind(this.input,"blur",this.onBlur.bind(this));t.Event.bind(this.input,"keyup",this.onKeyup.bind(this))}else{t.Event.bind(this.input,"focus",function(){this.input.blur()}.bind(this))}if(this.currentValueIndex===undefined&&this.currentValue!==undefined){this.currentValueIndex=-1;for(let e=0;e<this.values.length;e++){if(parseInt(this.values[e].value)===parseInt(this.currentValue)){this.currentValueIndex=e;break}}if(this.currentValueIndex===-1){this.currentValueIndex=this.setFirstIfNotFound?0:undefined}}}if(this.currentValueIndex!==undefined&&this.values[this.currentValueIndex]){this.input.value=this.values[this.currentValueIndex].label}}showPopup(){if(this.getValues){this.values=this.getValues()}if(this.shown||this.disabled||!this.values.length){return}let e=0,s=0,a=[],r,l=this;for(r=0;r<this.values.length;r++){if(this.values[r].delimiter){a.push(this.values[r])}else{if(this.currentValue&&this.values[r]&&this.values[r].value===this.currentValue.value||this.input.value===this.values[r].label){e=s}a.push({id:this.values[r].value+"_"+r,text:this.values[r].label,onclick:this.values[r].callback||function(e,t){return function(){l.input.value=t;l.popupMenu.close();l.onChange(e,t)}}(this.values[r].value,this.values[r].labelRaw||this.values[r].label)});s++}}this.popupMenu=i.MenuManager.create(this.id,this.input,a,{closeByEsc:true,autoHide:true,zIndex:this.zIndex,offsetTop:0,offsetLeft:0,cacheable:false});if(!BX.browser.IsFirefox()){this.popupMenu.popupWindow.setMinWidth(this.input.offsetWidth)}this.popupMenu.popupWindow.setMaxWidth(300);let o=this.popupMenu.layout.menuContainer;t.Dom.addClass(this.popupMenu.layout.menuContainer,"calendar-resourcebook-select-popup");this.popupMenu.show();let n=this.popupMenu.menuItems[e];if(n&&n.layout){o.scrollTop=n.layout.item.offsetTop-2}re.bindCustomEvent(this.popupMenu.popupWindow,"onPopupClose",function(){this.shown=false}.bind(this));this.input.select();if(t.Type.isFunction(this.onAfterMenuOpen)){this.onAfterMenuOpen(e,this.popupMenu)}this.shown=true}closePopup(){i.MenuManager.destroy(this.id);this.shown=false}onFocus(){setTimeout(function(){if(!this.shown){this.showPopup()}}.bind(this),200)}onClick(){if(this.shown){this.closePopup()}else{this.showPopup()}}onBlur(){setTimeout(this.closePopup.bind(this),200)}onKeyup(){setTimeout(this.closePopup.bind(this),50)}onChange(e){let s=this.input.value;this.emit("BX.Calendar.Resourcebooking.SelectInput:changed",new t.Event.BaseEvent({data:{selectinput:this,value:s,realValue:e}}));if(this.onChangeCallback){this.onChangeCallback({value:s,realValue:e})}}destroy(){if(this.onChangeCallback){t.Event.unbind(this.input,"change",this.onChangeCallback);t.Event.unbind(this.input,"keyup",this.onChangeCallback)}t.Event.unbind(this.input,"click",this.onClick.bind(this));t.Event.unbind(this.input,"focus",this.onFocus.bind(this));t.Event.unbind(this.input,"blur",this.onBlur.bind(this));t.Event.unbind(this.input,"keyup",this.onKeyup.bind(this));if(this.popupMenu){this.popupMenu.close()}i.MenuManager.destroy(this.id);this.shown=false}setValue(e){this.input.value=e;if(t.Type.isArray(this.values)){let t=-1;for(let s=0;s<this.values.length;s++){if(this.values[s].value===e){t=s;break}}if(t!==-1){this.input.value=this.values[t].label;this.currentValueIndex=t}}}getValue(){return this.input.value}}let de=window.BX&&BX.Main&&BX.Main.Date?BX.Main.Date:null;class ue{static getLiveField(e){if(!e.wrap||!t.Type.isDomNode(e.wrap)){throw new Error('The argument "params.wrap" must be a DOM node')}if(t.Type.isNull(de)){throw new Error("The error occured during Date extention loading")}let s=new te(e);s.init();return s}static getPreviewField(e){}}e.Type=t.Type;e.Loc=t.Loc;e.Dom=t.Dom;e.Event=t.Event;e.Tag=t.Tag;e.Browser=t.Browser;e.Text=t.Text;e.Runtime=t.Runtime;e.PopupManager=i.PopupManager;e.MenuManager=i.MenuManager;e.BaseEvent=a.BaseEvent;e.EventEmitter=a.EventEmitter;e.CoreDate=de;e.BookingUtil=re;e.FieldViewControllerEdit=oe;e.FieldViewControllerPreview=ne;e.SelectInput=he;e.Resourcebooking=ue})(this.BX.Calendar=this.BX.Calendar||{},BX,BX.Main,BX.Main,BX.Event); //# sourceMappingURL=resourcebooking.bundle.map.js
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings