code: function show() {
      var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
      var element = this.element,
          options = this.options;
  
  
      if (options.inline || this.showing || this.isShown || this.showing) {
        return this;
      }
  
      if (!this.ready) {
        this.build();
  
        if (this.ready) {
          this.show(immediate);
        }
  
        return this;
      }
  
      if (isFunction(options.show)) {
        addListener(element, EVENT_SHOW, options.show, {
          once: true
        });
      }
  
      if (dispatchEvent(element, EVENT_SHOW) === false || !this.ready) {
        return this;
      }
  
      if (this.hiding) {
        this.transitioning.abort();
      }
  
      this.showing = true;
      this.open();
  
      var viewer = this.viewer;
  
  
      removeClass(viewer, CLASS_HIDE);
  
      if (options.transition && !immediate) {
        var shown = this.shown.bind(this);
  
        this.transitioning = {
          abort: function abort() {
            removeListener(viewer, EVENT_TRANSITION_END, shown);
            removeClass(viewer, CLASS_IN);
          }
        };
  
        addClass(viewer, CLASS_TRANSITION);
  
        // Force reflow to enable CSS3 transition
        // eslint-disable-next-line
        viewer.offsetWidth;
        addListener(viewer, EVENT_TRANSITION_END, shown, {
          once: true
        });
        addClass(viewer, CLASS_IN);
      } else {
        addClass(viewer, CLASS_IN);
        this.shown();
      }
  
      return this;
    }
docs: Show the viewer (only available in modal mode)
  @param {boolean} [immediate=false] - Indicates if show the viewer immediately or not.
  @returns {Viewer} this