Current Path : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/ui/tutor/dist/ |
Current File : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/ui/tutor/dist/tutor.bundle.js |
/* eslint-disable */ this.BX = this.BX || {}; this.BX.UI = this.BX.UI || {}; (function (exports,main_core,ui_tour,main_loader) { 'use strict'; class Step extends main_core.Event.EventEmitter { constructor(options) { super(); this.setEventNamespace('BX.UI.Tutor.Step'); options = main_core.Type.isPlainObject(options) ? options : {}; this.id = options.id || null; this.title = options.title || null; this.description = options.description || null; this.url = options.url || ''; this.isCompleted = options.isCompleted || false; this.video = options.video || null; this.helpLink = options.helpLink || null; this.highlight = options.highlight || null; this.isActive = options.isActive === true; this.isShownForSlider = options.isShownForSlider || false; this.initOptions = options; this.videoObj = null; } /** * @public * @returns {string} */ getTitle() { return this.title; } /** * @public * @returns {Object} */ getVideoObj() { return this.videoObj; } /** * @public */ getHighlightOptions() { return this.highlight; } /** * @public * @returns {string} */ getDescription() { return this.description; } /** * @public * @returns {string} */ getUrl() { return this.url; } /** * @public * @returns {Boolean} */ getCompleted() { return this.isCompleted; } getVideo() { return this.video; } getHelpLink() { return this.helpLink; } /** * @public * @returns {string} */ getId() { return this.id; } /** * @public * @returns {Object} */ getInitOptions() { return this.initOptions; } /** * @public */ activate() { this.isActive = true; } /** * @public */ getShownForSlider() { return this.isShownForSlider; } /** * @public */ deactivate() { this.isActive = false; } /** * @private */ static getFullEventName(shortName) { return shortName; } } let _ = t => t, _t, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t10, _t11; class Manager extends main_core.Event.EventEmitter { constructor() { super(); this.setEventNamespace('BX.UI.Tutor.Manager'); } setOptions(options, domain, feedbackFormId) { options = options || {}; this.tutorialData = options.tutorialData || {}; this.eventService = options.eventService || {}; this.lastCheckTime = options.lastCheckTime || 0; this.domain = options.domain || ''; this.feedbackFormId = options.feedbackFormId || ''; if (main_core.Type.isString(domain) && domain.length > 0) { this.domain = domain; } if (main_core.Type.isString(feedbackFormId) && feedbackFormId.length > 0) { this.feedbackFormId = feedbackFormId; } } getDomain() { return this.domain; } getCurrentTutorialData() { return this.tutorialData; } getCurrentEventService() { return this.eventService; } getCurrentLastCheckTime() { return this.lastCheckTime; } /** * @return {Manager} */ static getInstance() { return this.instance; } /** * @return {Scenario} */ static getScenarioInstance() { return this.scenarioInstance; } static init(options, domain, feedbackFormId) { let instance = this.getInstance(); if (!(instance instanceof Manager)) { this.instance = new Manager(); instance = this.getInstance(); this.emit('onInitManager'); } else { instance = this.getInstance(); } instance.setOptions(options, domain, feedbackFormId); return instance; } static initScenario(options) { let instance = this.getScenarioInstance(); if (!(instance instanceof Scenario)) { this.scenarioInstance = new Scenario(); instance = this.getScenarioInstance(); this.emit('onInitScenario'); } else { instance = this.getScenarioInstance(); } instance.setOptions(options); return instance; } static showButton(animation) { return this.getImButton(animation); } static getRootImButton() { return document.getElementById('ui-tutor-btn-wrap'); } static hasImButton() { return !!this.getRootImButton(); } static getImButton(animation) { if (!this.layout.imButton) { let buttonWrapper = this.getRootImButton(); if (buttonWrapper) { let buttonInner = main_core.Tag.render(_t || (_t = _` <div class="ui-tutor-btn"></div> `)); if (animation) { main_core.Dom.addClass(buttonWrapper, 'ui-tutor-btn-wrap-animate'); } main_core.Dom.append(buttonInner, buttonWrapper); main_core.Dom.addClass(buttonWrapper, 'ui-tutor-btn-wrap-show'); this.layout.imButton = buttonWrapper; main_core.Event.bind(this.layout.imButton, "click", () => { this.emit('clickImButton'); }); let usersPanel = document.querySelector('.bx-im-users-wrap'); if (document.querySelector('#bx-im-btn-call')) { usersPanel.style.bottom = '175px'; } else { usersPanel.style.bottom = '120px'; } } } return this.layout.imButton; } static showSmallPopup(text) { this.smallPopupText = text; this.getSmallPopup().style.display = 'block'; this.smallPopupText = ''; if (main_core.Dom.hasClass(this.getSmallPopup(), 'ui-tutor-popup-welcome-hide')) { main_core.Dom.removeClass(this.getSmallPopup(), 'ui-tutor-popup-welcome-hide'); } } static hideSmallPopup(skipAnimation) { skipAnimation = skipAnimation === true; const removeHandler = function () { main_core.Dom.remove(this.getSmallPopup()); if (this.hasOwnProperty('smallPopup')) { delete this.smallPopup; } this.emit('onCompleteHideSmallPopup'); }.bind(this); main_core.Dom.removeClass(this.getSmallPopup(), 'ui-tutor-popup-welcome-show'); main_core.Dom.addClass(this.getSmallPopup(), 'ui-tutor-popup-welcome-hide'); if (skipAnimation) { removeHandler(); } else { setTimeout(removeHandler, 300); } } static showWelcomePopup(text) { this.emit('onShowWelcomePopup'); this.showSmallPopup(text); } static hideWelcomePopup() { this.emit('onBeforeHideWelcomePopup'); this.hideSmallPopup(); this.emit('onAfterHideWelcomePopup'); } static showNoticePopup(text) { this.emit('onShowNoticePopup'); this.showSmallPopup(text); } static hideNoticePopup() { this.emit('onBeforeHideNoticePopup'); this.hideSmallPopup(); this.emit('onAfterHideNoticePopup'); } static getSmallPopup() { const clickSmallPopupHandler = () => { this.emit('onClickSmallPopupBtn'); }; if (!this.smallPopup) { this.smallPopup = main_core.Tag.render(_t2 || (_t2 = _` <div class="ui-tutor-popup" onclick="${0}"> <div class="ui-tutor-popup-header"> <span class="ui-tutor-popup-header-icon"></span> <span class="ui-tutor-popup-header-title-wrap"> <span class="ui-tutor-popup-header-title">${0}</span> </span> </div> <div class="ui-tutor-popup-content"> <div class="ui-tutor-popup-text">${0}</div> </div> <div class="ui-tutor-popup-icon-angle"></div> </div> `), clickSmallPopupHandler.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_TITLE'), this.smallPopupText); this.emit('onCreateSmallPopupNode'); main_core.Dom.addClass(this.smallPopup, 'ui-tutor-popup-welcome-show'); this.emit('onBeforeAppendSmallPopupNode'); main_core.Dom.append(this.smallPopup, document.body); this.emit('onAfterAppendSmallPopupNode'); } return this.smallPopup; } static showStartPopup(title, text) { this.emit('onShowStartPopup'); this.startTitle = title; this.startText = text; main_core.Dom.addClass(this.getStartPopup(), 'ui-tutor-popup-show'); this.startPopup.style.display = 'flex'; this.startTitle = ''; this.startText = ''; } static closeStartPopup() { main_core.Dom.remove(this.getStartPopup()); delete this.startPopup; } static getStartPopup() { if (!this.startPopup) { this.startPopup = main_core.Tag.render(_t3 || (_t3 = _` <div class="ui-tutor-popup ui-tutor-popup-start"> <div class="ui-tutor-popup-header"> <span class="ui-tutor-popup-header-icon"></span> <span class="ui-tutor-popup-header-title-wrap"> <span class="ui-tutor-popup-header-title">${0}</span> </span> </div> <div class="ui-tutor-popup-content"> <div class="ui-tutor-popup-title">${0}</div> <div class="ui-tutor-popup-text">${0}</div> </div> <div class="ui-tutor-popup-footer"> <div class="ui-tutor-popup-btn"> ${0} ${0} </div> </div> <div class="ui-tutor-popup-icon-angle"></div> </div> `), main_core.Loc.getMessage('JS_UI_TUTOR_TITLE'), this.startTitle, this.startText, this.getBeginBtn(), this.getDeferBtn()); this.emit('onCreateStartPopupNode'); main_core.Dom.append(this.startPopup, document.body); this.emit('onAfterAppendStartPopupNode'); } return this.startPopup; } static getBeginBtn() { if (!this.beginBtn) { this.beginBtn = main_core.Tag.render(_t4 || (_t4 = _` <button class="ui-btn ui-btn-primary ui-btn-round"> ${0} </button> `), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_BEGIN')); main_core.Event.bind(this.beginBtn, "click", () => { this.emit('clickBeginBtn'); }); } return this.beginBtn; } static getDeferBtn() { if (!this.deferBtn) { this.deferBtn = main_core.Tag.render(_t5 || (_t5 = _` <button class="ui-btn ui-btn-link"> ${0} </button> `), main_core.Loc.getMessage('JS_UI_TUTOR_CLOSE_POPUP_BTN')); main_core.Event.bind(this.deferBtn, "click", () => { this.emit('clickDeferBtn'); }); } return this.deferBtn; } /** * @private */ static getFullEventName(shortName) { return shortName; } /** * @public */ static getInformer() { if (!this.informer) { this.informer = main_core.Tag.render(_t6 || (_t6 = _` <div class="ui-tutor-informer" id="ui-tutor-informer"></div> `)); let informerParentNode = this.getImButton(); if (this.isCollapsedShow) { informerParentNode = this.getCollapseBlock(); } if (informerParentNode) { main_core.Dom.append(this.informer, informerParentNode); } } return this.informer; } static setCount(num) { this.emit('onBeforeSetCount'); if (num < 1) { this.removeInformer(); delete this.informer; this.isInformerShow = false; } else { this.getInformer().textContent = num; this.isInformerShow = true; } this.emit('onAfterSetCount'); } /** * @private */ static removeInformer() { if (this.isInformerShow) { main_core.Dom.remove(this.getInformer()); } } /** * @public * @returns {HTMLElement} */ static showCollapsedBlock(step, withGuide, showAfterAnimation) { withGuide = withGuide !== false; showAfterAnimation = showAfterAnimation !== false; this.emit('onBeforeShowCollapsedBlock'); if (!this.isCollapsedShow) { this.emit('onStartShowCollapsedBlock'); if (!(step instanceof Step)) { step = new Step(step); } this.collapsedStep = step; let collapsedBlock = this.getCollapseBlock(); let showFunction = function () { collapsedBlock.style.display = 'flex'; }; if (showAfterAnimation) { setTimeout(showFunction.bind(this), 300); } else { showFunction.call(this); } this.getCollapseTitle().innerHTML = step.getTitle(); if (this.isInformerShow) { main_core.Dom.append(this.getInformer(), collapsedBlock); } this.isCollapsedShow = true; this.emit('onShowCollapsedBlock'); } if (withGuide) { this.showGuide(); } else { this.checkButtonsState(); } } static setCollapsedInvisible() { this.hideNode(this.getCollapseBlock()); } static setCollapsedVisible() { this.showNode(this.getCollapseBlock()); } static checkButtonsState() { this.emit('onCheckButtonsState'); let step = this.collapsedStep; if (!step) { return; } if (step.getCompleted()) { if (this.activeGuide) { this.hideNode(this.getRepeatBtn()); } else { this.showNode(this.getRepeatBtn()); } this.hideNode(this.getCompletedBtn()); this.hideNode(this.getStartBtn()); } else if (step.isActive) { this.showNode(this.getCompletedBtn()); if (this.activeGuide || !this.isShowRepeatWithCompleted) { this.hideNode(this.getRepeatBtn()); } else { this.showNode(this.getRepeatBtn()); } this.hideNode(this.getStartBtn()); } else { this.showNode(this.getStartBtn()); this.hideNode(this.getRepeatBtn()); this.hideNode(this.getCompletedBtn()); } } static showGuide() { this.emit('onBeforeShowGuide'); let step = this.collapsedStep; if (!this.activeGuide && step) { this.emit('onStartShowGuide'); this.activeGuide = new ui_tour.Guide({ simpleMode: true, steps: [step.getHighlightOptions()] }); this.activeGuide.subscribe(ui_tour.Guide.getFullEventName("onFinish"), this.finishGuide.bind(this)); this.activeGuide.start(); main_core.Dom.remove(this.activeGuide.getPopup().closeIcon); this.emit('showCollapseWithGuide'); this.checkButtonsState(); } } static closeGuide() { if (this.activeGuide instanceof ui_tour.Guide) { this.activeGuide.close(); this.emit('onAfterGuide'); } } /** * @public * @returns {HTMLElement} */ static getCollapseBlock() { if (!this.layout.collapseBlock) { this.layout.collapseBlock = main_core.Tag.render(_t7 || (_t7 = _` <div class="ui-tutor-popup ui-tutor-popup-collapse" onclick="${0}"> <div class="ui-tutor-popup-content"> <div class="ui-tutor-popup-step-subject">${0}</div> ${0} <div class="ui-tutor-popup-collapse-btn"> ${0} ${0} ${0} </div> </div> </div> `), this.clickCollapseBlockHandler.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_STEP_TITLE'), this.getCollapseTitle(), this.getStartBtn(), this.getRepeatBtn(), this.getCompletedBtn()); this.emit('onCreateCollapsedBlockNode'); main_core.Dom.append(this.layout.collapseBlock, document.body); this.emit('onAfterAppendCollapsedBlockNode'); } return this.layout.collapseBlock; } /** * @public * @returns {HTMLElement} */ static getStartBtn() { if (!this.startBtn) { this.startBtn = main_core.Tag.render(_t8 || (_t8 = _` <button class="ui-btn ui-btn-primary ui-btn-round ui-btn-xs"> ${0} </button> `), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_START')); main_core.Event.bind(this.startBtn, "click", event => { event.stopPropagation(); this.emit('clickStartBtn'); }); } return this.startBtn; } /** * @public * @returns {HTMLElement} */ static getRepeatBtn() { if (!this.repeatBtn) { this.repeatBtn = main_core.Tag.render(_t9 || (_t9 = _` <button class="ui-btn ui-btn-primary ui-btn-round ui-btn-xs"> ${0} </button> `), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_REPEAT')); main_core.Event.bind(this.repeatBtn, "click", event => { event.stopPropagation(); this.emit('clickRepeatBtn'); }); } return this.repeatBtn; } /** * @public * @returns {HTMLElement} */ static getCompletedBtn() { if (!this.completedBtn) { this.completedBtn = main_core.Tag.render(_t10 || (_t10 = _` <button class="ui-btn ui-btn-success ui-btn-round ui-btn-xs"> ${0} </button> `), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_COMPLETED_SHORT')); main_core.Event.bind(this.completedBtn, "click", event => { event.stopPropagation(); this.emit('clickCompletedBtn'); }); } return this.completedBtn; } /** * @public * @returns {HTMLElement} */ static getCollapseTitle() { if (!this.layout.collapseTitle) { this.layout.collapseTitle = main_core.Tag.render(_t11 || (_t11 = _` <div class="ui-tutor-popup-step-title"></div> `)); } return this.layout.collapseTitle; } /** * @public * @returns {HTMLElement} */ static closeCollapsePopup(event) { this.closeCollapseEntity(); this.emit('clickCloseCollapseBlock'); } /** * @private */ static clickCollapseBlockHandler() { this.emit('clickCollapseBlock'); } static finishGuide() { delete this.activeGuide; this.checkButtonsState(); this.emit('completeCloseGuide'); } static closeCollapseEntity() { this.emit('onBeforeHideCollapsedBlock'); this.getCollapseBlock().style.display = 'none'; this.getImButton().style.display = 'block'; if (this.activeGuide instanceof ui_tour.Guide) { this.activeGuide.close(); } if (this.isInformerShow) { main_core.Dom.append(this.getInformer(), this.getImButton()); } delete this.collapsedStep; this.isCollapsedShow = false; this.emit('onHideCollapsedBlock'); } static showLoader() { this.emit('onBeforeShowLoader'); this.startTitle = ''; this.startText = ''; this.layout.loader = new main_loader.Loader({ target: this.getStartPopup(), size: 85 }); this.layout.loader.show(); this.getStartPopup().style.display = 'flex'; main_core.Dom.addClass(this.getStartPopup(), "ui-tutor-popup-load"); this.emit('onAfterShowLoader'); } static hideLoader() { if (this.layout.loader) { this.layout.loader.destroy(); this.getStartPopup().style.display = 'none'; } } static showCollapsedLoader() { this.emit('onBeforeShowCollapsedLoader'); this.layout.collapseLoader = new main_loader.Loader({ target: this.getCollapseBlock(), size: 34 }); this.layout.collapseLoader.show(); this.getCollapseBlock().style.display = 'flex'; main_core.Dom.addClass(this.getCollapseBlock(), "ui-tutor-popup-collapse-load"); this.emit('onAfterShowCollapsedLoader'); } static hideCollapsedLoader() { this.emit('onBeforeHideCollapsedLoader'); if (this.layout.collapseLoader) { this.layout.collapseLoader.destroy(); main_core.Dom.removeClass(this.getCollapseBlock(), "ui-tutor-popup-collapse-load"); this.getCollapseBlock().style.display = 'none'; } this.emit('onAfterHideCollapsedLoader'); } static showNode(node) { node.style.display = 'block'; } static hideNode(node) { node.style.display = 'none'; } static checkFollowLink(step, scenario) { this.emit('onStartCheckFollowLink'); step = step || this.collapsedStep; if (step instanceof Step) { scenario = scenario || {}; if (!(window.location.pathname === step.getUrl())) { let beforeEvent = 'onBeforeRedirectToActionPage'; if (scenario instanceof Scenario) { main_core.Dom.addClass(scenario.getStartBtn(), 'ui-btn-wait'); scenario.fireCurrentStepEvent(beforeEvent); } else { main_core.Dom.addClass(this.getStartBtn(), 'ui-btn-wait'); this.emit(beforeEvent, { step }); } window.location = step.getUrl(); } else { if (scenario instanceof Scenario) { scenario.showCollapseBlock(step); } else { step.activate(); this.showCollapsedBlock(step); } } } this.emit('onFinishCheckFollowLink'); } static fireEvent(eventName) { this.emit(eventName); } } /** * @private */ Manager.instance = null; Manager.scenarioInstance = null; Manager.activeGuide = null; Manager.isShowRepeatWithCompleted = true; Manager.layout = { imButton: null, collapseBlock: null, collapseTitle: null }; let _$1 = t => t, _t$1, _t2$1, _t3$1, _t4$1, _t5$1, _t6$1, _t7$1, _t8$1, _t9$1, _t10$1, _t11$1, _t12, _t13, _t14, _t15, _t16, _t17, _t18, _t19, _t20, _t21, _t22, _t23, _t24, _t25, _t26, _t27, _t28, _t29; class Scenario extends main_core.Event.EventEmitter { constructor(options = {}) { super(); this.setEventNamespace('BX.UI.Tutor.Scenario'); this.stepPopup = null; this.arrowTimer = null; this.guide = null; this.loader = null; this.arrowWrap = null; this.prevArrow = null; this.nextArrow = null; this.currentStepIndex = 0; this.currentStep = null; this.isAddedSteps = false; this.hasArrows = false; this.isLoading = true; this.setOptions(options); this.btn = document.getElementById('ui-tutor-btn-wrap'); this.informer = document.getElementById('ui-tutor-informer'); this.layout = { stepBlock: null, progress: null, counter: null, counterContainer: null, title: null, description: null, collapseBlock: null, collapseTitle: null, collapseDescription: null, content: null, contentInner: null, contentBlock: null, url: null, target: null, startBtn: null, nextBtn: null, repeatBtn: null, deferBtn: null, help: null, completedBtn: null, completedBlock: null, finishedBlock: null, supportLink: null }; this.sections = ['settings', 'scenario', 'work']; this.loadYoutubeApiScript(); this.subscribe("onYouTubeReady", () => { this.setVideoItems(); }); } loadYoutubeApiScript() { const onYouTubeReadyEvent = function () { this.emit("onYouTubeReady", { scenario: this }); }.bind(this); if (!window.YT) { let isNeedCheckYT = true; const tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; const firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); let ytCheckerTimer = setInterval(function () { if (isNeedCheckYT) { if (window.YT && main_core.Type.isFunction(window.YT.Player)) { clearInterval(ytCheckerTimer); onYouTubeReadyEvent(); } } }, 200); setTimeout(function () { clearInterval(ytCheckerTimer); isNeedCheckYT = false; }, 2000); } else { setTimeout(function () { onYouTubeReadyEvent(); }.bind(this), 100); } } setOptions(options) { this.fireCurrentStepEvent('onBeforeSetOptions', false); options = main_core.Type.isPlainObject(options) ? options : {}; let currentStep = this.getCurrentStep(); /** @var {Step[]} */ this.steps = []; if (Array.isArray(options.steps)) { options.steps.forEach(step => { this.steps.push(new Step(step)); }); } if (currentStep instanceof Step) { let stepInList = this.findStepById(currentStep.getId()); if (stepInList) { currentStep = stepInList; } } else if (main_core.Type.isString(options.currentStepId) && options.currentStepId.length > 0) { let stepInList = this.findStepById(options.currentStepId); if (stepInList) { currentStep = stepInList; if (options.currentStepIsActive === true) { currentStep.activate(); } } } if (!currentStep) { let uncompletedStep = this.getFirstUncompletedStep(); if (uncompletedStep) { currentStep = uncompletedStep; } } if (!currentStep && this.steps && this.steps[0]) { currentStep = this.steps[0]; } this.setCurrentStep(currentStep); if (options) { this.isLoading = false; } this.title = options.title || ''; this.supportLink = options.supportLink || ''; this.isFinished = options.isFinished || false; this.fireCurrentStepEvent('onAfterSetOptions', false); } /** * @param {Step} step */ setCurrentStep(step) { if (step instanceof Step) { this.currentStep = step; let steps = this.steps; if (main_core.Type.isArray(steps)) { this.currentStepIndex = steps.indexOf(step); } this.fireCurrentStepEvent('onStartStep'); } } /** * @public */ start(complexAnimation) { this.emit("onStart", { scenario: this }); if (complexAnimation) // animate transition from collapsed popup to step popup { this.complexAnimation = true; } this.showPopup(this.getStepPopup()); this.toggleCompletedState(); this.toggleNavBtn(); this.setPopupData(); if (this.isAddedSteps) { this.hideFinalState(); } if (!this.hasArrows) { this.initArrows(); } this.complexAnimation = false; this.fireCurrentStepEvent('onShowComplete'); } findStepById(stepId) { for (let i = 0; i < this.steps.length; i++) { const step = this.steps[i]; if (step.getId() === stepId) { return step; } } return null; } /** * @public * @returns {HTMLElement} */ getStepPopup() { const clickOnCloseIcon = () => { this.emit("onClickOnCloseIcon", { scenario: this }); }; if (!this.stepPopup) { this.stepPopup = main_core.Tag.render(_t$1 || (_t$1 = _$1` <div class="ui-tutor-popup ui-tutor-popup-step"> <div class="ui-tutor-popup-header"> <span class="ui-tutor-popup-header-icon"></span> <span class="ui-tutor-popup-header-title"> <span class="ui-tutor-popup-header-counter"> ${0}. ${0} </span> <span class="ui-tutor-popup-header-subtitle">${0}</span> </span> ${0} </div> <div class="ui-tutor-popup-content"> ${0} </div> <div class="ui-tutor-popup-step-wrap"> <div class="ui-tutor-popup-step-inner"> <div class="ui-tutor-popup-arrow-wrap"></div> <div class="ui-tutor-popup-step-list-wrap"> ${0} </div> </div> </div> <div class="ui-tutor-popup-icon-close" onclick="${0}"></div> <div class="ui-tutor-popup-icon-angle"></div> </div> `), main_core.Loc.getMessage('JS_UI_TUTOR_TITLE'), this.getCounterContainer(), this.title, this.getDeferLink(), this.getContentBlock(), this.getStepBlock(), clickOnCloseIcon.bind(this)); this.fireCurrentStepEvent('onCreateStepPopupNode'); main_core.Dom.append(this.stepPopup, document.body); this.fireCurrentStepEvent('onAfterAppendStepPopupNode'); } return this.stepPopup; } /** * @public * @returns {HTMLElement} */ getContentBlock() { if (!this.layout.contentBlock) { this.layout.contentBlock = main_core.Tag.render(_t2$1 || (_t2$1 = _$1` <div class="ui-tutor-popup-content-block"> ${0} ${0} </div> `), this.getContentInner(), this.getFooter()); } return this.layout.contentBlock; } /** * @public * @returns {HTMLElement} */ getFooter() { if (!this.layout.footer) { this.layout.footer = main_core.Tag.render(_t3$1 || (_t3$1 = _$1` <div class="ui-tutor-popup-footer"> ${0} ${0} </div> `), this.getNavigation(), this.getBtnContainer()); if (Manager.getInstance() && Manager.getInstance().feedbackFormId) { main_core.Dom.append(this.getSupportLink(), this.layout.footer); } } return this.layout.footer; } /** * @public * @returns {HTMLElement} */ getContentInner() { if (!this.layout.contentInner) { this.layout.contentInner = main_core.Tag.render(_t4$1 || (_t4$1 = _$1` <div class="ui-tutor-popup-content-inner"> ${0} ${0} ${0} </div> `), this.getTitle(), this.getDescription(), this.getHelpBlock()); } return this.layout.contentInner; } /** * @public * @returns {HTMLElement} */ getBtnContainer() { if (!this.layout.btnContainer) { this.layout.btnContainer = main_core.Tag.render(_t5$1 || (_t5$1 = _$1` <div class="ui-tutor-popup-btn"> ${0} ${0} ${0} </div> `), this.getStartBtn(), this.getRepeatBtn(), this.getCompletedBtn()); } return this.layout.btnContainer; } /** * @public * @returns {HTMLElement} */ getNavigation() { if (!this.layout.navigation) { this.layout.navigation = main_core.Tag.render(_t6$1 || (_t6$1 = _$1` <div class="ui-tutor-popup-nav"></div> `)); this.layout.backBtn = main_core.Tag.render(_t7$1 || (_t7$1 = _$1` <span class="ui-tutor-popup-nav-item ui-tutor-popup-nav-item-prev" onclick="${0}"></span> `), this.clickOnBackBtn.bind(this)); this.layout.nextBtn = main_core.Tag.render(_t8$1 || (_t8$1 = _$1` <span class="ui-tutor-popup-nav-item ui-tutor-popup-nav-item-next" onclick="${0}"></span> `), this.clickOnNextBtn.bind(this)); main_core.Dom.append(this.layout.backBtn, this.layout.navigation); main_core.Dom.append(this.layout.nextBtn, this.layout.navigation); } return this.layout.navigation; } /** * @private * @param {HTMLElement} node */ setInformer(node) { this.setInformerCount(this.steps.length - this.getCompletedSteps()); } /** * @public * @param {Number} num */ setInformerExternal(num) { this.setInformerCount(num); } /** * @private */ setInformerCount(num) { Manager.setCount(num); } /** * @public * @param {Event} event * @param {Boolean} complexAnimation */ closeStepPopup(event, complexAnimation) { if (!this.stepPopup) { return; } if (event) { event.stopPropagation(); } this.fireCurrentStepEvent('onCloseStepPopup'); if (complexAnimation) // animate transition from collapsed popup to step popup { this.complexAnimation = true; } this.fadeAnimation(this.getStepPopup()); setTimeout(function () { this.hideNode(this.getStepPopup()); }.bind(this), 310); this.complexAnimation = false; } /** * @public * @returns {number} */ getCompletedSteps() { let total = 0; for (let i = 0; i < this.steps.length; i += 1) { if (this.steps[i].isCompleted) { total += 1; } } return total; } /** * @private */ setStepCounter() { this.getCounter().textContent = main_core.Loc.getMessage('JS_UI_TUTOR_COUNTER_NUMBER').replace('#NUMBER#', this.steps.indexOf(this.getCurrentStep()) + 1).replace('#NUMBER_TOTAL#', this.steps.length); } /** * @public * @returns {HTMLElement} */ getCounterContainer() { if (!this.layout.counterContainer) { this.layout.counterContainer = main_core.Tag.render(_t9$1 || (_t9$1 = _$1` <span class="ui-tutor-popup-header-counter-step"> ${0} </span> `), this.getCounter()); } return this.layout.counterContainer; } /** * @public * @returns {HTMLElement} */ getCounter() { if (!this.layout.counter) { this.layout.counter = main_core.Tag.render(_t10$1 || (_t10$1 = _$1` <span class="ui-tutor-popup-header-counter-number"></span> `)); } return this.layout.counter; } /** * @public * @returns {HTMLElement} */ getDeferLink() { if (!this.layout.deferLink) { this.layout.deferLink = main_core.Tag.render(_t11$1 || (_t11$1 = _$1` <span class="ui-tutor-popup-defer-link"> ${0} </span> `), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_DEFER')); const deferMenu = new BX.PopupMenuWindow({ angle: true, offsetLeft: 15, className: 'ui-tutor-popup-defer-menu', bindElement: this.layout.deferLink, items: [{ text: main_core.Loc.getMessage('JS_UI_TUTOR_DEFER_MENU_HOUR'), onclick: function () { this.emit("onDeferOneHour", { scenario: this }); deferMenu.close(); }.bind(this) }, { text: main_core.Loc.getMessage('JS_UI_TUTOR_DEFER_MENU_TOMORROW'), onclick: function () { this.emit("onDeferTomorrow", { scenario: this }); deferMenu.close(); }.bind(this) }, { text: main_core.Loc.getMessage('JS_UI_TUTOR_DEFER_MENU_WEEK'), onclick: function () { this.emit("onDeferWeek", { scenario: this }); deferMenu.close(); }.bind(this) }, { text: main_core.Loc.getMessage('JS_UI_TUTOR_DEFER_MENU_FOREVER'), onclick: function () { this.emit("onDeferForever", { scenario: this }); deferMenu.close(); }.bind(this) }] }); main_core.Event.bind(this.layout.deferLink, "click", () => { deferMenu.show(); }); } return this.layout.deferLink; } /** * @public * @returns {HTMLElement} */ getStartBtn() { if (!this.layout.startBtn) { this.layout.startBtn = main_core.Tag.render(_t12 || (_t12 = _$1` <button class="ui-btn ui-btn-primary ui-btn-round" onclick="${0}"> ${0} </button> `), this.clickStartHandler.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_START')); } return this.layout.startBtn; } /** * @public * @returns {HTMLElement} */ getCompletedBtn() { if (!this.layout.completedBtn) { this.layout.completedBtn = main_core.Tag.render(_t13 || (_t13 = _$1` <button class="ui-btn ui-btn-success ui-btn-round" onclick="${0}"> ${0} </button> `), this.showSuccessState.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_COMPLETED')); } return this.layout.completedBtn; } /** * @public * @returns {HTMLElement} */ getRepeatBtn() { if (!this.layout.repeatBtn) { this.layout.repeatBtn = main_core.Tag.render(_t14 || (_t14 = _$1` <button class="ui-btn ui-btn-primary ui-btn-round" onclick="${0}"> ${0} </button> `), this.repeatStep.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_REPEAT')); } return this.layout.repeatBtn; } /** * @public * @returns {HTMLElement} */ getDeferBtn() { if (!this.layout.deferBtn) { this.layout.deferBtn = main_core.Tag.render(_t15 || (_t15 = _$1` <button class="ui-btn ui-btn-link ui-btn-round" onclick="${0}"> ${0} </button> `), this.closeStepPopup.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_DEFER')); } return this.layout.deferBtn; } /** * @public * @returns {HTMLElement} */ getCompletedBLock() { if (!this.layout.completedBlock) { this.layout.completedBlock = main_core.Tag.render(_t16 || (_t16 = _$1` <div class="ui-tutor-popup-completed"> <div class="ui-tutor-popup-completed-icon"></div> <div class="ui-tutor-popup-completed-text">${0}</div> </div> `), main_core.Loc.getMessage('JS_UI_TUTOR_STEP_COMPLETED')); } return this.layout.completedBlock; } /** * @public * @returns {HTMLElement} */ getTitle() { if (!this.layout.title) { this.layout.title = main_core.Tag.render(_t17 || (_t17 = _$1` <div class="ui-tutor-popup-step-title"></div> `)); } return this.layout.title; } /** * @public * @returns {HTMLElement} */ getDescription() { if (!this.layout.description) { this.layout.description = main_core.Tag.render(_t18 || (_t18 = _$1` <div class="ui-tutor-popup-step-decs"></div> `)); } return this.layout.description; } /** * @public * @returns {HTMLElement} */ getSupportLink() { if (!this.layout.supportLink) { this.layout.supportLink = main_core.Tag.render(_t19 || (_t19 = _$1` <a class="ui-tutor-popup-support-link" onclick="${0}"> ${0} </a> `), this.supportLinkHandler.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_BTN_SUPPORT')); } return this.layout.supportLink; } setInvisible() { this.hideNode(this.getStepPopup()); } setVisible() { this.showNode(this.getStepPopup()); } supportLinkHandler() { this.emit('supportLinkClick'); } /** * @public * @returns {HTMLElement} */ getStepBlock() { if (!this.layout.stepBlock) { this.layout.stepBlock = main_core.Tag.render(_t20 || (_t20 = _$1` <div class="ui-tutor-popup-step-list"></div> `)); this.layout.stepItems = []; for (let i = 0; i < this.steps.length; i += 1) { const currentStepIndex = main_core.Tag.render(_t21 || (_t21 = _$1` <span class="ui-tutor-popup-step-item" data-step=${0} onclick="${0}"> <span class="ui-tutor-popup-step-item-number">${0}</span> </span> `), i, this.switchStep.bind(this), i + 1); this.layout.stepItems.push(currentStepIndex); main_core.Dom.append(currentStepIndex, this.layout.stepBlock); } this.setStepItems(); } return this.layout.stepBlock; } /** * @private */ setStepItems() { if (this.layout && this.layout.stepItems) { for (let i = 0; i < this.steps.length; i += 1) { if (this.layout.stepItems[i]) { main_core.Dom.removeClass(this.layout.stepItems[i], 'ui-tutor-popup-step-item-current'); if (i === this.currentStepIndex) { main_core.Dom.addClass(this.layout.stepItems[i], 'ui-tutor-popup-step-item-current'); } if (this.steps[i].isCompleted) { main_core.Dom.addClass(this.layout.stepItems[i], 'ui-tutor-popup-step-item-completed'); } } } } } /** * @public * @returns {HTMLElement} */ getHelpBlock() { if (!this.layout.help) { this.layout.help = main_core.Tag.render(_t22 || (_t22 = _$1` <div class="ui-tutor-popup-help"> ${0} </div> `), this.getHelpLink()); } return this.layout.help; } setVideoItems() { for (let i = 0; i < this.steps.length; i += 1) { const currentVideo = main_core.Tag.render(_t23 || (_t23 = _$1` <div class="ui-tutor-popup-video" data-step=${0}></div> `), i); main_core.Dom.prepend(currentVideo, this.getHelpBlock()); if (window.YT && main_core.Type.isObject(window.YT) && main_core.Type.isFunction(window.YT.Player) && this.steps[i].video !== null) { const playerData = { videoId: this.steps[i].video, events: { 'onReady': function (event) { event.target.mute(); event.target.pauseVideo(); event.target.setPlaybackQuality('hd720'); if (+event.target.getIframe().getAttribute('data-step') === this.currentStepIndex) { main_core.Dom.addClass(event.target.getIframe(), 'ui-tutor-popup-video-show'); event.target.playVideo(); } }.bind(this) }, playerVars: { cc_load_policy: 1, cc_lang_pref: 'ru', rel: 0 } }; this.fireCurrentStepEvent('onBeforeCreateVideo', true, { playerData }); this.steps[i].videoObj = new YT.Player(currentVideo, playerData); this.fireCurrentStepEvent('onAfterCreateVideo'); } } } pauseCurrentVideo() { let step = this.getCurrentStep(); if (window.YT && step instanceof Step) { let video = step.getVideoObj(); if (main_core.Type.isObject(video) && video.pauseVideo) { video.pauseVideo(); } } } playCurrentVideo() { let step = this.getCurrentStep(); if (window.YT && step instanceof Step) { let video = step.getVideoObj(); if (main_core.Type.isObject(video) && video.playVideo) { video.playVideo(); } } } getHelpLink() { if (!this.layout.link) { this.layout.link = main_core.Tag.render(_t24 || (_t24 = _$1` <span class="ui-tutor-popup-help-link" onclick="${0}"> <span class="ui-tutor-popup-help-link-text">${0}</span> </span> `), this.handleClickLinkHandler.bind(this), main_core.Loc.getMessage('JS_UI_TUTOR_ARTICLE_HELP_TOPIC')); } return this.layout.link; } /** * @private */ handleClickLinkHandler() { this.emit('helpLinkClick'); } /** * @public * @param {HTMLElement} node */ showPopup(node) { this.showAnimation(node); node.style.display = 'block'; } /** * @public * @param {HTMLElement} node */ showNode(node) { node.style.display = 'block'; } /** * @public * @param {HTMLElement} node */ hideNode(node) { node.style.display = 'none'; } /** * @public * @param {HTMLElement} node */ removePopup(node) { main_core.Dom.remove(node); } /** * @private */ clickOnNextBtn() { this.fireCurrentStepEvent('onBeforeClickNavNextBtn'); if (this.getCompletedSteps() === this.steps.length && !this.isFinished) { this.isAddedSteps = false; main_core.Dom.remove(this.getNewStepsSection()); main_core.Dom.removeClass(this.getFinishedBlock(), 'ui-tutor-popup-finished-new'); this.showFinalState(); return; } if (this.getCompletedSteps() === this.steps.length && this.currentStepIndex + 1 === this.steps.length) { this.currentStepIndex = -1; } main_core.Dom.removeClass(this.getStartBtn(), 'ui-btn-wait'); this.increaseCurrentIndex(); this.showStep(); this.toggleNavBtn(); this.fireCurrentStepEvent('onAfterClickNavNextBtn'); } clickOnBackBtn() { this.fireCurrentStepEvent('onBeforeClickNavBackBtn'); this.reduceCurrentIndex(); this.toggleNavBtn(); this.showStep(); this.fireCurrentStepEvent('onAfterClickNavBackBtn'); } toggleNavBtn() { main_core.Dom.removeClass(this.layout.backBtn, 'ui-tutor-popup-nav-item-disabled'); main_core.Dom.removeClass(this.layout.nextBtn, 'ui-tutor-popup-nav-item-disabled'); if (this.currentStepIndex === 0) { main_core.Dom.addClass(this.layout.backBtn, 'ui-tutor-popup-nav-item-disabled'); } if (this.currentStepIndex + 1 === this.steps.length) { main_core.Dom.addClass(this.layout.nextBtn, 'ui-tutor-popup-nav-item-disabled'); } } showStep() { // when last step is completed, but some steps are not if (this.clickOnCompletedBtn && this.currentStepIndex === this.steps.length) { let nextUncompletedStep = this.getFirstUncompletedStep(); if (nextUncompletedStep) { this.setCurrentStep(nextUncompletedStep); } } this.scrollToStep(); this.toggleCompletedState(); this.setPopupData(); this.clickOnCompletedBtn = false; this.fireCurrentStepEvent('onAfterShowStep'); } /** * @private */ switchStep() { this.fireCurrentStepEvent('onBeforeSwitchStep'); this.setCurrentStep(this.steps[+window.event.target.getAttribute('data-step')]); this.fireCurrentStepEvent('onAfterSwitchStep'); if (this.layout.finishedBlock) { this.hideFinalState(); } this.showStep(); this.toggleNavBtn(); this.fireCurrentStepEvent('onEndSwitchStep'); } /** * @private */ getFirstUncompletedStep() { for (let i = 0; i < this.steps.length; i += 1) { if (!this.steps[i].isCompleted) { return this.steps[i]; } } return null; } /** * @private */ toggleCompletedState() { const currentStep = this.getCurrentStep(); if (currentStep) { if (currentStep.getCompleted()) { this.showNode(this.getRepeatBtn()); this.hideNode(this.getStartBtn()); this.hideNode(this.getCompletedBtn()); } else if (currentStep.isActive) { this.showNode(this.getCompletedBtn()); this.hideNode(this.getStartBtn()); this.showNode(this.getRepeatBtn()); } else { this.showNode(this.getStartBtn()); this.hideNode(this.getCompletedBtn()); this.hideNode(this.getRepeatBtn()); } } } /** * @private */ setPopupData() { this.fireCurrentStepEvent('onBeforeSetPopupData'); const currentStep = this.getCurrentStep(); if (currentStep) { this.getTitle().innerHTML = currentStep.getTitle(); this.getDescription().innerHTML = currentStep.getDescription(); Manager.getCollapseTitle().innerHTML = currentStep.getTitle(); if (this.getCurrentStep().getVideo() && window.YT) { this.setCurrentVideo(); } this.setStepCounter(); this.setStepItems(); } this.fireCurrentStepEvent('onAfterSetPopupData'); } setCurrentVideo() { this.fireCurrentStepEvent('onSetCurrentVideo'); for (let i = 0; i < this.steps.length; i += 1) { let video = this.steps[i].getVideoObj(); if (window.YT && i === this.currentStepIndex && video && video.playVideo) { main_core.Dom.addClass(video.getIframe(), 'ui-tutor-popup-video-show'); video.playVideo(); } else { if (video) { main_core.Dom.removeClass(video.getIframe(), 'ui-tutor-popup-video-show'); if (video.pauseVideo) { video.pauseVideo(); } } } } } /** * @public * @returns {Step} */ getCurrentStep() { return this.currentStep; } /** * @private */ increaseCurrentIndex() { if (this.currentStepIndex === this.steps.length) { return; } this.currentStepIndex += 1; this.setCurrentStep(this.steps[this.currentStepIndex]); } /** * @private */ reduceCurrentIndex() { if (this.currentStepIndex === 0) { return; } this.currentStepIndex -= 1; this.setCurrentStep(this.steps[this.currentStepIndex]); } /** * @private */ showCollapseBlock(step, withGuide) { withGuide = withGuide !== false; this.closeStepPopup(null, true); Manager.showCollapsedBlock(step, withGuide); } /** * @private */ minimize() { this.pauseCurrentVideo(); this.fireCurrentStepEvent('onMinimize'); this.showCollapseBlock(this.getCurrentStep(), false); } repeatStep() { this.followLink(); } clickStartHandler() { this.followLink(); } /** * @private */ followLink(step) { let currentStep = this.getCurrentStep(); if (step instanceof Step) { currentStep = step; } this.pauseCurrentVideo(); this.setActiveStep(currentStep); Manager.checkFollowLink(currentStep, this); } setActiveStep(step) { this.fireCurrentStepEvent('onBeforeSetActiveStep'); if (this.currentActiveStep instanceof Step) { this.currentActiveStep.deactivate(); } step.activate(); this.currentActiveStep = step; this.fireCurrentStepEvent('onAfterSetActiveStep'); } /** * @private */ showSuccessState() { const currentStep = this.getCurrentStep(); this.clickOnCompletedBtn = true; currentStep.isCompleted = true; this.fireCurrentStepEvent('onFinishStep'); if (currentStep.getCompleted()) { main_core.Dom.addClass(this.layout.stepItems[this.currentStepIndex], 'ui-tutor-popup-step-item-completed'); } main_core.Dom.addClass(this.getContentBlock(), 'ui-tutor-popup-content-block-animate'); setTimeout(function () { main_core.Dom.replace(this.getHelpBlock(), this.getCompletedBLock()); this.getFooter().style.display = "none"; this.getDescription().style.display = "none"; this.getTitle().style.display = "none"; }.bind(this), 300); setTimeout(function () { main_core.Dom.addClass(this.getCompletedBLock(), 'ui-tutor-popup-completed-animate'); }.bind(this), 800); setTimeout(function () { main_core.Dom.replace(this.getCompletedBLock(), this.getHelpBlock()); this.getTitle().style.display = "block"; this.getDescription().style.display = "block"; this.getFooter().style.display = "flex"; this.clickOnNextBtn(); }.bind(this), 1500); setTimeout(function () { main_core.Dom.removeClass(this.getCompletedBLock(), 'ui-tutor-popup-completed-animate'); main_core.Dom.removeClass(this.getContentBlock(), 'ui-tutor-popup-content-block-animate'); let counter = this.stepPopup.querySelector(".ui-tutor-popup-header-counter-number"); counter.innerHTML = main_core.Loc.getMessage('JS_UI_TUTOR_COUNTER_NUMBER').replace('#NUMBER#', this.steps.indexOf(this.getCurrentStep()) + 1).replace('#NUMBER_TOTAL#', this.steps.length); this.fireCurrentStepEvent('onAfterShowSuccessState'); }.bind(this), 1700); } fireCurrentStepEvent(eventName, fireStepEvent, extra) { fireStepEvent = fireStepEvent !== false; const currentStep = this.getCurrentStep(); const data = { step: currentStep, scenario: this }; if (extra) { data.extra = extra; } if (currentStep && fireStepEvent) { currentStep.emit(eventName, data); } this.emit(eventName, data); } /** * @private */ showFinalState() { this.fireCurrentStepEvent('onFinalState'); if (this.layout.stepItems) { main_core.Dom.removeClass(this.layout.stepItems[this.currentStepIndex], 'ui-tutor-popup-step-item-current'); } main_core.Dom.append(this.getFinishedBlock(), this.getContentInner()); main_core.Dom.replace(this.getStartBtn(), this.getFinishedNotice()); main_core.Dom.remove(this.getCompletedBtn()); main_core.Dom.remove(this.getSupportLink()); main_core.Dom.remove(this.getNavigation()); main_core.Dom.remove(this.getHelpBlock()); main_core.Dom.remove(this.getRepeatBtn()); main_core.Dom.remove(this.getTitle()); main_core.Dom.remove(this.getDescription()); main_core.Dom.remove(this.getDeferLink()); this.isFinished = true; this.fireCurrentStepEvent('onAfterFinalState'); } /** * @private */ hideFinalState() { this.fireCurrentStepEvent('onBeforeHideFinalState'); if (this.getCurrentStep().getCompleted()) { main_core.Dom.replace(this.getFinishedNotice(), this.getRepeatBtn()); } else { main_core.Dom.replace(this.getFinishedNotice(), this.getStartBtn()); } main_core.Dom.replace(this.getFinishedBlock(), this.getHelpBlock()); if (Manager.getInstance().feedbackFormId) { main_core.Dom.append(this.getSupportLink(), this.getFooter()); } main_core.Dom.prepend(this.getNavigation(), this.getFooter()); main_core.Dom.prepend(this.getDescription(), this.getContentInner()); main_core.Dom.prepend(this.getTitle(), this.getContentInner()); if (this.layout.deferBtn) { main_core.Dom.remove(this.getDeferBtn()); main_core.Dom.prepend(this.getStartBtn(), this.getBtnContainer()); } const header = this.getStepPopup().querySelector('.ui-tutor-popup-header'); main_core.Dom.append(this.getDeferLink(), header); this.fireCurrentStepEvent('onAfterHideFinalState'); } /** * @public * @returns {HTMLElement} */ getFinishedBlock() { if (!this.layout.finishedBlock) { this.layout.finishedBlock = main_core.Tag.render(_t25 || (_t25 = _$1` <div class="ui-tutor-popup-finished"> <div class="ui-tutor-popup-finished-title">${0}</div> <div class="ui-tutor-popup-finished-icon"></div> <div class="ui-tutor-popup-finished-text">${0}</div> </div> `), main_core.Loc.getMessage('JS_UI_TUTOR_FINAL_CONGRATULATIONS'), main_core.Loc.getMessage('JS_UI_TUTOR_FINAL_TEXT')); } return this.layout.finishedBlock; } /** * @public * @returns {HTMLElement} */ getFinishedNotice() { if (!this.layout.finishedNotice) { this.layout.finishedNotice = main_core.Tag.render(_t26 || (_t26 = _$1` <div class="ui-tutor-popup-finished-notice">${0}</div> `), main_core.Loc.getMessage('JS_UI_TUTOR_FINAL_NOTICE')); } return this.layout.finishedNotice; } /** * @public * @returns {HTMLElement} */ getNewStepsSection() { if (!this.layout.newStepsSection) { this.layout.newStepsSection = main_core.Tag.render(_t27 || (_t27 = _$1` <div class="ui-tutor-popup-new-text">${0}</div> `), main_core.Loc.getMessage('JS_UI_TUTOR_STEP_NEW')); } return this.layout.newStepsSection; } /** * @public */ showNewSteps() { main_core.Dom.addClass(this.getFinishedBlock(), 'ui-tutor-popup-finished-new'); this.showPopup(this.getStepPopup()); this.showFinalState(); main_core.Dom.append(this.getNewStepsSection(), this.getFinishedBlock()); main_core.Dom.replace(this.getFinishedNotice(), Manager.getBeginBtn()); main_core.Dom.append(this.getDeferBtn(), this.getBtnContainer()); this.setStepCounter(); this.initArrows(); this.scrollToStep(); this.isAddedSteps = true; this.isFinished = false; } /** * @private */ initArrows() { this.stepListWrap = document.querySelector('.ui-tutor-popup-step-list-wrap'); this.arrowWrap = document.querySelector('.ui-tutor-popup-arrow-wrap'); if (this.stepListWrap && this.stepListWrap.scrollWidth > this.stepListWrap.offsetWidth) { main_core.Dom.append(this.getPrevArrow(), this.arrowWrap); main_core.Dom.append(this.getNextArrow(), this.arrowWrap); this.stepListWrap.addEventListener('scroll', this.toggleArrows.bind(this)); this.prevArrow.addEventListener('mouseenter', this.scrollToLeft.bind(this)); this.prevArrow.addEventListener('mouseleave', this.stopAutoScroll.bind(this)); this.nextArrow.addEventListener('mouseenter', this.scrollToRight.bind(this)); this.nextArrow.addEventListener('mouseleave', this.stopAutoScroll.bind(this)); this.toggleNextArrow(); this.getStepBlock().classList.add("ui-tutor-popup-step-list-wide"); this.hasArrows = true; } } getPrevArrow() { if (!this.prevArrow) { this.prevArrow = main_core.Tag.render(_t28 || (_t28 = _$1` <div class="ui-tutor-popup-arrow ui-tutor-popup-arrow-prev"></div> `)); } return this.prevArrow; } getNextArrow() { if (!this.nextArrow) { this.nextArrow = main_core.Tag.render(_t29 || (_t29 = _$1` <div class="ui-tutor-popup-arrow ui-tutor-popup-arrow-next"></div> `)); } return this.nextArrow; } /** * @private */ scrollToLeft() { this.arrowTimer = setInterval(function () { this.stepListWrap.scrollLeft -= 5; }.bind(this), 20); } /** * @private */ scrollToRight() { this.arrowTimer = setInterval(function () { this.stepListWrap.scrollLeft += 5; }.bind(this), 20); } /** * @private */ stopAutoScroll() { clearInterval(this.arrowTimer); } /** * @private */ toggleArrows() { this.togglePrevArrow(); this.toggleNextArrow(); } /** * @private */ toggleNextArrow() { if (this.stepListWrap.scrollWidth > this.stepListWrap.offsetWidth && this.stepListWrap.offsetWidth + this.stepListWrap.scrollLeft < this.stepListWrap.scrollWidth) { main_core.Dom.addClass(this.nextArrow, 'ui-tutor-popup-arrow-show'); } else { main_core.Dom.removeClass(this.nextArrow, 'ui-tutor-popup-arrow-show'); } } /** * @private */ togglePrevArrow() { if (this.stepListWrap.scrollLeft > 0) { main_core.Dom.addClass(this.prevArrow, 'ui-tutor-popup-arrow-show'); } else { main_core.Dom.removeClass(this.prevArrow, 'ui-tutor-popup-arrow-show'); } } /** * @private */ showAnimation(popup) { main_core.Dom.removeClass(popup, 'ui-tutor-popup-hide-complex'); main_core.Dom.removeClass(popup, 'ui-tutor-popup-hide'); if (this.complexAnimation) { main_core.Dom.addClass(popup, 'ui-tutor-popup-show-complex'); } else { main_core.Dom.addClass(popup, 'ui-tutor-popup-show'); } } /** * @private */ fadeAnimation(popup) { main_core.Dom.removeClass(popup, 'ui-tutor-popup-show-complex'); main_core.Dom.removeClass(popup, 'ui-tutor-popup-show'); if (this.complexAnimation) { main_core.Dom.addClass(popup, 'ui-tutor-popup-hide-complex'); } else { main_core.Dom.addClass(popup, 'ui-tutor-popup-hide'); } } /** * @private */ scrollToStep() { let posList = null; let posStep = null; if (this.stepListWrap) { posList = main_core.Dom.getPosition(this.stepListWrap); posStep = main_core.Dom.getPosition(this.stepListWrap.querySelector('[data-step="' + this.currentStepIndex + '"]')); } const offset = 7; // padding 2px and margin 5px if (!main_core.Type.isNull(posStep) && posStep.left + posStep.width > posList.left + posList.width) { this.stepListWrap.scrollLeft += posStep.left - (posList.left + posList.width) + posStep.width + offset; } if (!main_core.Type.isNull(posStep) && posStep.left < posList.left) { this.stepListWrap.scrollLeft -= posList.left - posStep.left + offset; } } /** * @private */ static getFullEventName(shortName) { return shortName; } static getInstance() { return Manager.getScenarioInstance(); } static init(options) { return Manager.initScenario(options); } } exports.Scenario = Scenario; exports.Manager = Manager; exports.Step = Step; }((this.BX.UI.Tutor = this.BX.UI.Tutor || {}),BX,BX.UI.Tour,BX)); //# sourceMappingURL=tutor.bundle.js.map