File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/calendar/sync/interface/dist/syncinterface.bundle.js.map
Back
{"version":3,"file":"syncinterface.bundle.js","sources":["../src/controls/statusblock.js","../src/auxiliarysyncpanel.js","../src/syncpanelunit.js","../src/syncpanel.js","../src/gridunit.js","../src/controls/connectioncontrols.js","../src/controls/mobilesyncbanner.js","../src/itemstemplate/interfacetemplate.js","../src/itemstemplate/caldavinterfacetemplate.js","../src/itemstemplate/caldavtemplate.js","../src/itemstemplate/exchangetemplate.js","../src/syncwizard/syncwizard.js","../src/syncwizard/syncstageunit.js","../src/syncwizard/googlesyncwizard.js","../src/itemstemplate/googletemplate.js","../src/controls/icloudauthdialog.js","../src/syncwizard/icloudsyncwizard.js","../src/controls/warnsynciclouddialog.js","../src/itemstemplate/icloudtemplate.js","../src/syncwizard/office365syncwizard.js","../src/itemstemplate/office365template.js","../src/itemstemplate/mactemplate.js","../src/itemstemplate/outlooktemplate.js","../src/itemstemplate/yandextemplate.js","../src/itemstemplate/mobileinterfacetemplate.js","../src/itemstemplate/androidtemplate.js","../src/itemstemplate/iphonetemplate.js","../src/controls/icalsyncpopup.js","../src/controls/aftersynctour.js"],"sourcesContent":["// @flow\n'use strict';\n\nimport {Loc, Tag} from \"main.core\";\nimport {SyncStatusPopup} from \"calendar.sync.manager\";\n\nexport default class StatusBlock\n{\n\tconstructor(options)\n\t{\n\t\tthis.status = options.status;\n\t\tthis.connections = options.connections;\n\t\tthis.withStatusLabel = options.withStatusLabel;\n\t\tthis.popupWithUpdateButton = options.popupWithUpdateButton;\n\t\tthis.popupId = options.popupId;\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tsetStatus(status)\n\t{\n\t\tthis.status = status;\n\n\t\treturn this;\n\t}\n\n\tsetConnections(connections)\n\t{\n\t\tthis.connections = connections;\n\n\t\treturn this;\n\t}\n\n\tgetContent()\n\t{\n\t\tlet statusInfoBlock;\n\t\tif (this.status === 'success')\n\t\t{\n\t\t\tstatusInfoBlock = Tag.render `\n\t\t\t\t<div id=\"status-info-block\" class=\"ui-alert ui-alert-success calendar-sync-status-info\">\n\t\t\t\t\t<span class=\"ui-alert-message\">${Loc.getMessage('SYNC_STATUS_SUCCESS')}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\t\telse if (this.status === 'failed')\n\t\t{\n\t\t\tstatusInfoBlock = Tag.render `\n\t\t\t\t<div id=\"status-info-block\" class=\"ui-alert ui-alert-danger calendar-sync-status-info\">\n\t\t\t\t\t<span class=\"ui-alert-message\">${Loc.getMessage('SYNC_STATUS_ALERT')}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstatusInfoBlock = Tag.render `\n\t\t\t\t<div id=\"status-info-block\" class=\"ui-alert ui-alert-primary calendar-sync-status-info\">\n\t\t\t\t\t<span class=\"ui-alert-message\">${Loc.getMessage('SYNC_STATUS_NOT_CONNECTED')}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tstatusInfoBlock.addEventListener('mouseenter', () => {\n\t\t\tthis.handlerMouseEnter(statusInfoBlock);\n\t\t});\n\n\t\tstatusInfoBlock.addEventListener('mouseleave', () => {\n\t\t\tthis.handlerMouseLeave();\n\t\t});\n\n\t\tthis.statusBlock = Tag.render `\n\t\t\t<div class=\"calendar-sync-status-block\" id=\"calendar-sync-status-block\">\n\t\t\t\t${this.getStatusTextLabel()}\n\t\t\t\t${statusInfoBlock}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.statusBlock;\n\t}\n\n\tgetStatusTextLabel()\n\t{\n\t\treturn this.withStatusLabel\n\t\t\t? Tag.render`\n\t\t\t\t<div class=\"calendar-sync-status-subtitle\">\n\t\t\t\t\t<span data-hint=\"\"></span>\n\t\t\t\t\t<span class=\"calendar-sync-status-text\">${Loc.getMessage('LABEL_STATUS_INFO')}:</span>\n\t\t\t\t</div>`\n\t\t\t: ''\n\t\t;\n\t}\n\n\thandlerMouseEnter(statusBlock)\n\t{\n\t\tclearTimeout(this.statusBlockEnterTimeout);\n\t\tthis.buttonEnterTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tthis.statusBlockEnterTimeout = null;\n\t\t\t\tthis.showPopup(statusBlock);\n\t\t\t}, 500\n\t\t);\n\t}\n\n\thandlerMouseLeave()\n\t{\n\t\tif (this.statusBlockEnterTimeout !== null)\n\t\t{\n\t\t\tclearTimeout(this.statusBlockEnterTimeout);\n\t\t\tthis.statusBlockEnterTimeout = null;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.statusBlockLeaveTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tthis.hidePopup();\n\t\t\t}, 500\n\t\t);\n\t}\n\n\tshowPopup(node)\n\t{\n\t\tif(this.status !== 'not_connected')\n\t\t{\n\t\t\tthis.popup = this.getPopup(node);\n\t\t\tthis.popup.show();\n\n\t\t\tthis.addPopupHandlers();\n\t\t}\n\t}\n\n\thidePopup()\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tthis.popup.hide();\n\t\t}\n\t}\n\n\taddPopupHandlers()\n\t{\n\t\tthis.popup.getPopup().getPopupContainer().addEventListener('mouseenter', () =>\n\t\t{\n\t\t\tclearTimeout(this.statusBlockEnterTimeout);\n\t\t\tclearTimeout(this.statusBlockLeaveTimeout);\n\t\t});\n\n\t\tthis.popup.getPopup().getPopupContainer().addEventListener('mouseleave', () =>\n\t\t{\n\t\t\tthis.hidePopup();\n\t\t});\n\t}\n\n\tgetPopup(node)\n\t{\n\t\treturn SyncStatusPopup.createInstance({\n\t\t\tconnections: this.connections,\n\t\t\twithUpdateButton: this.popupWithUpdateButton,\n\t\t\tnode: node,\n\t\t\tid: this.popupId,\n\t\t});\n\t}\n\n\trefresh(status, connections)\n\t{\n\t\tthis.status = status;\n\t\tthis.connections = connections;\n\n\t\treturn this;\n\t}\n}","// @flow\n'use strict';\n\nimport {Dom, Loc, Tag, Cache} from \"main.core\";\nimport StatusBlock from \"./controls/statusblock\";\nimport {ConnectionItem} from \"calendar.sync.manager\";\n\nexport default class AuxiliarySyncPanel\n{\n\tMAIN_SYNC_SLIDER_NAME = 'calendar:auxiliary-sync-slider';\n\tSLIDER_WIDTH = 684;\n\tLOADER_NAME = \"calendar:loader\";\n\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options)\n\t{\n\t\tthis.status = options.status;\n\t\tthis.connectionsProviders = options.connectionsProviders;\n\t\tthis.userId = options.userId;\n\n\t\tthis.statusBlockEnterTimeout = null;\n\t\tthis.statusBlockLeaveTimeout = null;\n\t}\n\n\topenSlider()\n\t{\n\t\tBX.SidePanel.Instance.open(this.MAIN_SYNC_SLIDER_NAME, {\n\t\t\tcontentCallback: (slider) => {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(this.getContent());\n\t\t\t\t});\n\t\t\t},\n\t\t\tallowChangeHistory:false,\n\t\t\tevents: {\n\t\t\t\tonLoad: () => {\n\t\t\t\t\tthis.setGridContent();\n\t\t\t\t},\n\t\t\t\t// onMessage: (event) => {\n\t\t\t\t// \tif (event.getEventId() === 'refreshSliderGrid')\n\t\t\t\t// \t{\n\t\t\t\t// \t\tthis.refreshData();\n\t\t\t\t// \t}\n\t\t\t\t// },\n\t\t\t\t// onClose: (event) => {\n\t\t\t\t// \tBX.SidePanel.Instance.postMessageTop(window.top.BX.SidePanel.Instance.getTopSlider(), \"refreshCalendarGrid\", {});\n\t\t\t\t// },\n\t\t\t},\n\t\t\tcacheable: false,\n\t\t\twidth: this.SLIDER_WIDTH,\n\t\t\tloader: this.LOADER_NAME,\n\t\t});\n\t}\n\n\tgetContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-wrap\">\n\t\t\t\t${this.getHeader()}\n\t\t\t\t${this.getMobileHeader()}\n\t\t\t\t${this.getMobileContentWrapper()}\n\t\t\t\t${this.getWebHeader()}\n\t\t\t\t${this.getWebContentWrapper()}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetHeader()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-header\">\n\t\t\t\t${this.getMainHeader()}\n\t\t\t\t${this.getStatusBlockContent(this.getConnections())}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetMainHeader()\n\t{\n\t\treturn this.cache.remember('calendar-syncPanel-mainHeader', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"calendar-sync-header-text\">${Loc.getMessage('SYNC_CALENDAR_HEADER_NEW')}</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetMobileContentWrapper()\n\t{\n\t\treturn this.cache.remember('calendar-syncPanel-mobileContentWrapper', () => {\n\t\t\treturn Tag.render`\n\t\t\t<div id=\"calendar-sync-mobile\" class=\"calendar-sync-mobile\"></div>\n\t\t`;\n\t\t});\n\n\t}\n\n\tgetWebContentWrapper()\n\t{\n\t\treturn this.cache.remember('calendar-syncPanel-webContentWrapper', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div id=\"calendar-sync-web\" class=\"calendar-sync-web\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetMobileHeader()\n\t{\n\t\treturn this.cache.remember('calendar-syncPanel-mobileHeader', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"calendar-sync-title\">${Loc.getMessage('SYNC_MOBILE_HEADER')}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetWebHeader()\n\t{\n\t\treturn this.cache.remember('calendar-syncPanel-webHeader', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"calendar-sync-title\">${Loc.getMessage('SYNC_WEB_HEADER')}</div>\n\t\t`;\n\t\t});\n\t}\n\n\tgetStatusBlockContent(connections)\n\t{\n\t\tthis.statusBlock = StatusBlock.createInstance({\n\t\t\tstatus: this.status,\n\t\t\tconnections: connections,\n\t\t\twithStatusLabel: true,\n\t\t\tpopupWithUpdateButton: true,\n\t\t\tpopupId: 'calendar-syncPanel-status',\n\t\t});\n\n\t\tthis.statusBlockContent = this.statusBlock.getContent()\n\t\treturn this.statusBlockContent;\n\t}\n\n\tgetConnections()\n\t{\n\t\tconst connections = [];\n\t\tconst items = Object.values(this.connectionsProviders);\n\t\titems.forEach(item =>\n\t\t{\n\t\t\tconst itemConnections = item.getConnections();\n\t\t\tif (itemConnections.length > 0)\n\t\t\t{\n\t\t\t\titemConnections.forEach(connection => {\n\n\t\t\t\t\tif (ConnectionItem.isConnectionItem(connection) && connection.getConnectStatus() === true)\n\t\t\t\t\t{\n\t\t\t\t\t\tconnections.push(connection);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsetGridContent()\n\t{\n\t\tconst items = Object.values(this.connectionsProviders);\n\n\t\tthis.showWebGridContent(items.filter(item => {\n\t\t\treturn item.mainPanel === false && item.getViewClassification() === 'web';\n\t\t}));\n\n\t\tthis.showMobileGridContent(items.filter(item => {\n\t\t\treturn item.mainPanel === false && item.getViewClassification() === 'mobile';\n\t\t}));\n\t}\n\n\tshowWebGridContent(items)\n\t{\n\t\tconst wrapper = this.getWebContentWrapper();\n\t\tDom.clean(wrapper);\n\t\tconst grid = new BX.TileGrid.Grid({\n\t\t\tid: 'calendar_sync',\n\t\t\titems: items,\n\t\t\tcontainer: wrapper,\n\t\t\tsizeRatio: \"55%\",\n\t\t\titemMinWidth: 180,\n\t\t\ttileMargin: 7,\n\t\t\titemType: 'BX.Calendar.Sync.Interface.GridUnit',\n\t\t\tuserId: this.userId,\n\t\t});\n\n\t\tgrid.draw();\n\t}\n\n\tshowMobileGridContent(items)\n\t{\n\t\tconst wrapper = this.getMobileContentWrapper();\n\t\tDom.clean(wrapper);\n\t\tconst grid = new BX.TileGrid.Grid({\n\t\t\tid: 'calendar_sync',\n\t\t\titems: items,\n\t\t\tcontainer: wrapper,\n\t\t\tsizeRatio: \"55%\",\n\t\t\titemMinWidth: 180,\n\t\t\ttileMargin: 7,\n\t\t\titemType: 'BX.Calendar.Sync.Interface.GridUnit',\n\t\t});\n\n\t\tgrid.draw();\n\t}\n\n\trefresh(status, connectionsProviders)\n\t{\n\t\tthis.status = status;\n\t\tthis.connectionsProviders = connectionsProviders;\n\t\tthis.blockStatusContent = this.statusBlock.refresh(status, this.getConnections()).getContent();\n\t\tDom.replace(document.querySelector('#calendar-sync-status-block'), this.blockStatusContent);\n\t\tthis.setGridContent();\n\t}\n}","// @flow\n'use strict';\n\nimport 'ui.tilegrid';\nimport 'ui.forms';\nimport { Dom, Event, Loc, Tag, Type, Text } from 'main.core';\n\nexport default class SyncPanelUnit\n{\n\tlogoClassName = '';\n\n\tconstructor(options)\n\t{\n\t\tthis.options = options;\n\t\tthis.connectionProvider = this.options.connectionProvider;\n\t}\n\n\tgetConnectionTemplate()\n\t{\n\t\tif (!this.connectionTemplate)\n\t\t{\n\t\t\tthis.connectionTemplate = this.connectionProvider.getClassTemplateItem().createInstance(this.connectionProvider);\n\t\t}\n\t\t\n\t\treturn this.connectionTemplate;\n\t}\n\n\trenderTo(outerWrapper)\n\t{\n\t\tif (Type.isElementNode(outerWrapper))\n\t\t{\n\t\t\touterWrapper.appendChild(this.getContent());\n\t\t}\n\t}\n\n\tgetContent()\n\t{\n\t\tthis.unitNode = Tag.render`\n\t\t\t<div class=\"calendar-sync__calendar-item\">\n\t\t\t\t<div class=\"calendar-sync__calendar-item--logo\">\n\t\t\t\t\t${this.getLogoNode()}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__calendar-item--container\">\n\t\t\t\t\t<div class=\"calendar-sync__calendar-item--title\">\n\t\t\t\t\t\t${this.getTitle()}\n\t\t\t\t\t\t${this.getSyncInfoWrap()}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this.getButtonsWrap()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.unitNode;\n\t}\n\n\tgetLogoNode()\n\t{\n\t\treturn Tag.render`<div class=\"calendar-sync__calendar-item--logo-image ${this.connectionProvider.getSyncPanelLogo()}\"></div>`;\n\t}\n\n\tgetTitle()\n\t{\n\t\treturn this.connectionProvider.getSyncPanelTitle();\n\t}\n\n\tgetSyncInfoWrap()\n\t{\n\t\tthis.syncInfoWrap = Tag.render`\n\t\t\t<div class=\"calendar-sync__account-info\">\n\t\t\t\t<div class=\"calendar-sync__account-info--icon --animate\"></div>\n\t\t\t\t<span data-role=\"sync_info_text\" />\n\t\t\t</div>\n\t\t`;\n\t\treturn this.syncInfoWrap;\n\t}\n\n\tsetSyncStatus(mode)\n\t{\n\t\tthis.unitNode.className = 'calendar-sync__calendar-item';\n\t\tswitch (mode)\n\t\t{\n\t\t\tcase this.connectionProvider.STATUS_SUCCESS:\n\t\t\t\tDom.addClass(this.unitNode, '--complete');\n\t\t\t\tthis.setSyncInfoStatusText(this.formatSyncTime(this.connectionProvider.getSyncDate()));\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_FAILED:\n\t\t\t\tDom.addClass(this.unitNode, '--error');\n\t\t\t\tthis.setSyncInfoStatusText(Loc.getMessage('CAL_SYNC_INFO_STATUS_ERROR'));\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_PENDING:\n\t\t\t\tDom.addClass(this.unitNode, '--pending');\n\t\t\t\tthis.setSyncInfoStatusText('');\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_SYNCHRONIZING:\n\t\t\t\tDom.addClass(this.unitNode, '--active');\n\t\t\t\tthis.setSyncInfoStatusText(Loc.getMessage('CAL_SYNC_INFO_STATUS_SYNCHRONIZING'));\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_NOT_CONNECTED:\n\t\t\t\tthis.setSyncInfoStatusText('');\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetSyncInfoStatusText(text)\n\t{\n\t\tconst syncInfoStatusText = this.syncInfoWrap.querySelector('[data-role=\"sync_info_text\"]');\n\t\tif (Type.isElementNode(syncInfoStatusText))\n\t\t{\n\t\t\tsyncInfoStatusText.innerHTML = Text.encode(text).toUpperCase();\n\t\t}\n\t}\n\n\tgetButtonsWrap()\n\t{\n\t\tif (!Type.isElementNode(this.buttonsWrap))\n\t\t{\n\t\t\tthis.buttonsWrap = Tag.render`<div class=\"calendar-sync__calendar-item--buttons\">\n\t\t\t\t${this.getButton()}\n\t\t\t\t${this.getMoreButton()}\n\t\t\t</div>`;\n\n\t\t\tEvent.bind(this.moreButton, 'click', this.handleItemClick.bind(this));\n\t\t}\n\n\t\treturn this.buttonsWrap;\n\t}\n\n\trefreshButton()\n\t{\n\t\tDom.clean(this.buttonsWrap);\n\t\tthis.moreButton = this.buttonsWrap.appendChild(this.getMoreButton());\n\t\tthis.button = this.buttonsWrap.appendChild(this.getButton());\n\t}\n\n\tgetButton()\n\t{\n\t\tswitch (this.connectionProvider.getStatus())\n\t\t{\n\t\t\tcase this.connectionProvider.STATUS_SUCCESS:\n\t\t\t\tthis.button = Tag.render`\n\t\t\t\t\t<a data-role=\"status-success\" class=\"ui-btn ui-btn-icon-success ui-btn-link\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_STATUS_SUCCESS')}\n\t\t\t\t\t</a>`;\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_FAILED:\n\t\t\t\tthis.button = Tag.render`\n\t\t\t\t\t<a data-role=\"status-failed\" class=\"ui-btn ui-btn-icon-fail ui-btn-link\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_STATUS_FAILED')}\n\t\t\t\t\t</a>`;\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_PENDING:\n\t\t\t\tthis.button = Tag.render`\n\t\t\t\t\t<a data-role=\"status-pending\" class=\"ui-btn ui-btn-disabled ui-btn-link\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_STATUS_PENDING')}\n\t\t\t\t\t</a>`;\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_NOT_CONNECTED:\n\t\t\t\tthis.button = Tag.render`\n\t\t\t\t\t<a data-role=\"status-not_connected\" class=\"ui-btn ui-btn-success ui-btn-round\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_STATUS_NOT_CONNECTED')}\n\t\t\t\t\t</a>`;\n\t\t\t\tEvent.bind(this.button, 'click', this.handleItemClick.bind(this));\n\t\t\t\tbreak;\n\t\t\tcase this.connectionProvider.STATUS_SYNCHRONIZING:\n\t\t\t\tthis.button = Tag.render`\n\t\t\t\t\t<a data-role=\"status-not_connected\" class=\"ui-btn ui-btn-success ui-btn-round ui-btn-clock ui-btn-disabled\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_STATUS_SUCCESS')}\n\t\t\t\t\t</a>`;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this.button;\n\t}\n\n\tgetMoreButton()\n\t{\n\t\tthis.moreButton = Tag.render`\n\t\t\t<div \n\t\t\t\tdata-role=\"more-button\" \n\t\t\t\tclass=\"ui-btn ui-btn-round ui-btn-light-border calendar-sync__calendar-item--more\"\n\t\t\t></div>`;\n\t\treturn this.moreButton;\n\t}\n\n\thandleItemClick(e)\n\t{\n\t\tconst status = this.connectionProvider.getStatus();\n\n\t\tif ([this.connectionProvider.STATUS_SUCCESS, this.connectionProvider.STATUS_FAILED].includes(status))\n\t\t{\n\t\t\tif (this.connectionProvider.hasMenu())\n\t\t\t{\n\t\t\t\tthis.connectionProvider.showMenu(this.button);\n\t\t\t}\n\t\t\telse if (this.connectionProvider.getConnectStatus())\n\t\t\t{\n\t\t\t\tthis.connectionProvider.openActiveConnectionSlider(this.connectionProvider.getConnection());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.connectionProvider.openInfoConnectionSlider();\n\t\t\t}\n\t\t}\n\t\telse if(status === this.connectionProvider.STATUS_NOT_CONNECTED)\n\t\t{\n\t\t\tthis.getConnectionTemplate().handleConnectButton();\n\t\t}\n\t}\n\n\tformatSyncTime(date)\n\t{\n\t\tconst now = new Date();\n\t\tlet timestamp = date;\n\t\tif (Type.isDate(date))\n\t\t{\n\t\t\ttimestamp = Math.round(date.getTime() / 1000);\n\t\t\tconst secondsAgo = parseInt((now - date) / 1000);\n\t\t\tif (secondsAgo < 60)\n\t\t\t{\n\t\t\t\treturn Loc.getMessage('CAL_JUST');\n\t\t\t}\n\t\t}\n\n\t\treturn BX.date.format(\n\t\t\t[\n\t\t\t\t[\"tommorow\", \"tommorow, H:i:s\"],\n\t\t\t\t[\"i\" , \"iago\"],\n\t\t\t\t[\"H\", \"Hago\"],\n\t\t\t\t[\"d\", \"dago\"],\n\t\t\t\t[\"m100\", \"mago\"],\n\t\t\t\t[\"m\", \"mago\"],\n\t\t\t\t[\"-\", \"\"]\n\t\t\t],\n\t\t\ttimestamp\n\t\t);\n\t}\n}\n","// @flow\n'use strict';\n\nimport {Dom, Loc, Tag, Cache, Event} from \"main.core\";\nimport {ConnectionItem} from \"calendar.sync.manager\";\nimport AuxiliarySyncPanel from \"./auxiliarysyncpanel\";\nimport SyncPanelUnit from './syncpanelunit';\n\nexport default class SyncPanel\n{\n\tMAIN_SYNC_SLIDER_NAME = 'calendar:sync-slider';\n\tHELPDESK_CODE = 11828176;\n\tSLIDER_WIDTH = 770;\n\tLOADER_NAME = \"calendar:loader\";\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options)\n\t{\n\t\tthis.status = options.status;\n\t\tthis.connectionsProviders = options.connectionsProviders;\n\t\tthis.userId = options.userId;\n\t\tthis.BX = window.top.BX || window.BX;\n\t}\n\n\topenSlider()\n\t{\n\t\tBX.SidePanel.Instance.open(this.MAIN_SYNC_SLIDER_NAME, {\n\t\t\tcontentCallback: (slider) => {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(this.getContent());\n\t\t\t\t});\n\t\t\t},\n\t\t\tallowChangeHistory: false,\n\t\t\tevents: {\n\t\t\t\tonLoad: () => {\n\t\t\t\t\tthis.displayConnectionUnits();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcacheable: false,\n\t\t\twidth: this.SLIDER_WIDTH,\n\t\t\tloader: this.LOADER_NAME,\n\t\t});\n\t}\n\n\tgetContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__wrapper calendar-sync__scope\">\n\t\t\t\t${this.getHeaderWrapper()}\n\t\t\t\t<div class=\"calendar-sync__content\">\n\t\t\t\t${this.getUnitsContentWrapper()}\n\t\t\t\t${this.getFooterWrapper()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetHeaderWrapper()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__header\">\n\t\t\t\t<div class=\"calendar-sync__header-logo\"></div>\n\t\t\t\t<div class=\"calendar-sync__header-container\">\n\t\t\t\t\t<div class=\"calendar-sync__header-title\">${Loc.getMessage('CAL_SYNC_TITLE_NEW')}</div>\n\t\t\t\t\t<div class=\"calendar-sync__header-sub-title\">${Loc.getMessage('CAL_SYNC_SUB_TITLE')}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetUnitsContentWrapper()\n\t{\n\t\tthis.unitsContentWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__calendar-list\">\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.unitsContentWrapper;\n\t}\n\n\tgetFooterWrapper()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom --space-left\">\n\t\t\t\t${this.getExtraInfoWithCheckIcon()}\n\t\t\t</div>\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom --space-left--double\">\n\t\t\t\t${this.getOpenAuxiliaryPanelLink()}\n\t\t\t</div>\n\t\t\t<div class=\"calendar-sync__content-block --space-left--double\">\n\t\t\t\t${this.getOpenHelpLink()}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetExtraInfoWithCheckIcon()\n\t{\n\t\tconst alreadyConnected = Object.values(this.connectionsProviders).filter(item => {\n\t\t\treturn item.mainPanel && item.status;\n\t\t}).length > 0;\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__content-text --icon-check${(alreadyConnected ? ' --disabled' : '')}\">\n\t\t\t\t${Loc.getMessage('CAL_SYNC_INFO_PROMO')}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetOpenAuxiliaryPanelLink()\n\t{\n\t\tconst link = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-link\">\n\t\t\t\t${Loc.getMessage('CAL_OPEN_AUXILIARY_PANEL')}\n\t\t\t</div>\n\t\t`;\n\t\tEvent.bind(link, 'click', () => {\n\t\t\t\tthis.auxiliarySyncPanel = new AuxiliarySyncPanel({\n\t\t\t\t\tconnectionsProviders: this.connectionsProviders,\n\t\t\t\t\tuserId: this.userId,\n\t\t\t\t\tstatus: this.status,\n\t\t\t\t});\n\t\t\t\tthis.auxiliarySyncPanel.openSlider();\n\t\t});\n\n\t\treturn link;\n\t}\n\n\tgetOpenHelpLink()\n\t{\n\t\tconst link = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-link\">${Loc.getMessage('CAL_SHOW_SYNC_HELP')}</divclass>\n\t\t`;\n\t\tEvent.bind(link, 'click', () => {\n\t\t\tif(this.BX.Helper)\n\t\t\t{\n\t\t\t\tthis.BX.Helper.show(\"redirect=detail&code=\" + this.HELPDESK_CODE);\n\t\t\t}\n\t\t});\n\n\t\treturn link;\n\t}\n\n\tgetConnections()\n\t{\n\t\tconst connections = [];\n\t\tconst items = Object.values(this.connectionsProviders);\n\t\titems.forEach(item =>\n\t\t{\n\t\t\tconst itemConnections = item.getConnections();\n\t\t\tif (itemConnections.length > 0)\n\t\t\t{\n\t\t\t\titemConnections.forEach(connection => {\n\n\t\t\t\t\tif (ConnectionItem.isConnectionItem(connection) && connection.getConnectStatus() === true)\n\t\t\t\t\t{\n\t\t\t\t\t\tconnections.push(connection);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tdisplayConnectionUnits()\n\t{\n\t\tconst items = Object.values(this.connectionsProviders).filter(item => {\n\t\t\treturn item.mainPanel || item.connected;\n\t\t});\n\n\t\tthis.renderConnectionUnits(items);\n\t}\n\n\trenderConnectionUnits(providers)\n\t{\n\t\tDom.clean(this.unitsContentWrapper);\n\t\tproviders.forEach((provider) => {\n\t\t\tconst interfaceUnit = new SyncPanelUnit({connectionProvider: provider});\n\t\t\tprovider.setInterfaceUnit(interfaceUnit);\n\t\t\tinterfaceUnit.renderTo(this.unitsContentWrapper);\n\t\t\tinterfaceUnit.setSyncStatus(provider.getStatus());\n\t\t});\n\t}\n\n\tshowWebGridContent(items)\n\t{\n\t\tconst wrapper = this.getWebContentWrapper();\n\t\tDom.clean(wrapper);\n\t\tconst grid = new BX.TileGrid.Grid({\n\t\t\tid: 'calendar_sync',\n\t\t\titems: items,\n\t\t\tcontainer: wrapper,\n\t\t\tsizeRatio: \"55%\",\n\t\t\titemMinWidth: 180,\n\t\t\ttileMargin: 7,\n\t\t\titemType: 'BX.Calendar.Sync.Interface.GridUnit',\n\t\t\tuserId: this.userId,\n\t\t});\n\n\t\tgrid.draw();\n\t}\n\n\trefresh(status, connectionsProviders)\n\t{\n\t\tthis.status = status;\n\t\tthis.connectionsProviders = connectionsProviders;\n\t\tDom.replace(document.querySelector('#calendar-sync-status-block'), this.blockStatusContent);\n\t\tthis.displayConnectionUnits();\n\t\tthis.auxiliarySyncPanel.refresh(status, connectionsProviders);\n\t}\n}\n","// @flow\n'use strict';\n\nimport 'ui.tilegrid';\nimport 'ui.forms';\nimport { Tag } from \"main.core\";\n\nexport default class GridUnit extends BX.TileGrid.Item\n{\n\tconstructor(item)\n\t{\n\t\tsuper({\n\t\t\tid: item.type,\n\t\t});\n\t\tthis.item = item;\n\t}\n\n\tgetContent()\n\t{\n\t\tthis.gridUnit = Tag.render`<div class=\"calendar-sync-item ${this.getAdditionalContentClass()}\" style=\"${this.getContentStyles()}\">\n\t\t\t<div class=\"calendar-item-content\">\n\t\t\t\t${this.getImage()}\n\t\t\t\t${this.getTitle()}\n\t\t\t\t${(this.isActive() ? this.getStatus() : '')}\n\t\t\t</div>\n\t\t</div>`;\n\n\t\tthis.gridUnit.addEventListener('click', this.onClick.bind(this));\n\n\t\treturn this.gridUnit;\n\t}\n\n\tgetTitle()\n\t{\n\t\tif (!this.layout.title)\n\t\t{\n\t\t\tthis.layout.title = Tag.render `\n\t\t\t\t<div class=\"calendar-sync-item-title\">${BX.util.htmlspecialchars(this.item.getGridTitle())}</div>`;\n\t\t}\n\n\t\treturn this.layout.title;\n\t}\n\n\tgetImage()\n\t{\n\t\treturn Tag.render `\n\t\t\t<div class=\"calendar-sync-item-image\">\n\t\t\t\t<div class=\"calendar-sync-item-image-item\" style=\"background-image: ${'url(' + this.item.getGridIcon() + ')'}\"></div>\n\t\t\t</div>`;\n\t}\n\n\tgetStatus()\n\t{\n\t\tif (this.isActive())\n\t\t{\n\t\t\treturn Tag.render `\n\t\t\t\t<div class=\"calendar-sync-item-status\"></div>\n\t\t\t`;\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tisActive()\n\t{\n\t\treturn this.item.getConnectStatus();\n\t}\n\n\tgetAdditionalContentClass()\n\t{\n\t\tif (this.isActive())\n\t\t{\n\t\t\tif (this.item.getSyncStatus())\n\t\t\t{\n\t\t\t\treturn 'calendar-sync-item-selected';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn 'calendar-sync-item-failed';\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn '';\n\t\t}\n\t}\n\n\tgetContentStyles()\n\t{\n\t\tif (this.isActive())\n\t\t{\n\t\t\treturn 'background-color:' + this.item.getGridColor() + ';';\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn '';\n\t\t}\n\t}\n\n\tonClick()\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\topen_connection_slider: 'Y',\n\t\t\t\tsync_connection_type: this.item.getType(),\n\t\t\t\tsync_connection_status: this.item.getSyncStatus() ? 'Y' : 'N',\n\t\t\t}\n\t\t});\n\n\t\tif (this.item.hasMenu())\n\t\t{\n\t\t\tthis.item.showMenu(this.gridUnit);\n\t\t}\n\t\telse if (this.item.getConnectStatus())\n\t\t{\n\t\t\tthis.item.openActiveConnectionSlider(this.item.getConnection());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.item.openInfoConnectionSlider();\n\t\t}\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc, Tag} from \"main.core\";\n\nexport default class ConnectionControls\n{\n\tuserName = null;\n\tserver = null;\n\tconnectionName = null;\n\n\tconstructor(options = null)\n\t{\n\t\tthis.addButtonText = Loc.getMessage('CAL_UPPER_CONNECT');\n\t\tthis.removeButtonText = Loc.getMessage('CAL_UPPER_DISCONNECT');\n\t\tthis.saveButtonText = Loc.getMessage('CAL_UPPER_SAVE');\n\n\t\tif (options !== null)\n\t\t{\n\t\t\tthis.userName = BX.util.htmlspecialchars(options.userName);\n\t\t\tthis.server = BX.util.htmlspecialchars(options.server);\n\t\t\tthis.connectionName = BX.util.htmlspecialchars(options.connectionName);\n\t\t}\n\t}\n\n\tgetWrapper()\n\t{\n\t\treturn Tag.render `\n\t\t\t<div class=\"calendar-sync-slider-section calendar-sync-slider-section-form\"></div>\n\t\t`;\n\t}\n\n\tgetForm()\n\t{\n\t\treturn Tag.render`\n\t\t\t<form class=\"calendar-sync-slider-form\" action=\"\">\n\t\t\t\t<div class=\"calendar-sync-slider-field\">\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-w100 ui-ctl-textbox\">\n\t\t\t\t\t\t<input type=\"text\" class=\"ui-ctl-element\" placeholder=\\\"${Loc.getMessage('CAL_TEXT_NAME')}\\\" name=\"name\" value=\"${this.connectionName || ''}\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-field\">\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-w100 ui-ctl-textbox\">\n\t\t\t\t\t\t<input type=\"text\" class=\"ui-ctl-element\" placeholder=\\\"${Loc.getMessage('CAL_TEXT_SERVER_ADDRESS')}\\\" name=\"server\" value=\"${this.server || ''}\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-field\">\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-w100 ui-ctl-textbox\">\n\t\t\t\t\t\t<input type=\"text\" class=\"ui-ctl-element\" placeholder=\\\"${Loc.getMessage('CAL_TEXT_USER_NAME')}\\\" name=\"user_name\" value=\"${this.userName || ''}\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-field\">\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-w100 ui-ctl-textbox\">\n\t\t\t\t\t\t<input type=\"password\" class=\"ui-ctl-element\" name=\"password\" placeholder=\\\"${Loc.getMessage('CAL_TEXT_PASSWORD')}\\\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t`;\n\t}\n\n\tgetAddButton()\n\t{\n\t\treturn Tag.render `\n\t\t\t<button id=\"connect-button\" class=\"ui-btn ui-btn-light-border\">${this.addButtonText}</button>\n\t\t`;\n\t}\n\n\tgetDisconnectButton()\n\t{\n\t\treturn Tag.render`\n\t\t\t<button id=\"disconnect-button\" class=\"calendar-sync-slider-btn ui-btn ui-btn-light-border\">${this.removeButtonText}</button>\n\t\t`;\n\t}\n\n\tgetSaveButton()\n\t{\n\t\treturn Tag.render`\n\t\t\t<button id=\"edit-connect-button\" class=\"calendar-sync-slider-btn ui-btn ui-btn-light-border\">${this.saveButtonText}</button>\n\t\t`;\n\t}\n\n\tgetButtonWrapper()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-slider-form-btn\"></div>\n\t\t`;\n\t}\n}","// @flow\n'use strict';\nimport { Type, Tag, Loc, Runtime, Dom } from 'main.core';\nimport { Util } from \"calendar.util\";\nimport { Popup } from 'main.popup';\n\nexport default class MobileSyncBanner\n{\n\tzIndex = 3100;\n\tDOM = {};\n\tQRCODE_SIZE = 186;\n\tQRCODE_COLOR_LIGHT = '#ffffff';\n\tQRCODE_COLOR_DARK = '#000000';\n\tQRCODE_WRAP_CLASS = 'calendar-sync-slider-qr-container';\n\tQRC = null;\n\n\tconstructor(options = {})\n\t{\n\t\tthis.type = options.type;\n\t\tthis.helpDeskCode = options.helpDeskCode || '11828176';\n\t\tthis.alreadyConnectedToNew = this.type === 'android'\n\t\t \t? Util.isGoogleConnected()\n\t\t\t: Util.isIcloudConnected()\n\t\t;\n\t}\n\n\tshow()\n\t{\n\t}\n\n\tshowInPopup()\n\t{\n\t\tthis.popup = new Popup({\n\t\t\tclassName: 'calendar-sync-qr-popup',\n\t\t\tdraggable: true,\n\t\t\tcontent: this.getContainer(),\n\t\t\twidth: 580,\n\t\t\tzIndexAbsolute: this.zIndex,\n\t\t\tcacheable: false,\n\t\t\tcloseByEsc: true,\n\t\t\tcloseIcon: true,\n\t\t});\n\t\tthis.popup.show();\n\n\t\tthis.initQrCode().then(this.drawQRCode.bind(this));\n\t}\n\n\tclose()\n\t{\n\t\tthis.popup.close();\n\t}\n\n\tgetContainer()\n\t{\n\t\tthis.DOM.container = Tag.render `\n\t\t\t<div class=\"calendar-sync-qr-popup-content\">\n\t\t\t\t<div class=\"calendar-sync-qr-popup-title\">\n\t\t\t\t\t${this.getTitle()}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-content\">\n\t\t\t\t\t<img class=\"calendar-sync-slider-phone-img\" src=\"/bitrix/images/calendar/sync/qr-background.svg\" alt=\"\">\n\t\t\t\t\t${this.getQrContainer()}\n\t\t\t\t\t${this.getInstructionContainer()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\tUtil.initHintNode(this.DOM.container.querySelector('.calendar-notice-mobile-banner'));\n\n\t\treturn this.DOM.container;\n\t}\n\n\tgetQrContainer()\n\t{\n\t\tif (!this.DOM.qrContainer)\n\t\t{\n\t\t\tthis.DOM.qrContainer = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-qr\">\n\t\t\t\t\t<div class=\"${this.QRCODE_WRAP_CLASS}\">${Util.getLoader(this.QRCODE_SIZE)}</div>\n\t\t\t\t\t<span class=\"calendar-sync-slider-logo\"></span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.DOM.qrContainer;\n\t}\n\n\tgetInstructionContainer()\n\t{\n\t\tif (!this.DOM.instructionContainer)\n\t\t{\n\t\t\tthis.DOM.instructionContainer = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-instruction\">\n\t\t\t\t\t<!--<div class=\"calendar-sync-slider-instruction-subtitle\"></div>-->\n\t\t\t\t\t${this.getInstructionTextContainer()}\n\t\t\t\t\t<div class=\"calendar-sync-slider-instruction-notice\">${Loc.getMessage('SYNC_MOBILE_NOTICE')}</div>\n\t\t\t\t\t<a href=\"javascript:void(0);\" \n\t\t\t\t\t\t\tonclick=\"BX.Helper.show('redirect=detail&code=' + ${this.getHelpdeskCode()},{zIndex:3100,}); event.preventDefault();\" \n\t\t\t\t\t\t\tclass=\"ui-btn ui-btn-success ui-btn-round\">\n\t\t\t\t\t\t${Loc.getMessage('SYNC_MOBILE_ABOUT_BTN')}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.DOM.instructionContainer;\n\t}\n\n\tgetInstructionTextContainer()\n\t{\n\t\tif (!this.DOM.instructionTextContainer)\n\t\t{\n\t\t\tthis.DOM.instructionTextContainer = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-instruction-title\">\n\t\t\t\t\t${Loc.getMessage('SYNC_MOBILE_NOTICE_HOW_TO') + ' '} \n\t\t\t\t\t${this.type !== 'iphone' ? this.getAndroidHintIcon() : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.DOM.instructionTextContainer;\n\t}\n\n\tgetAndroidHintIcon()\n\t{\n\t\tif (!this.DOM.androidHintIcon)\n\t\t{\n\t\t\tthis.DOM.androidHintIcon = Tag.render`\n\t\t\t<span \n\t\t\t\tclass=\"calendar-notice-mobile-banner\" \n\t\t\t\tdata-hint=\"${Loc.getMessage('CAL_ANDROID_QR_CODE_HINT')}\" \n\t\t\t\tdata-hint-no-icon=\"Y\">\n\t\t\t</span>`;\n\t\t}\n\n\t\treturn this.DOM.androidHintIcon;\n\t}\n\n\tgetInnerContainer()\n\t{\n\t\treturn this.DOM.container.querySelector('.' + this.QRCODE_WRAP_CLASS);\n\t}\n\n\tinitQrCode()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tRuntime.loadExtension(['main.qrcode']).then((exports) => {\n\t\t\t\tif (exports && exports.QRCode)\n\t\t\t\t{\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tdrawQRCode(wrap)\n\t{\n\t\tif (!Type.isDomNode(wrap))\n\t\t{\n\t\t\twrap = this.getInnerContainer();\n\t\t}\n\n\t\tthis.getMobileSyncUrl().then((link) => {\n\t\t\tDom.clean(wrap);\n\t\t\tthis.QRC = new QRCode(wrap, {\n\t\t\t\ttext: link,\n\t\t\t\twidth: this.getSize(),\n\t\t\t\theight: this.getSize(),\n\t\t\t\tcolorDark : this.QRCODE_COLOR_DARK,\n\t\t\t\tcolorLight : this.QRCODE_COLOR_LIGHT,\n\t\t\t\tcorrectLevel : QRCode.CorrectLevel.H\n\t\t\t});\n\t\t});\n\t}\n\n\tgetTitle()\n\t{\n\t\treturn Loc.getMessage('SYNC_BANNER_MOBILE_TITLE');\n\t}\n\n\tgetMobileSyncUrl()\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.getAuthLink', {\n\t\t\t\tdata: {\n\t\t\t\t\ttype: this.type ? 'slider' : 'banner',\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(\n\t\t\t\t(response) => {\n\t\t\t\t\tresolve(response.data.link);\n\t\t\t\t},\n\t\t\t\treject\n\t\t\t);\n\t\t});\n\t}\n\n\tgetSize()\n\t{\n\t\treturn this.QRCODE_SIZE;\n\t}\n\n\tgetDetailHelpUrl()\n\t{\n\t\treturn 'https://helpdesk.bitrix24.ru/open/' + this.getHelpdeskCode();\n\t}\n\n\tgetHelpdeskCode()\n\t{\n\t\treturn this.helpDeskCode;\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Tag, Dom, Event, Type } from 'main.core';\nimport { EventEmitter } from \"main.core.events\";\nimport { Util } from 'calendar.util';\n\nexport class InterfaceTemplate extends EventEmitter\n{\n\tstatic SLIDER_WIDTH = 606;\n\tsliderWidth = 840;\n\tstatic SLIDER_PREFIX = 'calendar:connection-sync-';\n\n\tconstructor(options)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.InterfaceTemplate');\n\n\t\tthis.title = options.title;\n\t\tthis.helpdeskCode = options.helpDeskCode;\n\t\tthis.titleInfoHeader = options.titleInfoHeader;\n\t\tthis.descriptionInfoHeader = options.descriptionInfoHeader;\n\t\tthis.titleActiveHeader = options.titleActiveHeader;\n\t\tthis.descriptionActiveHeader = options.descriptionActiveHeader;\n\t\tthis.sliderIconClass = options.sliderIconClass;\n\t\tthis.iconPath = options.iconPath;\n\t\tthis.iconLogoClass = options.iconLogoClass || '';\n\t\tthis.color = options.color;\n\t\tthis.provider = options.provider;\n\t\tthis.connection = options.connection;\n\t\tthis.popupWithUpdateButton = options.popupWithUpdateButton;\n\t}\n\n\tstatic createInstance(provider, connection = null)\n\t{\n\t\treturn new this(provider, connection);\n\t}\n\n\tgetInfoConnectionContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-wrap calendar-sync-wrap-detail\">\n\t\t\t\t<div class=\"calendar-sync-header\">\n\t\t\t\t\t<span class=\"calendar-sync-header-text\">${this.getHeaderTitle()}</span>\n\t\t\t\t</div>\n\t\t\t\t${this.getContentInfoBody()}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tgetContentActiveBodyHeader()\n\t{\n\t\tthis.disconnectButton = this.getDisconnectButton();\n\t\tEvent.bind(this.disconnectButton, 'click', this.handleDisconnectButton.bind(this));\n\n\t\tconst timestamp = this.connection.getSyncDate().getTime() / 1000;\n\t\tconst syncTime = timestamp\n\t\t\t? Util.formatDateUsable(timestamp) + ' ' + BX.date.format(Util.getTimeFormatShort(), timestamp)\n\t\t\t: '';\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__account ${this.getSyncStatusClassName()}\">\n\t\t\t\t<div class=\"calendar-sync__account-logo\">\n\t\t\t\t\t<div class=\"calendar-sync__account-logo--image ${this.getLogoIconClass()}\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__account-content\">\n\t\t\t\t\t${BX.util.htmlspecialchars(this.connection.getConnectionName())}\n\t\t\t\t\t<div class=\"calendar-sync__account-info\">\n\t\t\t\t\t\t<div class=\"calendar-sync__account-info--icon --animate\"></div>\n\t\t\t\t\t\t${syncTime}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${this.disconnectButton}\n\t\t\t</div>\n\t\t\t`;\n\t}\n\n\tgetActiveConnectionContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-wrap calendar-sync-wrap-detail\">\n\t\t\t\t<div class=\"calendar-sync-header\">\n\t\t\t\t\t<span class=\"calendar-sync-header-text\">${this.getHeaderTitle()}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__scope\">\n\t\t\t\t\t<div class=\"calendar-sync__content --border-radius\">\n\t\t\t\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t\t\t${this.getContentActiveBody()}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetContentInfoBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t${this.getContentInfoBodyHeader()}\n\t\t`;\n\t}\n\n\tgetContentActiveBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t${this.getContentActiveBodyHeader()}\n\t\t\t${this.getContentActiveBodySectionsHeader()}\n\t\t\t${this.getContentActiveBodySectionsManager()}\n\t\t`;\n\t}\n\n\tshowHelp()\n\t{\n\t\tif (BX.Helper)\n\t\t{\n\t\t\tBX.Helper.show(\"redirect=detail&code=\" + this.helpdeskCode);\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tgetHelpdeskLink()\n\t{\n\t\treturn 'https://helpdesk.bitrix24.ru/open/' + this.helpdeskCode;\n\t}\n\n\tgetHeaderTitle()\n\t{\n\t\treturn this.title;\n\t}\n\n\tgetLogoIconClass()\n\t{\n\t\treturn this.iconLogoClass;\n\t}\n\n\tgetContentInfoBodyHeader()\n\t{\n\t\tif (!this.infoBodyHeader)\n\t\t{\n\t\t\tthis.infoBodyHeader = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-section calendar-sync-slider-section-flex-wrap\">\n\t\t\t\t\t<div class=\"calendar-sync-slider-header-icon ${this.sliderIconClass}\"></div>\n\t\t\t\t\t<div class=\"calendar-sync-slider-header\">\n\t\t\t\t\t\t<div class=\"calendar-sync-slider-title\">\n\t\t\t\t\t\t\t${this.titleInfoHeader}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">\n\t\t\t\t\t\t\t\t${this.descriptionInfoHeader}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${this.getContentInfoBodyHeaderHelper()}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.infoBodyHeader;\n\t}\n\n\tgetContentInfoBodyHeaderHelper()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t<span class=\"calendar-sync-slider-info-text\">\n\t\t\t\t\t<a class=\"calendar-sync-slider-info-link\" href=\"javascript:void(0);\" onclick=\"${this.showHelp.bind(this)}\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_TEXT_ABOUT_WORK_SYNC')}\n\t\t\t\t\t</a>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetContentInfoWarning()\n\t{\n\t\tconst mobileSyncButton = this.getMobileSyncControlButton();\n\t\tif (this.alreadyConnectedToNew)\n\t\t{\n\t\t\tEvent.bind(mobileSyncButton, 'click', this.handleMobileButtonOtherSyncInfo.bind(this));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tEvent.bind(mobileSyncButton, 'click', this.handleMobileButtonConnectClick.bind(this));\n\n\t\t}\n\n\t\treturn Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-section-warning calendar-sync-slider-section-col\">\n\t\t\t\t\t<div class=\"ui-alert ui-alert-warning ui-alert-icon-info\">\n\t\t\t\t\t\t<span class=\"ui-alert-message\">${this.warningText}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"calendar-sync-button-warning\">${mobileSyncButton}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t}\n\n\tgetMobileSyncControlButton()\n\t{\n\t\treturn Tag.render`\n\t\t\t<button class=\"ui-btn ui-btn-success ui-btn-sm ui-btn-round\">\n\t\t\t\t${this.mobileSyncButtonText}\n\t\t\t</button>\n\t\t`\n\t}\n\n\tsetProvider(provider)\n\t{\n\t\tthis.provider = provider;\n\t}\n\n\t// TODO: move logic to provider\n\tsendRequestRemoveConnection(id)\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.removeConnection', {\n\t\t\tdata: {\n\t\t\t\tconnectionId: id,\n\t\t\t\tremoveCalendars: 'Y', //by default\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\tBX.reload();\n\t\t});\n\t}\n\n\trunUpdateInfo()\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.setSectionStatus', {\n\t\t\tdata: {\n\t\t\t\tsectionStatus: this.sectionStatusObject,\n\t\t\t},\n\t\t})\n\t\t.then((response) => {\n\t\t\tthis.emit('reDrawCalendarGrid', {});\n\t\t});\n\t}\n\n\trefresh(connection)\n\t{\n\t\tthis.connection = connection;\n\t\tif (this.connection)\n\t\t{\n\t\t\tthis.statusBlock\n\t\t\t\t.setStatus(this.connection.getStatus())\n\t\t\t\t.setConnections([this.connection]);\n\t\t}\n\t\t\n\t\tDom.replace(document.getElementById('status-info-block'), this.statusBlock.getContent());\n\t}\n\n\thandleConnectButton()\n\t{\n\t}\n\n\tgetDisconnectButton()\n\t{\n\t\treturn Tag.render`\n\t\t\t<button class=\"ui-btn ui-btn-light-border calendar-sync__account-btn\">${Loc.getMessage('CAL_SYNC_DISCONNECT_BUTTON')}</button>\n\t\t`;\n\t}\n\n\tgetSyncStatusClassName()\n\t{\n\t\treturn this.provider.getStatus() === \"success\" ? '--complete' : '--error';\n\t}\n\t\n\tgetContentActiveBodySectionsHeader()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__account-desc\">${Loc.getMessage('CAL_SYNC_SELECTED_LIST_TITLE')}</div>\n\t\t`;\n\t}\n\n\tgetContentActiveBodySectionsManager()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__account-check-list\">\n\t\t\t\t${this.getContentActiveBodySections()}\n\t\t\t</div>\n\t\t`;\n\t\t\n\t}\n\n\tgetContentActiveBodySections()\n\t{\n\t\tconst sectionList = [];\n\t\tthis.sectionList.forEach(section => {\n\t\t\tsectionList.push(Tag.render`\n\t\t\t\t<label class=\"calendar-sync__account-check-list-label\">\n\t\t\t\t\t<input type=\"checkbox\" class=\"calendar-sync__account-check-list-input\"\n\t\t\t\t\t\tvalue=\"${BX.util.htmlspecialchars(section['ID'])}\" \n\t\t\t\t\t\tonclick=\"${this.onClickCheckSection.bind(this)}\" ${section['ACTIVE'] === 'Y' ? 'checked' : ''}/>\n\t\t\t\t\t<span class=\"calendar-sync__account-check-list-text\">${BX.util.htmlspecialchars(section['NAME'])}</span>\n\t\t\t\t</label>\n\t\t\t`);\n\t\t});\n\n\t\treturn sectionList;\n\t}\n\n\tshowUpdateSectionListNotification()\n\t{\n\t\tUtil.showNotification(\n\t\t\tLoc.getMessage('CAL_SYNC_CALENDAR_LIST_UPDATED')\n\t\t)\n\t}\n\n\thandleDisconnectButton(event)\n\t{\n\t\tif (Type.isElementNode(this.disconnectButton))\n\t\t{\n\t\t\tDom.addClass(this.disconnectButton, ['ui-btn-clock', 'ui-btn-disabled']);\n\t\t}\n\t\tevent.preventDefault();\n\t\t// this.provider.removeConnection();\n\t\tthis.sendRequestRemoveConnection(this.connection.getId());\n\t}\n\t\n\tdeactivateConnection(id)\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.deactivateConnection', {\n\t\t\tdata: {\n\t\t\t\tconnectionId: id,\n\t\t\t\tremoveCalendars: 'N', //by default\n\t\t\t}\n\t\t}).then(() => {\n\t\t\tthis.provider.closeSlider();\n\t\t\tthis.provider.setStatus(this.provider.STATUS_NOT_CONNECTED);\n\t\t\tthis.provider.getInterfaceUnit().refreshButton();\n\t\t\tthis.provider.getInterfaceUnit().setSyncStatus(this.provider.STATUS_NOT_CONNECTED);\n\t\t\t\n\t\t\tthis.emit('reDrawCalendarGrid', {});\n\t\t});\n\t}\n}","// @flow\n'use strict';\n\nimport {InterfaceTemplate} from './interfacetemplate';\nimport {Dom, Loc, Tag} from \"main.core\";\nimport ConnectionControls from \"../controls/connectioncontrols\";\n\nexport class CaldavInterfaceTemplate extends InterfaceTemplate\n{\n\tconstructor(options)\n\t{\n\t\tsuper(options);\n\t}\n\n\tgetContentInfoBody()\n\t{\n\t\tconst formObject = new ConnectionControls();\n\t\tconst formBlock = formObject.getWrapper();\n\t\tconst form = formObject.getForm();\n\t\tconst button = formObject.getAddButton();\n\t\tconst buttonWrapper = formObject.getButtonWrapper();\n\t\tconst bodyHeader = this.getContentInfoBodyHeader();\n\n\t\tbutton.addEventListener('click', (event) => {\n\t\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\t\tanalyticsLabel: {\n\t\t\t\t\tclick_to_connection_button: 'Y',\n\t\t\t\t\tconnection_type: this.provider.getType(),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tDom.addClass(button, ['ui-btn-clock', 'ui-btn-disabled']);\n\t\t\tevent.preventDefault();\n\t\t\tthis.sendRequestAddConnection(form);\n\t\t});\n\n\t\tDom.append(button, buttonWrapper);\n\t\tDom.append(buttonWrapper, form);\n\t\tDom.append(form, formBlock);\n\n\t\treturn Tag.render`\n\t\t\t${bodyHeader}\n\t\t\t${formBlock}\n\t\t`;\n\t}\n\n\tgetContentActiveBody()\n\t{\n\t\tconst formObject = new ConnectionControls({\n\t\t\tserver: this.connection.addParams.server,\n\t\t\tuserName: this.connection.addParams.userName,\n\t\t\tconnectionName: this.connection.connectionName,\n\t\t});\n\t\tconst formBlock = formObject.getWrapper();\n\t\tconst form = formObject.getForm();\n\t\tconst bodyHeader = this.getContentActiveBodyHeader();\n\t\tDom.append(form, formBlock);\n\n\t\treturn Tag.render`\n\t\t\t${bodyHeader}\n\t\t\t${formBlock}\n\t\t`;\n\t}\n\n\tsendRequestAddConnection(form)\n\t{\n\t\tconst fd = new FormData(form);\n\t\tBX.ajax.runAction('calendar.api.syncajax.addConnection', {\n\t\t\tdata: {\n\t\t\t\tname: fd.get('name'),\n\t\t\t\tserver: fd.get('server'),\n\t\t\t\tuserName: fd.get('user_name'),\n\t\t\t\tpass: fd.get('password'),\n\t\t\t}\n\t\t}).then((response) => {\n\t\t\tBX.reload();\n\t\t}, response => {\n\t\t\tconst button = form.querySelector('#connect-button');\n\t\t\tthis.showAlertPopup(response.errors[0], button);\n\t\t});\n\t}\n\n\tshowAlertPopup(alert, button)\n\t{\n\t\tlet message = '';\n\t\tif (alert.code === 'incorrect_parameters')\n\t\t{\n\t\t\tmessage = Loc.getMessage('CAL_TEXT_ALERT_INCORRECT_PARAMETERS');\n\t\t}\n\t\telse if (alert.code === 'tech_problem')\n\t\t{\n\t\t\tmessage = Loc.getMessage('CAL_TEXT_ALERT_TECH_PROBLEM');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmessage = Loc.getMessage('CAL_TEXT_ALERT_DEFAULT');\n\t\t}\n\n\t\tconst messageBox = new BX.UI.Dialogs.MessageBox({\n\t\t\tmessage: message,\n\t\t\ttitle: alert.message,\n\t\t\tbuttons: BX.UI.Dialogs.MessageBoxButtons.OK,\n\t\t\tokCaption: Loc.getMessage('CAL_TEXT_BUTTON_RETURN_TO_SETTINGS'),\n\t\t\tminWidth: 358,\n\t\t\tmediumButtonSize: false,\n\t\t\tpopupOptions: {\n\t\t\t\tzIndex: 3021,\n\t\t\t\theight: 166,\n\t\t\t\twidth: 358,\n\t\t\t\tclassName: 'calendar-alert-popup-connection'\n\t\t\t},\n\t\t\tonOk: () => {\n\t\t\t\tDom.removeClass(button, ['ui-btn-clock', 'ui-btn-disabled']);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\n\t\tmessageBox.show();\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc} from \"main.core\";\nimport {CaldavInterfaceTemplate} from \"./caldavinterfacetemplate\";\n\nexport default class CaldavTemplate extends CaldavInterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_CALDAV\"),\n\t\t\thelpDeskCode: '5697365',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_CALDAV_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_CALDAV_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_CALDAV_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_CALDAV_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-caldav',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/caldav.svg',\n\t\t\tcolor: '#1eae43',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\t}\n}","// @flow\n'use strict';\n\nimport { Loc, Tag } from 'main.core';\nimport { InterfaceTemplate } from './interfacetemplate';\nimport { Util } from 'calendar.util';\n\nexport default class ExchangeTemplate extends InterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_EXCHANGE\"),\n\t\t\thelpDeskCode: '9860971',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_EXCHANGE_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_EXCHANGE_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_EXCHANGE_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_EXCHANGE_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-office',\n\t\t\ticonLogoClass: '--exchange',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/exchange.svg',\n\t\t\tcolor: '#54d0df',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\t}\n\n\tgetContentActiveBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t${this.getContentActiveBodyHeader()}\n\t\t\t${this.getContentBody()}\n\t\t\t${this.getHelpdeskBlock()}\n\t\t`;\n\t}\n\n\tgetContentActiveBodyHeader()\n\t{\n\n\t\tconst timestamp = this.connection.getSyncDate().getTime() / 1000;\n\t\tconst syncTime = timestamp\n\t\t\t? Util.formatDateUsable(timestamp) + ' ' + BX.date.format(Util.getTimeFormatShort(), timestamp)\n\t\t\t: '';\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__account ${this.getSyncStatusClassName()}\">\n\t\t\t\t<div class=\"calendar-sync__account-logo\">\n\t\t\t\t\t<div class=\"calendar-sync__account-logo--image ${this.getLogoIconClass()}\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__account-content\">\n\t\t\t\t\t${BX.util.htmlspecialchars(this.connection.getConnectionName())}\n\t\t\t\t\t<div class=\"calendar-sync__account-info\">\n\t\t\t\t\t\t<div class=\"calendar-sync__account-info--icon --animate\"></div>\n\t\t\t\t\t\t${syncTime}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t`;\n\t}\n\n\tgetContentBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__account-desc\">\n\t\t\t\t${Loc.getMessage('CAL_EXCHANGE_SELECTED_DESCRIPTION')}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetHelpdeskBlock()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div>\n\t\t\t\t<a class=\"calendar-sync-slider-info-link\" href=\"javascript:void(0);\" onclick=\"${this.showHelp.bind(this)}\">\n\t\t\t\t\t${Loc.getMessage('CAL_TEXT_ABOUT_WORK_SYNC')}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\n\t}\n}","// @flow\n'use strict';\n\nimport { Cache, Dom, Event, Loc, Tag, Text, Type } from 'main.core';\nimport { Util } from 'calendar.util';\nimport { Entry } from 'calendar.entry';\nimport { EventEmitter } from 'main.core.events';\n\nexport default class SyncWizard extends EventEmitter\n{\n\tTYPE = 'undefined';\n\tSLIDER_NAME = 'calendar:sync-wizard-slider';\n\tSLIDER_WIDTH = 450;\n\tLOADER_NAME = \"calendar:loader\";\n\tcache = new Cache.MemoryCache();\n\tsyncStagesList = [];\n\taccountName = '';\n\tHELPDESK_CODE = 11828176;\n\tMIN_UPDATE_STATE_DELAY = 1500; // in ms\n\tCONFETTI_DELAY = 1000;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.SyncWizard');\n\n\t\tthis.BX = window.top.BX || window.BX;\n\n\t\tthis.pullWizardEventHandler = this.handlePullNewEvent.bind(this);\n\t\tthis.lastUpdateStateTimestamp = Date.now();\n\t\tthis.logoIconClass = '';\n\t}\n\n\topenSlider()\n\t{\n\t\tBX.SidePanel.Instance.open(this.SLIDER_NAME, {\n\t\t\tcontentCallback: slider => {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(this.getContent());\n\t\t\t\t});\n\t\t\t},\n\t\t\tallowChangeHistory: false,\n\t\t\tevents: {\n\t\t\t\tonLoad: () => {\n\t\t\t\t\tthis.displaySyncStages();\n\t\t\t\t\tthis.bindButtonsHandlers();\n\t\t\t\t},\n\t\t\t\tonDestroy: this.handleCloseWizard.bind(this)\n\t\t\t},\n\t\t\tcacheable: false,\n\t\t\twidth: this.SLIDER_WIDTH,\n\t\t\tloader: this.LOADER_NAME,\n\t\t});\n\n\t\tthis.slider = BX.SidePanel.Instance.getTopSlider();\n\t\tthis.syncIsFinished = false;\n\t\tthis.errorStatus = false;\n\t}\n\n\tgetContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__wrapper calendar-sync__scope\">\n\t\t\t\t<div class=\"calendar-sync__content --border-radius\">\n\t\t\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t\t${this.getTitleWrapper()}\n\t\t\t\t\t\t${this.getSyncStagesWrapper()}\n\t\t\t\t\t\t${this.getInfoStatusWrapper()}\n\t\t\t\t\t\t${this.getErrorWrapper()}\n\t\t\t\t\t\t${this.getFinalCheckWrapper()}\n\t\t\t\t\t\t${this.getHelpLinkWrapper()}\n\t\t\t\t\t\t${this.getButtonWrapper()}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetTitleWrapper()\n\t{\n\t\tthis.syncTitleWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__account\">\n\t\t\t\t<div class=\"calendar-sync__account-logo\">\n\t\t\t\t\t<div class=\"calendar-sync__account-logo--image ${this.getLogoIconClass()}\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__account-content\">\n\t\t\t\t\t${this.getAccountNameNode()}\n\t\t\t\t\t<div class=\"calendar-sync__account-info\">\n\t\t\t\t\t\t<div class=\"calendar-sync__account-info--icon --animate\"></div>\n\t\t\t\t\t\t${this.getActiveStatusNode()}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t\treturn this.syncTitleWrapper;\n\t}\n\n\tgetSyncStagesWrapper()\n\t{\n\t\tthis.syncStagesWrapper = Tag.render`<div class=\"calendar-sync-stages-wrap\"></div>`;\n\t\treturn this.syncStagesWrapper;\n\t}\n\n\tgetInfoStatusWrapper()\n\t{\n\t\tthis.infoStatusWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom-xl\" style=\"display: none;\">\n\t\t\t\t<div class=\"calendar-sync__notification\">\n\t\t\t\t\t<div class=\"calendar-sync__notification-title\">${Loc.getMessage('CAL_INFO_STATUS_CONG_1')}</div>\n\t\t\t\t\t<div class=\"calendar-sync__notification-message\">${Loc.getMessage('CAL_INFO_STATUS_CONG_2')}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t\treturn this.infoStatusWrapper;\n\t}\n\n\tgetErrorWrapper()\n\t{\n\t\tthis.errorWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom-xl\" style=\"display: none;\">\n\t\t\t\t<div class=\"calendar-sync__error\">\n\t\t\t\t\t<div class=\"calendar-sync__notification-message\">\n\t\t\t\t\t\t<div class=\"calendar-sync__notification-message-inner\">\n\t\t\t\t\t\t\t${Loc.getMessage('CAL_ERROR_WARN_1')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${Loc.getMessage('CAL_ERROR_WARN_2')}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t\treturn this.errorWrapper;\n\t}\n\n\tgetHelpLinkWrapper()\n\t{\n\t\tthis.helpLinkWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block\" style=\"display: none;\"></div>\n\t\t`;\n\t\treturn this.helpLinkWrapper;\n\t}\n\n\tgetFinalCheckWrapper()\n\t{\n\t\tthis.finalCheckWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block\" style=\"display: none;\"></div>\n\t\t`;\n\t\treturn this.finalCheckWrapper;\n\t}\n\n\tgetButtonWrapper()\n\t{\n\t\tthis.buttonWrapper = Tag.render`\n\t\t\t<div style=\"display: none\" class=\"calendar-sync__content-block --align-center\">\n\t\t\t\t<a class=\"ui-btn ui-btn-lg ui-btn-primary ui-btn-round\" data-role=\"continue_btn\">\n\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_CONTINUE')}\n\t\t\t\t</a>\n\t\t\t\t<a style=\"display: none\" class=\"ui-btn ui-btn-lg ui-btn-light-border ui-btn-round\" data-role=\"everything_is_fine_btn\">\n\t\t\t\t\t${Loc.getMessage('CAL_BUTTON_EVERYTHING_IS_FINE')}\n\t\t\t\t</a>\n\t\t\t\t<a style=\"display: none\" class=\"ui-btn ui-btn-lg ui-btn-light-border ui-btn-round\" data-role=\"close_button\">\n\t\t\t\t\t${Loc.getMessage('CAL_ERROR_CLOSE')}\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.buttonWrapper;\n\t}\n\n\tgetNewEventCardWrapper()\n\t{\n\t\tthis.newEventCardWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom\" style=\"display: none;\"></div>\n\t\t`;\n\t\treturn this.newEventCardWrapper;\n\t}\n\n\tgetSkeletonWrapper()\n\t{\n\t\tthis.skeletonWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t<div class=\"calendar-sync__balloon --skeleton\">\n\t\t\t\t\t\t<div class=\"calendar-sync__balloon__skeleton-box\">\n\t\t\t\t\t\t\t<div class=\"calendar-sync__balloon__skeleton-inline-box\">\n\t\t\t\t\t\t\t\t<div class=\"calendar-sync__balloon__skeleton-circle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"calendar-sync__balloon__skeleton-line\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"calendar-sync__balloon__skeleton-line\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text\">${this.getSkeletonTitle()}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t`;\n\t\treturn this.skeletonWrapper;\n\t}\n\n\tgetSkeletonTitle()\n\t{\n\t\treturn '';\n\t}\n\n\tgetExtraInfoWithCheckIcon()\n\t{\n\t\tconst alreadyConnected = Object.values(this.connectionsProviders).filter(item => {\n\t\t\treturn item.mainPanel && item.status;\n\t\t}).length > 0;\n\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync__content-text --icon-check${(alreadyConnected ? ' --disabled' : '')}\">\n\t\t\t\t${Loc.getMessage('CAL_SYNC_INFO_PROMO')}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetAccountNameNode()\n\t{\n\t\tif (!Type.isElementNode(this.accountNameNode))\n\t\t{\n\t\t\tthis.accountNameNode = Tag.render`\n\t\t\t<div class=\"calendar-sync__account-title\">${this.getAccountName()}</div>\n\t\t`;\n\t\t}\n\t\treturn this.accountNameNode;\n\t}\n\n\tsetAccountName(value)\n\t{\n\t\tthis.accountName = value;\n\t}\n\n\tgetAccountName()\n\t{\n\t\treturn this.accountName;\n\t}\n\n\tgetActiveStatusNode()\n\t{\n\t\tif (!Type.isElementNode(this.activeStatusNode))\n\t\t{\n\t\t\tthis.activeStatusNode = Tag.render`\n\t\t\t\t<span class=\"calendar-active-status-node-carousel\">\n\t\t\t\t\t<span class=\"calendar-active-status-node-phrase\">\n\t\t\t\t\t\t${Loc.getMessage('CAL_STATUS_SYNC_IN_PROGRESS')}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t`;\n\n\t\t\tthis.startStatusCarousel(this.activeStatusNode);\n\t\t}\n\n\t\treturn this.activeStatusNode;\n\t}\n\n\tstartStatusCarousel(statusNode)\n\t{\n\t\tconst progressStatuses = [\n\t\t\tLoc.getMessage('CAL_STATUS_SYNC_IN_PROGRESS_STATUSES_FIRST'),\n\t\t\tLoc.getMessage('CAL_STATUS_SYNC_IN_PROGRESS_STATUSES_SECOND')\n\t\t];\n\n\t\tlet dotCycle = 1;\n\n\t\tthis.statusCarouselInterval = setInterval(() => {\n\t\t\tconst currentPhraseNode = statusNode.firstElementChild;\n\t\t\tif (this.countDots(currentPhraseNode.innerText) < 3)\n\t\t\t{\n\t\t\t\tcurrentPhraseNode.innerText += '.';\n\t\t\t\tstatusNode.style.width = (currentPhraseNode.offsetWidth + 1) + 'px';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (dotCycle < 2)\n\t\t\t{\n\t\t\t\tdotCycle++;\n\t\t\t\tcurrentPhraseNode.innerText = currentPhraseNode.innerText.slice(0, -3);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdotCycle = 1;\n\n\t\t\tif (progressStatuses.length > 0)\n\t\t\t{\n\t\t\t\tconst status = progressStatuses.shift();\n\t\t\t\tthis.animateNextStatus(statusNode, status);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst almostDoneStatus = Loc.getMessage('CAL_STATUS_SYNC_IN_PROGRESS_ALMOST_DONE');\n\t\t\t\tthis.animateNextStatus(statusNode, almostDoneStatus);\n\t\t\t\tstatusNode.style.width = '';\n\t\t\t\tclearInterval(this.statusCarouselInterval);\n\t\t\t}\n\t\t}, 900);\n\t}\n\n\tanimateNextStatus(carousel, phraseText)\n\t{\n\t\tconst currentPhraseNode = carousel.firstElementChild;\n\t\tconst nextPhraseNode = Tag.render`\n\t\t\t<span class=\"calendar-active-status-node-phrase\">${phraseText}</span>\n\t\t`;\n\t\tcarousel.append(nextPhraseNode);\n\n\t\tconst maxWidth = Math.max(nextPhraseNode.offsetWidth, currentPhraseNode.offsetWidth);\n\t\tcarousel.style.width = (maxWidth + 1) + 'px';\n\n\t\tcurrentPhraseNode.style.transition = ''; // turn on animation\n\t\tcurrentPhraseNode.style.transform = `translateX(-${currentPhraseNode.offsetWidth}px)`;\n\t\tnextPhraseNode.style.transform = `translateX(-${currentPhraseNode.offsetWidth}px)`;\n\n\t\tsetTimeout(() => {\n\t\t\tcurrentPhraseNode.remove();\n\t\t\tnextPhraseNode.style.transition = 'none'; // turn off animation\n\t\t\tnextPhraseNode.style.transform = '';\n\t\t}, 300);\n\t}\n\n\tcountDots(string)\n\t{\n\t\treturn (string.match(/\\./g) || []).length;\n\t}\n\n\tsetSyncStages()\n\t{\n\t\tthis.syncStagesList = [];\n\t}\n\n\tgetSyncStages()\n\t{\n\t\treturn this.syncStagesList;\n\t}\n\n\tgetHelpDeskCode()\n\t{\n\t\treturn this.HELPDESK_CODE;\n\t}\n\n\tdisplaySyncStages()\n\t{\n\t\tDom.clean(this.syncStagesWrapper);\n\t\tthis.getSyncStages().forEach(stage => {\n\t\t\tstage.renderTo(this.syncStagesWrapper);\n\t\t});\n\t}\n\n\tbindButtonsHandlers()\n\t{\n\t\tconst continueButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"continue_btn\"]');\n\t\tif (Type.isElementNode(continueButton))\n\t\t{\n\t\t\tEvent.bind(continueButton, 'click', this.handleContinueButtonClick.bind(this));\n\t\t}\n\n\t\tconst eifButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"everything_is_fine_btn\"]');\n\t\tif (Type.isElementNode(eifButton))\n\t\t{\n\t\t\tEvent.bind(eifButton, 'click', this.handleFinalCloseButtonClick.bind(this));\n\t\t}\n\t}\n\n\thandleContinueButtonClick()\n\t{\n\t\tthis.showFinalStage();\n\t}\n\n\tshowFinalStage()\n\t{\n\t\tthis.syncIsFinished = true;\n\n\t\tconst eifButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"everything_is_fine_btn\"]');\n\t\tif (Type.isElementNode(eifButton))\n\t\t{\n\t\t\teifButton.style.display = '';\n\t\t}\n\n\t\tconst continueButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"continue_btn\"]');\n\t\tif (Type.isElementNode(continueButton))\n\t\t{\n\t\t\tcontinueButton.style.display = 'none';\n\t\t}\n\n\t\tthis.showFinalCheckWrapper();\n\t\tthis.showHelpLinkWrapper();\n\t\tthis.hideSyncStagesWrapper();\n\t\tthis.hideInfoStatusWrapper();\n\n\t\tUtil.getBX().Event.EventEmitter.subscribe(\n\t\t\t'onPullEvent-calendar',\n\t\t\tthis.pullWizardEventHandler\n\t\t);\n\n\t\tthis.emit('startWizardWaitingMode');\n\t}\n\n\tisSyncFinished()\n\t{\n\t\treturn this.syncIsFinished;\n\t}\n\n\thandleFinalCloseButtonClick()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:sync-slider', 'calendar:section-slider', this.SLIDER_NAME].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\tcalendarAction: 'complete_wizard_close',\n\t\t\t\tconnection_type: this.TYPE\n\t\t\t}\n\t\t});\n\t}\n\n\thandleUpdateState(stateData)\n\t{\n\t\tconst currentTimestamp = Date.now();\n\t\tif (currentTimestamp - this.lastUpdateStateTimestamp > this.MIN_UPDATE_STATE_DELAY)\n\t\t{\n\t\t\tthis.updateState(stateData);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.handleUpdateState(stateData);\n\t\t\t}, this.MIN_UPDATE_STATE_DELAY);\n\t\t}\n\t}\n\n\tupdateState(stateData)\n\t{\n\t\tif (this.errorStatus)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (stateData.stage === 'connection_created'\n\t\t\t&& stateData.accountName\n\t\t\t&& Type.isElementNode(this.accountNameNode)\n\t\t)\n\t\t{\n\t\t\tthis.setAccountName(stateData.accountName);\n\t\t\tthis.accountNameNode.innerHTML = Text.encode(stateData.accountName)\n\t\t}\n\n\t\tthis.lastUpdateStateTimestamp = Date.now();\n\t}\n\n\tsetActiveStatusFinished()\n\t{\n\t\tthis.activeStatusNode.style.width = '';\n\t\tclearInterval(this.statusCarouselInterval);\n\t\tthis.syncIsFinished = true;\n\t\tif (Type.isElementNode(this.activeStatusNode))\n\t\t{\n\t\t\tthis.activeStatusNode.innerHTML = Text.encode(Loc.getMessage('CAL_STATUS_SYNC_SUCCESS').toUpperCase())\n\t\t\tDom.remove(this.syncTitleWrapper.querySelector('.calendar-sync__account-info--icon'));\n\t\t}\n\t}\n\n\tshowButtonWrapper()\n\t{\n\t\tif (Type.isElementNode(this.buttonWrapper))\n\t\t{\n\t\t\tthis.buttonWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideButtonWrapper()\n\t{\n\t\tif (Type.isElementNode(this.buttonWrapper))\n\t\t{\n\t\t\tthis.buttonWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\tshowInfoStatusWrapper()\n\t{\n\t\tif (Type.isElementNode(this.infoStatusWrapper))\n\t\t{\n\t\t\tthis.infoStatusWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideInfoStatusWrapper()\n\t{\n\t\tif (Type.isElementNode(this.infoStatusWrapper))\n\t\t{\n\t\t\tthis.infoStatusWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\tshowErrorWrapper()\n\t{\n\t\tif (Type.isElementNode(this.errorWrapper))\n\t\t{\n\t\t\tthis.errorWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideErrorWrapper()\n\t{\n\t\tif (Type.isElementNode(this.errorWrapper))\n\t\t{\n\t\t\tthis.errorWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\tshowFinalCheckWrapper()\n\t{\n\t\tif (Type.isElementNode(this.finalCheckWrapper))\n\t\t{\n\t\t\tthis.finalCheckWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideFinalCheckWrapper()\n\t{\n\t\tif (Type.isElementNode(this.finalCheckWrapper))\n\t\t{\n\t\t\tthis.finalCheckWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\tshowSyncStagesWrapper()\n\t{\n\t\tif (Type.isElementNode(this.syncStagesWrapper))\n\t\t{\n\t\t\tthis.syncStagesWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideSyncStagesWrapper()\n\t{\n\t\tif (Type.isElementNode(this.syncStagesWrapper))\n\t\t{\n\t\t\tthis.syncStagesWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\tshowHelpLinkWrapper()\n\t{\n\t\tif (Type.isElementNode(this.helpLinkWrapper))\n\t\t{\n\t\t\tthis.helpLinkWrapper.style.display = '';\n\t\t}\n\t}\n\n\thideHelpLinkWrapper()\n\t{\n\t\tif (Type.isElementNode(this.helpLinkWrapper))\n\t\t{\n\t\t\tthis.helpLinkWrapper.style.display = 'none';\n\t\t}\n\t}\n\n\thandlePullNewEvent(event)\n\t{\n\t\tif (event && Type.isFunction(event.getData))\n\t\t{\n\t\t\tconst data = {\n\t\t\t\tcommand: event.getData()[0],\n\t\t\t\t...event.getData()[1]\n\t\t\t};\n\n\t\t\tif (\n\t\t\t\tdata.command === 'edit_event'\n\t\t\t\t&& data.newEvent\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (Type.isElementNode(this.finalCheckWrapper))\n\t\t\t\t{\n\t\t\t\t\tconst syncBalloon = this.finalCheckWrapper.querySelector('.calendar-sync__balloon');\n\t\t\t\t\tif (Type.isElementNode(syncBalloon) && Dom.hasClass(syncBalloon, '--progress'))\n\t\t\t\t\t{\n\t\t\t\t\t\tDom.removeClass(syncBalloon, '--progress');\n\t\t\t\t\t\tDom.addClass(syncBalloon, '--done');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst entry = new Entry({ data: data.fields });\n\t\t\t\tthis.displayNewEvent(entry);\n\n\t\t\t\tUtil.getBX().Event.EventEmitter.unsubscribe(\n\t\t\t\t\t'onPullEvent-calendar',\n\t\t\t\t\tthis.pullWizardEventHandler\n\t\t\t\t);\n\n\t\t\t\tconst eifButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"everything_is_fine_btn\"]');\n\t\t\t\tif (Type.isElementNode(eifButton))\n\t\t\t\t{\n\t\t\t\t\teifButton.innerHTML = Text.encode(Loc.getMessage('CAL_BUTTON_KEEP_GOING'));\n\t\t\t\t\tDom.addClass(eifButton, 'ui-btn-primary');\n\t\t\t\t\tDom.removeClass(eifButton, 'ui-btn-light-border');\n\t\t\t\t}\n\n\t\t\t\tthis.emit('endWizardWaitingMode');\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayNewEvent(entry)\n\t{\n\t\t// Hide skeleton\n\t\tif (Type.isElementNode(this.skeletonWrapper))\n\t\t{\n\t\t\tDom.remove(this.skeletonWrapper);\n\t\t}\n\n\t\tif (Type.isElementNode(this.newEventCardWrapper))\n\t\t{\n\t\t\tthis.newEventCardWrapper.style.display = '';\n\t\t\tDom.clean(this.newEventCardWrapper);\n\t\t\tthis.newEventCardWrapper.appendChild(this.getNewEventCard(entry));\n\t\t}\n\t}\n\n\tgetNewEventCard(entry)\n\t{\n\t\tconst from = new Date(entry.from.getTime() - (parseInt(entry.data['~USER_OFFSET_FROM']) || 0) * 1000);\n\t\tconst to = new Date(entry.to.getTime() - (parseInt(entry.data['~USER_OFFSET_TO']) || 0) * 1000);\n\t\tconst fromTimestamp = from.getTime();\n\t\tconst dateFrom = BX.date.format(Util.getDayMonthFormat(), fromTimestamp / 1000);\n\t\tconst timeFrom = Util.formatTime(from.getHours(), from.getMinutes());\n\t\tconst timeTo = Util.formatTime(to.getHours(), to.getMinutes());\n\t\tconst timeField = entry.isFullDay()\n\t\t\t\t? Loc.getMessage('CAL_WIZARD_FULL_DAY')\n\t\t\t\t: timeFrom + ' - ' + timeTo;\n\n\t\tthis.newEventCard = Tag.render`\n\t\t\t<div class=\"calendar-sync__balloon --calendar ${entry.isFullDay() ? '--fullday-event' : ''}\">\n\t\t\t\t<div class=\"calendar-sync__content-text\">\n\t\t\t\t\t${dateFrom}\n\t\t\t\t\t<span class=\"calendar-date-year\">\n\t\t\t\t\t\t${BX.date.format('Y', fromTimestamp / 1000)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__content-text\">${BX.date.format('l', fromTimestamp / 1000)}</div>\n\t\t\t\t<div class=\"calendar-sync__time-box\">\n\t\t\t\t\t<div class=\"calendar-sync__time\">\n\t\t\t\t\t\t<div class=\"calendar-sync__time-date\">${timeFrom}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__time-line\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"calendar-sync__time-notification-box\">\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text\">${Text.encode(entry.getName())}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text\">${timeField}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"calendar-sync__time\">\n\t\t\t\t\t\t<div class=\"calendar-sync__time-date\">${timeTo}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__time-line\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.newEventCard;\n\t}\n\n\thandleCloseWizard()\n\t{\n\t\tthis.slider = null;\n\n\t\tclearInterval(this.statusCarouselInterval);\n\n\t\tUtil.getBX().Event.EventEmitter.unsubscribe(\n\t\t\t'onPullEvent-calendar',\n\t\t\tthis.pullWizardEventHandler\n\t\t);\n\n\t\tthis.emit('onClose');\n\t}\n\n\tshowConfetti()\n\t{\n\t\tsetTimeout(() => {\n\t\t\tconst bx = Util.getBX();\n\t\t\tbx.UI.Confetti.fire({\n\t\t\t\tparticleCount: 240,\n\t\t\t\tspread: 170,\n\t\t\t\torigin: { y: 0.3, x: 0.9 },\n\t\t\t\tzIndex: (bx.SidePanel.Instance.getTopSlider().getZindex() + 1)\n\t\t\t});\n\t\t}, this.CONFETTI_DELAY);\n\t}\n\n\tgetLogoIconClass()\n\t{\n\t\treturn this.logoIconClass;\n\t}\n\n\tgetSlider()\n\t{\n\t\treturn this.slider;\n\t}\n\n\tsetErrorState()\n\t{\n\t\tthis.errorStatus = true;\n\t\tthis.showErrorWrapper();\n\t\tthis.hideInfoStatusWrapper();\n\t\tthis.hideSyncStagesWrapper();\n\t\tthis.showButtonWrapper();\n\t\tDom.addClass(this.syncTitleWrapper, '--error');\n\t\tif (Type.isElementNode(this.activeStatusNode))\n\t\t{\n\t\t\tthis.activeStatusNode.innerHTML = Text.encode(Loc.getMessage('CAL_STATUS_SYNC_ERROR').toUpperCase())\n\t\t}\n\n\t\tconst closeButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"close_button\"]');\n\t\tif (Type.isElementNode(closeButton))\n\t\t{\n\t\t\tcloseButton.style.display = '';\n\t\t\tEvent.bind(closeButton, 'click', () => {\n\t\t\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t\t\t{\n\t\t\t\t\tif (['calendar:sync-slider', 'calendar:section-slider', this.SLIDER_NAME].includes(slider.getUrl()))\n\t\t\t\t\t{\n\t\t\t\t\t\tslider.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tBX.reload();\n\t\t\t});\n\t\t}\n\n\t\tconst continueButton = this.buttonWrapper.querySelector('.ui-btn[data-role=\"continue_btn\"]');\n\t\tif (Type.isElementNode(continueButton))\n\t\t{\n\t\t\tcontinueButton.style.display = 'none';\n\t\t}\n\t}\n}\n","// @flow\n'use strict';\n\nimport 'ui.tilegrid';\nimport 'ui.forms';\nimport { Dom, Loc, Tag, Type, Event} from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nexport default class SyncStageUnit\n{\n\tconstructor(options)\n\t{\n\t\tthis.name = options.name || '';\n\t\tthis.title = options.title || '';\n\t\tthis.doneStatus = false;\n\t}\n\n\trenderTo(outerWrapper)\n\t{\n\t\tif (Type.isElementNode(outerWrapper))\n\t\t{\n\t\t\touterWrapper.appendChild(this.getContent());\n\t\t}\n\t\t\n\t\tEventEmitter.emit('BX.Calendar.Sync.Interface.SyncStageUnit:onRenderDone');\n\t}\n\n\tgetContent()\n\t{\n\t\tthis.contentNode = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --space-bottom-xl\">\n\t\t\t\t<div class=\"calendar-sync__content-text --icon-check --disabled\">${this.title}</div>\n\t\t\t</div>\n\t\t`;\n\t\treturn this.contentNode;\n\t}\n\n\tsetDone()\n\t{\n\t\tthis.doneStatus = true;\n\t\tDom.removeClass(this.contentNode.querySelector('.--icon-check'), '--disabled');\n\t}\n\n\tsetUndone()\n\t{\n\t\tthis.doneStatus = false;\n\t\tDom.addClass(this.contentNode.querySelector('.--icon-check'), '--disabled');\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Tag, Event } from 'main.core';\nimport SyncWizard from './syncwizard';\nimport SyncStageUnit from './syncstageunit';\nimport { Util } from 'calendar.util';\n\n\nexport default class GoogleSyncWizard extends SyncWizard\n{\n\tTYPE = 'google';\n\tSLIDER_NAME = 'calendar:sync-wizard-google';\n\tSTAGE_1_CODE = 'google-to-b24';\n\tSTAGE_2_CODE = 'b24-to-google';\n\tSTAGE_3_CODE = 'b24-events-to-google';\n\tGOOGLE_ON_MOBILE_HELPDESK = 15456338;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.GoogleSyncWizard');\n\t\tthis.setAccountName(Loc.getMessage('CALENDAR_TITLE_GOOGLE'));\n\t\tthis.setSyncStages();\n\t\tthis.logoIconClass = '--google';\n\t}\n\n\tgetHelpLinkWrapper()\n\t{\n\t\tlet link;\n\t\tthis.helpLinkWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync__content-block --align-center --space-bottom\" style=\"display: none;\">\n\t\t\t\t${link = Tag.render`<a href=\"#\" class=\"calendar-sync__content-link\">\n\t\t\t\t\t${Loc.getMessage('CAL_SYNC_NO_GOOGLE_ON_PHONE')}\n\t\t\t\t</a>`}\n\t\t\t</div>\n\t\t`;\n\n\t\tEvent.bind(link, 'click', () => {\n\t\t\tconst helper = Util.getBX().Helper;\n\t\t\tif(helper)\n\t\t\t{\n\t\t\t\thelper.show(\"redirect=detail&code=\" + this.GOOGLE_ON_MOBILE_HELPDESK);\n\t\t\t}\n\t\t});\n\n\t\treturn this.helpLinkWrapper;\n\t}\n\n\tgetFinalCheckWrapper()\n\t{\n\t\tthis.finalCheckWrapper = Tag.render`\n\t\t\t<div style=\"display: none;\">\n\t\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t<div class=\"calendar-sync__balloon --progress\">\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-progress\">${Loc.getMessage('CAL_SYNC_LETS_CHECK')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress\">${Loc.getMessage('CAL_SYNC_CREATE_EVENT_GOOGLE')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_ADDED_GOOGLE')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_YOULL_SEE')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__balloon--icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${this.getSkeletonWrapper()}\n\t\t\t\t${this.getNewEventCardWrapper()}\n\t\t\t</div>\n\t\t`;\n\t\treturn this.finalCheckWrapper;\n\t}\n\n\tsetSyncStages()\n\t{\n\t\tthis.syncStagesList = [\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_1_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_GOOGLE_1')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_2_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_GOOGLE_2')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_3_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_GOOGLE_3')\n\t\t\t})\n\t\t];\n\t}\n\n\tupdateState(stateData)\n\t{\n\t\tsuper.updateState(stateData);\n\n\t\tthis.getSyncStages().forEach(stage => {\n\t\t\tif (\n\t\t\t\tstateData.stage === 'connection_created'\n\t\t\t\t&& stage.name === this.STAGE_1_CODE\n\t\t\t)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (\n\t\t\t\tstateData.stage === 'import_finished'\n\t\t\t && (stage.name === this.STAGE_1_CODE || stage.name === this.STAGE_2_CODE)\n\t\t\t)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (stateData.stage === 'export_finished')\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t\tif (stage.name === this.STAGE_3_CODE)\n\t\t\t\t{\n\t\t\t\t\tthis.setActiveStatusFinished();\n\t\t\t\t\tthis.showButtonWrapper();\n\t\t\t\t\tthis.showInfoStatusWrapper();\n\t\t\t\t\tthis.showConfetti();\n\t\t\t\t\t\n\t\t\t\t\tthis.emit('onConnectionCreated');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSkeletonTitle()\n\t{\n\t\treturn Loc.getMessage('CAL_SYNC_NEW_EVENT_GOOGLE_TITLE');\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Event, Runtime } from 'main.core';\nimport { InterfaceTemplate } from \"./interfacetemplate\";\nimport { MessageBox } from 'ui.dialogs.messagebox';\nimport { Util } from 'calendar.util';\nimport GoogleSyncWizard from \"../syncwizard/googlesyncwizard\"\n\nexport default class GoogleTemplate extends InterfaceTemplate\n{\n\tHANDLE_CONNECTION_DELAY = 500;\n\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_GOOGLE\"),\n\t\t\thelpDeskCode: '6030429',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_GOOGLE_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_GOOGLE_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_GOOGLE_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_GOOGLE_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-google',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/google.svg',\n\t\t\ticonLogoClass: '--google',\n\t\t\tcolor: '#387ced',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\n\t\tthis.sectionStatusObject = {};\n\t\tthis.sectionList = [];\n\n\t\tthis.handleSuccessConnectionDebounce = Runtime.debounce(this.handleSuccessConnection, this.HANDLE_CONNECTION_DELAY, this);\n\t}\n\n\tcreateConnection()\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\tcalendarAction: 'createConnection',\n\t\t\t\tclick_to_connection_button: 'Y',\n\t\t\t\tconnection_type: 'google',\n\t\t\t}\n\t\t});\n\n\t\tBX.util.popup(this.provider.getSyncLink(), 500, 600);\n\n\t\tEvent.bind(window, 'hashchange', this.handleSuccessConnectionDebounce);\n\t\tEvent.bind(window, 'message', this.handleSuccessConnectionDebounce);\n\t}\n\n\thandleSuccessConnection(event)\n\t{\n\t\tif (\n\t\t\t(window.location.hash === '#googleAuthSuccess')\n\t\t\t|| (event.data.title === 'googleAuthSuccess')\n\t\t)\n\t\t{\n\t\t\tUtil.removeHash();\n\t\t\tthis.provider.setWizardSyncMode(true);\n\n\t\t\tthis.provider.saveConnection();\n\t\t\tthis.openSyncWizard();\n\t\t\tthis.provider.setStatus(this.provider.STATUS_SYNCHRONIZING);\n\t\t\tthis.provider.getInterfaceUnit().refreshButton();\n\t\t}\n\t}\n\n\tgetSectionsForGoogle()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.getAllSectionsForGoogle', {\n\t\t\t\tdata: {\n\t\t\t\t\tconnectionId: this.connection.addParams.id\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(\n\t\t\t\t(response) => {\n\t\t\t\t\tthis.sectionList = response.data;\n\t\t\t\t\tresolve(response.data);\n\t\t\t\t},\n\t\t\t\t(response) => {\n\t\t\t\t\tresolve(response.errors);\n\t\t\t\t}\n\t\t\t);\n\t\t})\n\t}\n\n\tonClickCheckSection(event)\n\t{\n\t\tthis.sectionStatusObject[event.target.value] = event.target.checked;\n\t\tthis.runUpdateInfo();\n\t\tthis.showUpdateSectionListNotification();\n\t}\n\n\tshowAlertPopup()\n\t{\n\t\tconst messageBox = new MessageBox({\n\t\t\tclassName: this.id,\n\t\t\tmessage: Loc.getMessage('GOOGLE_IS_NOT_CALDAV_SETTINGS_WARNING_MESSAGE'),\n\t\t\twidth: 500,\n\t\t\toffsetLeft: 60,\n\t\t\toffsetTop: 5,\n\t\t\tpadding: 7,\n\t\t\tonOk: () => {\n\t\t\t\tmessageBox.close();\n\t\t\t},\n\t\t\tokCaption: 'OK',\n\t\t\tbuttons: BX.UI.Dialogs.MessageBoxButtons.OK,\n\t\t\tpopupOptions: {\n\t\t\t\tzIndexAbsolute: 4020,\n\t\t\t\tautoHide: true,\n\t\t\t\tanimation: 'fading-slide',\n\t\t\t},\n\t\t});\n\t\tmessageBox.show();\n\t}\n\n\thandleConnectButton()\n\t{\n\t\tif (this.provider.hasSetSyncGoogleSettings())\n\t\t{\n\t\t\tthis.createConnection();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.showAlertPopup();\n\t\t}\n\t}\n\n\topenSyncWizard()\n\t{\n\t\tif (!this.wizard)\n\t\t{\n\t\t\tthis.wizard = new GoogleSyncWizard();\n\t\t\tthis.wizard.openSlider();\n\t\t\tthis.provider.setActiveWizard(this.wizard);\n\t\t}\n\t}\n\n\tsendRequestRemoveConnection(id)\n\t{\n\t\tthis.deactivateConnection(id);\n\t}\n}\n","// @flow\n'use strict';\nimport { Tag, Loc, Dom, Event } from 'main.core';\nimport { Util } from 'calendar.util';\nimport { Popup } from 'main.popup';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\n\nexport default class IcloudAuthDialog extends EventEmitter\n{\n\tzIndex = 3100;\n\tDOM = {};\n\tappPasswordTemplate = 'xxxx-xxxx-xxxx-xxxx';\n\n\tconstructor(options = {})\n\t{\n\t\tsuper();\n\t\tthis.type = options.type;\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Icloud');\n\t\tthis.keyHandler = this.handleKeyPress.bind(this);\n\t\tthis.checkOutsideClickClose = this.checkOutsideClickClose.bind(this);\n\t\tthis.outsideMouseDownClose = this.outsideMouseDownClose.bind(this);\n\t\tthis.initAlertBlock();\n\t}\n\n\tshow()\n\t{\n\t\tthis.popup = new Popup({\n\t\t\tclassName: 'calendar-sync__auth-popup calendar-sync__scope',\n\t\t\ttitleBar: Loc.getMessage('CAL_ICLOUD_AUTH_TITLE'),\n\t\t\tdraggable: true,\n\t\t\tcontent: this.getContainer(),\n\t\t\twidth: 475,\n\t\t\tanimation: 'fading-slide',\n\t\t\tzIndexAbsolute: this.zIndex,\n\t\t\tcacheable: false,\n\t\t\tcloseByEsc: true,\n\t\t\tcloseIcon: true,\n\t\t\tcontentBackground: \"#fff\",\n\t\t\toverlay: {opacity: 15},\n\t\t\tlightShadow: true,\n\t\t\tbuttons: [\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext : Loc.getMessage('CAL_ICLOUD_CONNECT_BUTTON'),\n\t\t\t\t\tclassName: `ui-btn ui-btn-md ui-btn-success ui-btn-round`,\n\t\t\t\t\tevents : {click : this.authorize.bind(this)},\n\t\t\t\t}),\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext: Loc.getMessage('EC_SEC_SLIDER_CANCEL'),\n\t\t\t\t\tclassName: 'ui-btn ui-btn-md ui-btn-light-border ui-btn-round',\n\t\t\t\t\tevents : {click : this.close.bind(this)}\n\t\t\t\t})\n\t\t\t],\n\t\t\tevents: {\n\t\t\t\tonPopupClose: this.close.bind(this)\n\t\t\t},\n\t\t});\n\t\tthis.popup.show();\n\t\t\n\t\tEvent.bind(document, 'keydown', this.keyHandler);\n\t\tEvent.bind(document, 'mouseup', this.checkOutsideClickClose);\n\t\tEvent.bind(document, 'mousedown', this.outsideMouseDownClose);\n\t}\n\t\n\tauthorize()\n\t{\n\t\tif (this.isFormDataValid())\n\t\t{\n\t\t\tconst saveBtn = this.popup.getButtons()[0];\n\t\t\tsaveBtn.setClocking(true);\n\t\t\tsaveBtn.setDisabled(true);\n\t\t\tconst cancelButton = this.popup.getButtons()[1];\n\t\t\tcancelButton.setDisabled(true);\n\t\t\tif (this.DOM.container.contains(this.DOM.alertBlock))\n\t\t\t{\n\t\t\t\tDom.remove(this.DOM.alertBlock);\n\t\t\t}\n\n\t\t\tthis.emit('onSubmit', new BaseEvent({\n\t\t\t\tdata: {\n\t\t\t\t\tappleId: this.DOM.appleIdInput.value.toString().trim(),\n\t\t\t\t\tappPassword: this.DOM.appPasswordInput.value.toString().trim()\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.highlightInvalidFormData();\n\t\t}\n\t}\n\n\tisFormDataValid()\n\t{\n\t\treturn this.DOM.appleIdInput.value.toString().trim() !== ''\n\t\t\t&& this.DOM.appPasswordInput.value.toString().trim() !== ''\n\t}\n\n\thighlightInvalidFormData()\n\t{\n\t\tconst saveBtn = this.popup.getButtons()[0];\n\t\tsaveBtn.setClocking(false);\n\t\tsaveBtn.setDisabled(false);\n\t\tconst cancelButton = this.popup.getButtons()[1];\n\t\tcancelButton.setDisabled(false);\n\n\t\tif (this.DOM.appleIdInput.value.toString().trim() === '')\n\t\t{\n\t\t\tthis.highlightInvalidAppleIdInput();\n\t\t}\n\t\tif (this.DOM.appPasswordInput.value.toString().trim() === '')\n\t\t{\n\t\t\tthis.highlightInvalidPasswordInput();\n\t\t}\n\t}\n\n\thighlightInvalidAppleIdInput()\n\t{\n\t\tDom.addClass(this.DOM.appleIdInput, 'calendar-field-string-error');\n\n\t\tconst clearInvalidation = () => {\n\t\t\tDom.removeClass(this.DOM.appleIdInput, 'calendar-field-string-error');\n\t\t\tEvent.unbind(this.DOM.appleIdInput, 'change', clearInvalidation);\n\t\t\tEvent.unbind(this.DOM.appleIdInput, 'keyup', clearInvalidation);\n\t\t};\n\t\tEvent.bind(this.DOM.appleIdInput, 'change', clearInvalidation);\n\t\tEvent.bind(this.DOM.appleIdInput, 'keyup', clearInvalidation);\n\t}\n\n\thighlightInvalidPasswordInput()\n\t{\n\t\tDom.addClass(this.DOM.appPasswordInput, 'calendar-field-string-error');\n\n\t\tconst clearInvalidation = () => {\n\t\t\tDom.removeClass(this.DOM.appPasswordInput, 'calendar-field-string-error');\n\t\t\tEvent.unbind(this.DOM.appPasswordInput, 'change', clearInvalidation);\n\t\t\tEvent.unbind(this.DOM.appPasswordInput, 'keyup', clearInvalidation);\n\t\t};\n\t\tEvent.bind(this.DOM.appPasswordInput, 'change', clearInvalidation);\n\t\tEvent.bind(this.DOM.appPasswordInput, 'keyup', clearInvalidation);\n\t\tthis.DOM.appPasswordInput.focus();\n\n\t}\n\t\n\tenableSaveButton()\n\t{\n\t\tconst saveBtn = this.popup.getButtons()[0];\n\t\tsaveBtn.setDisabled(false);\n\t\tconst cancelButton = this.popup.getButtons()[1];\n\t\tcancelButton.setDisabled(false);\n\t}\n\n\tgetContainer()\n\t{\n\t\tthis.DOM.container = Tag.render `\n\t\t\t<div>\n\t\t\t\t${this.getAppleInfoBlock()}\n\t\t\t\t<div class=\"calendar-sync__auth-popup--row\" id=\"calendar-apple-id-block\">\n\t\t\t\t\t${this.getAppleIdTitle()}\n\t\t\t\t\t${this.getAppleIdInput()}\n\t\t\t\t\t${this.getAppleIdError()}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync__auth-popup--row\" id=\"calendar-apple-pass-block\">\n\t\t\t\t\t<div class=\"calendar-sync__auth-popup--label-block\">\n\t\t\t\t\t\t${this.getAppPasswordTitle()}\n\t\t\t\t\t\t${this.getLearnMoreButton()}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-ctl ui-ctl-w100 ui-ctl-after-icon\">\n\t\t\t\t\t\t${this.getAppPasswordInput()}\n\t\t\t\t\t\t${this.getShowHidePasswordIcon()}\n\t\t\t\t\t</div>\n\t\t\t\t\t${this.getAppPasswordError()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.DOM.container;\n\t}\n\n\tgetAppleInfoBlock()\n\t{\n\t\tif (!this.DOM.appleInfo)\n\t\t{\n\t\t\tthis.DOM.appleInfo = Tag.render`\n\t\t\t\t<div class=\"calendar-sync__auth-popup--info\">\n\t\t\t\t\t<div class=\"calendar-sync__auth-popup--logo-image --icloud\"></div>\n\t\t\t\t\t<div class=\"calendar-sync__auth-popup--logo-text\">${Loc.getMessage('CAL_ICLOUD_INFO_BLOCK')}</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.DOM.appleInfo;\n\t}\n\t\n\tgetAppleIdTitle()\n\t{\n\t\tif (!this.DOM.appleIdTitle)\n\t\t{\n\t\t\tthis.DOM.appleIdTitle = Tag.render`\n\t\t\t<p class=\"calendar-sync__auth-popup--label-text\">\n\t\t\t\t${Loc.getMessage('CAL_ICLOUD_APPLE_ID_PLACEHOLDER')}\n\t\t\t</p>\n\t\t\t`;\n\t\t}\n\t\t\n\t\treturn this.DOM.appleIdTitle;\n\t}\n\t\n\tgetAppPasswordTitle()\n\t{\n\t\tif (!this.DOM.appPasswordTitle)\n\t\t{\n\t\t\tthis.DOM.appPasswordTitle = Tag.render`\n\t\t\t\t<p class=\"calendar-sync__auth-popup--label-text\">\n\t\t\t\t\t${Loc.getMessage('CAL_ICLOUD_PASS_PLACEHOLDER')}\n\t\t\t\t</p>\n\t\t\t`;\n\t\t}\n\t\t\n\t\treturn this.DOM.appPasswordTitle;\n\t}\n\t\n\tgetAppleIdError()\n\t{\n\t\tif (!this.DOM.appleIdError)\n\t\t{\n\t\t\tthis.DOM.appleIdError = Tag.render`\n\t\t\t\t<div class=\"calendar-sync__auth-popup--label-text --error\">\n\t\t\t\t\t${Loc.getMessage('CAL_ICLOUD_APPLE_ID_ERROR')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\t\t\n\t\treturn this.DOM.appleIdError;\n\t}\n\t\n\tgetAppPasswordError()\n\t{\n\t\tif (!this.DOM.appPasswordError)\n\t\t{\n\t\t\tthis.DOM.appPasswordError = Tag.render`\n\t\t\t\t<div class=\"calendar-sync__auth-popup--label-text --error\">\n\t\t\t\t\t${Loc.getMessage(\n\t\t\t\t\t\t'CAL_ICLOUD_APP_PASSWORD_ERROR',\n\t\t\t\t\t{\n\t\t\t\t\t\t\t'#LINK_START#': '<a href=\"#\" data-role=\"open-helpdesk-password\">',\n\t\t\t\t\t\t\t'#LINK_END#': '</a>',\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\tconst link = this.DOM.appPasswordError.querySelector('a[data-role=\"open-helpdesk-password\"]');\n\t\t\tif (link)\n\t\t\t{\n\t\t\t\tEvent.bind(link, 'click', this.openHelpDesk.bind(this));\n\t\t\t}\n\t\t}\n\n\t\treturn this.DOM.appPasswordError;\n\t}\n\n\tgetAppleIdInput()\n\t{\n\t\tif (!this.DOM.appleIdInput)\n\t\t{\n\t\t\tthis.DOM.appleIdInput = Tag.render `\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"${Loc.getMessage('CAL_ICLOUD_AUTH_EMAIL_PLACEHOLDER')}\"\n\t\t\t\t\tclass=\"calendar-field-string ui-ctl-element\"\n\t\t\t\t/>\n\t\t\t`;\n\t\t\tthis.DOM.appleIdInput.onfocus = () => {\n\t\t\t\tif (Dom.hasClass(this.DOM.appleIdInput, 'calendar-field-string-error'))\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(this.DOM.appleIdInput, 'calendar-field-string-error');\n\t\t\t\t\tDom.removeClass(this.DOM.appleIdError, 'show');\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.DOM.appleIdInput.onblur = () => {\n\t\t\t\tif (\n\t\t\t\t\t!this.validateAppleIdInput()\n\t\t\t\t\t&& !Dom.hasClass(this.DOM.appleIdInput, 'calendar-field-string-error')\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.DOM.appleIdInput, 'calendar-field-string-error');\n\t\t\t\t\tDom.addClass(this.DOM.appleIdError, 'show');\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\treturn this.DOM.appleIdInput;\n\t}\n\n\tgetAppPasswordInput()\n\t{\n\t\tif (!this.DOM.appPasswordInput)\n\t\t{\n\t\t\tthis.DOM.appPasswordInput = Tag.render `\n\t\t\t\t<input\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tplaceholder=\"${Loc.getMessage('CAL_ICLOUD_AUTH_APPPASS_PLACEHOLDER')}\"\n\t\t\t\t\tclass=\"calendar-field-string ui-ctl-element\"\n\t\t\t\t\trequired maxlength=\"19\"\n\t\t\t\t/>\n\t\t\t`;\n\t\t\tEvent.bind(this.DOM.appPasswordInput, 'input', this.validateAppPasswordInput.bind(this));\n\t\t}\n\n\t\treturn this.DOM.appPasswordInput;\n\t}\n\t\n\tgetShowHidePasswordIcon()\n\t{\n\t\tif (!this.DOM.showHidePasswordIcon)\n\t\t{\n\t\t\tthis.DOM.showHidePasswordIcon = Tag.render`\n\t\t\t\t<div class=\"ui-ctl-after calendar-sync__auth-popup--icon-adjust-password\"></div>\n\t\t\t`;\n\t\t\tEvent.bind(this.DOM.showHidePasswordIcon, 'click', this.switchPasswordVisibility.bind(this));\n\t\t}\n\t\t\n\t\treturn this.DOM.showHidePasswordIcon;\n\t}\n\t\n\tgetLearnMoreButton()\n\t{\n\t\tif (!this.DOM.learnMoreButton)\n\t\t{\n\t\t\tthis.DOM.learnMoreButton = Tag.render`\n\t\t\t\t<span class=\"calendar-sync__auth-popup--learn-more\">${Loc.getMessage('CAL_ICLOUD_AUTH_APPPASS_ABOUT')}</span>\n\t\t\t`;\n\t\t\tEvent.bind(this.DOM.learnMoreButton, 'click', this.openHelpDesk.bind(this));\n\t\t}\n\t\t\n\t\treturn this.DOM.learnMoreButton;\n\t}\n\n\tinitAlertBlock()\n\t{\n\t\tif (!this.DOM.alertBlock)\n\t\t{\n\t\t\tthis.DOM.alertBlock = Tag.render`\n\t\t\t\t<div class=\"ui-alert ui-alert-danger calendar-sync__auth-error\">\n\t <span class=\"ui-alert-message\">${Loc.getMessage('CAL_ICLOUD_AUTH_ERROR')}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\t}\n\n\tshowErrorAuthorizationAlert()\n\t{\n\t\tthis.highlightInvalidAppleIdInput();\n\t\tthis.highlightInvalidPasswordInput();\n\t\tthis.enableSaveButton();\n\t\tif (!this.DOM.container.contains(this.DOM.alertBlock))\n\t\t{\n\t\t\tDom.append(this.DOM.alertBlock, this.DOM.container);\n\t\t}\n\t}\n\t\n\tvalidateAppleIdInput()\n\t{\n\t\tconst emailRegExp = /^[a-zA-Z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z\\d-]+(?:\\.[a-zA-Z\\d-]+)*$/;\n\t\tconst input = this.DOM.appleIdInput.value.toString().trim();\n\t\tif (input === '')\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn emailRegExp.test(input);\n\t}\n\t\n\tvalidateAppPasswordInput()\n\t{\n\t\tconst appPasswordRegExp = /^[a-z]{4}-[a-z]{4}-[a-z]{4}-[a-z]{4}$/;\n\t\tconst input = this.completeWithTemplate(this.DOM.appPasswordInput.value.toString().trim());\n\t\tif (appPasswordRegExp.test(input))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.appPasswordInput, 'calendar-field-string-error');\n\t\t\tDom.removeClass(this.DOM.appPasswordError, 'show');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.DOM.appPasswordInput, 'calendar-field-string-error');\n\t\t\tDom.addClass(this.DOM.appPasswordError, 'show');\n\t\t}\n\t}\n\t\n\tswitchPasswordVisibility()\n\t{\n\t\tif (Dom.hasClass(this.DOM.showHidePasswordIcon, '--hide'))\n\t\t{\n\t\t\tthis.DOM.appPasswordInput.type = 'password';\n\t\t\tDom.removeClass(this.DOM.showHidePasswordIcon, '--hide');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.appPasswordInput.type = 'text';\n\t\t\tDom.addClass(this.DOM.showHidePasswordIcon, '--hide');\n\t\t}\n\t}\n\t\n\tclearForm()\n\t{\n\t\tthis.DOM.appPasswordInput.value = '';\n\t\tthis.DOM.appleIdInput.value = '';\n\t\tif (Dom.hasClass(this.DOM.appleIdInput, 'calendar-field-string-error'))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.appleIdInput, 'calendar-field-string-error');\n\t\t}\n\t\tif (Dom.hasClass(this.DOM.appPasswordInput, 'calendar-field-string-error'))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.appPasswordInput, 'calendar-field-string-error');\n\t\t}\n\t\tif (Dom.hasClass(this.DOM.appleIdError, 'show'))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.appleIdError, 'show');\n\t\t}\n\t\tif (Dom.hasClass(this.DOM.appPasswordError, 'show'))\n\t\t{\n\t\t\tDom.removeClass(this.DOM.appPasswordError, 'show');\n\t\t}\n\t}\n\t\n\tcompleteWithTemplate(password)\n\t{\n\t\tconst addition = this.appPasswordTemplate.slice(password.length, this.appPasswordTemplate.length);\n\t\tpassword += addition;\n\t\treturn password;\n\t}\n\t\n\topenHelpDesk()\n\t{\n\t\tconst helpDeskCode = '15426356';\n\t\ttop.BX.Helper.show('redirect=detail&code=' + helpDeskCode);\n\t\t\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\tcalendarAction: 'openHelpDesk',\n\t\t\t\tclick_to_helpdesk_button: 'Y',\n\t\t\t\tconnection_type: 'icloud',\n\t\t\t}\n\t\t});\n\t}\n\t\n\thandleKeyPress(e)\n\t{\n\t\tif (e.keyCode === Util.getKeyCode('enter'))\n\t\t{\n\t\t\tthis.authorize();\n\t\t}\n\t\telse if (e.keyCode === Util.getKeyCode('escape'))\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t}\n\t\n\tcheckOutsideClickClose(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tthis.outsideMouseUp = !target.closest('div.popup-window');\n\t\tif (this.outsideMouseUp && this.outsideMouseDown && this.checkTopSlider())\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t}\n\t\n\toutsideMouseDownClose(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tthis.outsideMouseDown = !target.closest('div.popup-window');\n\t}\n\t\n\tclose()\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tthis.popup.destroy();\n\t\t}\n\t\tEvent.unbind(document, 'keydown', this.keyHandler);\n\t\tEvent.unbind(document, 'mouseup', this.checkOutsideClickClose);\n\t\tEvent.unbind(document, 'mousedown', this.outsideMouseDownClose);\n\t\tthis.clearForm();\n\t}\n\t\n\tcheckTopSlider()\n\t{\n\t\treturn !Util.getBX().SidePanel.Instance.getTopSlider();\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Tag } from 'main.core';\nimport SyncWizard from './syncwizard';\nimport SyncStageUnit from './syncstageunit';\n\nexport default class IcloudSyncWizard extends SyncWizard\n{\n\tTYPE = 'icloud';\n\tSLIDER_NAME = 'calendar:sync-wizard-icloud';\n\tSTAGE_1_CODE = 'icloud-to-b24';\n\tSTAGE_2_CODE = 'b24-events-to-icloud';\n\tSTAGE_3_CODE = 'b24-to-icloud';\n\t\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.IcloudSyncWizard');\n\t\tthis.setAccountName(Loc.getMessage('CALENDAR_TITLE_ICLOUD'));\n\t\tthis.setSyncStages();\n\t\tthis.logoIconClass = '--icloud';\n\t}\n\n\tgetHelpLinkWrapper()\n\t{\n\t\treturn '';\n\t}\n\n\tgetFinalCheckWrapper()\n\t{\n\t\tthis.finalCheckWrapper = Tag.render`\n\t\t\t<div style=\"display: none;\">\n\t\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t<div class=\"calendar-sync__balloon --progress\">\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-progress\">${Loc.getMessage('CAL_SYNC_LETS_CHECK')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress\">${Loc.getMessage('CAL_SYNC_CREATE_EVENT_ICLOUD')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_ADDED_FROM_ICLOUD')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_YOULL_SEE')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__balloon--icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${this.getSkeletonWrapper()}\n\t\t\t\t${this.getNewEventCardWrapper()}\n\t\t\t</div>\n\t\t`;\n\t\treturn this.finalCheckWrapper;\n\t}\n\n\tsetSyncStages()\n\t{\n\t\tthis.syncStagesList = [\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_1_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_ICLOUD_1')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_2_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_ICLOUD_2')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_3_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_ICLOUD_3')\n\t\t\t})\n\t\t];\n\t}\n\n\tupdateState(stateData)\n\t{\n\t\tsuper.updateState(stateData);\n\n\t\tthis.getSyncStages().forEach(stage => {\n\t\t\tif (\n\t\t\t\tstateData.stage === 'connection_created'\n\t\t\t\t&& stage.name === this.STAGE_1_CODE\n\t\t\t)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (\n\t\t\t\tstateData.stage === 'import_finished'\n\t\t\t && (stage.name === this.STAGE_1_CODE || stage.name === this.STAGE_2_CODE)\n\t\t\t)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (stateData.stage === 'export_finished')\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t\tif (stage.name === this.STAGE_3_CODE)\n\t\t\t\t{\n\t\t\t\t\tthis.setActiveStatusFinished();\n\t\t\t\t\tthis.showButtonWrapper();\n\t\t\t\t\tthis.showInfoStatusWrapper();\n\t\t\t\t\tthis.showConfetti();\n\n\t\t\t\t\tthis.emit('onConnectionCreated');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSkeletonTitle()\n\t{\n\t\treturn Loc.getMessage('CAL_SYNC_NEW_EVENT_ICLOUD_TITLE');\n\t}\n}","// @flow\n'use strict';\nimport { Dom, Loc, Tag } from 'main.core';\nimport { Util } from 'calendar.util';\nimport { Popup } from 'main.popup';\n\nexport default class WarnSyncIcloudDialog\n{\n\tzIndex = 3100;\n\tDOM = {};\n\t\n\tconstructor(options = {})\n\t{\n\t\tthis.authDialog = options.authDialog;\n\t}\n\t\n\tshow()\n\t{\n\t\tthis.popup = new Popup({\n\t\t\tclassName: 'calendar-sync__auth-popup calendar-sync__scope',\n\t\t\ttitleBar: Loc.getMessage('CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_TITLE'),\n\t\t\twidth: 500,\n\t\t\tdraggable: true,\n\t\t\tcontent: this.getContainer(),\n\t\t\tcacheable: false,\n\t\t\tcloseByEsc: true,\n\t\t\tcloseIcon: true,\n\t\t\tcontentBackground: \"#fff\",\n\t\t\toverlay: { opacity: 15 },\n\t\t\tbuttons: [\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext: Loc.getMessage('CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_LEARN_MORE'),\n\t\t\t\t\tclassName: 'ui-btn ui-btn-md ui-btn-primary',\n\t\t\t\t\tevents: { click: this.openHelpDesk.bind(this) }\n\t\t\t\t}),\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext: Loc.getMessage('CAL_BUTTON_CONTINUE'),\n\t\t\t\t\tclassName: 'ui-btn ui-btn-md ui-btn-light',\n\t\t\t\t\tevents: { click: this.openAuthDialog.bind(this) }\n\t\t\t\t}),\n\t\t\t],\n\t\t\tevents: {\n\t\t\t\tonPopupClose: this.close.bind(this)\n\t\t\t},\n\t\t});\n\t\t\n\t\tthis.popup.show();\n\t}\n\t\n\tgetContainer()\n\t{\n\t\tthis.DOM.container = Tag.render`\n\t\t\t<div>\n\t\t\t\t${this.getAlertInformation()}\n\t\t\t</div>\n\t\t`;\n\t\t\n\t\treturn this.DOM.container;\n\t}\n\t\n\tgetAlertInformation()\n\t{\n\t\tthis.DOM.alertBlock = new BX.UI.Alert({\n\t\t\ttext: Loc.getMessage('CAL_ICLOUD_ALERT_OTHER_APPLE_SYNC_INFO'),\n\t\t\tcolor: BX.UI.Alert.Color.WARNING,\n\t\t\ticon: BX.UI.Alert.Icon.INFO\n\t\t});\n\t\t\n\t\tconst container = this.DOM.alertBlock.getContainer();\n\t\tconst text = container.querySelector('.ui-alert-message');\n\t\tDom.addClass(text, 'calendar-sync__alert-popup--text')\n\t\t\n\t\treturn container;\n\t}\n\t\n\topenHelpDesk()\n\t{\n\t\tconst helpDeskCode = '16020988';\n\t\ttop.BX.Helper.show('redirect=detail&code=' + helpDeskCode);\n\t}\n\t\n\tdisableConnection()\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.disableIphoneOrMacConnection').then(() => {\n\t\t\tthis.authDialog.show();\n\t\t\tthis.close();\n\t\t\tUtil.setIphoneConnectionStatus(false);\n\t\t\tUtil.setMacConnectionStatus(false);\n\t\t})\n\t}\n\t\n\topenAuthDialog()\n\t{\n\t\tthis.authDialog.show();\n\t\tthis.close();\n\t}\n\t\n\tclose()\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tthis.popup.destroy();\n\t\t}\n\t}\n}","// @flow\n'use strict';\n\nimport { Loc } from 'main.core';\nimport { Util } from 'calendar.util';\nimport { InterfaceTemplate } from './interfacetemplate';\nimport IcloudAuthDialog from '../controls/icloudauthdialog';\nimport IcloudSyncWizard from '../syncwizard/icloudsyncwizard';\nimport { EventEmitter } from 'main.core.events';\nimport WarnSyncIcloudDialog from '../controls/warnsynciclouddialog';\n\nexport default class IcloudTemplate extends InterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_ICLOUD\"),\n\t\t\thelpDeskCode: '6030429',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_ICLOUD_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_ICLOUD_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_ICLOUD_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-icloud',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/icloud.svg',\n\t\t\ticonLogoClass: '--icloud',\n\t\t\tcolor: '#95a0af',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\n\t\tthis.sectionStatusObject = {};\n\t\tthis.sectionList = [];\n\t}\n\n\tcreateConnection(data)\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.createIcloudConnection', {\n\t\t\tdata: {\n\t\t\t\tappleId: data.appleId,\n\t\t\t\tappPassword: data.appPassword,\n\t\t\t},\n\t\t}).then(\n\t\t\t(response) => {\n\t\t\t\tconst result = response.data;\n\t\t\t\t\n\t\t\t\tif (result.status === 'success' && result.connectionId)\n\t\t\t\t{\n\t\t\t\t\tthis.openSyncWizard(data.appleId);\n\t\t\t\t\tthis.syncCalendarsWithIcloud(result.connectionId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t(response) => {\n\t\t\t\tconst result = response.data;\n\t\t\t\tif (result.status === 'incorrect_app_pass')\n\t\t\t\t{\n\t\t\t\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\t\tcalendarAction: 'createConnection',\n\t\t\t\t\t\t\twrong_app_pass: 'Y',\n\t\t\t\t\t\t\tconnection_type: 'icloud'\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tthis.authDialog.showErrorAuthorizationAlert();\n\t\t\t}\n\t\t);\n\t}\n\n\tsyncCalendarsWithIcloud(connectionId)\n\t{\n\t\tthis.authDialog.close();\n\t\t\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.syncIcloudConnection', {\n\t\t\t\tdata: {\n\t\t\t\t\tconnectionId: connectionId,\n\t\t\t\t}\n\t\t\t}).then(\n\t\t\t\t(response) => {\n\t\t\t\t\tthis.provider.setStatus(this.provider.STATUS_SUCCESS);\n\t\t\t\t\tif (connectionId)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.provider.getConnection().setId(connectionId);\n\t\t\t\t\t\tthis.provider.getConnection().setStatus(true);\n\t\t\t\t\t\tthis.provider.getConnection().setConnected(true);\n\t\t\t\t\t\tthis.provider.getConnection().setSyncDate(new Date());\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tresolve(response.data);\n\t\t\t\t},\n\t\t\t\t(response) => {\n\t\t\t\t\tthis.provider.setStatus(this.provider.STATUS_FAILED);\n\t\t\t\t\tthis.provider.setWizardState(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: this.provider.ERROR_CODE,\n\t\t\t\t\t\t\tvendorName: this.provider.type,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tresolve(response.errors);\n\t\t\t\t});\n\t\t})\n\t}\n\n\tgetSectionsForIcloud()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.getAllSectionsForIcloud', {\n\t\t\t\tdata: {\n\t\t\t\t\tconnectionId: this.connection.addParams.id\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(\n\t\t\t\t(response) => {\n\t\t\t\t\tthis.sectionList = response.data;\n\t\t\t\t\tresolve(response.data);\n\t\t\t\t},\n\t\t\t\t(response) => {\n\t\t\t\t\tresolve(response.errors);\n\t\t\t\t}\n\t\t\t)\n\t\t})\n\t}\n\n\tonClickCheckSection(event)\n\t{\n\t\tthis.sectionStatusObject[event.target.value] = event.target.checked;\n\t\tthis.runUpdateInfo();\n\t\tthis.showUpdateSectionListNotification();\n\t}\n\n\thandleConnectButton()\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\tcalendarAction: 'createConnection',\n\t\t\t\tclick_to_connection_button: 'Y',\n\t\t\t\tconnection_type: 'icloud',\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.initPopup();\n\t\tif (Util.isIphoneConnected() || Util.isMacConnected())\n\t\t{\n\t\t\tthis.alertSyncPopup.show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.authDialog.show();\n\t\t}\n\t}\n\t\n\tinitPopup()\n\t{\n\t\tif (!this.authDialog)\n\t\t{\n\t\t\tthis.authDialog = new IcloudAuthDialog();\n\t\t\t\n\t\t\tEventEmitter.unsubscribeAll('BX.Calendar.Sync.Icloud:onSubmit');\n\t\t\tEventEmitter.subscribe('BX.Calendar.Sync.Icloud:onSubmit', (e) => {\n\t\t\t\tthis.createConnection(e.data);\n\t\t\t})\n\t\t}\n\t\t\n\t\tif (!this.alertSyncPopup)\n\t\t{\n\t\t\tthis.alertSyncPopup = new WarnSyncIcloudDialog({\n\t\t\t\tauthDialog: this.authDialog\n\t\t\t})\n\t\t}\n\t}\n\n\topenSyncWizard(appleId)\n\t{\n\t\tthis.provider.setWizardSyncMode(true);\n\t\tthis.wizard = new IcloudSyncWizard();\n\t\tthis.wizard.openSlider();\n\t\tthis.provider.setActiveWizard(this.wizard);\n\n\t\tEventEmitter.subscribeOnce('BX.Calendar.Sync.Interface.SyncStageUnit:onRenderDone', () => {\n\t\t\tthis.wizard.updateState({\n\t\t\t\tstage: 'connection_created',\n\t\t\t\tvendorName: 'icloud',\n\t\t\t\taccountName: appleId,\n\t\t\t})\n\t\t})\n\t}\n\t\n\tsendRequestRemoveConnection(id)\n\t{\n\t\tthis.deactivateConnection(id);\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Tag } from 'main.core';\nimport SyncWizard from './syncwizard';\nimport SyncStageUnit from './syncstageunit';\n\nexport default class Office365SyncWizard extends SyncWizard\n{\n\tTYPE = 'office365';\n\tSLIDER_NAME = 'calendar:sync-wizard-office365';\n\tSTAGE_1_CODE = 'office365-to-b24';\n\tSTAGE_2_CODE = 'sections_sync_finished';\n\tSTAGE_3_CODE = 'events_sync_finished';\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.Office365SyncWizard');\n\t\tthis.setAccountName(Loc.getMessage('CALENDAR_TITLE_OFFICE365'));\n\t\tthis.setSyncStages();\n\t\tthis.logoIconClass = '--office365';\n\t}\n\n\tgetHelpLinkWrapper()\n\t{\n\t\treturn '';\n\t}\n\n\tgetFinalCheckWrapper()\n\t{\n\t\tthis.finalCheckWrapper = Tag.render`\n\t\t\t<div style=\"display: none;\">\n\t\t\t\t<div class=\"calendar-sync__content-block --space-bottom\">\n\t\t\t\t\t<div class=\"calendar-sync__balloon --progress\">\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-progress\">${Loc.getMessage('CAL_SYNC_LETS_CHECK')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-progress\">${Loc.getMessage('CAL_SYNC_CREATE_EVENT_OFFICE365')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-title --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_ADDED_FROM_OFFICE365')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__content-text calendar-sync__content-subtitle --show-for-done\">${Loc.getMessage('CAL_SYNC_NEW_EVENT_YOULL_SEE')}</div>\n\t\t\t\t\t\t<div class=\"calendar-sync__balloon--icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t${this.getSkeletonWrapper()}\n\t\t\t\t${this.getNewEventCardWrapper()}\n\t\t\t</div>\n\t\t`;\n\t\treturn this.finalCheckWrapper;\n\t}\n\n\tsetSyncStages()\n\t{\n\t\tthis.syncStagesList = [\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_1_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_OFFICE365_1')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_2_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_OFFICE365_2')\n\t\t\t}),\n\t\t\tnew SyncStageUnit({\n\t\t\t\tname: this.STAGE_3_CODE,\n\t\t\t\ttitle: Loc.getMessage('CAL_SYNC_STAGE_OFFICE365_3')\n\t\t\t})\n\t\t];\n\t}\n\n\tupdateState(stateData)\n\t{\n\t\tsuper.updateState(stateData);\n\n\t\tthis.getSyncStages().forEach(stage => {\n\t\t\tif (stateData.stage === 'connection_created'\n\t\t\t\t&& stage.name === this.STAGE_1_CODE)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (stateData.stage === this.STAGE_2_CODE\n\t\t\t && (stage.name === this.STAGE_1_CODE || stage.name === this.STAGE_2_CODE)\n\t\t\t)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t}\n\t\t\telse if (stateData.stage === this.STAGE_3_CODE)\n\t\t\t{\n\t\t\t\tstage.setDone();\n\t\t\t\tthis.setActiveStatusFinished();\n\t\t\t\tthis.showButtonWrapper();\n\t\t\t\tthis.showInfoStatusWrapper();\n\t\t\t\tthis.showConfetti();\n\n\t\t\t\tthis.emit('onConnectionCreated');\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSkeletonTitle()\n\t{\n\t\treturn Loc.getMessage('CAL_SYNC_NEW_EVENT_OFFICE365_TITLE');\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Loc, Event } from \"main.core\";\nimport {InterfaceTemplate} from \"./interfacetemplate\";\nimport Office365SyncWizard from '../syncwizard/office365syncwizard';\nimport { Util } from 'calendar.util';\nimport { MessageBox } from 'ui.dialogs.messagebox';\n\nexport default class Office365template extends InterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_OFFICE365\"),\n\t\t\thelpDeskCode: '6030429',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_OFFICE365_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_OFFICE365_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_OFFICE365_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_OFFICE365_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-office365',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/office365.svg',\n\t\t\ticonLogoClass: '--office365',\n\t\t\tcolor: '#fc1d1d',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\n\t\tthis.sectionStatusObject = {};\n\t\tthis.sectionList = [];\n\t}\n\n\tcreateConnection()\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\tanalyticsLabel: {\n\t\t\t\tcalendarAction: 'createConnection',\n\t\t\t\tclick_to_connection_button: 'Y',\n\t\t\t\tconnection_type: 'office365',\n\t\t\t}\n\t\t});\n\n\t\tBX.util.popup(this.provider.getSyncLink(), 500, 600);\n\n\t\tEvent.bind(window, 'hashchange', (event) => {\n\t\t\tif (window.location.hash === '#office365AuthSuccess')\n\t\t\t{\n\t\t\t\tUtil.removeHash();\n\t\t\t\tthis.provider.setWizardSyncMode(true);\n\t\t\t\tthis.saveConnection();\n\t\t\t\tthis.openSyncWizard();\n\t\t\t\tthis.provider.setStatus(this.provider.STATUS_SYNCHRONIZING);\n\t\t\t\tthis.provider.getInterfaceUnit().refreshButton();\n\t\t\t}\n\t\t});\n\t}\n\n\tsaveConnection()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.createOffice365Connection')\n\t\t\t\t.then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tif (response?.data?.status === this.provider.ERROR_CODE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.provider.setStatus(this.provider.STATUS_FAILED);\n\t\t\t\t\t\t\tthis.provider.setWizardState(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstatus: this.provider.ERROR_CODE,\n\t\t\t\t\t\t\t\t\tvendorName: this.provider.type,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (response?.data?.connectionId)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.provider.setStatus(this.provider.STATUS_SUCCESS);\n\t\t\t\t\t\t\tthis.provider.getConnection().setId(response.data.connectionId);\n\t\t\t\t\t\t\tthis.provider.getConnection().setStatus(true);\n\t\t\t\t\t\t\tthis.provider.getConnection().setConnected(true);\n\t\t\t\t\t\t\tthis.provider.getConnection().setSyncDate(new Date());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(response.data);\n\t\t\t\t\t},\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tthis.provider.setStatus(this.provider.STATUS_FAILED);\n\t\t\t\t\t\tthis.provider.setWizardState(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstatus: this.provider.ERROR_CODE,\n\t\t\t\t\t\t\t\tvendorName: this.provider.type,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(response.errors);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t})\n\t}\n\n\tonClickCheckSection(event)\n\t{\n\t\tthis.sectionStatusObject[event.target.value] = event.target.checked;\n\t\tthis.runUpdateInfo();\n\t\tthis.showUpdateSectionListNotification();\n\t}\n\n\thandleConnectButton()\n\t{\n\t\tif (this.provider.hasSetSyncOffice365Settings())\n\t\t{\n\t\t\tthis.createConnection();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.showAlertPopup();\n\t\t}\n\t}\n\n\topenSyncWizard()\n\t{\n\t\tthis.wizard = new Office365SyncWizard();\n\t\tthis.wizard.openSlider();\n\t\tthis.provider.setActiveWizard(this.wizard);\n\t}\n\n\tgetSectionsForOffice365()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.getAllSectionsForOffice365', {\n\t\t\t\tdata: {\n\t\t\t\t\tconnectionId: this.connection.addParams.id\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tthis.sectionList = response.data;\n\t\t\t\t\t\tresolve(response.data);\n\t\t\t\t\t},\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tresolve(response.errors);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t})\n\t}\n\n\tsendRequestRemoveConnection(id)\n\t{\n\t\tthis.deactivateConnection(id);\n\t}\n\n\tshowAlertPopup()\n\t{\n\t\tconst messageBox = new MessageBox({\n\t\t\tclassName: this.id,\n\t\t\tmessage: Loc.getMessage('OFFICE365_IS_NOT_CALDAV_SETTINGS_WARNING_MESSAGE'),\n\t\t\twidth: 500,\n\t\t\toffsetLeft: 60,\n\t\t\toffsetTop: 5,\n\t\t\tpadding: 7,\n\t\t\tonOk: () => {\n\t\t\t\tmessageBox.close();\n\t\t\t},\n\t\t\tokCaption: 'OK',\n\t\t\tbuttons: BX.UI.Dialogs.MessageBoxButtons.OK,\n\t\t\tpopupOptions: {\n\t\t\t\tzIndexAbsolute: 4020,\n\t\t\t\tautoHide: true,\n\t\t\t\tanimation: 'fading-slide',\n\t\t\t},\n\t\t});\n\t\tmessageBox.show();\n\t}\n}\n","// @flow\n'use strict';\n\nimport { Dom, Event, Loc, Tag } from 'main.core';\nimport {InterfaceTemplate} from \"./interfacetemplate\";\nimport { Util } from 'calendar.util';\n\nexport default class MacTemplate extends InterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_MAC\"),\n\t\t\thelpDeskCode: '5684075',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_MAC_CALENDAR_TITLE'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_MAC_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_MAC_CALENDAR_IS_CONNECT_TITLE'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_MAC_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-mac',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/mac.svg',\n\t\t\tcolor: '#ff5752',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: false,\n\t\t});\n\n\t\tthis.alreadyConnectedToNew = Util.isIcloudConnected();\n\t\tif (this.alreadyConnectedToNew)\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC_CONNECTED');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CHECK_ICLOUD_SETTINGS');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CONNECT_ICLOUD');\n\t\t}\n\t}\n\n\tgetPortalAddress()\n\t{\n\t\treturn this.portalAddress;\n\t}\n\n\tgetContentInfoBody()\n\t{\n\t\treturn Tag.render `\n\t\t\t${this.getContentInfoBodyHeader()}\n\t\t\t${this.getContentInfoWarning()}\n\t\t`;\n\t}\n\n\n\tgetActiveConnectionContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-wrap calendar-sync-wrap-detail\">\n\t\t\t\t<div class=\"calendar-sync-header\">\n\t\t\t\t\t<span class=\"calendar-sync-header-text\">${this.getHeaderTitle()}</span>\n\t\t\t\t</div>\n\t\t\t\t${this.getContentActiveBody()}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tgetContentActiveBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t${this.getContentActiveBodyHeader()}\n\t\t\t<div class=\"calendar-sync-slider-section calendar-sync-slider-section-banner\">\n\t\t\t\t${this.getContentBodyConnect()}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetContentActiveBodyHeader()\n\t{\n\t\tconst timestamp = this.connection.getSyncDate().getTime() / 1000;\n\t\tconst syncTime = timestamp\n\t\t\t? Util.formatDateUsable(timestamp) + ' ' + BX.date.format(Util.getTimeFormatShort(), timestamp)\n\t\t\t: '';\n\n\t\treturn Tag.render `\n\t\t\t<div class=\"calendar-sync-slider-section\">\n\t\t\t\t<div class=\"calendar-sync-slider-header-icon ${this.sliderIconClass}\"></div>\n\t\t\t\t<div class=\"calendar-sync-slider-header\">\n\t\t\t\t<div class=\"calendar-sync-slider-title\">${this.titleActiveHeader}</div>\n\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_SYNC_LAST_SYNC_DATE')}</span>\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-time\">${syncTime}</span>\n\t\t\t\t</div>\n\t\t\t\t\t<a class=\"calendar-sync-slider-link\" href=\"javascript:void(0);\" onclick=\"${this.showHelp.bind(this)}\">${Loc.getMessage('CAL_TEXT_ABOUT_WORK_SYNC')}</a>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t}\n\n\tgetContentInfoBodyHeaderHelper()\n\t{\n\t\tif (!this.headerHelper)\n\t\t{\n\t\t\tthis.headerHelper = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">\n\t\t\t\t\t\t<a class=\"calendar-sync-slider-info-link\">\n\t\t\t\t\t\t\t${Loc.getMessage('CAL_CONNECT_PC')}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\tEvent.bind(this.headerHelper, 'click', this.showExtendedInfoMacOs.bind(this));\n\t\t}\n\n\t\treturn this.headerHelper;\n\t}\n\n\tshowExtendedInfoMacOs()\n\t{\n\t\tthis.headerHelper.style.display = 'none';\n\t\tDom.append(this.getContentBodyConnect(), this.infoBodyHeader);\n\t}\n\n\tgetContentBodyConnect()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-slider-section calendar-sync-slider-section-col\">\n\t\t\t\t<div class=\"calendar-sync-slider-header calendar-sync-slider-header-divide\">\n\t\t\t\t\t<div class=\"calendar-sync-slider-subtitle\">${Loc.getMessage('CAL_MAC_INSTRUCTION_HEADER')}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_DESCRIPTION')}:</span>\n\t\t\t\t\t<ol class=\"calendar-sync-slider-info-list\">\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_FIRST')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_SECOND')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_THIRD')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_FOURTH')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_FIFTH', { '#PORTAL_ADDRESS#': this.provider.getPortalAddress() })}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_SIXTH')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"calendar-sync-slider-info-item\">\n\t\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_POINT_SEVENTH')}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ol>\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_MAC_INSTRUCTION_CONCLUSION')}</span>\n\t\t\t\t\t<div class=\"calendar-sync-slider-info\" style=\"margin-top: 20px\">\n\t\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">\n\t\t\t\t\t\t\t<a class=\"calendar-sync-slider-info-link\" href=\"javascript:void(0);\" onclick=\"${this.showHelp.bind(this)}\">\n\t\t\t\t\t\t\t\t${Loc.getMessage('CAL_TEXT_ABOUT_WORK_SYNC')}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\thandleMobileButtonConnectClick()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-mac'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tcalendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getIcloudProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.getConnectionTemplate()\n\t\t\t\t.handleConnectButton();\n\t\t}\n\t}\n\n\thandleMobileButtonOtherSyncInfo()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-mac'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tconst connectionProvider = calendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getIcloudProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.connectionProvider\n\t\t\t;\n\n\t\t\tconnectionProvider.openActiveConnectionSlider(connectionProvider.getConnection());\n\t\t}\n\t}\n}\n","// @flow\n'use strict';\n\nimport {Loc} from \"main.core\";\nimport {InterfaceTemplate} from \"./interfacetemplate\";\n\nexport default class OutlookTemplate extends InterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_MAC\"),\n\t\t\thelpDeskCode: '5684075',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_MAC_CALENDAR_TITLE'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_MAC_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_MAC_CALENDAR_IS_CONNECT_TITLE'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_MAC_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-mac',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/mac.svg',\n\t\t\tcolor: '#ff5752',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: false,\n\t\t});\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc} from \"main.core\";\nimport {CaldavInterfaceTemplate} from \"./caldavinterfacetemplate\";\n\nexport default class YandexTemplate extends CaldavInterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_YANDEX\"),\n\t\t\thelpDeskCode: '10930170',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_YANDEX_CALENDAR'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_YANDEX_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_YANDEX_CALENDAR_IS_CONNECT'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_YANDEX_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-yandex',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/yandex.svg',\n\t\t\ticonLogoClass: '--yandex',\n\t\t\tcolor: '#f9c500',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: true,\n\t\t});\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc, Tag, Type, Event, Dom} from \"main.core\";\nimport {InterfaceTemplate} from \"./interfacetemplate\";\nimport MobileSyncBanner from \"../controls/mobilesyncbanner\";\nimport {Util} from \"calendar.util\";\n\nexport default class MobileInterfaceTemplate extends InterfaceTemplate\n{\n\tconstructor(options)\n\t{\n\t\tsuper(options);\n\n\t\tthis.banner = new MobileSyncBanner({\n\t\t\ttype: this.provider.getType(),\n\t\t\thelpDeskCode: options.helpDeskCode,\n\t\t});\n\n\t\tif (this.status)\n\t\t{\n\t\t\tthis.syncDate = Type.isDate(this.data.syncDate) ? this.data.syncDate : Util.parseDate(this.data.syncDate);\n\t\t}\n\t}\n\n\tgetContentInfoBody()\n\t{\n\t\treturn Tag.render `\n\t\t\t${this.getContentInfoBodyHeader()}\n\t\t\t${this.getContentInfoWarning()}\n\t\t`;\n\t}\n\n\tgetContentInfoBodyHeaderHelper()\n\t{\n\t\tif (!this.headerHelper)\n\t\t{\n\t\t\tthis.headerHelper = Tag.render`\n\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">\n\t\t\t\t\t\t<a class=\"calendar-sync-slider-info-link\">\n\t\t\t\t\t\t\t${Loc.getMessage('CAL_CONNECT_PHONE')}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\tEvent.bind(this.headerHelper, 'click', this.showMobileSyncBanner.bind(this));\n\t\t}\n\n\t\treturn this.headerHelper;\n\t}\n\n\tshowMobileSyncBanner()\n\t{\n\t\tthis.headerHelper.style.display = 'none';\n\t\tDom.append(this.getContentBodyConnect(), this.infoBodyHeader);\n\t}\n\n\tgetContentActiveBody()\n\t{\n\t\treturn Tag.render`\n\t\t\t${this.getContentActiveBodyHeader()}\n\t\t\t<div class=\"calendar-sync-slider-section calendar-sync-slider-section-banner\">\n\t\t\t\t${this.getContentBodyConnect()}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tgetContentActiveBodyHeader()\n\t{\n\t\tconst timestamp = this.connection.getSyncDate().getTime() / 1000;\n\t\tconst syncTime = timestamp\n\t\t\t? Util.formatDateUsable(timestamp) + ' ' + BX.date.format(Util.getTimeFormatShort(), timestamp)\n\t\t\t: '';\n\n\t\treturn Tag.render `\n\t\t\t<div class=\"calendar-sync-slider-section\">\n\t\t\t\t<div class=\"calendar-sync-slider-header-icon ${this.sliderIconClass}\"></div>\n\t\t\t\t<div class=\"calendar-sync-slider-header\">\n\t\t\t\t<div class=\"calendar-sync-slider-title\">${this.titleActiveHeader}</div>\n\t\t\t\t<div class=\"calendar-sync-slider-info\">\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-text\">${Loc.getMessage('CAL_SYNC_LAST_SYNC_DATE')}</span>\n\t\t\t\t\t<span class=\"calendar-sync-slider-info-time\">${syncTime}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"calendar-sync-slider-desc\">${Loc.getMessage('CAL_SYNC_DISABLE')}</div>\n\t\t\t\t\t<a class=\"calendar-sync-slider-link\" href=\"javascript:void(0);\" onclick=\"${this.showHelp.bind(this)}\">${Loc.getMessage('CAL_TEXT_ABOUT_WORK_SYNC')}</a>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t}\n\n\tgetContentBodyConnect()\n\t{\n\t\tthis.banner.initQrCode().then(this.banner.drawQRCode.bind(this.banner));\n\t\treturn this.banner.getContainer();\n\t}\n\t\n\tgetActiveConnectionContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-sync-wrap calendar-sync-wrap-detail\">\n\t\t\t\t<div class=\"calendar-sync-header\">\n\t\t\t\t\t<span class=\"calendar-sync-header-text\">${this.getHeaderTitle()}</span>\n\t\t\t\t</div>\n\t\t\t\t${this.getContentActiveBody()}\n\t\t\t</div>\n\t\t`\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc} from \"main.core\";\nimport MobileInterfaceTemplate from \"./mobileinterfacetemplate\";\nimport { Util } from 'calendar.util';\n\nexport default class AndroidTemplate extends MobileInterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_ANDROID\"),\n\t\t\thelpDeskCode: '5686179',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_ANDROID_CALENDAR_TITLE'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_ANDROID_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_SYNC_CONNECTED_ANDROID_TITLE'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_ANDROID_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-android',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/android.svg',\n\t\t\tcolor: '#9ece03',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: false,\n\t\t});\n\n\t\tthis.alreadyConnectedToNew = Util.isGoogleConnected();\n\t\tif (this.alreadyConnectedToNew)\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_ANDROID_CONNECTED');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CHECK_GOOGLE_SETTINGS');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_ANDROID');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CONNECT_GOOGLE');\n\t\t}\n\t}\n\n\thandleMobileButtonConnectClick()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-android'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tcalendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getGoogleProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.getConnectionTemplate()\n\t\t\t\t.handleConnectButton();\n\t\t}\n\t}\n\n\thandleMobileButtonOtherSyncInfo()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-android'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tconst connectionProvider = calendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getGoogleProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.connectionProvider\n\t\t\t;\n\n\t\t\tconnectionProvider.openActiveConnectionSlider(connectionProvider.getConnection());\n\t\t}\n\t}\n}","// @flow\n'use strict';\n\nimport { Loc, Tag } from \"main.core\";\nimport MobileInterfaceTemplate from \"./mobileinterfacetemplate\";\nimport { Util } from 'calendar.util';\n\nexport default class IphoneTemplate extends MobileInterfaceTemplate\n{\n\tconstructor(provider, connection = null)\n\t{\n\t\tsuper({\n\t\t\ttitle: Loc.getMessage(\"CALENDAR_TITLE_IPHONE\"),\n\t\t\thelpDeskCode: '5686207',\n\t\t\ttitleInfoHeader: Loc.getMessage('CAL_CONNECT_IPHONE_CALENDAR_TITLE'),\n\t\t\tdescriptionInfoHeader: Loc.getMessage('CAL_IPHONE_CONNECT_DESCRIPTION'),\n\t\t\ttitleActiveHeader: Loc.getMessage('CAL_SYNC_CONNECTED_IPHONE_TITLE'),\n\t\t\tdescriptionActiveHeader: Loc.getMessage('CAL_IPHONE_SELECTED_DESCRIPTION'),\n\t\t\tsliderIconClass: 'calendar-sync-slider-header-icon-iphone',\n\t\t\ticonPath: '/bitrix/images/calendar/sync/iphone.svg',\n\t\t\tcolor: '#2fc6f6',\n\t\t\tprovider: provider,\n\t\t\tconnection: connection,\n\t\t\tpopupWithUpdateButton: false,\n\t\t});\n\n\t\tthis.alreadyConnectedToNew = Util.isIcloudConnected();\n\t\tif (this.alreadyConnectedToNew)\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC_CONNECTED');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CHECK_ICLOUD_SETTINGS');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.warningText = Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC');\n\t\t\tthis.mobileSyncButtonText = Loc.getMessage('CALENDAR_CONNECT_ICLOUD');\n\t\t}\n\t\t// this.warningText = this.alreadyConnectedToNew\n\t\t// \t? Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC_CONNECTED')\n\t\t// \t: Loc.getMessage('CAL_SYNC_WARNING_IPHONE_AND_MAC');\n\t}\n\n\thandleMobileButtonConnectClick()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-iphone'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tcalendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getIcloudProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.getConnectionTemplate()\n\t\t\t\t.handleConnectButton();\n\t\t}\n\t}\n\n\thandleMobileButtonOtherSyncInfo()\n\t{\n\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t{\n\t\t\tif (['calendar:auxiliary-sync-slider', 'calendar:item-sync-connect-iphone'].includes(slider.getUrl()))\n\t\t\t{\n\t\t\t\tslider.close();\n\t\t\t}\n\t\t});\n\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tconst connectionProvider = calendarContext\n\t\t\t\t.syncInterface\n\t\t\t\t.getIcloudProvider()\n\t\t\t\t.getInterfaceUnit()\n\t\t\t\t.connectionProvider\n\t\t\t;\n\n\t\t\tconnectionProvider.openActiveConnectionSlider(connectionProvider.getConnection());\n\t\t}\n\t}\n}","// @flow\n'use strict';\n\n\nimport {Popup} from 'main.popup';\nimport {Util} from 'calendar.util';\nimport {Loc, Tag} from \"main.core\";\nimport \"../css/icalpopup.css\"\n\nexport default class IcalSyncPopup\n{\n\tLINK_LENGTH = 112;\n\n\tconstructor(options)\n\t{\n\t\tthis.link = this.getIcalLink(options);\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tshow()\n\t{\n\t\tthis.createPopup().show();\n\t\tthis.startSync();\n\t}\n\n\tstartSync()\n\t{\n\t\tBX.ajax.get(this.link + '&check=Y', \"\", (result) =>\n\t\t{\n\t\t\tsetTimeout(() =>\n\t\t\t{\n\t\t\t\tif (!result || result.length <= 0 || result.toUpperCase().indexOf('BEGIN:VCALENDAR') === -1)\n\t\t\t\t{\n\t\t\t\t\tthis.showPopupWithSyncDataError();\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t});\n\t}\n\n\tgetContent()\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"calendar-ical-popup-wrapper\">\n\t\t\t\t<h3>${Loc.getMessage('EC_JS_EXPORT_TILE')}</h3>\n\t\t\t\t<div class=\"calendar-ical-popup-label-text\"><span>${Loc.getMessage('EC_EXP_TEXT')}</span></div>\n\t\t\t\t${this.getLinkBlock()}\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tcreatePopup()\n\t{\n\t\treturn this.popup = new Popup({\n\t\t\twidth: 400,\n\t\t\tzIndexOptions: 4000,\n\t\t\tautoHide: false,\n\t\t\tcloseByEsc: true,\n\t\t\tdraggable: true,\n\t\t\tcloseIcon: {right: \"12px\", top: \"10px\"},\n\t\t\tclassName: \"bxc-popup-window\",\n\t\t\tcontent: this.getContent(),\n\t\t\tbuttons: [\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext : Loc.getMessage('EC_JS_ICAL_COPY_ICAL_SYNC_LINK'),\n\t\t\t\t\tcolor: BX.UI.Button.Color.PRIMARY,\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tthis.copyLink(event);\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tnew BX.UI.Button({\n\t\t\t\t\ttext : Loc.getMessage('EC_SEC_SLIDER_CLOSE'),\n\t\t\t\t\tcolor: BX.UI.Button.Color.LINK,\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tthis.popup.close();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t});\n\t}\n\n\tgetIcalLink(options)\n\t{\n\t\treturn options.calendarPath\n\t\t\t+ ((options.calendarPath.indexOf('?') >= 0) ? '&' : '?')\n\t\t\t+ 'action=export'\n\t\t\t+ options.sectionLink;\n\t}\n\n\tgetLinkBlock()\n\t{\n\t\treturn Tag.render`\n\t\t\t\t<div class=\"calendar-ical-popup-link-block\">\n\t\t\t\t\t<a class=\"ui-link ui-link-primary \" target=\"_blank\" href=\"${BX.util.htmlspecialchars(this.link)}\">\n\t\t\t\t\t\t${BX.util.htmlspecialchars(this.getShortenLink(this.link))}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t`;\n\t}\n\n\tstatic checkPathes(options)\n\t{\n\t\treturn (!!options.sectionLink || !!options.calendarPath)\n\t}\n\n\tstatic showPopupWithPathesError()\n\t{\n\t\tBX.UI.Dialogs.MessageBox.alert(Loc.getMessage('EC_JS_ICAL_ERROR_WITH_PATHES'));\n\t}\n\n\tshowPopupWithSyncDataError()\n\t{\n\t\tBX.UI.Dialogs.MessageBox.alert(Loc.getMessage('EC_EDEV_EXP_WARN'));\n\t}\n\n\tcopyLink(event)\n\t{\n\t\twindow.BX.clipboard.copy(this.link)\n\t\t\t? this.#showSuccessCopyNotification()\n\t\t\t: this.#showFailedCopyNotification();\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\tgetShortenLink(link)\n\t{\n\t\treturn link.length < this.LINK_LENGTH ? link : link.substr(0, 105) + '...' + link.slice(-7);\n\t}\n\n\t#showSuccessCopyNotification()\n\t{\n\t\tthis.#showResultNotification(Loc.getMessage('EC_JS_ICAL_COPY_ICAL_SYNC_LINK_SUCCESS'));\n\t}\n\n\t#showFailedCopyNotification()\n\t{\n\t\tthis.#showResultNotification(Loc.getMessage('EC_JS_ICAL_COPY_ICAL_SYNC_LINK_FAILED'));\n\t}\n\n\t#showResultNotification(message)\n\t{\n\t\tUtil.showNotification(message);\n\t}\n}\n","// @flow\n'use strict';\nimport {Type, Tag, Loc, Runtime, Dom} from 'main.core';\nimport {Util} from \"calendar.util\";\nimport {Popup} from 'main.popup';\n\nexport default class AfterSyncTour\n{\n\tconstructor(options = {})\n\t{\n\t\tthis.options = options;\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tloadExtension()\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tRuntime.loadExtension('ui.tour').then((exports) => {\n\t\t\t\tif (exports && exports['Guide'] && exports['Manager'])\n\t\t\t\t{\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconsole.error(`Extension \"ui.tour\" not found`);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tshow()\n\t{\n\t\tthis.loadExtension()\n\t\t\t.then(() => {\n\t\t\t\tthis.guide = new BX.UI.Tour.Guide({\n\t\t\t\t\tsteps: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttarget: this.getTarget(),\n\t\t\t\t\t\t\ttitle: Loc.getMessage('CAL_AFTER_SYNC_AHA_TITLE'),\n\t\t\t\t\t\t\ttext: Loc.getMessage('CAL_AFTER_SYNC_AHA_TEXT'),\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\tonEvents: true\n\t\t\t\t});\n\n\t\t\t\tthis.guide.start();\n\t\t\t});\n\t}\n\n\tgetTarget()\n\t{\n\t\tlet target;\n\t\tconst view = this.options.view;\n\t\tconst viewWrap = view.getContainer();\n\n\t\tif (view.getName() === 'month')\n\t\t{\n\t\t\ttarget = viewWrap.querySelectorAll(\".calendar-grid-today\")[0];\n\t\t}\n\t\telse if (view.getName() === 'day'\n\t\t|| view.getName() === 'week')\n\t\t{\n\t\t\tconst dayCode = Util.getDayCode(new Date());\n\t\t\ttarget = viewWrap.querySelector('div[data-bx-calendar-timeline-day=\"' + dayCode + '\"] .calendar-grid-cell-inner');\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttarget = document.querySelector('span[data-role=\"addButton\"]');\n\t\t}\n\n\t\treturn target;\n\t}\n}\n"],"names":["StatusBlock","constructor","options","status","connections","withStatusLabel","popupWithUpdateButton","popupId","createInstance","setStatus","setConnections","getContent","statusInfoBlock","Tag","render","Loc","getMessage","addEventListener","handlerMouseEnter","handlerMouseLeave","statusBlock","getStatusTextLabel","clearTimeout","statusBlockEnterTimeout","buttonEnterTimeout","setTimeout","showPopup","statusBlockLeaveTimeout","hidePopup","node","popup","getPopup","show","addPopupHandlers","hide","getPopupContainer","SyncStatusPopup","withUpdateButton","id","refresh","AuxiliarySyncPanel","MAIN_SYNC_SLIDER_NAME","SLIDER_WIDTH","LOADER_NAME","cache","Cache","MemoryCache","connectionsProviders","userId","openSlider","BX","SidePanel","Instance","open","contentCallback","slider","Promise","resolve","reject","allowChangeHistory","events","onLoad","setGridContent","cacheable","width","loader","getHeader","getMobileHeader","getMobileContentWrapper","getWebHeader","getWebContentWrapper","getMainHeader","getStatusBlockContent","getConnections","remember","statusBlockContent","items","Object","values","forEach","item","itemConnections","length","connection","ConnectionItem","isConnectionItem","getConnectStatus","push","showWebGridContent","filter","mainPanel","getViewClassification","showMobileGridContent","wrapper","Dom","clean","grid","TileGrid","Grid","container","sizeRatio","itemMinWidth","tileMargin","itemType","draw","blockStatusContent","replace","document","querySelector","SyncPanelUnit","logoClassName","connectionProvider","getConnectionTemplate","connectionTemplate","getClassTemplateItem","renderTo","outerWrapper","Type","isElementNode","appendChild","unitNode","getLogoNode","getTitle","getSyncInfoWrap","getButtonsWrap","getSyncPanelLogo","getSyncPanelTitle","syncInfoWrap","setSyncStatus","mode","className","STATUS_SUCCESS","addClass","setSyncInfoStatusText","formatSyncTime","getSyncDate","STATUS_FAILED","STATUS_PENDING","STATUS_SYNCHRONIZING","STATUS_NOT_CONNECTED","text","syncInfoStatusText","innerHTML","Text","encode","toUpperCase","buttonsWrap","getButton","getMoreButton","Event","bind","moreButton","handleItemClick","refreshButton","button","getStatus","e","includes","hasMenu","showMenu","openActiveConnectionSlider","getConnection","openInfoConnectionSlider","handleConnectButton","date","now","Date","timestamp","isDate","Math","round","getTime","secondsAgo","parseInt","format","SyncPanel","HELPDESK_CODE","window","top","displayConnectionUnits","getHeaderWrapper","getUnitsContentWrapper","getFooterWrapper","unitsContentWrapper","getExtraInfoWithCheckIcon","getOpenAuxiliaryPanelLink","getOpenHelpLink","alreadyConnected","link","auxiliarySyncPanel","Helper","connected","renderConnectionUnits","providers","provider","interfaceUnit","setInterfaceUnit","GridUnit","Item","type","gridUnit","getAdditionalContentClass","getContentStyles","getImage","isActive","onClick","layout","title","util","htmlspecialchars","getGridTitle","getGridIcon","getSyncStatus","getGridColor","ajax","runAction","analyticsLabel","open_connection_slider","sync_connection_type","getType","sync_connection_status","ConnectionControls","userName","server","connectionName","addButtonText","removeButtonText","saveButtonText","getWrapper","getForm","getAddButton","getDisconnectButton","getSaveButton","getButtonWrapper","MobileSyncBanner","zIndex","DOM","QRCODE_SIZE","QRCODE_COLOR_LIGHT","QRCODE_COLOR_DARK","QRCODE_WRAP_CLASS","QRC","helpDeskCode","alreadyConnectedToNew","Util","isGoogleConnected","isIcloudConnected","showInPopup","Popup","draggable","content","getContainer","zIndexAbsolute","closeByEsc","closeIcon","initQrCode","then","drawQRCode","close","getQrContainer","getInstructionContainer","initHintNode","qrContainer","getLoader","instructionContainer","getInstructionTextContainer","getHelpdeskCode","instructionTextContainer","getAndroidHintIcon","androidHintIcon","getInnerContainer","Runtime","loadExtension","exports","QRCode","wrap","isDomNode","getMobileSyncUrl","getSize","height","colorDark","colorLight","correctLevel","CorrectLevel","H","data","response","getDetailHelpUrl","InterfaceTemplate","EventEmitter","sliderWidth","setEventNamespace","helpdeskCode","titleInfoHeader","descriptionInfoHeader","titleActiveHeader","descriptionActiveHeader","sliderIconClass","iconPath","iconLogoClass","color","getInfoConnectionContent","getHeaderTitle","getContentInfoBody","getContentActiveBodyHeader","disconnectButton","handleDisconnectButton","syncTime","formatDateUsable","getTimeFormatShort","getSyncStatusClassName","getLogoIconClass","getConnectionName","getActiveConnectionContent","getContentActiveBody","getContentInfoBodyHeader","getContentActiveBodySectionsHeader","getContentActiveBodySectionsManager","showHelp","event","preventDefault","getHelpdeskLink","infoBodyHeader","getContentInfoBodyHeaderHelper","getContentInfoWarning","mobileSyncButton","getMobileSyncControlButton","handleMobileButtonOtherSyncInfo","handleMobileButtonConnectClick","warningText","mobileSyncButtonText","setProvider","sendRequestRemoveConnection","connectionId","removeCalendars","reload","runUpdateInfo","sectionStatus","sectionStatusObject","emit","getElementById","getContentActiveBodySections","sectionList","section","onClickCheckSection","showUpdateSectionListNotification","showNotification","getId","deactivateConnection","closeSlider","getInterfaceUnit","SLIDER_PREFIX","CaldavInterfaceTemplate","formObject","formBlock","form","buttonWrapper","bodyHeader","click_to_connection_button","connection_type","sendRequestAddConnection","append","addParams","fd","FormData","name","get","pass","showAlertPopup","errors","alert","message","code","messageBox","UI","Dialogs","MessageBox","buttons","MessageBoxButtons","OK","okCaption","minWidth","mediumButtonSize","popupOptions","onOk","removeClass","CaldavTemplate","ExchangeTemplate","getContentBody","getHelpdeskBlock","SyncWizard","TYPE","SLIDER_NAME","syncStagesList","accountName","MIN_UPDATE_STATE_DELAY","CONFETTI_DELAY","pullWizardEventHandler","handlePullNewEvent","lastUpdateStateTimestamp","logoIconClass","displaySyncStages","bindButtonsHandlers","onDestroy","handleCloseWizard","getTopSlider","syncIsFinished","errorStatus","getTitleWrapper","getSyncStagesWrapper","getInfoStatusWrapper","getErrorWrapper","getFinalCheckWrapper","getHelpLinkWrapper","syncTitleWrapper","getAccountNameNode","getActiveStatusNode","syncStagesWrapper","infoStatusWrapper","errorWrapper","helpLinkWrapper","finalCheckWrapper","getNewEventCardWrapper","newEventCardWrapper","getSkeletonWrapper","skeletonWrapper","getSkeletonTitle","accountNameNode","getAccountName","setAccountName","value","activeStatusNode","startStatusCarousel","statusNode","progressStatuses","dotCycle","statusCarouselInterval","setInterval","currentPhraseNode","firstElementChild","countDots","innerText","style","offsetWidth","slice","shift","animateNextStatus","almostDoneStatus","clearInterval","carousel","phraseText","nextPhraseNode","maxWidth","max","transition","transform","remove","string","match","setSyncStages","getSyncStages","getHelpDeskCode","stage","continueButton","handleContinueButtonClick","eifButton","handleFinalCloseButtonClick","showFinalStage","display","showFinalCheckWrapper","showHelpLinkWrapper","hideSyncStagesWrapper","hideInfoStatusWrapper","getBX","subscribe","isSyncFinished","getOpenSliders","getUrl","calendarAction","handleUpdateState","stateData","currentTimestamp","updateState","setActiveStatusFinished","showButtonWrapper","hideButtonWrapper","showInfoStatusWrapper","showErrorWrapper","hideErrorWrapper","hideFinalCheckWrapper","showSyncStagesWrapper","hideHelpLinkWrapper","isFunction","getData","command","newEvent","syncBalloon","hasClass","entry","Entry","fields","displayNewEvent","unsubscribe","getNewEventCard","from","to","fromTimestamp","dateFrom","getDayMonthFormat","timeFrom","formatTime","getHours","getMinutes","timeTo","timeField","isFullDay","newEventCard","getName","showConfetti","bx","Confetti","fire","particleCount","spread","origin","y","x","getZindex","getSlider","setErrorState","closeButton","SyncStageUnit","doneStatus","contentNode","setDone","setUndone","GoogleSyncWizard","STAGE_1_CODE","STAGE_2_CODE","STAGE_3_CODE","GOOGLE_ON_MOBILE_HELPDESK","helper","GoogleTemplate","HANDLE_CONNECTION_DELAY","handleSuccessConnectionDebounce","debounce","handleSuccessConnection","createConnection","getSyncLink","location","hash","removeHash","setWizardSyncMode","saveConnection","openSyncWizard","getSectionsForGoogle","target","checked","offsetLeft","offsetTop","padding","autoHide","animation","hasSetSyncGoogleSettings","wizard","setActiveWizard","IcloudAuthDialog","appPasswordTemplate","keyHandler","handleKeyPress","checkOutsideClickClose","outsideMouseDownClose","initAlertBlock","titleBar","contentBackground","overlay","opacity","lightShadow","Button","click","authorize","onPopupClose","isFormDataValid","saveBtn","getButtons","setClocking","setDisabled","cancelButton","contains","alertBlock","BaseEvent","appleId","appleIdInput","toString","trim","appPassword","appPasswordInput","highlightInvalidFormData","highlightInvalidAppleIdInput","highlightInvalidPasswordInput","clearInvalidation","unbind","focus","enableSaveButton","getAppleInfoBlock","getAppleIdTitle","getAppleIdInput","getAppleIdError","getAppPasswordTitle","getLearnMoreButton","getAppPasswordInput","getShowHidePasswordIcon","getAppPasswordError","appleInfo","appleIdTitle","appPasswordTitle","appleIdError","appPasswordError","openHelpDesk","onfocus","onblur","validateAppleIdInput","validateAppPasswordInput","showHidePasswordIcon","switchPasswordVisibility","learnMoreButton","showErrorAuthorizationAlert","emailRegExp","input","test","appPasswordRegExp","completeWithTemplate","clearForm","password","addition","click_to_helpdesk_button","keyCode","getKeyCode","srcElement","outsideMouseUp","closest","outsideMouseDown","checkTopSlider","destroy","IcloudSyncWizard","WarnSyncIcloudDialog","authDialog","openAuthDialog","getAlertInformation","Alert","Color","WARNING","icon","Icon","INFO","disableConnection","setIphoneConnectionStatus","setMacConnectionStatus","IcloudTemplate","result","syncCalendarsWithIcloud","wrong_app_pass","setId","setConnected","setSyncDate","setWizardState","ERROR_CODE","vendorName","getSectionsForIcloud","initPopup","isIphoneConnected","isMacConnected","alertSyncPopup","unsubscribeAll","subscribeOnce","Office365SyncWizard","Office365template","hasSetSyncOffice365Settings","getSectionsForOffice365","MacTemplate","getPortalAddress","portalAddress","getContentBodyConnect","headerHelper","showExtendedInfoMacOs","calendarContext","getCalendarContext","syncInterface","getIcloudProvider","OutlookTemplate","YandexTemplate","MobileInterfaceTemplate","banner","syncDate","parseDate","showMobileSyncBanner","AndroidTemplate","getGoogleProvider","IphoneTemplate","IcalSyncPopup","LINK_LENGTH","getIcalLink","createPopup","startSync","indexOf","showPopupWithSyncDataError","getLinkBlock","zIndexOptions","right","PRIMARY","onclick","copyLink","LINK","calendarPath","sectionLink","getShortenLink","checkPathes","showPopupWithPathesError","clipboard","copy","stopPropagation","substr","AfterSyncTour","console","error","guide","Tour","Guide","steps","getTarget","onEvents","start","view","viewWrap","querySelectorAll","dayCode","getDayCode"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.3 |
proxy
|
phpinfo
|
Settings