function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (“value” in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }

/*!

* Mekari UI alert.js (https://bitbucket.org/mekariuitoolkit/mekari-ui-toolkit#readme)
* Copyright 2011-2021 Mekari
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/

(function (global, factory) {

typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) : (global = global || self, global.Alert = factory(global.jQuery, global.Util));

})(this, function ($, Util) {

'use strict';

$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.5.2): alert.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * --------------------------------------------------------------------------
 */

/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

var NAME = 'alert';
var VERSION = '4.5.2';
var DATA_KEY = 'bs.alert';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var SELECTOR_DISMISS = '[data-dismiss="alert"]';
var EVENT_CLOSE = "close" + EVENT_KEY;
var EVENT_CLOSED = "closed" + EVENT_KEY;
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
var CLASS_NAME_ALERT = 'alert';
var CLASS_NAME_FADE = 'fade';
var CLASS_NAME_SHOW = 'show';
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */

var Alert =
/*#__PURE__*/
function () {
  function Alert(element) {
    this._element = element;
  } // Getters

  var _proto = Alert.prototype;

  // Public
  _proto.close = function close(element) {
    var rootElement = this._element;

    if (element) {
      rootElement = this._getRootElement(element);
    }

    var customEvent = this._triggerCloseEvent(rootElement);

    if (customEvent.isDefaultPrevented()) {
      return;
    }

    this._removeElement(rootElement);
  };

  _proto.dispose = function dispose() {
    $.removeData(this._element, DATA_KEY);
    this._element = null;
  } // Private
  ;

  _proto._getRootElement = function _getRootElement(element) {
    var selector = Util.getSelectorFromElement(element);
    var parent = false;

    if (selector) {
      parent = document.querySelector(selector);
    }

    if (!parent) {
      parent = $(element).closest("." + CLASS_NAME_ALERT)[0];
    }

    return parent;
  };

  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
    var closeEvent = $.Event(EVENT_CLOSE);
    $(element).trigger(closeEvent);
    return closeEvent;
  };

  _proto._removeElement = function _removeElement(element) {
    var _this = this;

    $(element).removeClass(CLASS_NAME_SHOW);

    if (!$(element).hasClass(CLASS_NAME_FADE)) {
      this._destroyElement(element);

      return;
    }

    var transitionDuration = Util.getTransitionDurationFromElement(element);
    $(element).one(Util.TRANSITION_END, function (event) {
      return _this._destroyElement(element, event);
    }).emulateTransitionEnd(transitionDuration);
  };

  _proto._destroyElement = function _destroyElement(element) {
    $(element).detach().trigger(EVENT_CLOSED).remove();
  } // Static
  ;

  Alert._jQueryInterface = function _jQueryInterface(config) {
    return this.each(function () {
      var $element = $(this);
      var data = $element.data(DATA_KEY);

      if (!data) {
        data = new Alert(this);
        $element.data(DATA_KEY, data);
      }

      if (config === 'close') {
        data[config](this);
      }
    });
  };

  Alert._handleDismiss = function _handleDismiss(alertInstance) {
    return function (event) {
      if (event) {
        event.preventDefault();
      }

      alertInstance.close(this);
    };
  };

  _createClass(Alert, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION;
    }
  }]);

  return Alert;
}();
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */

$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 */

$.fn[NAME] = Alert._jQueryInterface;
$.fn[NAME].Constructor = Alert;

$.fn[NAME].noConflict = function () {
  $.fn[NAME] = JQUERY_NO_CONFLICT;
  return Alert._jQueryInterface;
};

return Alert;

});

//# sourceMappingURL=mekari-ui-alert.js.map