Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 1... Línea -...
1
{"version":3,"file":"tooltip.min.js","sources":["../../src/bootstrap/tooltip.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'core/popper'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.2'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n                    '<div class=\"arrow\"></div>' +\n                    '<div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: 0,\n  container: false,\n  fallbackPlacement: 'flip',\n  boundary: 'scrollParent',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  whiteList: DefaultWhitelist,\n  popperConfig: null\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(number|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacement: '(string|array)',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  whiteList: 'object',\n  popperConfig: '(null|object)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this.element = element\n    this.config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const dataKey = this.constructor.DATA_KEY\n      let context = $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    $.removeData(this.element, this.constructor.DATA_KEY)\n\n    $(this.element).off(this.constructor.EVENT_KEY)\n    $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      $(this.tip).remove()\n    }\n\n    this._isEnabled = null\n    this._timeout = null\n    this._hoverState = null\n    this._activeTrigger = null\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._popper = null\n    this.element = null\n    this.config = null\n    this.tip = null\n  }\n\n  show() {\n    if ($(this.element).css('display') === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    const showEvent = $.Event(this.constructor.Event.SHOW)\n    if (this.isWithContent() && this._isEnabled) {\n      $(this.element).trigger(showEvent)\n\n      const shadowRoot = Util.findShadowRoot(this.element)\n      const isInTheDom = $.contains(\n        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n        this.element\n      )\n\n      if (showEvent.isDefaultPrevented() || !isInTheDom) {\n        return\n      }\n\n      const tip = this.getTipElement()\n      const tipId = Util.getUID(this.constructor.NAME)\n\n      tip.setAttribute('id', tipId)\n      this.element.setAttribute('aria-describedby', tipId)\n\n      this.setContent()\n\n      if (this.config.animation) {\n        $(tip).addClass(CLASS_NAME_FADE)\n      }\n\n      const placement = typeof this.config.placement === 'function' ?\n        this.config.placement.call(this, tip, this.element) :\n        this.config.placement\n\n      const attachment = this._getAttachment(placement)\n      this.addAttachmentClass(attachment)\n\n      const container = this._getContainer()\n      $(tip).data(this.constructor.DATA_KEY, this)\n\n      if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n        $(tip).appendTo(container)\n      }\n\n      $(this.element).trigger(this.constructor.Event.INSERTED)\n\n      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n      $(tip).addClass(CLASS_NAME_SHOW)\n      $(tip).addClass(this.config.customClass)\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      const complete = () => {\n        if (this.config.animation) {\n          this._fixTransition()\n        }\n\n        const prevHoverState = this._hoverState\n        this._hoverState = null\n\n        $(this.element).trigger(this.constructor.Event.SHOWN)\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this)\n        }\n      }\n\n      if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n        $(this.tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n  }\n\n  hide(callback) {\n    const tip = this.getTipElement()\n    const hideEvent = $.Event(this.constructor.Event.HIDE)\n    const complete = () => {\n      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n        tip.parentNode.removeChild(tip)\n      }\n\n      this._cleanTipClass()\n      this.element.removeAttribute('aria-describedby')\n      $(this.element).trigger(this.constructor.Event.HIDDEN)\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    $(this.element).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      $(document.body).children().off('mouseover', null, $.noop)\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n      const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n      $(tip)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Protected\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n    $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  setElementContent($element, content) {\n    if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n      // Content is a DOM node or a jQuery\n      if (this.config.html) {\n        if (!$(content).parent().is($element)) {\n          $element.empty().append(content)\n        }\n      } else {\n        $element.text($(content).text())\n      }\n\n      return\n    }\n\n    if (this.config.html) {\n      if (this.config.sanitize) {\n        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n      }\n\n      $element.html(content)\n    } else {\n      $element.text(content)\n    }\n  }\n\n  getTitle() {\n    let title = this.element.getAttribute('data-original-title')\n\n    if (!title) {\n      title = typeof this.config.title === 'function' ?\n        this.config.title.call(this.element) :\n        this.config.title\n    }\n\n    return title\n  }\n\n  // Private\n  _getPopperConfig(attachment) {\n    const defaultBsConfig = {\n      placement: attachment,\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          behavior: this.config.fallbackPlacement\n        },\n        arrow: {\n          element: SELECTOR_ARROW\n        },\n        preventOverflow: {\n          boundariesElement: this.config.boundary\n        }\n      },\n      onCreate: data => {\n        if (data.originalPlacement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      },\n      onUpdate: data => this._handlePopperPlacementChange(data)\n    }\n\n    return {\n      ...defaultBsConfig,\n      ...this.config.popperConfig\n    }\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this.config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this.config.offset(data.offsets, this.element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this.config.offset\n    }\n\n    return offset\n  }\n\n  _getContainer() {\n    if (this.config.container === false) {\n      return document.body\n    }\n\n    if (Util.isElement(this.config.container)) {\n      return $(this.config.container)\n    }\n\n    return $(document).find(this.config.container)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this.config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        $(this.element).on(\n          this.constructor.Event.CLICK,\n          this.config.selector,\n          event => this.toggle(event)\n        )\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        $(this.element)\n          .on(eventIn, this.config.selector, event => this._enter(event))\n          .on(eventOut, this.config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this.element) {\n        this.hide()\n      }\n    }\n\n    $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n    if (this.config.selector) {\n      this.config = {\n        ...this.config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const titleType = typeof this.element.getAttribute('data-original-title')\n\n    if (this.element.getAttribute('title') || titleType !== 'string') {\n      this.element.setAttribute(\n        'data-original-title',\n        this.element.getAttribute('title') || ''\n      )\n\n      this.element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context.config.delay || !context.config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context.config.delay.show)\n  }\n\n  _leave(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = false\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context.config.delay || !context.config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context.config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = $(this.element).data()\n\n    Object.keys(dataAttributes)\n      .forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr]\n        }\n      })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this.config) {\n      for (const key in this.config) {\n        if (this.constructor.Default[key] !== this.config[key]) {\n          config[key] = this.config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    this.tip = popperData.instance.popper\n    this._cleanTipClass()\n    this.addAttachmentClass(this._getAttachment(popperData.placement))\n  }\n\n  _fixTransition() {\n    const tip = this.getTipElement()\n    const initConfigAnimation = this.config.animation\n\n    if (tip.getAttribute('x-placement') !== null) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_FADE)\n    this.config.animation = false\n    this.hide()\n    this.show()\n    this.config.animation = initConfigAnimation\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Tooltip(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n"],"names":["NAME","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","BSCLS_PREFIX_REGEX","RegExp","DISALLOWED_ATTRIBUTES","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","animation","template","trigger","title","delay","html","selector","placement","offset","container","fallbackPlacement","boundary","customClass","sanitize","sanitizeFn","whiteList","DefaultWhitelist","popperConfig","DefaultType","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","constructor","element","config","Popper","TypeError","_isEnabled","_timeout","_hoverState","_activeTrigger","_popper","this","_getConfig","tip","_setListeners","VERSION","DATA_KEY","enable","disable","toggleEnabled","toggle","event","dataKey","context","currentTarget","data","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","hasClass","dispose","clearTimeout","removeData","off","closest","_hideModalHandler","remove","destroy","show","css","Error","showEvent","isWithContent","shadowRoot","Util","findShadowRoot","isInTheDom","contains","ownerDocument","documentElement","isDefaultPrevented","tipId","getUID","setAttribute","setContent","addClass","call","attachment","_getAttachment","addAttachmentClass","_getContainer","appendTo","_getPopperConfig","document","body","children","on","noop","complete","_fixTransition","prevHoverState","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","hide","callback","hideEvent","parentNode","removeChild","_cleanTipClass","removeAttribute","removeClass","update","scheduleUpdate","Boolean","getTitle","setElementContent","querySelectorAll","$element","content","nodeType","jquery","text","parent","is","empty","append","getAttribute","modifiers","_getOffset","flip","behavior","arrow","preventOverflow","boundariesElement","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","offsets","isElement","find","toUpperCase","split","forEach","eventIn","eventOut","_fixTitle","titleType","type","setTimeout","dataAttributes","Object","keys","dataAttr","indexOf","toString","typeCheckConfig","key","$tip","tabClass","attr","match","length","join","popperData","instance","popper","initConfigAnimation","each","_config","test","_jQueryInterface","Constructor","noConflict"],"mappings":"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"}
-
 
2
1
{"version":3,"file":"tooltip.min.js","sources":["../../src/bootstrap/tooltip.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from 'core/popper2'\nimport BaseComponent from './base-component'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport {\n  defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // TODO: v6 remove this or make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // TODO: remove this check in v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // TODO: v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element])\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n"],"names":["DISALLOWED_ATTRIBUTES","Set","SELECTOR_MODAL","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default","allowList","DefaultAllowlist","animation","boundary","container","customClass","delay","fallbackPlacements","html","offset","placement","popperConfig","sanitize","sanitizeFn","selector","template","title","trigger","DefaultType","Tooltip","BaseComponent","constructor","element","config","Popper","TypeError","_isEnabled","_timeout","_isHovered","_activeTrigger","_popper","_templateFactory","_newContent","tip","_setListeners","this","_config","_fixTitle","NAME","enable","disable","toggleEnabled","toggle","click","_isShown","_leave","_enter","dispose","clearTimeout","off","_element","closest","_hideModalHandler","getAttribute","setAttribute","_disposePopper","show","style","display","Error","_isWithContent","showEvent","EventHandler","eventName","isInTheDom","ownerDocument","documentElement","contains","defaultPrevented","_getTipElement","append","_createPopper","classList","add","document","concat","body","children","on","noop","_queueCallback","_isAnimated","hide","remove","_isWithActiveTrigger","removeAttribute","update","Boolean","_getTitle","_createTipElement","_getContentForTemplate","content","_getTemplateFactory","toHtml","tipId","toString","setContent","changeContent","TemplateFactory","extraClass","_resolvePossibleFunction","_initializeOnDelegatedTarget","event","getOrCreateInstance","delegateTarget","_getDelegateConfig","attachment","toUpperCase","createPopper","_getPopperConfig","_getOffset","split","map","value","Number","parseInt","popperData","arg","defaultBsPopperConfig","modifiers","name","options","enabled","phase","fn","data","state","triggers","eventIn","eventOut","context","type","relatedTarget","textContent","trim","_setTimeout","handler","timeout","setTimeout","Object","values","includes","_getConfig","dataAttributes","Manipulator","getDataAttributes","dataAttribute","keys","has","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","key","entries","destroy","each"],"mappings":"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"}
-
 
2
3
3