File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/calendar/sync/interface/dist/syncinterface.bundle.min.js
Back
this.BX=this.BX||{};this.BX.Calendar=this.BX.Calendar||{};this.BX.Calendar.Sync=this.BX.Calendar.Sync||{};(function(e,t,n,s,i,a,o,r,c,l,d,h){"use strict";let p=e=>e,u,g,_,C,v;class E{constructor(e){this.status=e.status;this.connections=e.connections;this.withStatusLabel=e.withStatusLabel;this.popupWithUpdateButton=e.popupWithUpdateButton;this.popupId=e.popupId}static createInstance(e){return new this(e)}setStatus(e){this.status=e;return this}setConnections(e){this.connections=e;return this}getContent(){let e;if(this.status==="success"){e=l.Tag.render(u||(u=p` <div id="status-info-block" class="ui-alert ui-alert-success calendar-sync-status-info"> <span class="ui-alert-message">${0}</span> </div> `),l.Loc.getMessage("SYNC_STATUS_SUCCESS"))}else if(this.status==="failed"){e=l.Tag.render(g||(g=p` <div id="status-info-block" class="ui-alert ui-alert-danger calendar-sync-status-info"> <span class="ui-alert-message">${0}</span> </div> `),l.Loc.getMessage("SYNC_STATUS_ALERT"))}else{e=l.Tag.render(_||(_=p` <div id="status-info-block" class="ui-alert ui-alert-primary calendar-sync-status-info"> <span class="ui-alert-message">${0}</span> </div> `),l.Loc.getMessage("SYNC_STATUS_NOT_CONNECTED"))}e.addEventListener("mouseenter",(()=>{this.handlerMouseEnter(e)}));e.addEventListener("mouseleave",(()=>{this.handlerMouseLeave()}));this.statusBlock=l.Tag.render(C||(C=p` <div class="calendar-sync-status-block" id="calendar-sync-status-block"> ${0} ${0} </div> `),this.getStatusTextLabel(),e);return this.statusBlock}getStatusTextLabel(){return this.withStatusLabel?l.Tag.render(v||(v=p` <div class="calendar-sync-status-subtitle"> <span data-hint=""></span> <span class="calendar-sync-status-text">${0}:</span> </div>`),l.Loc.getMessage("LABEL_STATUS_INFO")):""}handlerMouseEnter(e){clearTimeout(this.statusBlockEnterTimeout);this.buttonEnterTimeout=setTimeout((()=>{this.statusBlockEnterTimeout=null;this.showPopup(e)}),500)}handlerMouseLeave(){if(this.statusBlockEnterTimeout!==null){clearTimeout(this.statusBlockEnterTimeout);this.statusBlockEnterTimeout=null;return}this.statusBlockLeaveTimeout=setTimeout((()=>{this.hidePopup()}),500)}showPopup(e){if(this.status!=="not_connected"){this.popup=this.getPopup(e);this.popup.show();this.addPopupHandlers()}}hidePopup(){if(this.popup){this.popup.hide()}}addPopupHandlers(){this.popup.getPopup().getPopupContainer().addEventListener("mouseenter",(()=>{clearTimeout(this.statusBlockEnterTimeout);clearTimeout(this.statusBlockLeaveTimeout)}));this.popup.getPopup().getPopupContainer().addEventListener("mouseleave",(()=>{this.hidePopup()}))}getPopup(e){return s.SyncStatusPopup.createInstance({connections:this.connections,withUpdateButton:this.popupWithUpdateButton,node:e,id:this.popupId})}refresh(e,t){this.status=e;this.connections=t;return this}}let y=e=>e,S,T,I,L,A,N,m;class f{constructor(e){this.MAIN_SYNC_SLIDER_NAME="calendar:auxiliary-sync-slider";this.SLIDER_WIDTH=684;this.LOADER_NAME="calendar:loader";this.cache=new l.Cache.MemoryCache;this.status=e.status;this.connectionsProviders=e.connectionsProviders;this.userId=e.userId;this.statusBlockEnterTimeout=null;this.statusBlockLeaveTimeout=null}openSlider(){BX.SidePanel.Instance.open(this.MAIN_SYNC_SLIDER_NAME,{contentCallback:e=>new Promise(((e,t)=>{e(this.getContent())})),allowChangeHistory:false,events:{onLoad:()=>{this.setGridContent()}},cacheable:false,width:this.SLIDER_WIDTH,loader:this.LOADER_NAME})}getContent(){return l.Tag.render(S||(S=y` <div class="calendar-sync-wrap"> ${0} ${0} ${0} ${0} ${0} </div> `),this.getHeader(),this.getMobileHeader(),this.getMobileContentWrapper(),this.getWebHeader(),this.getWebContentWrapper())}getHeader(){return l.Tag.render(T||(T=y` <div class="calendar-sync-header"> ${0} ${0} </div> `),this.getMainHeader(),this.getStatusBlockContent(this.getConnections()))}getMainHeader(){return this.cache.remember("calendar-syncPanel-mainHeader",(()=>l.Tag.render(I||(I=y` <span class="calendar-sync-header-text">${0}</span> `),l.Loc.getMessage("SYNC_CALENDAR_HEADER_NEW"))))}getMobileContentWrapper(){return this.cache.remember("calendar-syncPanel-mobileContentWrapper",(()=>l.Tag.render(L||(L=y` <div id="calendar-sync-mobile" class="calendar-sync-mobile"></div> `))))}getWebContentWrapper(){return this.cache.remember("calendar-syncPanel-webContentWrapper",(()=>l.Tag.render(A||(A=y` <div id="calendar-sync-web" class="calendar-sync-web"></div> `))))}getMobileHeader(){return this.cache.remember("calendar-syncPanel-mobileHeader",(()=>l.Tag.render(N||(N=y` <div class="calendar-sync-title">${0}</div> `),l.Loc.getMessage("SYNC_MOBILE_HEADER"))))}getWebHeader(){return this.cache.remember("calendar-syncPanel-webHeader",(()=>l.Tag.render(m||(m=y` <div class="calendar-sync-title">${0}</div> `),l.Loc.getMessage("SYNC_WEB_HEADER"))))}getStatusBlockContent(e){this.statusBlock=E.createInstance({status:this.status,connections:e,withStatusLabel:true,popupWithUpdateButton:true,popupId:"calendar-syncPanel-status"});this.statusBlockContent=this.statusBlock.getContent();return this.statusBlockContent}getConnections(){const e=[];const t=Object.values(this.connectionsProviders);t.forEach((t=>{const n=t.getConnections();if(n.length>0){n.forEach((t=>{if(s.ConnectionItem.isConnectionItem(t)&&t.getConnectStatus()===true){e.push(t)}}))}}));return e}setGridContent(){const e=Object.values(this.connectionsProviders);this.showWebGridContent(e.filter((e=>e.mainPanel===false&&e.getViewClassification()==="web")));this.showMobileGridContent(e.filter((e=>e.mainPanel===false&&e.getViewClassification()==="mobile")))}showWebGridContent(e){const t=this.getWebContentWrapper();l.Dom.clean(t);const n=new BX.TileGrid.Grid({id:"calendar_sync",items:e,container:t,sizeRatio:"55%",itemMinWidth:180,tileMargin:7,itemType:"BX.Calendar.Sync.Interface.GridUnit",userId:this.userId});n.draw()}showMobileGridContent(e){const t=this.getMobileContentWrapper();l.Dom.clean(t);const n=new BX.TileGrid.Grid({id:"calendar_sync",items:e,container:t,sizeRatio:"55%",itemMinWidth:180,tileMargin:7,itemType:"BX.Calendar.Sync.Interface.GridUnit"});n.draw()}refresh(e,t){this.status=e;this.connectionsProviders=t;this.blockStatusContent=this.statusBlock.refresh(e,this.getConnections()).getContent();l.Dom.replace(document.querySelector("#calendar-sync-status-block"),this.blockStatusContent);this.setGridContent()}}let D=e=>e,O,b,M,w,B,P,k,x,R,W;class U{constructor(e){this.logoClassName="";this.options=e;this.connectionProvider=this.options.connectionProvider}getConnectionTemplate(){if(!this.connectionTemplate){this.connectionTemplate=this.connectionProvider.getClassTemplateItem().createInstance(this.connectionProvider)}return this.connectionTemplate}renderTo(e){if(l.Type.isElementNode(e)){e.appendChild(this.getContent())}}getContent(){this.unitNode=l.Tag.render(O||(O=D` <div class="calendar-sync__calendar-item"> <div class="calendar-sync__calendar-item--logo"> ${0} </div> <div class="calendar-sync__calendar-item--container"> <div class="calendar-sync__calendar-item--title"> ${0} ${0} </div> ${0} </div> </div> `),this.getLogoNode(),this.getTitle(),this.getSyncInfoWrap(),this.getButtonsWrap());return this.unitNode}getLogoNode(){return l.Tag.render(b||(b=D`<div class="calendar-sync__calendar-item--logo-image ${0}"></div>`),this.connectionProvider.getSyncPanelLogo())}getTitle(){return this.connectionProvider.getSyncPanelTitle()}getSyncInfoWrap(){this.syncInfoWrap=l.Tag.render(M||(M=D` <div class="calendar-sync__account-info"> <div class="calendar-sync__account-info--icon --animate"></div> <span data-role="sync_info_text" /> </div> `));return this.syncInfoWrap}setSyncStatus(e){this.unitNode.className="calendar-sync__calendar-item";switch(e){case this.connectionProvider.STATUS_SUCCESS:l.Dom.addClass(this.unitNode,"--complete");this.setSyncInfoStatusText(this.formatSyncTime(this.connectionProvider.getSyncDate()));break;case this.connectionProvider.STATUS_FAILED:l.Dom.addClass(this.unitNode,"--error");this.setSyncInfoStatusText(l.Loc.getMessage("CAL_SYNC_INFO_STATUS_ERROR"));break;case this.connectionProvider.STATUS_PENDING:l.Dom.addClass(this.unitNode,"--pending");this.setSyncInfoStatusText("");break;case this.connectionProvider.STATUS_SYNCHRONIZING:l.Dom.addClass(this.unitNode,"--active");this.setSyncInfoStatusText(l.Loc.getMessage("CAL_SYNC_INFO_STATUS_SYNCHRONIZING"));break;case this.connectionProvider.STATUS_NOT_CONNECTED:this.setSyncInfoStatusText("");break}}setSyncInfoStatusText(e){const t=this.syncInfoWrap.querySelector('[data-role="sync_info_text"]');if(l.Type.isElementNode(t)){t.innerHTML=l.Text.encode(e).toUpperCase()}}getButtonsWrap(){if(!l.Type.isElementNode(this.buttonsWrap)){this.buttonsWrap=l.Tag.render(w||(w=D`<div class="calendar-sync__calendar-item--buttons"> ${0} ${0} </div>`),this.getButton(),this.getMoreButton());l.Event.bind(this.moreButton,"click",this.handleItemClick.bind(this))}return this.buttonsWrap}refreshButton(){l.Dom.clean(this.buttonsWrap);this.moreButton=this.buttonsWrap.appendChild(this.getMoreButton());this.button=this.buttonsWrap.appendChild(this.getButton())}getButton(){switch(this.connectionProvider.getStatus()){case this.connectionProvider.STATUS_SUCCESS:this.button=l.Tag.render(B||(B=D` <a data-role="status-success" class="ui-btn ui-btn-icon-success ui-btn-link"> ${0} </a>`),l.Loc.getMessage("CAL_BUTTON_STATUS_SUCCESS"));break;case this.connectionProvider.STATUS_FAILED:this.button=l.Tag.render(P||(P=D` <a data-role="status-failed" class="ui-btn ui-btn-icon-fail ui-btn-link"> ${0} </a>`),l.Loc.getMessage("CAL_BUTTON_STATUS_FAILED"));break;case this.connectionProvider.STATUS_PENDING:this.button=l.Tag.render(k||(k=D` <a data-role="status-pending" class="ui-btn ui-btn-disabled ui-btn-link"> ${0} </a>`),l.Loc.getMessage("CAL_BUTTON_STATUS_PENDING"));break;case this.connectionProvider.STATUS_NOT_CONNECTED:this.button=l.Tag.render(x||(x=D` <a data-role="status-not_connected" class="ui-btn ui-btn-success ui-btn-round"> ${0} </a>`),l.Loc.getMessage("CAL_BUTTON_STATUS_NOT_CONNECTED"));l.Event.bind(this.button,"click",this.handleItemClick.bind(this));break;case this.connectionProvider.STATUS_SYNCHRONIZING:this.button=l.Tag.render(R||(R=D` <a data-role="status-not_connected" class="ui-btn ui-btn-success ui-btn-round ui-btn-clock ui-btn-disabled"> ${0} </a>`),l.Loc.getMessage("CAL_BUTTON_STATUS_SUCCESS"));break}return this.button}getMoreButton(){this.moreButton=l.Tag.render(W||(W=D` <div data-role="more-button" class="ui-btn ui-btn-round ui-btn-light-border calendar-sync__calendar-item--more" ></div>`));return this.moreButton}handleItemClick(e){const t=this.connectionProvider.getStatus();if([this.connectionProvider.STATUS_SUCCESS,this.connectionProvider.STATUS_FAILED].includes(t)){if(this.connectionProvider.hasMenu()){this.connectionProvider.showMenu(this.button)}else if(this.connectionProvider.getConnectStatus()){this.connectionProvider.openActiveConnectionSlider(this.connectionProvider.getConnection())}else{this.connectionProvider.openInfoConnectionSlider()}}else if(t===this.connectionProvider.STATUS_NOT_CONNECTED){this.getConnectionTemplate().handleConnectButton()}}formatSyncTime(e){const t=new Date;let n=e;if(l.Type.isDate(e)){n=Math.round(e.getTime()/1e3);const s=parseInt((t-e)/1e3);if(s<60){return l.Loc.getMessage("CAL_JUST")}}return BX.date.format([["tommorow","tommorow, H:i:s"],["i","iago"],["H","Hago"],["d","dago"],["m100","mago"],["m","mago"],["-",""]],n)}}let H=e=>e,$,X,G,Y,F,z,j;class K{constructor(e){this.MAIN_SYNC_SLIDER_NAME="calendar:sync-slider";this.HELPDESK_CODE=11828176;this.SLIDER_WIDTH=770;this.LOADER_NAME="calendar:loader";this.cache=new l.Cache.MemoryCache;this.status=e.status;this.connectionsProviders=e.connectionsProviders;this.userId=e.userId;this.BX=window.top.BX||window.BX}openSlider(){BX.SidePanel.Instance.open(this.MAIN_SYNC_SLIDER_NAME,{contentCallback:e=>new Promise(((e,t)=>{e(this.getContent())})),allowChangeHistory:false,events:{onLoad:()=>{this.displayConnectionUnits()}},cacheable:false,width:this.SLIDER_WIDTH,loader:this.LOADER_NAME})}getContent(){return l.Tag.render($||($=H` <div class="calendar-sync__wrapper calendar-sync__scope"> ${0} <div class="calendar-sync__content"> ${0} ${0} </div> </div> `),this.getHeaderWrapper(),this.getUnitsContentWrapper(),this.getFooterWrapper())}getHeaderWrapper(){return l.Tag.render(X||(X=H` <div class="calendar-sync__header"> <div class="calendar-sync__header-logo"></div> <div class="calendar-sync__header-container"> <div class="calendar-sync__header-title">${0}</div> <div class="calendar-sync__header-sub-title">${0}</div> </div> </div> `),l.Loc.getMessage("CAL_SYNC_TITLE_NEW"),l.Loc.getMessage("CAL_SYNC_SUB_TITLE"))}getUnitsContentWrapper(){this.unitsContentWrapper=l.Tag.render(G||(G=H` <div class="calendar-sync__calendar-list"> </div> `));return this.unitsContentWrapper}getFooterWrapper(){return l.Tag.render(Y||(Y=H` <div class="calendar-sync__content-block --space-bottom --space-left"> ${0} </div> <div class="calendar-sync__content-block --space-bottom --space-left--double"> ${0} </div> <div class="calendar-sync__content-block --space-left--double"> ${0} </div> `),this.getExtraInfoWithCheckIcon(),this.getOpenAuxiliaryPanelLink(),this.getOpenHelpLink())}getExtraInfoWithCheckIcon(){const e=Object.values(this.connectionsProviders).filter((e=>e.mainPanel&&e.status)).length>0;return l.Tag.render(F||(F=H` <div class="calendar-sync__content-text --icon-check${0}"> ${0} </div> `),e?" --disabled":"",l.Loc.getMessage("CAL_SYNC_INFO_PROMO"))}getOpenAuxiliaryPanelLink(){const e=l.Tag.render(z||(z=H` <div class="calendar-sync__content-link"> ${0} </div> `),l.Loc.getMessage("CAL_OPEN_AUXILIARY_PANEL"));l.Event.bind(e,"click",(()=>{this.auxiliarySyncPanel=new f({connectionsProviders:this.connectionsProviders,userId:this.userId,status:this.status});this.auxiliarySyncPanel.openSlider()}));return e}getOpenHelpLink(){const e=l.Tag.render(j||(j=H` <div class="calendar-sync__content-link">${0}</divclass> `),l.Loc.getMessage("CAL_SHOW_SYNC_HELP"));l.Event.bind(e,"click",(()=>{if(this.BX.Helper){this.BX.Helper.show("redirect=detail&code="+this.HELPDESK_CODE)}}));return e}getConnections(){const e=[];const t=Object.values(this.connectionsProviders);t.forEach((t=>{const n=t.getConnections();if(n.length>0){n.forEach((t=>{if(s.ConnectionItem.isConnectionItem(t)&&t.getConnectStatus()===true){e.push(t)}}))}}));return e}displayConnectionUnits(){const e=Object.values(this.connectionsProviders).filter((e=>e.mainPanel||e.connected));this.renderConnectionUnits(e)}renderConnectionUnits(e){l.Dom.clean(this.unitsContentWrapper);e.forEach((e=>{const t=new U({connectionProvider:e});e.setInterfaceUnit(t);t.renderTo(this.unitsContentWrapper);t.setSyncStatus(e.getStatus())}))}showWebGridContent(e){const t=this.getWebContentWrapper();l.Dom.clean(t);const n=new BX.TileGrid.Grid({id:"calendar_sync",items:e,container:t,sizeRatio:"55%",itemMinWidth:180,tileMargin:7,itemType:"BX.Calendar.Sync.Interface.GridUnit",userId:this.userId});n.draw()}refresh(e,t){this.status=e;this.connectionsProviders=t;l.Dom.replace(document.querySelector("#calendar-sync-status-block"),this.blockStatusContent);this.displayConnectionUnits();this.auxiliarySyncPanel.refresh(e,t)}}let q=e=>e,V,Q,Z,J;class ee extends BX.TileGrid.Item{constructor(e){super({id:e.type});this.item=e}getContent(){this.gridUnit=l.Tag.render(V||(V=q`<div class="calendar-sync-item ${0}" style="${0}"> <div class="calendar-item-content"> ${0} ${0} ${0} </div> </div>`),this.getAdditionalContentClass(),this.getContentStyles(),this.getImage(),this.getTitle(),this.isActive()?this.getStatus():"");this.gridUnit.addEventListener("click",this.onClick.bind(this));return this.gridUnit}getTitle(){if(!this.layout.title){this.layout.title=l.Tag.render(Q||(Q=q` <div class="calendar-sync-item-title">${0}</div>`),BX.util.htmlspecialchars(this.item.getGridTitle()))}return this.layout.title}getImage(){return l.Tag.render(Z||(Z=q` <div class="calendar-sync-item-image"> <div class="calendar-sync-item-image-item" style="background-image: ${0}"></div> </div>`),"url("+this.item.getGridIcon()+")")}getStatus(){if(this.isActive()){return l.Tag.render(J||(J=q` <div class="calendar-sync-item-status"></div> `))}return""}isActive(){return this.item.getConnectStatus()}getAdditionalContentClass(){if(this.isActive()){if(this.item.getSyncStatus()){return"calendar-sync-item-selected"}else{return"calendar-sync-item-failed"}}else{return""}}getContentStyles(){if(this.isActive()){return"background-color:"+this.item.getGridColor()+";"}else{return""}}onClick(){BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{open_connection_slider:"Y",sync_connection_type:this.item.getType(),sync_connection_status:this.item.getSyncStatus()?"Y":"N"}});if(this.item.hasMenu()){this.item.showMenu(this.gridUnit)}else if(this.item.getConnectStatus()){this.item.openActiveConnectionSlider(this.item.getConnection())}else{this.item.openInfoConnectionSlider()}}}let te=e=>e,ne,se,ie,ae,oe,re;class ce{constructor(e=null){this.userName=null;this.server=null;this.connectionName=null;this.addButtonText=l.Loc.getMessage("CAL_UPPER_CONNECT");this.removeButtonText=l.Loc.getMessage("CAL_UPPER_DISCONNECT");this.saveButtonText=l.Loc.getMessage("CAL_UPPER_SAVE");if(e!==null){this.userName=BX.util.htmlspecialchars(e.userName);this.server=BX.util.htmlspecialchars(e.server);this.connectionName=BX.util.htmlspecialchars(e.connectionName)}}getWrapper(){return l.Tag.render(ne||(ne=te` <div class="calendar-sync-slider-section calendar-sync-slider-section-form"></div> `))}getForm(){return l.Tag.render(se||(se=te` <form class="calendar-sync-slider-form" action=""> <div class="calendar-sync-slider-field"> <div class="ui-ctl ui-ctl-w100 ui-ctl-textbox"> <input type="text" class="ui-ctl-element" placeholder=\"${0}\" name="name" value="${0}"> </div> </div> <div class="calendar-sync-slider-field"> <div class="ui-ctl ui-ctl-w100 ui-ctl-textbox"> <input type="text" class="ui-ctl-element" placeholder=\"${0}\" name="server" value="${0}"> </div> </div> <div class="calendar-sync-slider-field"> <div class="ui-ctl ui-ctl-w100 ui-ctl-textbox"> <input type="text" class="ui-ctl-element" placeholder=\"${0}\" name="user_name" value="${0}"> </div> </div> <div class="calendar-sync-slider-field"> <div class="ui-ctl ui-ctl-w100 ui-ctl-textbox"> <input type="password" class="ui-ctl-element" name="password" placeholder=\"${0}\"> </div> </div> </form> `),l.Loc.getMessage("CAL_TEXT_NAME"),this.connectionName||"",l.Loc.getMessage("CAL_TEXT_SERVER_ADDRESS"),this.server||"",l.Loc.getMessage("CAL_TEXT_USER_NAME"),this.userName||"",l.Loc.getMessage("CAL_TEXT_PASSWORD"))}getAddButton(){return l.Tag.render(ie||(ie=te` <button id="connect-button" class="ui-btn ui-btn-light-border">${0}</button> `),this.addButtonText)}getDisconnectButton(){return l.Tag.render(ae||(ae=te` <button id="disconnect-button" class="calendar-sync-slider-btn ui-btn ui-btn-light-border">${0}</button> `),this.removeButtonText)}getSaveButton(){return l.Tag.render(oe||(oe=te` <button id="edit-connect-button" class="calendar-sync-slider-btn ui-btn ui-btn-light-border">${0}</button> `),this.saveButtonText)}getButtonWrapper(){return l.Tag.render(re||(re=te` <div class="calendar-sync-slider-form-btn"></div> `))}}let le=e=>e,de,he,pe,ue,ge;class _e{constructor(e={}){this.zIndex=3100;this.DOM={};this.QRCODE_SIZE=186;this.QRCODE_COLOR_LIGHT="#ffffff";this.QRCODE_COLOR_DARK="#000000";this.QRCODE_WRAP_CLASS="calendar-sync-slider-qr-container";this.QRC=null;this.type=e.type;this.helpDeskCode=e.helpDeskCode||"11828176";this.alreadyConnectedToNew=this.type==="android"?d.Util.isGoogleConnected():d.Util.isIcloudConnected()}show(){}showInPopup(){this.popup=new h.Popup({className:"calendar-sync-qr-popup",draggable:true,content:this.getContainer(),width:580,zIndexAbsolute:this.zIndex,cacheable:false,closeByEsc:true,closeIcon:true});this.popup.show();this.initQrCode().then(this.drawQRCode.bind(this))}close(){this.popup.close()}getContainer(){this.DOM.container=l.Tag.render(de||(de=le` <div class="calendar-sync-qr-popup-content"> <div class="calendar-sync-qr-popup-title"> ${0} </div> <div class="calendar-sync-slider-content"> <img class="calendar-sync-slider-phone-img" src="/bitrix/images/calendar/sync/qr-background.svg" alt=""> ${0} ${0} </div> </div> `),this.getTitle(),this.getQrContainer(),this.getInstructionContainer());d.Util.initHintNode(this.DOM.container.querySelector(".calendar-notice-mobile-banner"));return this.DOM.container}getQrContainer(){if(!this.DOM.qrContainer){this.DOM.qrContainer=l.Tag.render(he||(he=le` <div class="calendar-sync-slider-qr"> <div class="${0}">${0}</div> <span class="calendar-sync-slider-logo"></span> </div> `),this.QRCODE_WRAP_CLASS,d.Util.getLoader(this.QRCODE_SIZE))}return this.DOM.qrContainer}getInstructionContainer(){if(!this.DOM.instructionContainer){this.DOM.instructionContainer=l.Tag.render(pe||(pe=le` <div class="calendar-sync-slider-instruction"> <!--<div class="calendar-sync-slider-instruction-subtitle"></div>--> ${0} <div class="calendar-sync-slider-instruction-notice">${0}</div> <a href="javascript:void(0);" onclick="BX.Helper.show('redirect=detail&code=' + ${0},{zIndex:3100,}); event.preventDefault();" class="ui-btn ui-btn-success ui-btn-round"> ${0} </a> </div> `),this.getInstructionTextContainer(),l.Loc.getMessage("SYNC_MOBILE_NOTICE"),this.getHelpdeskCode(),l.Loc.getMessage("SYNC_MOBILE_ABOUT_BTN"))}return this.DOM.instructionContainer}getInstructionTextContainer(){if(!this.DOM.instructionTextContainer){this.DOM.instructionTextContainer=l.Tag.render(ue||(ue=le` <div class="calendar-sync-slider-instruction-title"> ${0} ${0} </div> `),l.Loc.getMessage("SYNC_MOBILE_NOTICE_HOW_TO")+" ",this.type!=="iphone"?this.getAndroidHintIcon():"")}return this.DOM.instructionTextContainer}getAndroidHintIcon(){if(!this.DOM.androidHintIcon){this.DOM.androidHintIcon=l.Tag.render(ge||(ge=le` <span class="calendar-notice-mobile-banner" data-hint="${0}" data-hint-no-icon="Y"> </span>`),l.Loc.getMessage("CAL_ANDROID_QR_CODE_HINT"))}return this.DOM.androidHintIcon}getInnerContainer(){return this.DOM.container.querySelector("."+this.QRCODE_WRAP_CLASS)}initQrCode(){return new Promise((e=>{l.Runtime.loadExtension(["main.qrcode"]).then((t=>{if(t&&t.QRCode){e()}}))}))}drawQRCode(e){if(!l.Type.isDomNode(e)){e=this.getInnerContainer()}this.getMobileSyncUrl().then((t=>{l.Dom.clean(e);this.QRC=new QRCode(e,{text:t,width:this.getSize(),height:this.getSize(),colorDark:this.QRCODE_COLOR_DARK,colorLight:this.QRCODE_COLOR_LIGHT,correctLevel:QRCode.CorrectLevel.H})}))}getTitle(){return l.Loc.getMessage("SYNC_BANNER_MOBILE_TITLE")}getMobileSyncUrl(){return new Promise(((e,t)=>{BX.ajax.runAction("calendar.api.syncajax.getAuthLink",{data:{type:this.type?"slider":"banner"}}).then((t=>{e(t.data.link)}),t)}))}getSize(){return this.QRCODE_SIZE}getDetailHelpUrl(){return"https://helpdesk.bitrix24.ru/open/"+this.getHelpdeskCode()}getHelpdeskCode(){return this.helpDeskCode}}let Ce=e=>e,ve,Ee,ye,Se,Te,Ie,Le,Ae,Ne,me,fe,De,Oe;class be extends r.EventEmitter{constructor(e){super();this.sliderWidth=840;this.setEventNamespace("BX.Calendar.Sync.Interface.InterfaceTemplate");this.title=e.title;this.helpdeskCode=e.helpDeskCode;this.titleInfoHeader=e.titleInfoHeader;this.descriptionInfoHeader=e.descriptionInfoHeader;this.titleActiveHeader=e.titleActiveHeader;this.descriptionActiveHeader=e.descriptionActiveHeader;this.sliderIconClass=e.sliderIconClass;this.iconPath=e.iconPath;this.iconLogoClass=e.iconLogoClass||"";this.color=e.color;this.provider=e.provider;this.connection=e.connection;this.popupWithUpdateButton=e.popupWithUpdateButton}static createInstance(e,t=null){return new this(e,t)}getInfoConnectionContent(){return l.Tag.render(ve||(ve=Ce` <div class="calendar-sync-wrap calendar-sync-wrap-detail"> <div class="calendar-sync-header"> <span class="calendar-sync-header-text">${0}</span> </div> ${0} </div> `),this.getHeaderTitle(),this.getContentInfoBody())}getContentActiveBodyHeader(){this.disconnectButton=this.getDisconnectButton();l.Event.bind(this.disconnectButton,"click",this.handleDisconnectButton.bind(this));const e=this.connection.getSyncDate().getTime()/1e3;const t=e?d.Util.formatDateUsable(e)+" "+BX.date.format(d.Util.getTimeFormatShort(),e):"";return l.Tag.render(Ee||(Ee=Ce` <div class="calendar-sync__account ${0}"> <div class="calendar-sync__account-logo"> <div class="calendar-sync__account-logo--image ${0}"></div> </div> <div class="calendar-sync__account-content"> ${0} <div class="calendar-sync__account-info"> <div class="calendar-sync__account-info--icon --animate"></div> ${0} </div> </div> ${0} </div> `),this.getSyncStatusClassName(),this.getLogoIconClass(),BX.util.htmlspecialchars(this.connection.getConnectionName()),t,this.disconnectButton)}getActiveConnectionContent(){return l.Tag.render(ye||(ye=Ce` <div class="calendar-sync-wrap calendar-sync-wrap-detail"> <div class="calendar-sync-header"> <span class="calendar-sync-header-text">${0}</span> </div> <div class="calendar-sync__scope"> <div class="calendar-sync__content --border-radius"> <div class="calendar-sync__content-block --space-bottom"> ${0} </div> </div> </div> </div> `),this.getHeaderTitle(),this.getContentActiveBody())}getContentInfoBody(){return l.Tag.render(Se||(Se=Ce` ${0} `),this.getContentInfoBodyHeader())}getContentActiveBody(){return l.Tag.render(Te||(Te=Ce` ${0} ${0} ${0} `),this.getContentActiveBodyHeader(),this.getContentActiveBodySectionsHeader(),this.getContentActiveBodySectionsManager())}showHelp(){if(BX.Helper){BX.Helper.show("redirect=detail&code="+this.helpdeskCode);event.preventDefault()}}getHelpdeskLink(){return"https://helpdesk.bitrix24.ru/open/"+this.helpdeskCode}getHeaderTitle(){return this.title}getLogoIconClass(){return this.iconLogoClass}getContentInfoBodyHeader(){if(!this.infoBodyHeader){this.infoBodyHeader=l.Tag.render(Ie||(Ie=Ce` <div class="calendar-sync-slider-section calendar-sync-slider-section-flex-wrap"> <div class="calendar-sync-slider-header-icon ${0}"></div> <div class="calendar-sync-slider-header"> <div class="calendar-sync-slider-title"> ${0} </div> <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text"> ${0} </span> </div> ${0} </div> </div> `),this.sliderIconClass,this.titleInfoHeader,this.descriptionInfoHeader,this.getContentInfoBodyHeaderHelper())}return this.infoBodyHeader}getContentInfoBodyHeaderHelper(){return l.Tag.render(Le||(Le=Ce` <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text"> <a class="calendar-sync-slider-info-link" href="javascript:void(0);" onclick="${0}"> ${0} </a> </span> </div> `),this.showHelp.bind(this),l.Loc.getMessage("CAL_TEXT_ABOUT_WORK_SYNC"))}getContentInfoWarning(){const e=this.getMobileSyncControlButton();if(this.alreadyConnectedToNew){l.Event.bind(e,"click",this.handleMobileButtonOtherSyncInfo.bind(this))}else{l.Event.bind(e,"click",this.handleMobileButtonConnectClick.bind(this))}return l.Tag.render(Ae||(Ae=Ce` <div class="calendar-sync-slider-section-warning calendar-sync-slider-section-col"> <div class="ui-alert ui-alert-warning ui-alert-icon-info"> <span class="ui-alert-message">${0} </span> </div> <div class="calendar-sync-button-warning">${0}</div> </div> `),this.warningText,e)}getMobileSyncControlButton(){return l.Tag.render(Ne||(Ne=Ce` <button class="ui-btn ui-btn-success ui-btn-sm ui-btn-round"> ${0} </button> `),this.mobileSyncButtonText)}setProvider(e){this.provider=e}sendRequestRemoveConnection(e){BX.ajax.runAction("calendar.api.syncajax.removeConnection",{data:{connectionId:e,removeCalendars:"Y"}}).then((()=>{BX.reload()}))}runUpdateInfo(){BX.ajax.runAction("calendar.api.calendarajax.setSectionStatus",{data:{sectionStatus:this.sectionStatusObject}}).then((e=>{this.emit("reDrawCalendarGrid",{})}))}refresh(e){this.connection=e;if(this.connection){this.statusBlock.setStatus(this.connection.getStatus()).setConnections([this.connection])}l.Dom.replace(document.getElementById("status-info-block"),this.statusBlock.getContent())}handleConnectButton(){}getDisconnectButton(){return l.Tag.render(me||(me=Ce` <button class="ui-btn ui-btn-light-border calendar-sync__account-btn">${0}</button> `),l.Loc.getMessage("CAL_SYNC_DISCONNECT_BUTTON"))}getSyncStatusClassName(){return this.provider.getStatus()==="success"?"--complete":"--error"}getContentActiveBodySectionsHeader(){return l.Tag.render(fe||(fe=Ce` <div class="calendar-sync__account-desc">${0}</div> `),l.Loc.getMessage("CAL_SYNC_SELECTED_LIST_TITLE"))}getContentActiveBodySectionsManager(){return l.Tag.render(De||(De=Ce` <div class="calendar-sync__account-check-list"> ${0} </div> `),this.getContentActiveBodySections())}getContentActiveBodySections(){const e=[];this.sectionList.forEach((t=>{e.push(l.Tag.render(Oe||(Oe=Ce` <label class="calendar-sync__account-check-list-label"> <input type="checkbox" class="calendar-sync__account-check-list-input" value="${0}" onclick="${0}" ${0}/> <span class="calendar-sync__account-check-list-text">${0}</span> </label> `),BX.util.htmlspecialchars(t["ID"]),this.onClickCheckSection.bind(this),t["ACTIVE"]==="Y"?"checked":"",BX.util.htmlspecialchars(t["NAME"])))}));return e}showUpdateSectionListNotification(){d.Util.showNotification(l.Loc.getMessage("CAL_SYNC_CALENDAR_LIST_UPDATED"))}handleDisconnectButton(e){if(l.Type.isElementNode(this.disconnectButton)){l.Dom.addClass(this.disconnectButton,["ui-btn-clock","ui-btn-disabled"])}e.preventDefault();this.sendRequestRemoveConnection(this.connection.getId())}deactivateConnection(e){BX.ajax.runAction("calendar.api.syncajax.deactivateConnection",{data:{connectionId:e,removeCalendars:"N"}}).then((()=>{this.provider.closeSlider();this.provider.setStatus(this.provider.STATUS_NOT_CONNECTED);this.provider.getInterfaceUnit().refreshButton();this.provider.getInterfaceUnit().setSyncStatus(this.provider.STATUS_NOT_CONNECTED);this.emit("reDrawCalendarGrid",{})}))}}be.SLIDER_WIDTH=606;be.SLIDER_PREFIX="calendar:connection-sync-";let Me=e=>e,we,Be;class Pe extends be{constructor(e){super(e)}getContentInfoBody(){const e=new ce;const t=e.getWrapper();const n=e.getForm();const s=e.getAddButton();const i=e.getButtonWrapper();const a=this.getContentInfoBodyHeader();s.addEventListener("click",(e=>{BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{click_to_connection_button:"Y",connection_type:this.provider.getType()}});l.Dom.addClass(s,["ui-btn-clock","ui-btn-disabled"]);e.preventDefault();this.sendRequestAddConnection(n)}));l.Dom.append(s,i);l.Dom.append(i,n);l.Dom.append(n,t);return l.Tag.render(we||(we=Me` ${0} ${0} `),a,t)}getContentActiveBody(){const e=new ce({server:this.connection.addParams.server,userName:this.connection.addParams.userName,connectionName:this.connection.connectionName});const t=e.getWrapper();const n=e.getForm();const s=this.getContentActiveBodyHeader();l.Dom.append(n,t);return l.Tag.render(Be||(Be=Me` ${0} ${0} `),s,t)}sendRequestAddConnection(e){const t=new FormData(e);BX.ajax.runAction("calendar.api.syncajax.addConnection",{data:{name:t.get("name"),server:t.get("server"),userName:t.get("user_name"),pass:t.get("password")}}).then((e=>{BX.reload()}),(t=>{const n=e.querySelector("#connect-button");this.showAlertPopup(t.errors[0],n)}))}showAlertPopup(e,t){let n="";if(e.code==="incorrect_parameters"){n=l.Loc.getMessage("CAL_TEXT_ALERT_INCORRECT_PARAMETERS")}else if(e.code==="tech_problem"){n=l.Loc.getMessage("CAL_TEXT_ALERT_TECH_PROBLEM")}else{n=l.Loc.getMessage("CAL_TEXT_ALERT_DEFAULT")}const s=new BX.UI.Dialogs.MessageBox({message:n,title:e.message,buttons:BX.UI.Dialogs.MessageBoxButtons.OK,okCaption:l.Loc.getMessage("CAL_TEXT_BUTTON_RETURN_TO_SETTINGS"),minWidth:358,mediumButtonSize:false,popupOptions:{zIndex:3021,height:166,width:358,className:"calendar-alert-popup-connection"},onOk:()=>{l.Dom.removeClass(t,["ui-btn-clock","ui-btn-disabled"]);return true}});s.show()}}class ke extends Pe{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_CALDAV"),helpDeskCode:"5697365",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_CALDAV_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_CALDAV_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_CALDAV_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_CALDAV_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-caldav",iconPath:"/bitrix/images/calendar/sync/caldav.svg",color:"#1eae43",provider:e,connection:t,popupWithUpdateButton:true})}}let xe=e=>e,Re,We,Ue,He;class $e extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_EXCHANGE"),helpDeskCode:"9860971",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_EXCHANGE_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_EXCHANGE_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_EXCHANGE_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_EXCHANGE_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-office",iconLogoClass:"--exchange",iconPath:"/bitrix/images/calendar/sync/exchange.svg",color:"#54d0df",provider:e,connection:t,popupWithUpdateButton:true})}getContentActiveBody(){return l.Tag.render(Re||(Re=xe` ${0} ${0} ${0} `),this.getContentActiveBodyHeader(),this.getContentBody(),this.getHelpdeskBlock())}getContentActiveBodyHeader(){const e=this.connection.getSyncDate().getTime()/1e3;const t=e?d.Util.formatDateUsable(e)+" "+BX.date.format(d.Util.getTimeFormatShort(),e):"";return l.Tag.render(We||(We=xe` <div class="calendar-sync__account ${0}"> <div class="calendar-sync__account-logo"> <div class="calendar-sync__account-logo--image ${0}"></div> </div> <div class="calendar-sync__account-content"> ${0} <div class="calendar-sync__account-info"> <div class="calendar-sync__account-info--icon --animate"></div> ${0} </div> </div> </div> `),this.getSyncStatusClassName(),this.getLogoIconClass(),BX.util.htmlspecialchars(this.connection.getConnectionName()),t)}getContentBody(){return l.Tag.render(Ue||(Ue=xe` <div class="calendar-sync__account-desc"> ${0} </div> `),l.Loc.getMessage("CAL_EXCHANGE_SELECTED_DESCRIPTION"))}getHelpdeskBlock(){return l.Tag.render(He||(He=xe` <div> <a class="calendar-sync-slider-info-link" href="javascript:void(0);" onclick="${0}"> ${0} </a> </div> `),this.showHelp.bind(this),l.Loc.getMessage("CAL_TEXT_ABOUT_WORK_SYNC"))}}let Xe=e=>e,Ge,Ye,Fe,ze,je,Ke,qe,Ve,Qe,Ze,Je,et,tt,nt,st;class it extends r.EventEmitter{constructor(){super();this.TYPE="undefined";this.SLIDER_NAME="calendar:sync-wizard-slider";this.SLIDER_WIDTH=450;this.LOADER_NAME="calendar:loader";this.cache=new l.Cache.MemoryCache;this.syncStagesList=[];this.accountName="";this.HELPDESK_CODE=11828176;this.MIN_UPDATE_STATE_DELAY=1500;this.CONFETTI_DELAY=1e3;this.setEventNamespace("BX.Calendar.Sync.Interface.SyncWizard");this.BX=window.top.BX||window.BX;this.pullWizardEventHandler=this.handlePullNewEvent.bind(this);this.lastUpdateStateTimestamp=Date.now();this.logoIconClass=""}openSlider(){BX.SidePanel.Instance.open(this.SLIDER_NAME,{contentCallback:e=>new Promise(((e,t)=>{e(this.getContent())})),allowChangeHistory:false,events:{onLoad:()=>{this.displaySyncStages();this.bindButtonsHandlers()},onDestroy:this.handleCloseWizard.bind(this)},cacheable:false,width:this.SLIDER_WIDTH,loader:this.LOADER_NAME});this.slider=BX.SidePanel.Instance.getTopSlider();this.syncIsFinished=false;this.errorStatus=false}getContent(){return l.Tag.render(Ge||(Ge=Xe` <div class="calendar-sync__wrapper calendar-sync__scope"> <div class="calendar-sync__content --border-radius"> <div class="calendar-sync__content-block --space-bottom"> ${0} ${0} ${0} ${0} ${0} ${0} ${0} </div> </div> </div> `),this.getTitleWrapper(),this.getSyncStagesWrapper(),this.getInfoStatusWrapper(),this.getErrorWrapper(),this.getFinalCheckWrapper(),this.getHelpLinkWrapper(),this.getButtonWrapper())}getTitleWrapper(){this.syncTitleWrapper=l.Tag.render(Ye||(Ye=Xe` <div class="calendar-sync__account"> <div class="calendar-sync__account-logo"> <div class="calendar-sync__account-logo--image ${0}"></div> </div> <div class="calendar-sync__account-content"> ${0} <div class="calendar-sync__account-info"> <div class="calendar-sync__account-info--icon --animate"></div> ${0} </div> </div> </div> `),this.getLogoIconClass(),this.getAccountNameNode(),this.getActiveStatusNode());return this.syncTitleWrapper}getSyncStagesWrapper(){this.syncStagesWrapper=l.Tag.render(Fe||(Fe=Xe`<div class="calendar-sync-stages-wrap"></div>`));return this.syncStagesWrapper}getInfoStatusWrapper(){this.infoStatusWrapper=l.Tag.render(ze||(ze=Xe` <div class="calendar-sync__content-block --space-bottom-xl" style="display: none;"> <div class="calendar-sync__notification"> <div class="calendar-sync__notification-title">${0}</div> <div class="calendar-sync__notification-message">${0}</div> </div> </div> `),l.Loc.getMessage("CAL_INFO_STATUS_CONG_1"),l.Loc.getMessage("CAL_INFO_STATUS_CONG_2"));return this.infoStatusWrapper}getErrorWrapper(){this.errorWrapper=l.Tag.render(je||(je=Xe` <div class="calendar-sync__content-block --space-bottom-xl" style="display: none;"> <div class="calendar-sync__error"> <div class="calendar-sync__notification-message"> <div class="calendar-sync__notification-message-inner"> ${0} </div> ${0}</div> </div> </div> `),l.Loc.getMessage("CAL_ERROR_WARN_1"),l.Loc.getMessage("CAL_ERROR_WARN_2"));return this.errorWrapper}getHelpLinkWrapper(){this.helpLinkWrapper=l.Tag.render(Ke||(Ke=Xe` <div class="calendar-sync__content-block" style="display: none;"></div> `));return this.helpLinkWrapper}getFinalCheckWrapper(){this.finalCheckWrapper=l.Tag.render(qe||(qe=Xe` <div class="calendar-sync__content-block" style="display: none;"></div> `));return this.finalCheckWrapper}getButtonWrapper(){this.buttonWrapper=l.Tag.render(Ve||(Ve=Xe` <div style="display: none" class="calendar-sync__content-block --align-center"> <a class="ui-btn ui-btn-lg ui-btn-primary ui-btn-round" data-role="continue_btn"> ${0} </a> <a style="display: none" class="ui-btn ui-btn-lg ui-btn-light-border ui-btn-round" data-role="everything_is_fine_btn"> ${0} </a> <a style="display: none" class="ui-btn ui-btn-lg ui-btn-light-border ui-btn-round" data-role="close_button"> ${0} </a> </div> `),l.Loc.getMessage("CAL_BUTTON_CONTINUE"),l.Loc.getMessage("CAL_BUTTON_EVERYTHING_IS_FINE"),l.Loc.getMessage("CAL_ERROR_CLOSE"));return this.buttonWrapper}getNewEventCardWrapper(){this.newEventCardWrapper=l.Tag.render(Qe||(Qe=Xe` <div class="calendar-sync__content-block --space-bottom" style="display: none;"></div> `));return this.newEventCardWrapper}getSkeletonWrapper(){this.skeletonWrapper=l.Tag.render(Ze||(Ze=Xe` <div class="calendar-sync__content-block --space-bottom"> <div class="calendar-sync__balloon --skeleton"> <div class="calendar-sync__balloon__skeleton-box"> <div class="calendar-sync__balloon__skeleton-inline-box"> <div class="calendar-sync__balloon__skeleton-circle"></div> <div class="calendar-sync__balloon__skeleton-line"></div> </div> <div class="calendar-sync__balloon__skeleton-line"></div> </div> <div class="calendar-sync__content-text">${0}</div> </div> </div> `),this.getSkeletonTitle());return this.skeletonWrapper}getSkeletonTitle(){return""}getExtraInfoWithCheckIcon(){const e=Object.values(this.connectionsProviders).filter((e=>e.mainPanel&&e.status)).length>0;return l.Tag.render(Je||(Je=Xe` <div class="calendar-sync__content-text --icon-check${0}"> ${0} </div> `),e?" --disabled":"",l.Loc.getMessage("CAL_SYNC_INFO_PROMO"))}getAccountNameNode(){if(!l.Type.isElementNode(this.accountNameNode)){this.accountNameNode=l.Tag.render(et||(et=Xe` <div class="calendar-sync__account-title">${0}</div> `),this.getAccountName())}return this.accountNameNode}setAccountName(e){this.accountName=e}getAccountName(){return this.accountName}getActiveStatusNode(){if(!l.Type.isElementNode(this.activeStatusNode)){this.activeStatusNode=l.Tag.render(tt||(tt=Xe` <span class="calendar-active-status-node-carousel"> <span class="calendar-active-status-node-phrase"> ${0} </span> </span> `),l.Loc.getMessage("CAL_STATUS_SYNC_IN_PROGRESS"));this.startStatusCarousel(this.activeStatusNode)}return this.activeStatusNode}startStatusCarousel(e){const t=[l.Loc.getMessage("CAL_STATUS_SYNC_IN_PROGRESS_STATUSES_FIRST"),l.Loc.getMessage("CAL_STATUS_SYNC_IN_PROGRESS_STATUSES_SECOND")];let n=1;this.statusCarouselInterval=setInterval((()=>{const s=e.firstElementChild;if(this.countDots(s.innerText)<3){s.innerText+=".";e.style.width=s.offsetWidth+1+"px";return}if(n<2){n++;s.innerText=s.innerText.slice(0,-3);return}n=1;if(t.length>0){const n=t.shift();this.animateNextStatus(e,n)}else{const t=l.Loc.getMessage("CAL_STATUS_SYNC_IN_PROGRESS_ALMOST_DONE");this.animateNextStatus(e,t);e.style.width="";clearInterval(this.statusCarouselInterval)}}),900)}animateNextStatus(e,t){const n=e.firstElementChild;const s=l.Tag.render(nt||(nt=Xe` <span class="calendar-active-status-node-phrase">${0}</span> `),t);e.append(s);const i=Math.max(s.offsetWidth,n.offsetWidth);e.style.width=i+1+"px";n.style.transition="";n.style.transform=`translateX(-${n.offsetWidth}px)`;s.style.transform=`translateX(-${n.offsetWidth}px)`;setTimeout((()=>{n.remove();s.style.transition="none";s.style.transform=""}),300)}countDots(e){return(e.match(/\./g)||[]).length}setSyncStages(){this.syncStagesList=[]}getSyncStages(){return this.syncStagesList}getHelpDeskCode(){return this.HELPDESK_CODE}displaySyncStages(){l.Dom.clean(this.syncStagesWrapper);this.getSyncStages().forEach((e=>{e.renderTo(this.syncStagesWrapper)}))}bindButtonsHandlers(){const e=this.buttonWrapper.querySelector('.ui-btn[data-role="continue_btn"]');if(l.Type.isElementNode(e)){l.Event.bind(e,"click",this.handleContinueButtonClick.bind(this))}const t=this.buttonWrapper.querySelector('.ui-btn[data-role="everything_is_fine_btn"]');if(l.Type.isElementNode(t)){l.Event.bind(t,"click",this.handleFinalCloseButtonClick.bind(this))}}handleContinueButtonClick(){this.showFinalStage()}showFinalStage(){this.syncIsFinished=true;const e=this.buttonWrapper.querySelector('.ui-btn[data-role="everything_is_fine_btn"]');if(l.Type.isElementNode(e)){e.style.display=""}const t=this.buttonWrapper.querySelector('.ui-btn[data-role="continue_btn"]');if(l.Type.isElementNode(t)){t.style.display="none"}this.showFinalCheckWrapper();this.showHelpLinkWrapper();this.hideSyncStagesWrapper();this.hideInfoStatusWrapper();d.Util.getBX().Event.EventEmitter.subscribe("onPullEvent-calendar",this.pullWizardEventHandler);this.emit("startWizardWaitingMode")}isSyncFinished(){return this.syncIsFinished}handleFinalCloseButtonClick(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:sync-slider","calendar:section-slider",this.SLIDER_NAME].includes(e.getUrl())){e.close()}}));BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"complete_wizard_close",connection_type:this.TYPE}})}handleUpdateState(e){const t=Date.now();if(t-this.lastUpdateStateTimestamp>this.MIN_UPDATE_STATE_DELAY){this.updateState(e)}else{setTimeout((()=>{this.handleUpdateState(e)}),this.MIN_UPDATE_STATE_DELAY)}}updateState(e){if(this.errorStatus){return}if(e.stage==="connection_created"&&e.accountName&&l.Type.isElementNode(this.accountNameNode)){this.setAccountName(e.accountName);this.accountNameNode.innerHTML=l.Text.encode(e.accountName)}this.lastUpdateStateTimestamp=Date.now()}setActiveStatusFinished(){this.activeStatusNode.style.width="";clearInterval(this.statusCarouselInterval);this.syncIsFinished=true;if(l.Type.isElementNode(this.activeStatusNode)){this.activeStatusNode.innerHTML=l.Text.encode(l.Loc.getMessage("CAL_STATUS_SYNC_SUCCESS").toUpperCase());l.Dom.remove(this.syncTitleWrapper.querySelector(".calendar-sync__account-info--icon"))}}showButtonWrapper(){if(l.Type.isElementNode(this.buttonWrapper)){this.buttonWrapper.style.display=""}}hideButtonWrapper(){if(l.Type.isElementNode(this.buttonWrapper)){this.buttonWrapper.style.display="none"}}showInfoStatusWrapper(){if(l.Type.isElementNode(this.infoStatusWrapper)){this.infoStatusWrapper.style.display=""}}hideInfoStatusWrapper(){if(l.Type.isElementNode(this.infoStatusWrapper)){this.infoStatusWrapper.style.display="none"}}showErrorWrapper(){if(l.Type.isElementNode(this.errorWrapper)){this.errorWrapper.style.display=""}}hideErrorWrapper(){if(l.Type.isElementNode(this.errorWrapper)){this.errorWrapper.style.display="none"}}showFinalCheckWrapper(){if(l.Type.isElementNode(this.finalCheckWrapper)){this.finalCheckWrapper.style.display=""}}hideFinalCheckWrapper(){if(l.Type.isElementNode(this.finalCheckWrapper)){this.finalCheckWrapper.style.display="none"}}showSyncStagesWrapper(){if(l.Type.isElementNode(this.syncStagesWrapper)){this.syncStagesWrapper.style.display=""}}hideSyncStagesWrapper(){if(l.Type.isElementNode(this.syncStagesWrapper)){this.syncStagesWrapper.style.display="none"}}showHelpLinkWrapper(){if(l.Type.isElementNode(this.helpLinkWrapper)){this.helpLinkWrapper.style.display=""}}hideHelpLinkWrapper(){if(l.Type.isElementNode(this.helpLinkWrapper)){this.helpLinkWrapper.style.display="none"}}handlePullNewEvent(e){if(e&&l.Type.isFunction(e.getData)){const t={command:e.getData()[0],...e.getData()[1]};if(t.command==="edit_event"&&t.newEvent){if(l.Type.isElementNode(this.finalCheckWrapper)){const e=this.finalCheckWrapper.querySelector(".calendar-sync__balloon");if(l.Type.isElementNode(e)&&l.Dom.hasClass(e,"--progress")){l.Dom.removeClass(e,"--progress");l.Dom.addClass(e,"--done")}}const e=new i.Entry({data:t.fields});this.displayNewEvent(e);d.Util.getBX().Event.EventEmitter.unsubscribe("onPullEvent-calendar",this.pullWizardEventHandler);const n=this.buttonWrapper.querySelector('.ui-btn[data-role="everything_is_fine_btn"]');if(l.Type.isElementNode(n)){n.innerHTML=l.Text.encode(l.Loc.getMessage("CAL_BUTTON_KEEP_GOING"));l.Dom.addClass(n,"ui-btn-primary");l.Dom.removeClass(n,"ui-btn-light-border")}this.emit("endWizardWaitingMode")}}}displayNewEvent(e){if(l.Type.isElementNode(this.skeletonWrapper)){l.Dom.remove(this.skeletonWrapper)}if(l.Type.isElementNode(this.newEventCardWrapper)){this.newEventCardWrapper.style.display="";l.Dom.clean(this.newEventCardWrapper);this.newEventCardWrapper.appendChild(this.getNewEventCard(e))}}getNewEventCard(e){const t=new Date(e.from.getTime()-(parseInt(e.data["~USER_OFFSET_FROM"])||0)*1e3);const n=new Date(e.to.getTime()-(parseInt(e.data["~USER_OFFSET_TO"])||0)*1e3);const s=t.getTime();const i=BX.date.format(d.Util.getDayMonthFormat(),s/1e3);const a=d.Util.formatTime(t.getHours(),t.getMinutes());const o=d.Util.formatTime(n.getHours(),n.getMinutes());const r=e.isFullDay()?l.Loc.getMessage("CAL_WIZARD_FULL_DAY"):a+" - "+o;this.newEventCard=l.Tag.render(st||(st=Xe` <div class="calendar-sync__balloon --calendar ${0}"> <div class="calendar-sync__content-text"> ${0} <span class="calendar-date-year"> ${0} </span> </div> <div class="calendar-sync__content-text">${0}</div> <div class="calendar-sync__time-box"> <div class="calendar-sync__time"> <div class="calendar-sync__time-date">${0}</div> <div class="calendar-sync__time-line"></div> </div> <div class="calendar-sync__time-notification-box"> <div class="calendar-sync__content-text">${0}</div> <div class="calendar-sync__content-text">${0}</div> </div> <div class="calendar-sync__time"> <div class="calendar-sync__time-date">${0}</div> <div class="calendar-sync__time-line"></div> </div> </div> </div> `),e.isFullDay()?"--fullday-event":"",i,BX.date.format("Y",s/1e3),BX.date.format("l",s/1e3),a,l.Text.encode(e.getName()),r,o);return this.newEventCard}handleCloseWizard(){this.slider=null;clearInterval(this.statusCarouselInterval);d.Util.getBX().Event.EventEmitter.unsubscribe("onPullEvent-calendar",this.pullWizardEventHandler);this.emit("onClose")}showConfetti(){setTimeout((()=>{const e=d.Util.getBX();e.UI.Confetti.fire({particleCount:240,spread:170,origin:{y:.3,x:.9},zIndex:e.SidePanel.Instance.getTopSlider().getZindex()+1})}),this.CONFETTI_DELAY)}getLogoIconClass(){return this.logoIconClass}getSlider(){return this.slider}setErrorState(){this.errorStatus=true;this.showErrorWrapper();this.hideInfoStatusWrapper();this.hideSyncStagesWrapper();this.showButtonWrapper();l.Dom.addClass(this.syncTitleWrapper,"--error");if(l.Type.isElementNode(this.activeStatusNode)){this.activeStatusNode.innerHTML=l.Text.encode(l.Loc.getMessage("CAL_STATUS_SYNC_ERROR").toUpperCase())}const e=this.buttonWrapper.querySelector('.ui-btn[data-role="close_button"]');if(l.Type.isElementNode(e)){e.style.display="";l.Event.bind(e,"click",(()=>{BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:sync-slider","calendar:section-slider",this.SLIDER_NAME].includes(e.getUrl())){e.close()}}));BX.reload()}))}const t=this.buttonWrapper.querySelector('.ui-btn[data-role="continue_btn"]');if(l.Type.isElementNode(t)){t.style.display="none"}}}let at=e=>e,ot;class rt{constructor(e){this.name=e.name||"";this.title=e.title||"";this.doneStatus=false}renderTo(e){if(l.Type.isElementNode(e)){e.appendChild(this.getContent())}r.EventEmitter.emit("BX.Calendar.Sync.Interface.SyncStageUnit:onRenderDone")}getContent(){this.contentNode=l.Tag.render(ot||(ot=at` <div class="calendar-sync__content-block --space-bottom-xl"> <div class="calendar-sync__content-text --icon-check --disabled">${0}</div> </div> `),this.title);return this.contentNode}setDone(){this.doneStatus=true;l.Dom.removeClass(this.contentNode.querySelector(".--icon-check"),"--disabled")}setUndone(){this.doneStatus=false;l.Dom.addClass(this.contentNode.querySelector(".--icon-check"),"--disabled")}}let ct=e=>e,lt,dt,ht;class pt extends it{constructor(){super();this.TYPE="google";this.SLIDER_NAME="calendar:sync-wizard-google";this.STAGE_1_CODE="google-to-b24";this.STAGE_2_CODE="b24-to-google";this.STAGE_3_CODE="b24-events-to-google";this.GOOGLE_ON_MOBILE_HELPDESK=15456338;this.setEventNamespace("BX.Calendar.Sync.Interface.GoogleSyncWizard");this.setAccountName(l.Loc.getMessage("CALENDAR_TITLE_GOOGLE"));this.setSyncStages();this.logoIconClass="--google"}getHelpLinkWrapper(){let e;this.helpLinkWrapper=l.Tag.render(lt||(lt=ct` <div class="calendar-sync__content-block --align-center --space-bottom" style="display: none;"> ${0} </div> `),e=l.Tag.render(dt||(dt=ct`<a href="#" class="calendar-sync__content-link"> ${0} </a>`),l.Loc.getMessage("CAL_SYNC_NO_GOOGLE_ON_PHONE")));l.Event.bind(e,"click",(()=>{const e=d.Util.getBX().Helper;if(e){e.show("redirect=detail&code="+this.GOOGLE_ON_MOBILE_HELPDESK)}}));return this.helpLinkWrapper}getFinalCheckWrapper(){this.finalCheckWrapper=l.Tag.render(ht||(ht=ct` <div style="display: none;"> <div class="calendar-sync__content-block --space-bottom"> <div class="calendar-sync__balloon --progress"> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-done">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-done">${0}</div> <div class="calendar-sync__balloon--icon"></div> </div> </div> ${0} ${0} </div> `),l.Loc.getMessage("CAL_SYNC_LETS_CHECK"),l.Loc.getMessage("CAL_SYNC_CREATE_EVENT_GOOGLE"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_ADDED_GOOGLE"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_YOULL_SEE"),this.getSkeletonWrapper(),this.getNewEventCardWrapper());return this.finalCheckWrapper}setSyncStages(){this.syncStagesList=[new rt({name:this.STAGE_1_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_GOOGLE_1")}),new rt({name:this.STAGE_2_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_GOOGLE_2")}),new rt({name:this.STAGE_3_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_GOOGLE_3")})]}updateState(e){super.updateState(e);this.getSyncStages().forEach((t=>{if(e.stage==="connection_created"&&t.name===this.STAGE_1_CODE){t.setDone()}else if(e.stage==="import_finished"&&(t.name===this.STAGE_1_CODE||t.name===this.STAGE_2_CODE)){t.setDone()}else if(e.stage==="export_finished"){t.setDone();if(t.name===this.STAGE_3_CODE){this.setActiveStatusFinished();this.showButtonWrapper();this.showInfoStatusWrapper();this.showConfetti();this.emit("onConnectionCreated")}}}))}getSkeletonTitle(){return l.Loc.getMessage("CAL_SYNC_NEW_EVENT_GOOGLE_TITLE")}}class ut extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_GOOGLE"),helpDeskCode:"6030429",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_GOOGLE_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_GOOGLE_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_GOOGLE_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_GOOGLE_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-google",iconPath:"/bitrix/images/calendar/sync/google.svg",iconLogoClass:"--google",color:"#387ced",provider:e,connection:t,popupWithUpdateButton:true});this.HANDLE_CONNECTION_DELAY=500;this.sectionStatusObject={};this.sectionList=[];this.handleSuccessConnectionDebounce=l.Runtime.debounce(this.handleSuccessConnection,this.HANDLE_CONNECTION_DELAY,this)}createConnection(){BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"createConnection",click_to_connection_button:"Y",connection_type:"google"}});BX.util.popup(this.provider.getSyncLink(),500,600);l.Event.bind(window,"hashchange",this.handleSuccessConnectionDebounce);l.Event.bind(window,"message",this.handleSuccessConnectionDebounce)}handleSuccessConnection(e){if(window.location.hash==="#googleAuthSuccess"||e.data.title==="googleAuthSuccess"){d.Util.removeHash();this.provider.setWizardSyncMode(true);this.provider.saveConnection();this.openSyncWizard();this.provider.setStatus(this.provider.STATUS_SYNCHRONIZING);this.provider.getInterfaceUnit().refreshButton()}}getSectionsForGoogle(){return new Promise((e=>{BX.ajax.runAction("calendar.api.syncajax.getAllSectionsForGoogle",{data:{connectionId:this.connection.addParams.id}}).then((t=>{this.sectionList=t.data;e(t.data)}),(t=>{e(t.errors)}))}))}onClickCheckSection(e){this.sectionStatusObject[e.target.value]=e.target.checked;this.runUpdateInfo();this.showUpdateSectionListNotification()}showAlertPopup(){const e=new c.MessageBox({className:this.id,message:l.Loc.getMessage("GOOGLE_IS_NOT_CALDAV_SETTINGS_WARNING_MESSAGE"),width:500,offsetLeft:60,offsetTop:5,padding:7,onOk:()=>{e.close()},okCaption:"OK",buttons:BX.UI.Dialogs.MessageBoxButtons.OK,popupOptions:{zIndexAbsolute:4020,autoHide:true,animation:"fading-slide"}});e.show()}handleConnectButton(){if(this.provider.hasSetSyncGoogleSettings()){this.createConnection()}else{this.showAlertPopup()}}openSyncWizard(){if(!this.wizard){this.wizard=new pt;this.wizard.openSlider();this.provider.setActiveWizard(this.wizard)}}sendRequestRemoveConnection(e){this.deactivateConnection(e)}}let gt=e=>e,_t,Ct,vt,Et,yt,St,Tt,It,Lt,At,Nt;class mt extends r.EventEmitter{constructor(e={}){super();this.zIndex=3100;this.DOM={};this.appPasswordTemplate="xxxx-xxxx-xxxx-xxxx";this.type=e.type;this.setEventNamespace("BX.Calendar.Sync.Icloud");this.keyHandler=this.handleKeyPress.bind(this);this.checkOutsideClickClose=this.checkOutsideClickClose.bind(this);this.outsideMouseDownClose=this.outsideMouseDownClose.bind(this);this.initAlertBlock()}show(){this.popup=new h.Popup({className:"calendar-sync__auth-popup calendar-sync__scope",titleBar:l.Loc.getMessage("CAL_ICLOUD_AUTH_TITLE"),draggable:true,content:this.getContainer(),width:475,animation:"fading-slide",zIndexAbsolute:this.zIndex,cacheable:false,closeByEsc:true,closeIcon:true,contentBackground:"#fff",overlay:{opacity:15},lightShadow:true,buttons:[new BX.UI.Button({text:l.Loc.getMessage("CAL_ICLOUD_CONNECT_BUTTON"),className:`ui-btn ui-btn-md ui-btn-success ui-btn-round`,events:{click:this.authorize.bind(this)}}),new BX.UI.Button({text:l.Loc.getMessage("EC_SEC_SLIDER_CANCEL"),className:"ui-btn ui-btn-md ui-btn-light-border ui-btn-round",events:{click:this.close.bind(this)}})],events:{onPopupClose:this.close.bind(this)}});this.popup.show();l.Event.bind(document,"keydown",this.keyHandler);l.Event.bind(document,"mouseup",this.checkOutsideClickClose);l.Event.bind(document,"mousedown",this.outsideMouseDownClose)}authorize(){if(this.isFormDataValid()){const e=this.popup.getButtons()[0];e.setClocking(true);e.setDisabled(true);const t=this.popup.getButtons()[1];t.setDisabled(true);if(this.DOM.container.contains(this.DOM.alertBlock)){l.Dom.remove(this.DOM.alertBlock)}this.emit("onSubmit",new r.BaseEvent({data:{appleId:this.DOM.appleIdInput.value.toString().trim(),appPassword:this.DOM.appPasswordInput.value.toString().trim()}}))}else{this.highlightInvalidFormData()}}isFormDataValid(){return this.DOM.appleIdInput.value.toString().trim()!==""&&this.DOM.appPasswordInput.value.toString().trim()!==""}highlightInvalidFormData(){const e=this.popup.getButtons()[0];e.setClocking(false);e.setDisabled(false);const t=this.popup.getButtons()[1];t.setDisabled(false);if(this.DOM.appleIdInput.value.toString().trim()===""){this.highlightInvalidAppleIdInput()}if(this.DOM.appPasswordInput.value.toString().trim()===""){this.highlightInvalidPasswordInput()}}highlightInvalidAppleIdInput(){l.Dom.addClass(this.DOM.appleIdInput,"calendar-field-string-error");const e=()=>{l.Dom.removeClass(this.DOM.appleIdInput,"calendar-field-string-error");l.Event.unbind(this.DOM.appleIdInput,"change",e);l.Event.unbind(this.DOM.appleIdInput,"keyup",e)};l.Event.bind(this.DOM.appleIdInput,"change",e);l.Event.bind(this.DOM.appleIdInput,"keyup",e)}highlightInvalidPasswordInput(){l.Dom.addClass(this.DOM.appPasswordInput,"calendar-field-string-error");const e=()=>{l.Dom.removeClass(this.DOM.appPasswordInput,"calendar-field-string-error");l.Event.unbind(this.DOM.appPasswordInput,"change",e);l.Event.unbind(this.DOM.appPasswordInput,"keyup",e)};l.Event.bind(this.DOM.appPasswordInput,"change",e);l.Event.bind(this.DOM.appPasswordInput,"keyup",e);this.DOM.appPasswordInput.focus()}enableSaveButton(){const e=this.popup.getButtons()[0];e.setDisabled(false);const t=this.popup.getButtons()[1];t.setDisabled(false)}getContainer(){this.DOM.container=l.Tag.render(_t||(_t=gt` <div> ${0} <div class="calendar-sync__auth-popup--row" id="calendar-apple-id-block"> ${0} ${0} ${0} </div> <div class="calendar-sync__auth-popup--row" id="calendar-apple-pass-block"> <div class="calendar-sync__auth-popup--label-block"> ${0} ${0} </div> <div class="ui-ctl ui-ctl-w100 ui-ctl-after-icon"> ${0} ${0} </div> ${0} </div> </div> `),this.getAppleInfoBlock(),this.getAppleIdTitle(),this.getAppleIdInput(),this.getAppleIdError(),this.getAppPasswordTitle(),this.getLearnMoreButton(),this.getAppPasswordInput(),this.getShowHidePasswordIcon(),this.getAppPasswordError());return this.DOM.container}getAppleInfoBlock(){if(!this.DOM.appleInfo){this.DOM.appleInfo=l.Tag.render(Ct||(Ct=gt` <div class="calendar-sync__auth-popup--info"> <div class="calendar-sync__auth-popup--logo-image --icloud"></div> <div class="calendar-sync__auth-popup--logo-text">${0}</div> </div> `),l.Loc.getMessage("CAL_ICLOUD_INFO_BLOCK"))}return this.DOM.appleInfo}getAppleIdTitle(){if(!this.DOM.appleIdTitle){this.DOM.appleIdTitle=l.Tag.render(vt||(vt=gt` <p class="calendar-sync__auth-popup--label-text"> ${0} </p> `),l.Loc.getMessage("CAL_ICLOUD_APPLE_ID_PLACEHOLDER"))}return this.DOM.appleIdTitle}getAppPasswordTitle(){if(!this.DOM.appPasswordTitle){this.DOM.appPasswordTitle=l.Tag.render(Et||(Et=gt` <p class="calendar-sync__auth-popup--label-text"> ${0} </p> `),l.Loc.getMessage("CAL_ICLOUD_PASS_PLACEHOLDER"))}return this.DOM.appPasswordTitle}getAppleIdError(){if(!this.DOM.appleIdError){this.DOM.appleIdError=l.Tag.render(yt||(yt=gt` <div class="calendar-sync__auth-popup--label-text --error"> ${0} </div> `),l.Loc.getMessage("CAL_ICLOUD_APPLE_ID_ERROR"))}return this.DOM.appleIdError}getAppPasswordError(){if(!this.DOM.appPasswordError){this.DOM.appPasswordError=l.Tag.render(St||(St=gt` <div class="calendar-sync__auth-popup--label-text --error"> ${0} </div> `),l.Loc.getMessage("CAL_ICLOUD_APP_PASSWORD_ERROR",{"#LINK_START#":'<a href="#" data-role="open-helpdesk-password">',"#LINK_END#":"</a>"}));const e=this.DOM.appPasswordError.querySelector('a[data-role="open-helpdesk-password"]');if(e){l.Event.bind(e,"click",this.openHelpDesk.bind(this))}}return this.DOM.appPasswordError}getAppleIdInput(){if(!this.DOM.appleIdInput){this.DOM.appleIdInput=l.Tag.render(Tt||(Tt=gt` <input type="text" placeholder="${0}" class="calendar-field-string ui-ctl-element" /> `),l.Loc.getMessage("CAL_ICLOUD_AUTH_EMAIL_PLACEHOLDER"));this.DOM.appleIdInput.onfocus=()=>{if(l.Dom.hasClass(this.DOM.appleIdInput,"calendar-field-string-error")){l.Dom.removeClass(this.DOM.appleIdInput,"calendar-field-string-error");l.Dom.removeClass(this.DOM.appleIdError,"show")}};this.DOM.appleIdInput.onblur=()=>{if(!this.validateAppleIdInput()&&!l.Dom.hasClass(this.DOM.appleIdInput,"calendar-field-string-error")){l.Dom.addClass(this.DOM.appleIdInput,"calendar-field-string-error");l.Dom.addClass(this.DOM.appleIdError,"show")}}}return this.DOM.appleIdInput}getAppPasswordInput(){if(!this.DOM.appPasswordInput){this.DOM.appPasswordInput=l.Tag.render(It||(It=gt` <input type="password" placeholder="${0}" class="calendar-field-string ui-ctl-element" required maxlength="19" /> `),l.Loc.getMessage("CAL_ICLOUD_AUTH_APPPASS_PLACEHOLDER"));l.Event.bind(this.DOM.appPasswordInput,"input",this.validateAppPasswordInput.bind(this))}return this.DOM.appPasswordInput}getShowHidePasswordIcon(){if(!this.DOM.showHidePasswordIcon){this.DOM.showHidePasswordIcon=l.Tag.render(Lt||(Lt=gt` <div class="ui-ctl-after calendar-sync__auth-popup--icon-adjust-password"></div> `));l.Event.bind(this.DOM.showHidePasswordIcon,"click",this.switchPasswordVisibility.bind(this))}return this.DOM.showHidePasswordIcon}getLearnMoreButton(){if(!this.DOM.learnMoreButton){this.DOM.learnMoreButton=l.Tag.render(At||(At=gt` <span class="calendar-sync__auth-popup--learn-more">${0}</span> `),l.Loc.getMessage("CAL_ICLOUD_AUTH_APPPASS_ABOUT"));l.Event.bind(this.DOM.learnMoreButton,"click",this.openHelpDesk.bind(this))}return this.DOM.learnMoreButton}initAlertBlock(){if(!this.DOM.alertBlock){this.DOM.alertBlock=l.Tag.render(Nt||(Nt=gt` <div class="ui-alert ui-alert-danger calendar-sync__auth-error"> <span class="ui-alert-message">${0}</span> </div> `),l.Loc.getMessage("CAL_ICLOUD_AUTH_ERROR"))}}showErrorAuthorizationAlert(){this.highlightInvalidAppleIdInput();this.highlightInvalidPasswordInput();this.enableSaveButton();if(!this.DOM.container.contains(this.DOM.alertBlock)){l.Dom.append(this.DOM.alertBlock,this.DOM.container)}}validateAppleIdInput(){const e=/^[a-zA-Z\d.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z\d-]+(?:\.[a-zA-Z\d-]+)*$/;const t=this.DOM.appleIdInput.value.toString().trim();if(t===""){return true}return e.test(t)}validateAppPasswordInput(){const e=/^[a-z]{4}-[a-z]{4}-[a-z]{4}-[a-z]{4}$/;const t=this.completeWithTemplate(this.DOM.appPasswordInput.value.toString().trim());if(e.test(t)){l.Dom.removeClass(this.DOM.appPasswordInput,"calendar-field-string-error");l.Dom.removeClass(this.DOM.appPasswordError,"show")}else{l.Dom.addClass(this.DOM.appPasswordInput,"calendar-field-string-error");l.Dom.addClass(this.DOM.appPasswordError,"show")}}switchPasswordVisibility(){if(l.Dom.hasClass(this.DOM.showHidePasswordIcon,"--hide")){this.DOM.appPasswordInput.type="password";l.Dom.removeClass(this.DOM.showHidePasswordIcon,"--hide")}else{this.DOM.appPasswordInput.type="text";l.Dom.addClass(this.DOM.showHidePasswordIcon,"--hide")}}clearForm(){this.DOM.appPasswordInput.value="";this.DOM.appleIdInput.value="";if(l.Dom.hasClass(this.DOM.appleIdInput,"calendar-field-string-error")){l.Dom.removeClass(this.DOM.appleIdInput,"calendar-field-string-error")}if(l.Dom.hasClass(this.DOM.appPasswordInput,"calendar-field-string-error")){l.Dom.removeClass(this.DOM.appPasswordInput,"calendar-field-string-error")}if(l.Dom.hasClass(this.DOM.appleIdError,"show")){l.Dom.removeClass(this.DOM.appleIdError,"show")}if(l.Dom.hasClass(this.DOM.appPasswordError,"show")){l.Dom.removeClass(this.DOM.appPasswordError,"show")}}completeWithTemplate(e){const t=this.appPasswordTemplate.slice(e.length,this.appPasswordTemplate.length);e+=t;return e}openHelpDesk(){const e="15426356";top.BX.Helper.show("redirect=detail&code="+e);BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"openHelpDesk",click_to_helpdesk_button:"Y",connection_type:"icloud"}})}handleKeyPress(e){if(e.keyCode===d.Util.getKeyCode("enter")){this.authorize()}else if(e.keyCode===d.Util.getKeyCode("escape")){this.close()}}checkOutsideClickClose(e){let t=e.target||e.srcElement;this.outsideMouseUp=!t.closest("div.popup-window");if(this.outsideMouseUp&&this.outsideMouseDown&&this.checkTopSlider()){this.close()}}outsideMouseDownClose(e){let t=e.target||e.srcElement;this.outsideMouseDown=!t.closest("div.popup-window")}close(){if(this.popup){this.popup.destroy()}l.Event.unbind(document,"keydown",this.keyHandler);l.Event.unbind(document,"mouseup",this.checkOutsideClickClose);l.Event.unbind(document,"mousedown",this.outsideMouseDownClose);this.clearForm()}checkTopSlider(){return!d.Util.getBX().SidePanel.Instance.getTopSlider()}}let ft=e=>e,Dt;class Ot extends it{constructor(){super();this.TYPE="icloud";this.SLIDER_NAME="calendar:sync-wizard-icloud";this.STAGE_1_CODE="icloud-to-b24";this.STAGE_2_CODE="b24-events-to-icloud";this.STAGE_3_CODE="b24-to-icloud";this.setEventNamespace("BX.Calendar.Sync.Interface.IcloudSyncWizard");this.setAccountName(l.Loc.getMessage("CALENDAR_TITLE_ICLOUD"));this.setSyncStages();this.logoIconClass="--icloud"}getHelpLinkWrapper(){return""}getFinalCheckWrapper(){this.finalCheckWrapper=l.Tag.render(Dt||(Dt=ft` <div style="display: none;"> <div class="calendar-sync__content-block --space-bottom"> <div class="calendar-sync__balloon --progress"> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-done">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-done">${0}</div> <div class="calendar-sync__balloon--icon"></div> </div> </div> ${0} ${0} </div> `),l.Loc.getMessage("CAL_SYNC_LETS_CHECK"),l.Loc.getMessage("CAL_SYNC_CREATE_EVENT_ICLOUD"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_ADDED_FROM_ICLOUD"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_YOULL_SEE"),this.getSkeletonWrapper(),this.getNewEventCardWrapper());return this.finalCheckWrapper}setSyncStages(){this.syncStagesList=[new rt({name:this.STAGE_1_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_ICLOUD_1")}),new rt({name:this.STAGE_2_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_ICLOUD_2")}),new rt({name:this.STAGE_3_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_ICLOUD_3")})]}updateState(e){super.updateState(e);this.getSyncStages().forEach((t=>{if(e.stage==="connection_created"&&t.name===this.STAGE_1_CODE){t.setDone()}else if(e.stage==="import_finished"&&(t.name===this.STAGE_1_CODE||t.name===this.STAGE_2_CODE)){t.setDone()}else if(e.stage==="export_finished"){t.setDone();if(t.name===this.STAGE_3_CODE){this.setActiveStatusFinished();this.showButtonWrapper();this.showInfoStatusWrapper();this.showConfetti();this.emit("onConnectionCreated")}}}))}getSkeletonTitle(){return l.Loc.getMessage("CAL_SYNC_NEW_EVENT_ICLOUD_TITLE")}}let bt=e=>e,Mt;class wt{constructor(e={}){this.zIndex=3100;this.DOM={};this.authDialog=e.authDialog}show(){this.popup=new h.Popup({className:"calendar-sync__auth-popup calendar-sync__scope",titleBar:l.Loc.getMessage("CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_TITLE"),width:500,draggable:true,content:this.getContainer(),cacheable:false,closeByEsc:true,closeIcon:true,contentBackground:"#fff",overlay:{opacity:15},buttons:[new BX.UI.Button({text:l.Loc.getMessage("CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_LEARN_MORE"),className:"ui-btn ui-btn-md ui-btn-primary",events:{click:this.openHelpDesk.bind(this)}}),new BX.UI.Button({text:l.Loc.getMessage("CAL_BUTTON_CONTINUE"),className:"ui-btn ui-btn-md ui-btn-light",events:{click:this.openAuthDialog.bind(this)}})],events:{onPopupClose:this.close.bind(this)}});this.popup.show()}getContainer(){this.DOM.container=l.Tag.render(Mt||(Mt=bt` <div> ${0} </div> `),this.getAlertInformation());return this.DOM.container}getAlertInformation(){this.DOM.alertBlock=new BX.UI.Alert({text:l.Loc.getMessage("CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_INFO"),color:BX.UI.Alert.Color.WARNING,icon:BX.UI.Alert.Icon.INFO});const e=this.DOM.alertBlock.getContainer();const t=e.querySelector(".ui-alert-message");l.Dom.addClass(t,"calendar-sync__alert-popup--text");return e}openHelpDesk(){const e="16020988";top.BX.Helper.show("redirect=detail&code="+e)}disableConnection(){BX.ajax.runAction("calendar.api.syncajax.disableIphoneOrMacConnection").then((()=>{this.authDialog.show();this.close();d.Util.setIphoneConnectionStatus(false);d.Util.setMacConnectionStatus(false)}))}openAuthDialog(){this.authDialog.show();this.close()}close(){if(this.popup){this.popup.destroy()}}}class Bt extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_ICLOUD"),helpDeskCode:"6030429",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_ICLOUD_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_ICLOUD_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_ICLOUD_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-icloud",iconPath:"/bitrix/images/calendar/sync/icloud.svg",iconLogoClass:"--icloud",color:"#95a0af",provider:e,connection:t,popupWithUpdateButton:true});this.sectionStatusObject={};this.sectionList=[]}createConnection(e){BX.ajax.runAction("calendar.api.syncajax.createIcloudConnection",{data:{appleId:e.appleId,appPassword:e.appPassword}}).then((t=>{const n=t.data;if(n.status==="success"&&n.connectionId){this.openSyncWizard(e.appleId);this.syncCalendarsWithIcloud(n.connectionId)}}),(e=>{const t=e.data;if(t.status==="incorrect_app_pass"){BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"createConnection",wrong_app_pass:"Y",connection_type:"icloud"}})}this.authDialog.showErrorAuthorizationAlert()}))}syncCalendarsWithIcloud(e){this.authDialog.close();return new Promise((t=>{BX.ajax.runAction("calendar.api.syncajax.syncIcloudConnection",{data:{connectionId:e}}).then((n=>{this.provider.setStatus(this.provider.STATUS_SUCCESS);if(e){this.provider.getConnection().setId(e);this.provider.getConnection().setStatus(true);this.provider.getConnection().setConnected(true);this.provider.getConnection().setSyncDate(new Date)}t(n.data)}),(e=>{this.provider.setStatus(this.provider.STATUS_FAILED);this.provider.setWizardState({status:this.provider.ERROR_CODE,vendorName:this.provider.type});t(e.errors)}))}))}getSectionsForIcloud(){return new Promise((e=>{BX.ajax.runAction("calendar.api.syncajax.getAllSectionsForIcloud",{data:{connectionId:this.connection.addParams.id}}).then((t=>{this.sectionList=t.data;e(t.data)}),(t=>{e(t.errors)}))}))}onClickCheckSection(e){this.sectionStatusObject[e.target.value]=e.target.checked;this.runUpdateInfo();this.showUpdateSectionListNotification()}handleConnectButton(){BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"createConnection",click_to_connection_button:"Y",connection_type:"icloud"}});this.initPopup();if(d.Util.isIphoneConnected()||d.Util.isMacConnected()){this.alertSyncPopup.show()}else{this.authDialog.show()}}initPopup(){if(!this.authDialog){this.authDialog=new mt;r.EventEmitter.unsubscribeAll("BX.Calendar.Sync.Icloud:onSubmit");r.EventEmitter.subscribe("BX.Calendar.Sync.Icloud:onSubmit",(e=>{this.createConnection(e.data)}))}if(!this.alertSyncPopup){this.alertSyncPopup=new wt({authDialog:this.authDialog})}}openSyncWizard(e){this.provider.setWizardSyncMode(true);this.wizard=new Ot;this.wizard.openSlider();this.provider.setActiveWizard(this.wizard);r.EventEmitter.subscribeOnce("BX.Calendar.Sync.Interface.SyncStageUnit:onRenderDone",(()=>{this.wizard.updateState({stage:"connection_created",vendorName:"icloud",accountName:e})}))}sendRequestRemoveConnection(e){this.deactivateConnection(e)}}let Pt=e=>e,kt;class xt extends it{constructor(){super();this.TYPE="office365";this.SLIDER_NAME="calendar:sync-wizard-office365";this.STAGE_1_CODE="office365-to-b24";this.STAGE_2_CODE="sections_sync_finished";this.STAGE_3_CODE="events_sync_finished";this.setEventNamespace("BX.Calendar.Sync.Interface.Office365SyncWizard");this.setAccountName(l.Loc.getMessage("CALENDAR_TITLE_OFFICE365"));this.setSyncStages();this.logoIconClass="--office365"}getHelpLinkWrapper(){return""}getFinalCheckWrapper(){this.finalCheckWrapper=l.Tag.render(kt||(kt=Pt` <div style="display: none;"> <div class="calendar-sync__content-block --space-bottom"> <div class="calendar-sync__balloon --progress"> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-title --show-for-done">${0}</div> <div class="calendar-sync__content-text calendar-sync__content-subtitle --show-for-done">${0}</div> <div class="calendar-sync__balloon--icon"></div> </div> </div> ${0} ${0} </div> `),l.Loc.getMessage("CAL_SYNC_LETS_CHECK"),l.Loc.getMessage("CAL_SYNC_CREATE_EVENT_OFFICE365"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_ADDED_FROM_OFFICE365"),l.Loc.getMessage("CAL_SYNC_NEW_EVENT_YOULL_SEE"),this.getSkeletonWrapper(),this.getNewEventCardWrapper());return this.finalCheckWrapper}setSyncStages(){this.syncStagesList=[new rt({name:this.STAGE_1_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_OFFICE365_1")}),new rt({name:this.STAGE_2_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_OFFICE365_2")}),new rt({name:this.STAGE_3_CODE,title:l.Loc.getMessage("CAL_SYNC_STAGE_OFFICE365_3")})]}updateState(e){super.updateState(e);this.getSyncStages().forEach((t=>{if(e.stage==="connection_created"&&t.name===this.STAGE_1_CODE){t.setDone()}else if(e.stage===this.STAGE_2_CODE&&(t.name===this.STAGE_1_CODE||t.name===this.STAGE_2_CODE)){t.setDone()}else if(e.stage===this.STAGE_3_CODE){t.setDone();this.setActiveStatusFinished();this.showButtonWrapper();this.showInfoStatusWrapper();this.showConfetti();this.emit("onConnectionCreated")}}))}getSkeletonTitle(){return l.Loc.getMessage("CAL_SYNC_NEW_EVENT_OFFICE365_TITLE")}}class Rt extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_OFFICE365"),helpDeskCode:"6030429",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_OFFICE365_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_OFFICE365_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_OFFICE365_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_OFFICE365_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-office365",iconPath:"/bitrix/images/calendar/sync/office365.svg",iconLogoClass:"--office365",color:"#fc1d1d",provider:e,connection:t,popupWithUpdateButton:true});this.sectionStatusObject={};this.sectionList=[]}createConnection(){BX.ajax.runAction("calendar.api.calendarajax.analytical",{analyticsLabel:{calendarAction:"createConnection",click_to_connection_button:"Y",connection_type:"office365"}});BX.util.popup(this.provider.getSyncLink(),500,600);l.Event.bind(window,"hashchange",(e=>{if(window.location.hash==="#office365AuthSuccess"){d.Util.removeHash();this.provider.setWizardSyncMode(true);this.saveConnection();this.openSyncWizard();this.provider.setStatus(this.provider.STATUS_SYNCHRONIZING);this.provider.getInterfaceUnit().refreshButton()}}))}saveConnection(){return new Promise((e=>{BX.ajax.runAction("calendar.api.syncajax.createOffice365Connection").then((t=>{var n,s;if((t==null?void 0:(n=t.data)==null?void 0:n.status)===this.provider.ERROR_CODE){this.provider.setStatus(this.provider.STATUS_FAILED);this.provider.setWizardState({status:this.provider.ERROR_CODE,vendorName:this.provider.type})}else if(t!=null&&(s=t.data)!=null&&s.connectionId){this.provider.setStatus(this.provider.STATUS_SUCCESS);this.provider.getConnection().setId(t.data.connectionId);this.provider.getConnection().setStatus(true);this.provider.getConnection().setConnected(true);this.provider.getConnection().setSyncDate(new Date)}e(t.data)}),(t=>{this.provider.setStatus(this.provider.STATUS_FAILED);this.provider.setWizardState({status:this.provider.ERROR_CODE,vendorName:this.provider.type});e(t.errors)}))}))}onClickCheckSection(e){this.sectionStatusObject[e.target.value]=e.target.checked;this.runUpdateInfo();this.showUpdateSectionListNotification()}handleConnectButton(){if(this.provider.hasSetSyncOffice365Settings()){this.createConnection()}else{this.showAlertPopup()}}openSyncWizard(){this.wizard=new xt;this.wizard.openSlider();this.provider.setActiveWizard(this.wizard)}getSectionsForOffice365(){return new Promise((e=>{BX.ajax.runAction("calendar.api.syncajax.getAllSectionsForOffice365",{data:{connectionId:this.connection.addParams.id}}).then((t=>{this.sectionList=t.data;e(t.data)}),(t=>{e(t.errors)}))}))}sendRequestRemoveConnection(e){this.deactivateConnection(e)}showAlertPopup(){const e=new c.MessageBox({className:this.id,message:l.Loc.getMessage("OFFICE365_IS_NOT_CALDAV_SETTINGS_WARNING_MESSAGE"),width:500,offsetLeft:60,offsetTop:5,padding:7,onOk:()=>{e.close()},okCaption:"OK",buttons:BX.UI.Dialogs.MessageBoxButtons.OK,popupOptions:{zIndexAbsolute:4020,autoHide:true,animation:"fading-slide"}});e.show()}}let Wt=e=>e,Ut,Ht,$t,Xt,Gt,Yt;class Ft extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_MAC"),helpDeskCode:"5684075",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_MAC_CALENDAR_TITLE"),descriptionInfoHeader:l.Loc.getMessage("CAL_MAC_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_MAC_CALENDAR_IS_CONNECT_TITLE"),descriptionActiveHeader:l.Loc.getMessage("CAL_MAC_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-mac",iconPath:"/bitrix/images/calendar/sync/mac.svg",color:"#ff5752",provider:e,connection:t,popupWithUpdateButton:false});this.alreadyConnectedToNew=d.Util.isIcloudConnected();if(this.alreadyConnectedToNew){this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_IPHONE_AND_MAC_CONNECTED");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CHECK_ICLOUD_SETTINGS")}else{this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_IPHONE_AND_MAC");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CONNECT_ICLOUD")}}getPortalAddress(){return this.portalAddress}getContentInfoBody(){return l.Tag.render(Ut||(Ut=Wt` ${0} ${0} `),this.getContentInfoBodyHeader(),this.getContentInfoWarning())}getActiveConnectionContent(){return l.Tag.render(Ht||(Ht=Wt` <div class="calendar-sync-wrap calendar-sync-wrap-detail"> <div class="calendar-sync-header"> <span class="calendar-sync-header-text">${0}</span> </div> ${0} </div> `),this.getHeaderTitle(),this.getContentActiveBody())}getContentActiveBody(){return l.Tag.render($t||($t=Wt` ${0} <div class="calendar-sync-slider-section calendar-sync-slider-section-banner"> ${0} </div> `),this.getContentActiveBodyHeader(),this.getContentBodyConnect())}getContentActiveBodyHeader(){const e=this.connection.getSyncDate().getTime()/1e3;const t=e?d.Util.formatDateUsable(e)+" "+BX.date.format(d.Util.getTimeFormatShort(),e):"";return l.Tag.render(Xt||(Xt=Wt` <div class="calendar-sync-slider-section"> <div class="calendar-sync-slider-header-icon ${0}"></div> <div class="calendar-sync-slider-header"> <div class="calendar-sync-slider-title">${0}</div> <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text">${0}</span> <span class="calendar-sync-slider-info-time">${0}</span> </div> <a class="calendar-sync-slider-link" href="javascript:void(0);" onclick="${0}">${0}</a> </div> </div>`),this.sliderIconClass,this.titleActiveHeader,l.Loc.getMessage("CAL_SYNC_LAST_SYNC_DATE"),t,this.showHelp.bind(this),l.Loc.getMessage("CAL_TEXT_ABOUT_WORK_SYNC"))}getContentInfoBodyHeaderHelper(){if(!this.headerHelper){this.headerHelper=l.Tag.render(Gt||(Gt=Wt` <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text"> <a class="calendar-sync-slider-info-link"> ${0} </a> </span> </div> `),l.Loc.getMessage("CAL_CONNECT_PC"));l.Event.bind(this.headerHelper,"click",this.showExtendedInfoMacOs.bind(this))}return this.headerHelper}showExtendedInfoMacOs(){this.headerHelper.style.display="none";l.Dom.append(this.getContentBodyConnect(),this.infoBodyHeader)}getContentBodyConnect(){return l.Tag.render(Yt||(Yt=Wt` <div class="calendar-sync-slider-section calendar-sync-slider-section-col"> <div class="calendar-sync-slider-header calendar-sync-slider-header-divide"> <div class="calendar-sync-slider-subtitle">${0}</div> </div> <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text">${0}:</span> <ol class="calendar-sync-slider-info-list"> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> <li class="calendar-sync-slider-info-item"> <span class="calendar-sync-slider-info-text">${0}</span> </li> </ol> <span class="calendar-sync-slider-info-text">${0}</span> <div class="calendar-sync-slider-info" style="margin-top: 20px"> <span class="calendar-sync-slider-info-text"> <a class="calendar-sync-slider-info-link" href="javascript:void(0);" onclick="${0}"> ${0} </a> </span> </div> </div> </div> `),l.Loc.getMessage("CAL_MAC_INSTRUCTION_HEADER"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_DESCRIPTION"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_FIRST"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_SECOND"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_THIRD"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_FOURTH"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_FIFTH",{"#PORTAL_ADDRESS#":this.provider.getPortalAddress()}),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_SIXTH"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_POINT_SEVENTH"),l.Loc.getMessage("CAL_MAC_INSTRUCTION_CONCLUSION"),this.showHelp.bind(this),l.Loc.getMessage("CAL_TEXT_ABOUT_WORK_SYNC"))}handleMobileButtonConnectClick(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-mac"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){e.syncInterface.getIcloudProvider().getInterfaceUnit().getConnectionTemplate().handleConnectButton()}}handleMobileButtonOtherSyncInfo(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-mac"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){const t=e.syncInterface.getIcloudProvider().getInterfaceUnit().connectionProvider;t.openActiveConnectionSlider(t.getConnection())}}}class zt extends be{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_MAC"),helpDeskCode:"5684075",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_MAC_CALENDAR_TITLE"),descriptionInfoHeader:l.Loc.getMessage("CAL_MAC_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_MAC_CALENDAR_IS_CONNECT_TITLE"),descriptionActiveHeader:l.Loc.getMessage("CAL_MAC_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-mac",iconPath:"/bitrix/images/calendar/sync/mac.svg",color:"#ff5752",provider:e,connection:t,popupWithUpdateButton:false})}}class jt extends Pe{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_YANDEX"),helpDeskCode:"10930170",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_YANDEX_CALENDAR"),descriptionInfoHeader:l.Loc.getMessage("CAL_YANDEX_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_YANDEX_CALENDAR_IS_CONNECT"),descriptionActiveHeader:l.Loc.getMessage("CAL_YANDEX_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-yandex",iconPath:"/bitrix/images/calendar/sync/yandex.svg",iconLogoClass:"--yandex",color:"#f9c500",provider:e,connection:t,popupWithUpdateButton:true})}}let Kt=e=>e,qt,Vt,Qt,Zt,Jt;class en extends be{constructor(e){super(e);this.banner=new _e({type:this.provider.getType(),helpDeskCode:e.helpDeskCode});if(this.status){this.syncDate=l.Type.isDate(this.data.syncDate)?this.data.syncDate:d.Util.parseDate(this.data.syncDate)}}getContentInfoBody(){return l.Tag.render(qt||(qt=Kt` ${0} ${0} `),this.getContentInfoBodyHeader(),this.getContentInfoWarning())}getContentInfoBodyHeaderHelper(){if(!this.headerHelper){this.headerHelper=l.Tag.render(Vt||(Vt=Kt` <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text"> <a class="calendar-sync-slider-info-link"> ${0} </a> </span> </div> `),l.Loc.getMessage("CAL_CONNECT_PHONE"));l.Event.bind(this.headerHelper,"click",this.showMobileSyncBanner.bind(this))}return this.headerHelper}showMobileSyncBanner(){this.headerHelper.style.display="none";l.Dom.append(this.getContentBodyConnect(),this.infoBodyHeader)}getContentActiveBody(){return l.Tag.render(Qt||(Qt=Kt` ${0} <div class="calendar-sync-slider-section calendar-sync-slider-section-banner"> ${0} </div> `),this.getContentActiveBodyHeader(),this.getContentBodyConnect())}getContentActiveBodyHeader(){const e=this.connection.getSyncDate().getTime()/1e3;const t=e?d.Util.formatDateUsable(e)+" "+BX.date.format(d.Util.getTimeFormatShort(),e):"";return l.Tag.render(Zt||(Zt=Kt` <div class="calendar-sync-slider-section"> <div class="calendar-sync-slider-header-icon ${0}"></div> <div class="calendar-sync-slider-header"> <div class="calendar-sync-slider-title">${0}</div> <div class="calendar-sync-slider-info"> <span class="calendar-sync-slider-info-text">${0}</span> <span class="calendar-sync-slider-info-time">${0}</span> </div> <div class="calendar-sync-slider-desc">${0}</div> <a class="calendar-sync-slider-link" href="javascript:void(0);" onclick="${0}">${0}</a> </div> </div>`),this.sliderIconClass,this.titleActiveHeader,l.Loc.getMessage("CAL_SYNC_LAST_SYNC_DATE"),t,l.Loc.getMessage("CAL_SYNC_DISABLE"),this.showHelp.bind(this),l.Loc.getMessage("CAL_TEXT_ABOUT_WORK_SYNC"))}getContentBodyConnect(){this.banner.initQrCode().then(this.banner.drawQRCode.bind(this.banner));return this.banner.getContainer()}getActiveConnectionContent(){return l.Tag.render(Jt||(Jt=Kt` <div class="calendar-sync-wrap calendar-sync-wrap-detail"> <div class="calendar-sync-header"> <span class="calendar-sync-header-text">${0}</span> </div> ${0} </div> `),this.getHeaderTitle(),this.getContentActiveBody())}}class tn extends en{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_ANDROID"),helpDeskCode:"5686179",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_ANDROID_CALENDAR_TITLE"),descriptionInfoHeader:l.Loc.getMessage("CAL_ANDROID_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_SYNC_CONNECTED_ANDROID_TITLE"),descriptionActiveHeader:l.Loc.getMessage("CAL_ANDROID_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-android",iconPath:"/bitrix/images/calendar/sync/android.svg",color:"#9ece03",provider:e,connection:t,popupWithUpdateButton:false});this.alreadyConnectedToNew=d.Util.isGoogleConnected();if(this.alreadyConnectedToNew){this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_ANDROID_CONNECTED");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CHECK_GOOGLE_SETTINGS")}else{this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_ANDROID");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CONNECT_GOOGLE")}}handleMobileButtonConnectClick(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-android"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){e.syncInterface.getGoogleProvider().getInterfaceUnit().getConnectionTemplate().handleConnectButton()}}handleMobileButtonOtherSyncInfo(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-android"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){const t=e.syncInterface.getGoogleProvider().getInterfaceUnit().connectionProvider;t.openActiveConnectionSlider(t.getConnection())}}}class nn extends en{constructor(e,t=null){super({title:l.Loc.getMessage("CALENDAR_TITLE_IPHONE"),helpDeskCode:"5686207",titleInfoHeader:l.Loc.getMessage("CAL_CONNECT_IPHONE_CALENDAR_TITLE"),descriptionInfoHeader:l.Loc.getMessage("CAL_IPHONE_CONNECT_DESCRIPTION"),titleActiveHeader:l.Loc.getMessage("CAL_SYNC_CONNECTED_IPHONE_TITLE"),descriptionActiveHeader:l.Loc.getMessage("CAL_IPHONE_SELECTED_DESCRIPTION"),sliderIconClass:"calendar-sync-slider-header-icon-iphone",iconPath:"/bitrix/images/calendar/sync/iphone.svg",color:"#2fc6f6",provider:e,connection:t,popupWithUpdateButton:false});this.alreadyConnectedToNew=d.Util.isIcloudConnected();if(this.alreadyConnectedToNew){this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_IPHONE_AND_MAC_CONNECTED");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CHECK_ICLOUD_SETTINGS")}else{this.warningText=l.Loc.getMessage("CAL_SYNC_WARNING_IPHONE_AND_MAC");this.mobileSyncButtonText=l.Loc.getMessage("CALENDAR_CONNECT_ICLOUD")}}handleMobileButtonConnectClick(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-iphone"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){e.syncInterface.getIcloudProvider().getInterfaceUnit().getConnectionTemplate().handleConnectButton()}}handleMobileButtonOtherSyncInfo(){BX.SidePanel.Instance.getOpenSliders().forEach((e=>{if(["calendar:auxiliary-sync-slider","calendar:item-sync-connect-iphone"].includes(e.getUrl())){e.close()}}));const e=d.Util.getCalendarContext();if(e){const t=e.syncInterface.getIcloudProvider().getInterfaceUnit().connectionProvider;t.openActiveConnectionSlider(t.getConnection())}}}let sn=e=>e,an,on;var rn=babelHelpers.classPrivateFieldLooseKey("showSuccessCopyNotification");var cn=babelHelpers.classPrivateFieldLooseKey("showFailedCopyNotification");var ln=babelHelpers.classPrivateFieldLooseKey("showResultNotification");class dn{constructor(e){Object.defineProperty(this,ln,{value:un});Object.defineProperty(this,cn,{value:pn});Object.defineProperty(this,rn,{value:hn});this.LINK_LENGTH=112;this.link=this.getIcalLink(e)}static createInstance(e){return new this(e)}show(){this.createPopup().show();this.startSync()}startSync(){BX.ajax.get(this.link+"&check=Y","",(e=>{setTimeout((()=>{if(!e||e.length<=0||e.toUpperCase().indexOf("BEGIN:VCALENDAR")===-1){this.showPopupWithSyncDataError()}}),300)}))}getContent(){return l.Tag.render(an||(an=sn` <div class="calendar-ical-popup-wrapper"> <h3>${0}</h3> <div class="calendar-ical-popup-label-text"><span>${0}</span></div> ${0} </div> `),l.Loc.getMessage("EC_JS_EXPORT_TILE"),l.Loc.getMessage("EC_EXP_TEXT"),this.getLinkBlock())}createPopup(){return this.popup=new h.Popup({width:400,zIndexOptions:4e3,autoHide:false,closeByEsc:true,draggable:true,closeIcon:{right:"12px",top:"10px"},className:"bxc-popup-window",content:this.getContent(),buttons:[new BX.UI.Button({text:l.Loc.getMessage("EC_JS_ICAL_COPY_ICAL_SYNC_LINK"),color:BX.UI.Button.Color.PRIMARY,onclick:()=>{this.copyLink(event)}}),new BX.UI.Button({text:l.Loc.getMessage("EC_SEC_SLIDER_CLOSE"),color:BX.UI.Button.Color.LINK,onclick:()=>{this.popup.close()}})]})}getIcalLink(e){return e.calendarPath+(e.calendarPath.indexOf("?")>=0?"&":"?")+"action=export"+e.sectionLink}getLinkBlock(){return l.Tag.render(on||(on=sn` <div class="calendar-ical-popup-link-block"> <a class="ui-link ui-link-primary " target="_blank" href="${0}"> ${0} </a> </div> `),BX.util.htmlspecialchars(this.link),BX.util.htmlspecialchars(this.getShortenLink(this.link)))}static checkPathes(e){return!!e.sectionLink||!!e.calendarPath}static showPopupWithPathesError(){BX.UI.Dialogs.MessageBox.alert(l.Loc.getMessage("EC_JS_ICAL_ERROR_WITH_PATHES"))}showPopupWithSyncDataError(){BX.UI.Dialogs.MessageBox.alert(l.Loc.getMessage("EC_EDEV_EXP_WARN"))}copyLink(e){window.BX.clipboard.copy(this.link)?babelHelpers.classPrivateFieldLooseBase(this,rn)[rn]():babelHelpers.classPrivateFieldLooseBase(this,cn)[cn]();e.preventDefault();e.stopPropagation()}getShortenLink(e){return e.length<this.LINK_LENGTH?e:e.substr(0,105)+"..."+e.slice(-7)}}function hn(){babelHelpers.classPrivateFieldLooseBase(this,ln)[ln](l.Loc.getMessage("EC_JS_ICAL_COPY_ICAL_SYNC_LINK_SUCCESS"))}function pn(){babelHelpers.classPrivateFieldLooseBase(this,ln)[ln](l.Loc.getMessage("EC_JS_ICAL_COPY_ICAL_SYNC_LINK_FAILED"))}function un(e){d.Util.showNotification(e)}class gn{constructor(e={}){this.options=e}static createInstance(e){return new this(e)}loadExtension(){return new Promise((e=>{l.Runtime.loadExtension("ui.tour").then((t=>{if(t&&t["Guide"]&&t["Manager"]){e()}else{console.error(`Extension "ui.tour" not found`)}}))}))}show(){this.loadExtension().then((()=>{this.guide=new BX.UI.Tour.Guide({steps:[{target:this.getTarget(),title:l.Loc.getMessage("CAL_AFTER_SYNC_AHA_TITLE"),text:l.Loc.getMessage("CAL_AFTER_SYNC_AHA_TEXT")}],onEvents:true});this.guide.start()}))}getTarget(){let e;const t=this.options.view;const n=t.getContainer();if(t.getName()==="month"){e=n.querySelectorAll(".calendar-grid-today")[0]}else if(t.getName()==="day"||t.getName()==="week"){const t=d.Util.getDayCode(new Date);e=n.querySelector('div[data-bx-calendar-timeline-day="'+t+'"] .calendar-grid-cell-inner')}else{e=document.querySelector('span[data-role="addButton"]')}return e}}e.SyncPanel=K;e.SyncPanelUnit=U;e.AuxiliarySyncPanel=f;e.GridUnit=ee;e.ConnectionControls=ce;e.MobileSyncBanner=_e;e.YandexTemplate=jt;e.CaldavTemplate=ke;e.MacTemplate=Ft;e.ExchangeTemplate=$e;e.GoogleTemplate=ut;e.IcloudTemplate=Bt;e.OutlookTemplate=zt;e.IphoneTemplate=nn;e.AndroidTemplate=tn;e.IcalSyncPopup=dn;e.AfterSyncTour=gn;e.GoogleSyncWizard=pt;e.Office365template=Rt;e.IcloudAuthDialog=mt})(this.BX.Calendar.Sync.Interface=this.BX.Calendar.Sync.Interface||{},BX,BX,BX.Calendar.Sync.Manager,BX.Calendar,BX,BX,BX.Event,BX.UI.Dialogs,BX,BX.Calendar,BX.Main); //# sourceMappingURL=syncinterface.bundle.map.js
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings