<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">"use strict";

(function($, window, i) {
  // Bootstrap 4 Modal
  $.fn.fireModal = function(options) {
    var options = $.extend({
      size: 'modal-md',
      center: false,
      animation: true,
      title: 'Modal Title',
      closeButton: true,
      header: true,
      bodyClass: '',
      footerClass: '',
      body: '',
      buttons: [],
      autoFocus: true,
      removeOnDismiss: false,
      created: function() {},
      appended: function() {},
      onFormSubmit: function() {},
      modal: {}
    }, options);

    this.each(function() {
      i++;
      var id = 'fire-modal-' + i,
        trigger_class = 'trigger--' + id,
        trigger_button = $('.' + trigger_class);

      $(this).addClass(trigger_class);

      // Get modal body
      let body = options.body;

      if(typeof body == 'object') {
        if(body.length) {
          let part = body;
          body = body.removeAttr('id').clone().removeClass('modal-part');
          part.remove();
        }else{
          body = '&lt;div class="text-danger"&gt;Modal part element not found!&lt;/div&gt;';
        }
      }

      // Modal base template
      var modal_template = '   &lt;div class="modal'+ (options.animation == true ? ' fade' : '') +'" tabindex="-1" role="dialog" id="'+ id +'"&gt;  '  +
                 '     &lt;div class="modal-dialog '+options.size+(options.center ? ' modal-dialog-centered' : '')+'" role="document"&gt;  '  +
                 '       &lt;div class="modal-content"&gt;  '  +
                 ((options.header == true) ?
                 '         &lt;div class="modal-header"&gt;  '  +
                 '           &lt;h5 class="modal-title"&gt;'+ options.title +'&lt;/h5&gt;  '  +
                 ((options.closeButton == true) ?
                 '           &lt;button type="button" class="close" data-dismiss="modal" aria-label="Close"&gt;  '  +
                 '             &lt;span aria-hidden="true"&gt;&amp;times;&lt;/span&gt;  '  +
                 '           &lt;/button&gt;  '
                 : '') +
                 '         &lt;/div&gt;  '
                 : '') +
                 '         &lt;div class="modal-body"&gt;  '  +
                 '         &lt;/div&gt;  '  +
                 (options.buttons.length &gt; 0 ?
                 '         &lt;div class="modal-footer"&gt;  '  +
                 '         &lt;/div&gt;  '
                 : '')+
                 '       &lt;/div&gt;  '  +
                 '     &lt;/div&gt;  '  +
                 '  &lt;/div&gt;  ' ;

      // Convert modal to object
      var modal_template = $(modal_template);

      // Start creating buttons from 'buttons' option
      var this_button;
      options.buttons.forEach(function(item) {
        // get option 'id'
        let id = "id" in item ? item.id : '';

        // Button template
        this_button = '&lt;button type="'+ ("submit" in item &amp;&amp; item.submit == true ? 'submit' : 'button') +'" class="'+ item.class +'" id="'+ id +'"&gt;'+ item.text +'&lt;/button&gt;';

        // add click event to the button
        this_button = $(this_button).off('click').on("click", function() {
          // execute function from 'handler' option
          item.handler.call(this, modal_template);
        });
        // append generated buttons to the modal footer
        $(modal_template).find('.modal-footer').append(this_button);
      });

      // append a given body to the modal
      $(modal_template).find('.modal-body').append(body);

      // add additional body class
      if(options.bodyClass) $(modal_template).find('.modal-body').addClass(options.bodyClass);

      // add footer body class
      if(options.footerClass) $(modal_template).find('.modal-footer').addClass(options.footerClass);

      // execute 'created' callback
      options.created.call(this, modal_template, options);

      // modal form and submit form button
      let modal_form = $(modal_template).find('.modal-body form'),
        form_submit_btn = modal_template.find('button[type=submit]');

      // append generated modal to the body
      $("body").append(modal_template);

      // execute 'appended' callback
      options.appended.call(this, $('#' + id), modal_form, options);

      // if modal contains form elements
      if(modal_form.length) {
        // if `autoFocus` option is true
        if(options.autoFocus) {
          // when modal is shown
          $(modal_template).on('shown.bs.modal', function() {
            // if type of `autoFocus` option is `boolean`
            if(typeof options.autoFocus == 'boolean')
              modal_form.find('input:eq(0)').focus(); // the first input element will be focused
            // if type of `autoFocus` option is `string` and `autoFocus` option is an HTML element
            else if(typeof options.autoFocus == 'string' &amp;&amp; modal_form.find(options.autoFocus).length)
              modal_form.find(options.autoFocus).focus(); // find elements and focus on that
          });
        }

        // form object
        let form_object = {
          startProgress: function() {
            modal_template.addClass('modal-progress');
          },
          stopProgress: function() {
            modal_template.removeClass('modal-progress');
          }
        };

        // if form is not contains button element
        if(!modal_form.find('button').length) $(modal_form).append('&lt;button class="d-none" id="'+ id +'-submit"&gt;&lt;/button&gt;');

        // add click event
        form_submit_btn.on('click', function () {
          modal_form.submit();
        });

        // add submit event
          modal_form.on('submit', function (e) {
          // start form progress
          form_object.startProgress();

          // execute `onFormSubmit` callback
          options.onFormSubmit.call(this, modal_template, e, form_object);
        });
      }

      $(document).on("click", '.' + trigger_class, function() {
        let modal = $('#' + id).modal(options.modal);

        if(options.removeOnDismiss) {
          modal.on('hidden.bs.modal', function() {
            modal.remove();
          });
        }

        return false;
      });
    });
  }

  // Bootstrap Modal Destroyer
  $.destroyModal = function(modal) {
    modal.modal('hide');
    modal.on('hidden.bs.modal', function() {
    });
  }

  // Card Progress Controller
  $.cardProgress = function(card, options) {
    var options = $.extend({
      dismiss: false,
      dismissText: 'Cancel',
      spinner: true,
      onDismiss: function() {}
    }, options);

    var me = $(card);

    me.addClass('card-progress');
    if(options.spinner == false) {
      me.addClass('remove-spinner');
    }

    if(options.dismiss == true) {
      var btn_dismiss = '&lt;a class="btn btn-danger card-progress-dismiss"&gt;'+options.dismissText+'&lt;/a&gt;';
      btn_dismiss = $(btn_dismiss).off('click').on('click', function() {
        me.removeClass('card-progress');
        me.find('.card-progress-dismiss').remove();
        options.onDismiss.call(this, me);
      });
      me.append(btn_dismiss);
    }

    return {
      dismiss: function(dismissed) {
        $.cardProgressDismiss(me, dismissed);
      }
    };
  }

  $.cardProgressDismiss = function(card, dismissed) {
    var me = $(card);
    me.removeClass('card-progress');
    me.find('.card-progress-dismiss').remove();
    if(dismissed)
      dismissed.call(this, me);
  }

  $.chatCtrl = function(element, chat) {
    var chat = $.extend({
      position: 'chat-right',
      text: '',
      time: moment(new Date().toISOString()).format('hh:mm'),
      picture: '',
      type: 'text', // or typing
      timeout: 0,
      onShow: function() {}
    }, chat);

    var target = $(element),
        element = '&lt;div class="display-none chat-item '+chat.position+'"&gt;' +
                  '&lt;img src="'+chat.picture+'"&gt;' +
                  '&lt;div class="chat-details"&gt;' +
                  '&lt;div class="chat-text"&gt;'+chat.text+'&lt;/div&gt;' +
                  '&lt;div class="chat-time"&gt;'+chat.time+'&lt;/div&gt;' +
                  '&lt;/div&gt;' +
                  '&lt;/div&gt;',
        typing_element = '&lt;div class="display-none chat-item chat-left chat-typing"&gt;' +
                  '&lt;img src="'+chat.picture+'"&gt;' +
                  '&lt;div class="chat-details"&gt;' +
                  '&lt;div class="chat-text"&gt;&lt;/div&gt;' +
                  '&lt;/div&gt;' +
                  '&lt;/div&gt;';

      var append_element = element;
      if(chat.type == 'typing') {
        append_element = typing_element;
      }

      if(chat.timeout &gt; 0) {
        setTimeout(function() {
          target.find('.chat-content').append($(append_element).fadeIn());
        }, chat.timeout);
      }else{
        target.find('.chat-content').append($(append_element).fadeIn());
      }

      var target_height = 0;
      target.find('.chat-content .chat-item').each(function() {
        target_height += $(this).outerHeight();
      });
      setTimeout(function() {
        target.find('.chat-content').scrollTop(target_height, -1);
      }, 100);
      chat.onShow.call(this, append_element);
  }
})(jQuery, this, 0);

</pre></body></html>