text: /*!
    * CoreUI alert.js v4.0.3 (https://coreui.io)
    * Copyright 2021 The CoreUI Team (https://github.com/orgs/coreui/people)
    * Licensed under MIT (https://coreui.io)
    */
  (function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
    typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.EventHandler, global.Base));
  }(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict';
  
    function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
  
    var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
    var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
  
    const getSelector = element => {
      let selector = element.getAttribute('data-coreui-target');
  
      if (!selector || selector === '#') {
        let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
        // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
        // `document.querySelector` will rightfully complain it is invalid.
        // See https://github.com/twbs/bootstrap/issues/32273
  
        if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
          return null;
        } // Just in case some CMS puts out a full URL with the anchor appended
  
  
        if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
          hrefAttr = `#${hrefAttr.split('#')[1]}`;
        }
  
        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
      }
  
      return selector;
    };
  
    const getElementFromSelector = element => {
      const selector = getSelector(element);
      return selector ? document.querySelector(selector) : null;
    };
  
    const getjQuery = () => {
      const {
        jQuery
      } = window;
  
      if (jQuery && !document.body.hasAttribute('data-coreui-no-jquery')) {
        return jQuery;
      }
  
      return null;
    };
  
    const DOMContentLoadedCallbacks = [];
  
    const onDOMContentLoaded = callback => {
      if (document.readyState === 'loading') {
        // add listener on the first call when the document is in loading state
        if (!DOMContentLoadedCallbacks.length) {
          document.addEventListener('DOMContentLoaded', () => {
            DOMContentLoadedCallbacks.forEach(callback => callback());
          });
        }
  
        DOMContentLoadedCallbacks.push(callback);
      } else {
        callback();
      }
    };
  
    const defineJQueryPlugin = plugin => {
      onDOMContentLoaded(() => {
        const $ = getjQuery();
        /* istanbul ignore if */
  
        if ($) {
          const name = plugin.NAME;
          const JQUERY_NO_CONFLICT = $.fn[name];
          $.fn[name] = plugin.jQueryInterface;
          $.fn[name].Constructor = plugin;
  
          $.fn[name].noConflict = () => {
            $.fn[name] = JQUERY_NO_CONFLICT;
            return plugin.jQueryInterface;
          };
        }
      });
    };
  
    /**
     * --------------------------------------------------------------------------
     * CoreUI (v4.0.3): alert.js
     * Licensed under MIT (https://coreui.io/license)
     *
     * This component is a modified version of the Bootstrap's alert.js
     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
     * --------------------------------------------------------------------------
     */
    /**
     * ------------------------------------------------------------------------
     * Constants
     * ------------------------------------------------------------------------
     */
  
    const NAME = 'alert';
    const DATA_KEY = 'coreui.alert';
    const EVENT_KEY = `.${DATA_KEY}`;
    const DATA_API_KEY = '.data-api';
    const SELECTOR_DISMISS = '[data-coreui-dismiss="alert"]';
    const EVENT_CLOSE = `close${EVENT_KEY}`;
    const EVENT_CLOSED = `closed${EVENT_KEY}`;
    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
    const CLASS_NAME_ALERT = 'alert';
    const CLASS_NAME_FADE = 'fade';
    const CLASS_NAME_SHOW = 'show';
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
  
    class Alert extends BaseComponent__default['default'] {
      // Getters
      static get NAME() {
        return NAME;
      } // Public
  
  
      close(element) {
        const rootElement = element ? this._getRootElement(element) : this._element;
  
        const customEvent = this._triggerCloseEvent(rootElement);
  
        if (customEvent === null || customEvent.defaultPrevented) {
          return;
        }
  
        this._removeElement(rootElement);
      } // Private
  
  
      _getRootElement(element) {
        return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
      }
  
      _triggerCloseEvent(element) {
        return EventHandler__default['default'].trigger(element, EVENT_CLOSE);
      }
  
      _removeElement(element) {
        element.classList.remove(CLASS_NAME_SHOW);
        const isAnimated = element.classList.contains(CLASS_NAME_FADE);
  
        this._queueCallback(() => this._destroyElement(element), element, isAnimated);
      }
  
      _destroyElement(element) {
        element.remove();
        EventHandler__default['default'].trigger(element, EVENT_CLOSED);
      } // Static
  
  
      static jQueryInterface(config) {
        return this.each(function () {
          const data = Alert.getOrCreateInstance(this);
  
          if (config === 'close') {
            data[config](this);
          }
        });
      }
  
      static handleDismiss(alertInstance) {
        return function (event) {
          if (event) {
            event.preventDefault();
          }
  
          alertInstance.close(this);
        };
      }
  
    }
    /**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */
  
  
    EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
    /**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     * add .Alert to jQuery only if jQuery is present
     */
  
    defineJQueryPlugin(Alert);
  
    return Alert;
  
  })));
  //# sourceMappingURL=alert.js.map
  