Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/js/ui/mail/provider-showcase/dist/
Upload File :
Current File : /var/www/homesaver/www/bitrix/js/ui/mail/provider-showcase/dist/provider-showcase.bundle.js

/* eslint-disable */
this.BX = this.BX || {};
this.BX.UI = this.BX.UI || {};
(function (exports,main_core,ui_sidepanel_layout,ui_mail_senderEditor) {
	'use strict';

	let _ = t => t,
	  _t,
	  _t2,
	  _t3,
	  _t4,
	  _t5,
	  _t6,
	  _t7;
	const SidePanel = BX.SidePanel;
	const showcaseSliderUrl = 'mailProviderShowcase';
	const successMessage = 'mail-mailbox-config-success';
	const imapServiceName = 'other';
	const mailboxType = 'mailbox';
	var _wasSenderUpdated = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("wasSenderUpdated");
	var _createSmtpItemNode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createSmtpItemNode");
	var _createShowcase = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createShowcase");
	var _createProvidersList = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createProvidersList");
	var _createPromotionShowcase = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createPromotionShowcase");
	var _getProviderKey = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getProviderKey");
	var _getProviderName = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getProviderName");
	var _getProviderImgSrcClass = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getProviderImgSrcClass");
	class ProviderShowcase {
	  constructor(options = null) {
	    var _options$isSender, _options$setSenderCal, _options$addSenderCal, _options$updateSender;
	    Object.defineProperty(this, _getProviderImgSrcClass, {
	      value: _getProviderImgSrcClass2
	    });
	    Object.defineProperty(this, _getProviderName, {
	      value: _getProviderName2
	    });
	    Object.defineProperty(this, _getProviderKey, {
	      value: _getProviderKey2
	    });
	    Object.defineProperty(this, _createPromotionShowcase, {
	      value: _createPromotionShowcase2
	    });
	    Object.defineProperty(this, _createProvidersList, {
	      value: _createProvidersList2
	    });
	    Object.defineProperty(this, _createShowcase, {
	      value: _createShowcase2
	    });
	    Object.defineProperty(this, _createSmtpItemNode, {
	      value: _createSmtpItemNode2
	    });
	    Object.defineProperty(this, _wasSenderUpdated, {
	      writable: true,
	      value: false
	    });
	    this.isSender = (_options$isSender = options.isSender) != null ? _options$isSender : false;
	    this.setSenderCallback = (_options$setSenderCal = options.setSenderCallback) != null ? _options$setSenderCal : null;
	    this.addSenderCallback = (_options$addSenderCal = options.addSenderCallback) != null ? _options$addSenderCal : null;
	    this.updateSenderList = (_options$updateSender = options.updateSenderList) != null ? _options$updateSender : null;
	    this.container = main_core.Tag.render(_t || (_t = _`
			<div class="showcase-container"></div>
		`));
	  }
	  static openSlider(options) {
	    const instance = new ProviderShowcase(options);
	    const onSliderMessage = function (event) {
	      const [sliderEvent] = event.getData();
	      if (!sliderEvent) {
	        return;
	      }
	      const slider = SidePanel.Instance.getSlider(showcaseSliderUrl);
	      if (!slider || sliderEvent.getEventId() !== successMessage) {
	        return;
	      }
	      const mailboxId = sliderEvent.data.id;
	      if (!mailboxId) {
	        return;
	      }
	      babelHelpers.classPrivateFieldLooseBase(instance, _wasSenderUpdated)[_wasSenderUpdated] = true;
	      slider.close();
	      top.BX.SidePanel.Instance.postMessage(window, sliderEvent.getEventId(), sliderEvent.data);
	      main_core.ajax.runAction('main.api.mail.sender.getSenderByMailboxId', {
	        data: {
	          mailboxId,
	          getSenderWithoutSmtp: !instance.options.isCloud
	        }
	      }).then(response => {
	        const data = response.data;
	        if (!data) {
	          return;
	        }
	        instance.setSender(data.id, data.name, data.email);
	        if (instance.addSenderCallback || data.type === mailboxType) {
	          return;
	        }
	        ui_mail_senderEditor.AliasEditor.openSlider({
	          senderId: data.id,
	          email: data.email,
	          setSenderCallback: instance.setSenderCallback,
	          updateSenderList: () => {
	            void instance.updateSenderList();
	          }
	        });
	      }).catch(() => {});
	    };
	    SidePanel.Instance.open(showcaseSliderUrl, {
	      width: 790,
	      cacheable: false,
	      contentCallback: () => {
	        return ui_sidepanel_layout.Layout.createContent({
	          extensions: ['ui.mail.provider-showcase'],
	          title: main_core.Loc.getMessage('UI_MAIL_PROVIDER_SHOWCASE_TITLE'),
	          design: {
	            section: false
	          },
	          content() {
	            return instance.load();
	          },
	          buttons: () => {}
	        });
	      },
	      events: {
	        onClose: () => {
	          top.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onMessage', onSliderMessage);
	          if (instance.updateSenderList && babelHelpers.classPrivateFieldLooseBase(instance, _wasSenderUpdated)[_wasSenderUpdated]) {
	            instance.updateSenderList();
	          }
	        }
	      }
	    });
	    top.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onMessage', onSliderMessage);
	  }
	  static renderTo(target, options) {
	    const instance = new ProviderShowcase(options);
	    return new Promise((resolve, reject) => {
	      instance.load().then(container => {
	        main_core.Dom.append(container, target);
	        resolve(container);
	      }).catch(() => {
	        reject();
	      });
	    });
	  }
	  load() {
	    return main_core.ajax.runAction('main.api.mail.mailproviders.getShowcaseParams', {
	      data: {
	        isSender: this.isSender ? 1 : 0
	      }
	    }).then(response => {
	      babelHelpers.classPrivateFieldLooseBase(this, _createShowcase)[_createShowcase](response.data);
	      return this.container;
	    }).catch(() => {});
	  }
	  setSender(id, senderName, senderEmail) {
	    const name = senderName;
	    const email = senderEmail;
	    if (this.setSenderCallback) {
	      this.setSenderCallback(id, name, email);
	    }
	    if (!this.addSenderCallback) {
	      return;
	    }
	    const mailbox = [];
	    mailbox.name = name;
	    mailbox.email = email;
	    this.addSenderCallback(mailbox);
	  }
	}
	function _createSmtpItemNode2() {
	  this.smtpNode = main_core.Tag.render(_t2 || (_t2 = _`
			<div class="mail-provider-item mail-provider-item-available">
				<div class="mail-provider-img-container">
					<div class="mail-provider-img-smtp"></div>
				</div>
				<div class="mail-provider-item-title-container">
					<span class="mail-provider-item-title">${0}</span>
				</div>
			</div>
		`), main_core.Loc.getMessage('UI_MAIL_PROVIDER_SMTP_TITLE'));
	  main_core.Event.bind(this.smtpNode, 'click', () => {
	    const slider = BX.SidePanel.Instance.getTopSlider();
	    if (slider) {
	      ui_mail_senderEditor.SmtpEditor.openSlider({
	        setSenderCallback: (senderId, senderName, senderEmail) => {
	          if (this.setSenderCallback && senderId && senderName && senderEmail) {
	            this.setSenderCallback(senderId, senderName, senderEmail);
	          }
	          this.updateSenderList();
	          slider.close();
	        },
	        addSenderCallback: this.addSenderCallback
	      });
	    }
	  });
	  if (this.options.isMailToolAvailable && this.options.canConnectNewMailbox) {
	    return;
	  }
	  main_core.Dom.addClass(this.smtpNode, 'available-mail-provider-item');
	  main_core.Dom.attr(this.smtpNode, 'data-tag', main_core.Loc.getMessage('UI_MAIL_PROVIDER_AVAILABLE_TAG'));
	}
	function _createShowcase2(params) {
	  this.options = params.options;
	  this.providers = params.providers;
	  this.showcaseNode = main_core.Tag.render(_t3 || (_t3 = _`
			<div class="mail-provider-list"></div>
		`));
	  main_core.Dom.append(this.showcaseNode, this.container);
	  babelHelpers.classPrivateFieldLooseBase(this, _createProvidersList)[_createProvidersList]();
	  if (!this.isSender || !this.options.isSmtpAvailable) {
	    return;
	  }
	  babelHelpers.classPrivateFieldLooseBase(this, _createSmtpItemNode)[_createSmtpItemNode]();
	  const firstProvider = this.showcaseNode.firstChild;
	  if (!firstProvider || this.options.canConnectNewMailbox && this.options.isMailToolAvailable) {
	    main_core.Dom.append(this.smtpNode, this.showcaseNode);
	  } else {
	    main_core.Dom.insertBefore(this.smtpNode, firstProvider);
	  }
	  if (this.options.isModuleMailInstalled) {
	    return;
	  }
	  babelHelpers.classPrivateFieldLooseBase(this, _createPromotionShowcase)[_createPromotionShowcase]();
	}
	function _createProvidersList2() {
	  if (!this.providers) {
	    return;
	  }
	  this.providers.forEach(provider => {
	    var _babelHelpers$classPr;
	    const key = babelHelpers.classPrivateFieldLooseBase(this, _getProviderKey)[_getProviderKey](provider.name);
	    const name = provider.name;
	    const {
	      root,
	      title
	    } = main_core.Tag.render(_t4 || (_t4 = _`
				<a class="mail-provider-item mail-provider-item-available">
					<div class="mail-provider-img-container">
						<div class="mail-provider-img ${0}"></div>
					</div>
					<div class="mail-provider-item-title-container" ref="title">
						<span class="mail-provider-item-title">${0}</span>
					</div>
				</a>
			`), babelHelpers.classPrivateFieldLooseBase(this, _getProviderImgSrcClass)[_getProviderImgSrcClass](key), main_core.Text.encode((_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _getProviderName)[_getProviderName](key)) != null ? _babelHelpers$classPr : name[0].toUpperCase() + name.slice(1)));
	    if (provider.name === imapServiceName) {
	      const imapSubtitle = main_core.Tag.render(_t5 || (_t5 = _`
					<span class="mail-provider-item-subtitle">${0}</span>
				`), main_core.Loc.getMessage('UI_MAIL_PROVIDER_IMAP_SUBTITLE'));
	      main_core.Dom.append(imapSubtitle, title);
	    }
	    if (!this.options.isMailToolAvailable) {
	      main_core.Event.bind(root, 'click', () => {
	        BX.UI.InfoHelper.show(this.options.toolLimitSliderCode);
	      });
	    } else if (this.options.canConnectNewMailbox) {
	      main_core.Event.bind(root, 'click', () => {
	        SidePanel.Instance.open(provider.href, {
	          width: 760
	        });
	      });
	    } else {
	      main_core.Event.bind(root, 'click', () => {
	        if (this.activeFeaturePromoter) {
	          this.activeFeaturePromoter.close();
	          this.activeFeaturePromoter = null;
	        }
	        const featureRegistry = BX.Intranet ? BX.UI.FeaturePromotersRegistry : top.BX.UI.FeaturePromotersRegistry;
	        this.activeFeaturePromoter = featureRegistry.getPromoter({
	          code: this.options.mailboxLimitSliderCode,
	          bindElement: title
	        });
	        this.activeFeaturePromoter.show();
	      });
	    }
	    main_core.Dom.append(root, this.showcaseNode);
	    if (!this.isSender || !this.options.isMailToolAvailable || !this.options.canConnectNewMailbox) {
	      return;
	    }
	    main_core.Dom.insertBefore(root, this.smtpNode);
	  });
	}
	function _createPromotionShowcase2() {
	  if (!this.options.promotionProviders) {
	    return;
	  }
	  const promotionMessage = main_core.Loc.getMessage('UI_MAIL_PROMOTION_TEXT', {
	    '[strong]': '<strong>',
	    '[/strong]': '</strong>'
	  });
	  const {
	    root,
	    providerList
	  } = main_core.Tag.render(_t6 || (_t6 = _`
			<div class="promotion-showcase">
				<div class="ui-alert ui-alert-icon-info ui-alert-primary">
					<span class="ui-alert-message">${0}</span>
				</div>
				<div class="mail-provider-list" ref="providerList" style="margin-top: 10px"></div>
			</div>
		`), promotionMessage);
	  this.promotionShowcaseNode = root;
	  this.options.promotionProviders.forEach(providerName => {
	    var _babelHelpers$classPr2;
	    const name = main_core.Text.encode(providerName);
	    const item = main_core.Tag.render(_t7 || (_t7 = _`
				<a class="mail-provider-item mail-provider-item-unavailable">
					<div class="mail-provider-img-container">
						<div class="mail-provider-img ${0}"></div>
					</div>
					<div class="mail-provider-item-title-container">
						<span class="mail-provider-item-title">${0}</span>
					</div>
				</a>
			`), babelHelpers.classPrivateFieldLooseBase(this, _getProviderImgSrcClass)[_getProviderImgSrcClass](name), main_core.Text.encode((_babelHelpers$classPr2 = babelHelpers.classPrivateFieldLooseBase(this, _getProviderName)[_getProviderName](name)) != null ? _babelHelpers$classPr2 : name[0].toUpperCase() + name.slice(1)));
	    main_core.Dom.append(item, providerList);
	  });
	  main_core.Dom.append(this.promotionShowcaseNode, this.container);
	}
	function _getProviderKey2(name) {
	  switch (name) {
	    case 'aol':
	      return 'aol';
	    case 'gmail':
	      return 'gmail';
	    case 'yahoo':
	      return 'yahoo';
	    case 'mail.ru':
	    case 'mailru':
	      return 'mailru';
	    case 'icloud':
	      return 'icloud';
	    case 'outlook.com':
	    case 'outlook':
	      return 'outlook';
	    case 'office365':
	      return 'office365';
	    case 'exchangeOnline':
	    case 'exchange':
	      return 'exchange';
	    case 'yandex':
	      return 'yandex';
	    case 'ukr.net':
	      return 'ukrnet';
	    case 'other':
	    case 'imap':
	      return 'other';
	    default:
	      return '';
	  }
	}
	function _getProviderName2(key) {
	  switch (key) {
	    case 'aol':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_AOL');
	    case 'gmail':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_GMAIL');
	    case 'yahoo':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_YAHOO');
	    case 'mailru':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_MAILRU');
	    case 'icloud':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_ICLOUD');
	    case 'outlook':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_OUTLOOK');
	    case 'office365':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_OFFICE365');
	    case 'exchange':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_EXCHANGE');
	    case 'yandex':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_YANDEX');
	    case 'other':
	      return main_core.Loc.getMessage('UI_MAIL_PROVIDER_SERVICE_NAME_IMAP');
	    default:
	      return null;
	  }
	}
	function _getProviderImgSrcClass2(name) {
	  return `mail-provider-${name}-img`;
	}

	exports.ProviderShowcase = ProviderShowcase;

}((this.BX.UI.Mail = this.BX.UI.Mail || {}),BX,BX.UI.SidePanel,BX.UI.Mail));
//# sourceMappingURL=provider-showcase.bundle.js.map