| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- /* global $ */
 - import UIEvents from '../../../service/UI/UIEvents';
 - 
 - /**
 -  * Handles open and close of the extended toolbar side panel
 -  * (chat, settings, etc.).
 -  *
 -  * @type {{init, toggle, isVisible, hide, show, resize}}
 -  */
 - const SideContainerToggler = {
 -     /**
 -      * Initialises this toggler by registering the listeners.
 -      *
 -      * @param eventEmitter
 -      */
 -     init(eventEmitter) {
 -         this.eventEmitter = eventEmitter;
 - 
 -         // We may not have a side toolbar container, for example, in
 -         // filmstrip-only mode.
 -         const sideToolbarContainer
 -             = document.getElementById('sideToolbarContainer');
 - 
 -         if (!sideToolbarContainer) {
 -             return;
 -         }
 - 
 -         // Adds a listener for the animationend event that would take care of
 -         // hiding all internal containers when the extendedToolbarPanel is
 -         // closed.
 -         sideToolbarContainer.addEventListener(
 -             'animationend',
 -             e => {
 -                 if (e.animationName === 'slideOutExt') {
 -                     $('#sideToolbarContainer').children()
 -                     .each(function() {
 -                         /* eslint-disable no-invalid-this */
 -                         if ($(this).hasClass('show')) {
 -                             SideContainerToggler.hideInnerContainer($(this));
 -                         }
 -                         /* eslint-enable no-invalid-this */
 -                     });
 -                 }
 -             },
 -             false);
 -     },
 - 
 -     /**
 -      * Toggles the container with the given element id.
 -      *
 -      * @param {String} elementId the identifier of the container element to
 -      * toggle
 -      */
 -     toggle(elementId) {
 -         const elementSelector = $(`#${elementId}`);
 -         const isSelectorVisible = elementSelector.hasClass('show');
 - 
 -         if (isSelectorVisible) {
 -             this.hide();
 -         } else {
 -             if (this.isVisible()) {
 -                 $('#sideToolbarContainer').children()
 -                 .each(function() {
 -                     /* eslint-disable no-invalid-this */
 -                     if ($(this).id !== elementId && $(this).hasClass('show')) {
 -                         SideContainerToggler.hideInnerContainer($(this));
 -                     }
 -                     /* eslint-enable no-invalid-this */
 -                 });
 -             }
 - 
 -             if (!this.isVisible()) {
 -                 this.show();
 -             }
 - 
 -             this.showInnerContainer(elementSelector);
 -         }
 -     },
 - 
 -     /**
 -      * Returns {true} if the side toolbar panel is currently visible,
 -      * otherwise returns {false}.
 -      */
 -     isVisible() {
 -         return $('#sideToolbarContainer').hasClass('slideInExt');
 -     },
 - 
 -     /**
 -      * Returns {true} if the side toolbar panel is currently hovered and
 -      * {false} otherwise.
 -      */
 -     isHovered() {
 -         return $('#sideToolbarContainer:hover').length > 0;
 -     },
 - 
 -     /**
 -      * Hides the side toolbar panel with a slide out animation.
 -      */
 -     hide() {
 -         $('#sideToolbarContainer')
 -             .removeClass('slideInExt')
 - .addClass('slideOutExt');
 -     },
 - 
 -     /**
 -      * Shows the side toolbar panel with a slide in animation.
 -      */
 -     show() {
 -         if (!this.isVisible()) {
 -             $('#sideToolbarContainer')
 -                 .removeClass('slideOutExt')
 - .addClass('slideInExt');
 -         }
 -     },
 - 
 -     /**
 -      * Hides the inner container given by the selector.
 -      *
 -      * @param {Object} containerSelector the jquery selector for the
 -      * element to hide
 -      */
 -     hideInnerContainer(containerSelector) {
 -         containerSelector.removeClass('show').addClass('hide');
 - 
 -         this.eventEmitter.emit(UIEvents.SIDE_TOOLBAR_CONTAINER_TOGGLED,
 -             containerSelector.attr('id'), false);
 -     },
 - 
 -     /**
 -      * Shows the inner container given by the selector.
 -      *
 -      * @param {Object} containerSelector the jquery selector for the
 -      * element to show
 -      */
 -     showInnerContainer(containerSelector) {
 - 
 -         // Before showing the container, make sure there is no other visible.
 -         // If we quickly show a container, while another one is animating
 -         // and animation never ends, so we do not really hide the first one and
 -         // we end up with to shown panels
 -         $('#sideToolbarContainer').children()
 -         .each(function() {
 -             /* eslint-disable no-invalid-this */
 -             if ($(this).hasClass('show')) {
 -                 SideContainerToggler.hideInnerContainer($(this));
 -             }
 -             /* eslint-enable no-invalid-this */
 -         });
 - 
 -         containerSelector.removeClass('hide').addClass('show');
 - 
 -         this.eventEmitter.emit(UIEvents.SIDE_TOOLBAR_CONTAINER_TOGGLED,
 -             containerSelector.attr('id'), true);
 -     },
 - 
 -     /**
 -      * TO FIX: do we need to resize the chat?
 -      */
 -     resize() {
 -         // let [width, height] = UIUtil.getSidePanelSize();
 -         // Chat.resizeChat(width, height);
 -     }
 - };
 - 
 - export default SideContainerToggler;
 
 
  |