2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ * !  
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  *  Bootstrap  v5 . 0.2  ( https : //getbootstrap.com/)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  *  Copyright  2011 - 2021  The  Bootstrap  Authors  ( https : //github.com/twbs/bootstrap/graphs/contributors)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								( function  ( global ,  factory )  {  
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  typeof  exports  ===  'object'  &&  typeof  module  !==  'undefined'  ?  module . exports  =  factory ( require ( '@popperjs/core' ) )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeof  define  ===  'function'  &&  define . amd  ?  define ( [ '@popperjs/core' ] ,  factory )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ( global  =  typeof  globalThis  !==  'undefined'  ?  globalThis  :  global  ||  self ,  global . bootstrap  =  factory ( global . Popper ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ( this ,  ( function  ( Popper )  {  'use strict' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  _interopNamespace ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e  &&  e . _ _esModule )  return  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  n  =  Object . create ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( e ) . forEach ( function  ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( k  !==  'default' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  d  =  Object . getOwnPropertyDescriptor ( e ,  k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Object . defineProperty ( n ,  k ,  d . get  ?  d  :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            enumerable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            get :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              return  e [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n [ 'default' ]  =  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . freeze ( n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  Popper _ _namespace  =  /*#__PURE__*/ _interopNamespace ( Popper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  dom / selector - engine . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NODE _TEXT  =  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SelectorEngine  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find ( selector ,  element  =  document . documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] . concat ( ... Element . prototype . querySelectorAll . call ( element ,  selector ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    findOne ( selector ,  element  =  document . documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Element . prototype . querySelector . call ( element ,  selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    children ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] . concat ( ... element . children ) . filter ( child  =>  child . matches ( selector ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parents ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  parents  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  ancestor  =  element . parentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( ancestor  &&  ancestor . nodeType  ===  Node . ELEMENT _NODE  &&  ancestor . nodeType  !==  NODE _TEXT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ancestor . matches ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          parents . push ( ancestor ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ancestor  =  ancestor . parentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  parents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prev ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  previous  =  element . previousElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( previous )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( previous . matches ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  [ previous ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        previous  =  previous . previousElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  next  =  element . nextElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( next . matches ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  [ next ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        next  =  next . nextElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  util / index . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  MAX _UID  =  1000000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  MILLISECONDS _MULTIPLIER  =  1000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRANSITION _END  =  'transitionend' ;  // Shoutout AngusCroll (https://goo.gl/pxwQGp)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  toType  =  obj  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( obj  ===  null  ||  obj  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` ${ obj } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { } . toString . call ( obj ) . match ( /\s([a-z]+)/i ) [ 1 ] . toLowerCase ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Public  Util  Api 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getUID  =  prefix  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      prefix  +=  Math . floor ( Math . random ( )  *  MAX _UID ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  while  ( document . getElementById ( prefix ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  prefix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getSelector  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  selector  =  element . getAttribute ( 'data-bs-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  getSelectorFromElement  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  selector  =  getSelector ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  document . querySelector ( selector )  ?  selector  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getElementFromSelector  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  selector  =  getSelector ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  selector  ?  document . querySelector ( selector )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getTransitionDurationFromElement  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Get transition-duration of the element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      transitionDuration , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      transitionDelay 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  =  window . getComputedStyle ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  floatTransitionDuration  =  Number . parseFloat ( transitionDuration ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  floatTransitionDelay  =  Number . parseFloat ( transitionDelay ) ;  // Return 0 if element or transition duration is not found
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! floatTransitionDuration  &&  ! floatTransitionDelay )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // If multiple durations are defined, take the first
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    transitionDuration  =  transitionDuration . split ( ',' ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    transitionDelay  =  transitionDelay . split ( ',' ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( Number . parseFloat ( transitionDuration )  +  Number . parseFloat ( transitionDelay ) )  *  MILLISECONDS _MULTIPLIER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  triggerTransitionEnd  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . dispatchEvent ( new  Event ( TRANSITION _END ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  isElement  =  obj  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! obj  ||  typeof  obj  !==  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  obj . jquery  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      obj  =  obj [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  typeof  obj . nodeType  !==  'undefined' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getElement  =  obj  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isElement ( obj ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // it's a jQuery object or a node element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  obj . jquery  ?  obj [ 0 ]  :  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  obj  ===  'string'  &&  obj . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . findOne ( obj ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  typeCheckConfig  =  ( componentName ,  config ,  configTypes )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Object . keys ( configTypes ) . forEach ( property  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  expectedTypes  =  configTypes [ property ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  value  =  config [ property ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  valueType  =  value  &&  isElement ( value )  ?  'element'  :  toType ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! new  RegExp ( expectedTypes ) . test ( valueType ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  TypeError ( ` ${ componentName . toUpperCase ( ) } : Option " ${ property } " provided type " ${ valueType } " but expected type " ${ expectedTypes } ". ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  isVisible  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isElement ( element )  ||  element . getClientRects ( ) . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  getComputedStyle ( element ) . getPropertyValue ( 'visibility' )  ===  'visible' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  isDisabled  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! element  ||  element . nodeType  !==  Node . ELEMENT _NODE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( element . classList . contains ( 'disabled' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  element . disabled  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  element . disabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  element . hasAttribute ( 'disabled' )  &&  element . getAttribute ( 'disabled' )  !==  'false' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  findShadowRoot  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! document . documentElement . attachShadow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Can find the shadow root otherwise it'll return the document
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  element . getRootNode  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  root  =  element . getRootNode ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  root  instanceof  ShadowRoot  ?  root  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( element  instanceof  ShadowRoot )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // when we don't find a shadow root
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! element . parentNode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  findShadowRoot ( element . parentNode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  noop  =  ( )  =>  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  reflow  =  element  =>  element . offsetHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getjQuery  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  =  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( jQuery  &&  ! document . body . hasAttribute ( 'data-bs-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  isRTL  =  ( )  =>  document . documentElement . dir  ===  'rtl' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  execute  =  callback  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  callback  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      callback ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  executeAfterTransition  =  ( callback ,  transitionElement ,  waitForTransition  =  true )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! waitForTransition )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  durationPadding  =  5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  emulatedDuration  =  getTransitionDurationFromElement ( transitionElement )  +  durationPadding ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  called  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  handler  =  ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( target  !==  transitionElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      called  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      transitionElement . removeEventListener ( TRANSITION _END ,  handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    transitionElement . addEventListener ( TRANSITION _END ,  handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! called )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        triggerTransitionEnd ( transitionElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  emulatedDuration ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Return  the  previous / next  element  of  a  list . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  { array }  list     The  list  of  elements 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  activeElement    The  active  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  shouldGetNext    Choose  to  get  next  or  previous  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  isCycleAllowed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  { Element | elem }  The  proper  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  getNextActiveElement  =  ( list ,  activeElement ,  shouldGetNext ,  isCycleAllowed )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  index  =  list . indexOf ( activeElement ) ;  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( index  ===  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  list [ ! shouldGetNext  &&  isCycleAllowed  ?  list . length  -  1  :  0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  listLength  =  list . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    index  +=  shouldGetNext  ?  1  :  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isCycleAllowed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      index  =  ( index  +  listLength )  %  listLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  list [ Math . max ( 0 ,  Math . min ( index ,  listLength  -  1 ) ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  dom / event - handler . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  namespaceRegex  =  /[^.]*(?=\..*)\.|.*/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  stripNameRegex  =  /\..*/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  stripUidRegex  =  /::\d+$/ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  eventRegistry  =  { } ;  // Events storage
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  uidEvent  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  customEvents  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mouseenter :  'mouseover' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mouseleave :  'mouseout' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  customEventsRegex  =  /^(mouseenter|mouseleave)/i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  nativeEvents  =  new  Set ( [ 'click' ,  'dblclick' ,  'mouseup' ,  'mousedown' ,  'contextmenu' ,  'mousewheel' ,  'DOMMouseScroll' ,  'mouseover' ,  'mouseout' ,  'mousemove' ,  'selectstart' ,  'selectend' ,  'keydown' ,  'keypress' ,  'keyup' ,  'orientationchange' ,  'touchstart' ,  'touchmove' ,  'touchend' ,  'touchcancel' ,  'pointerdown' ,  'pointermove' ,  'pointerup' ,  'pointerleave' ,  'pointercancel' ,  'gesturestart' ,  'gesturechange' ,  'gestureend' ,  'focus' ,  'blur' ,  'change' ,  'reset' ,  'select' ,  'submit' ,  'focusin' ,  'focusout' ,  'load' ,  'unload' ,  'beforeunload' ,  'resize' ,  'move' ,  'DOMContentLoaded' ,  'readystatechange' ,  'error' ,  'abort' ,  'scroll' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Private  methods 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getUidEvent ( element ,  uid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  uid  &&  ` ${ uid } :: ${ uidEvent ++ } `  ||  element . uidEvent  ||  uidEvent ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getEvent ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  uid  =  getUidEvent ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . uidEvent  =  uid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    eventRegistry [ uid ]  =  eventRegistry [ uid ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  eventRegistry [ uid ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  bootstrapHandler ( element ,  fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  handler ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      event . delegateTarget  =  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( handler . oneOff )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . off ( element ,  event . type ,  fn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  fn . apply ( element ,  [ event ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  bootstrapDelegationHandler ( element ,  selector ,  fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  handler ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  domElements  =  element . querySelectorAll ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( let  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  event ;  target  &&  target  !==  this ;  target  =  target . parentNode )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  domElements . length ;  i -- ; )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( domElements [ i ]  ===  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            event . delegateTarget  =  target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( handler . oneOff )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              // eslint-disable-next-line unicorn/consistent-destructuring
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              EventHandler . off ( element ,  event . type ,  selector ,  fn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  fn . apply ( target ,  [ event ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // To please ESLint
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  findHandler ( events ,  handler ,  delegationSelector  =  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  uidEventList  =  Object . keys ( events ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  len  =  uidEventList . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  event  =  events [ uidEventList [ i ] ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event . originalHandler  ===  handler  &&  event . delegationSelector  ===  delegationSelector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  normalizeParams ( originalTypeEvent ,  handler ,  delegationFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  delegation  =  typeof  handler  ===  'string' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  originalHandler  =  delegation  ?  delegationFn  :  handler ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  typeEvent  =  getTypeEvent ( originalTypeEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  isNative  =  nativeEvents . has ( typeEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isNative )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeEvent  =  originalTypeEvent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ delegation ,  originalHandler ,  typeEvent ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  addHandler ( element ,  originalTypeEvent ,  handler ,  delegationFn ,  oneOff )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  originalTypeEvent  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! handler )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      handler  =  delegationFn ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      delegationFn  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( customEventsRegex . test ( originalTypeEvent ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  wrapFn  =  fn  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ! event . relatedTarget  ||  event . relatedTarget  !==  event . delegateTarget  &&  ! event . delegateTarget . contains ( event . relatedTarget ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  fn . call ( this ,  event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( delegationFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delegationFn  =  wrapFn ( delegationFn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        handler  =  wrapFn ( handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ delegation ,  originalHandler ,  typeEvent ]  =  normalizeParams ( originalTypeEvent ,  handler ,  delegationFn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  events  =  getEvent ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  handlers  =  events [ typeEvent ]  ||  ( events [ typeEvent ]  =  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  previousFn  =  findHandler ( handlers ,  originalHandler ,  delegation  ?  handler  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( previousFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      previousFn . oneOff  =  previousFn . oneOff  &&  oneOff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  uid  =  getUidEvent ( originalHandler ,  originalTypeEvent . replace ( namespaceRegex ,  '' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  fn  =  delegation  ?  bootstrapDelegationHandler ( element ,  handler ,  delegationFn )  :  bootstrapHandler ( element ,  handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . delegationSelector  =  delegation  ?  handler  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . originalHandler  =  originalHandler ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . oneOff  =  oneOff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . uidEvent  =  uid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handlers [ uid ]  =  fn ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . addEventListener ( typeEvent ,  fn ,  delegation ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  removeHandler ( element ,  events ,  typeEvent ,  handler ,  delegationSelector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  fn  =  findHandler ( events [ typeEvent ] ,  handler ,  delegationSelector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . removeEventListener ( typeEvent ,  fn ,  Boolean ( delegationSelector ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delete  events [ typeEvent ] [ fn . uidEvent ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  removeNamespacedHandlers ( element ,  events ,  typeEvent ,  namespace )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  storeElementEvent  =  events [ typeEvent ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Object . keys ( storeElementEvent ) . forEach ( handlerKey  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( handlerKey . includes ( namespace ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  event  =  storeElementEvent [ handlerKey ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        removeHandler ( element ,  events ,  typeEvent ,  event . originalHandler ,  event . delegationSelector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getTypeEvent ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    event  =  event . replace ( stripNameRegex ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  customEvents [ event ]  ||  event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EventHandler  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    on ( element ,  event ,  handler ,  delegationFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      addHandler ( element ,  event ,  handler ,  delegationFn ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    one ( element ,  event ,  handler ,  delegationFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      addHandler ( element ,  event ,  handler ,  delegationFn ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    off ( element ,  originalTypeEvent ,  handler ,  delegationFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  originalTypeEvent  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  [ delegation ,  originalHandler ,  typeEvent ]  =  normalizeParams ( originalTypeEvent ,  handler ,  delegationFn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  inNamespace  =  typeEvent  !==  originalTypeEvent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  events  =  getEvent ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isNamespace  =  originalTypeEvent . startsWith ( '.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  originalHandler  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Simplest case: handler is passed, remove that listener ONLY.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! events  ||  ! events [ typeEvent ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        removeHandler ( element ,  events ,  typeEvent ,  originalHandler ,  delegation  ?  handler  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isNamespace )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Object . keys ( events ) . forEach ( elementEvent  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          removeNamespacedHandlers ( element ,  events ,  elementEvent ,  originalTypeEvent . slice ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  storeElementEvent  =  events [ typeEvent ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( storeElementEvent ) . forEach ( keyHandlers  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  handlerKey  =  keyHandlers . replace ( stripUidRegex ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! inNamespace  ||  originalTypeEvent . includes ( handlerKey ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  event  =  storeElementEvent [ keyHandlers ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          removeHandler ( element ,  events ,  typeEvent ,  event . originalHandler ,  event . delegationSelector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger ( element ,  event ,  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  event  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  $  =  getjQuery ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  typeEvent  =  getTypeEvent ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  inNamespace  =  event  !==  typeEvent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isNative  =  nativeEvents . has ( typeEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  jQueryEvent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  bubbles  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  nativeDispatch  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  defaultPrevented  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  evt  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( inNamespace  &&  $ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        jQueryEvent  =  $ . Event ( event ,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ ( element ) . trigger ( jQueryEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bubbles  =  ! jQueryEvent . isPropagationStopped ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nativeDispatch  =  ! jQueryEvent . isImmediatePropagationStopped ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        defaultPrevented  =  jQueryEvent . isDefaultPrevented ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isNative )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        evt  =  document . createEvent ( 'HTMLEvents' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        evt . initEvent ( typeEvent ,  bubbles ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        evt  =  new  CustomEvent ( event ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          bubbles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cancelable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // merge custom information in our event
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  args  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Object . keys ( args ) . forEach ( key  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Object . defineProperty ( evt ,  key ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            get ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              return  args [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        evt . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( nativeDispatch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . dispatchEvent ( evt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( evt . defaultPrevented  &&  typeof  jQueryEvent  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        jQueryEvent . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  evt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  dom / data . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  elementMap  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  Data  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( element ,  key ,  instance )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! elementMap . has ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elementMap . set ( element ,  new  Map ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  instanceMap  =  elementMap . get ( element ) ;  // make it clear we only want one instance per element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // can be removed later when multiple key/instances are fine to be used
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! instanceMap . has ( key )  &&  instanceMap . size  !==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // eslint-disable-next-line no-console
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        console . error ( ` Bootstrap doesn't allow more than one instance per element. Bound instance:  ${ Array . from ( instanceMap . keys ( ) ) [ 0 ] } . ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      instanceMap . set ( key ,  instance ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    get ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( elementMap . has ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  elementMap . get ( element ) . get ( key )  ||  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    remove ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! elementMap . has ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  instanceMap  =  elementMap . get ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      instanceMap . delete ( key ) ;  // free up element references if there are no instances left for an element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( instanceMap . size  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elementMap . delete ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  base - component . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  VERSION  =  '5.0.2' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element  =  getElement ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Data . set ( this . _element ,  this . constructor . DATA _KEY ,  this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Data . remove ( this . _element ,  this . constructor . DATA _KEY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  this . constructor . EVENT _KEY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . getOwnPropertyNames ( this ) . forEach ( propertyName  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this [ propertyName ]  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _queueCallback ( callback ,  element ,  isAnimated  =  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      executeAfterTransition ( callback ,  element ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /** Static */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  getInstance ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Data . get ( element ,  this . DATA _KEY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  getOrCreateInstance ( element ,  config  =  { } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . getInstance ( element )  ||  new  this ( element ,  typeof  config  ===  'object'  ?  config  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  VERSION ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  VERSION ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  Error ( 'You have to implement the static method "NAME", for each component!' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DATA _KEY ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` bs. ${ this . NAME } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  EVENT _KEY ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` . ${ this . DATA _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  alert . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$c  =  'alert' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$b  =  'bs.alert' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$b  =  ` . ${ DATA _KEY$b } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$8  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DISMISS  =  '[data-bs-dismiss="alert"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLOSE  =  ` close ${ EVENT _KEY$b } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLOSED  =  ` closed ${ EVENT _KEY$b } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$7  =  ` click ${ EVENT _KEY$b } ${ DATA _API _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ALERT  =  'alert' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$6  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$9  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Alert  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // 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 . trigger ( element ,  EVENT _CLOSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _removeElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . classList . remove ( CLASS _NAME _SHOW$9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isAnimated  =  element . classList . contains ( CLASS _NAME _FADE$6 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  this . _destroyElement ( element ) ,  element ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _destroyElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . 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 . on ( document ,  EVENT _CLICK _DATA _API$7 ,  SELECTOR _DISMISS ,  Alert . handleDismiss ( new  Alert ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Alert  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Alert ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  button . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$b  =  'button' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$a  =  'bs.button' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$a  =  ` . ${ DATA _KEY$a } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$7  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE$3  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$5  =  '[data-bs-toggle="button"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$6  =  ` click ${ EVENT _KEY$a } ${ DATA _API _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Button  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-pressed' ,  this . _element . classList . toggle ( CLASS _NAME _ACTIVE$3 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Button . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( config  ===  'toggle' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$6 ,  SELECTOR _DATA _TOGGLE$5 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  button  =  event . target . closest ( SELECTOR _DATA _TOGGLE$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  data  =  Button . getOrCreateInstance ( button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . toggle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Button  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  dom / manipulator . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  normalizeData ( val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  ===  'true' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  ===  'false' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  ===  Number ( val ) . toString ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Number ( val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( val  ===  ''  ||  val  ===  'null' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  val ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  normalizeDataKey ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  key . replace ( /[A-Z]/g ,  chr  =>  ` - ${ chr . toLowerCase ( ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Manipulator  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setDataAttribute ( element ,  key ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . setAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    removeDataAttribute ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . removeAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getDataAttributes ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  attributes  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( element . dataset ) . filter ( key  =>  key . startsWith ( 'bs' ) ) . forEach ( key  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  pureKey  =  key . replace ( /^bs/ ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pureKey  =  pureKey . charAt ( 0 ) . toLowerCase ( )  +  pureKey . slice ( 1 ,  pureKey . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        attributes [ pureKey ]  =  normalizeData ( element . dataset [ key ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  attributes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getDataAttribute ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  normalizeData ( element . getAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  rect  =  element . getBoundingClientRect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        top :  rect . top  +  document . body . scrollTop , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        left :  rect . left  +  document . body . scrollLeft 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    position ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        top :  element . offsetTop , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        left :  element . offsetLeft 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  carousel . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$a  =  'carousel' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$9  =  'bs.carousel' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$9  =  ` . ${ DATA _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$6  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _LEFT _KEY  =  'ArrowLeft' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _RIGHT _KEY  =  'ArrowRight' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TOUCHEVENT _COMPAT _WAIT  =  500 ;  // Time for mouse compat events to fire after touch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SWIPE _THRESHOLD  =  40 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$9  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    interval :  5000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    slide :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pause :  'hover' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wrap :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    touch :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$9  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    interval :  '(number|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    slide :  '(boolean|string)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pause :  '(string|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wrap :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    touch :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ORDER _NEXT  =  'next' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ORDER _PREV  =  'prev' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DIRECTION _LEFT  =  'left' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DIRECTION _RIGHT  =  'right' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  KEY _TO _DIRECTION  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ARROW _LEFT _KEY ] :  DIRECTION _RIGHT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ARROW _RIGHT _KEY ] :  DIRECTION _LEFT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SLIDE  =  ` slide ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SLID  =  ` slid ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN  =  ` keydown ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEENTER  =  ` mouseenter ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSELEAVE  =  ` mouseleave ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _TOUCHSTART  =  ` touchstart ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _TOUCHMOVE  =  ` touchmove ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _TOUCHEND  =  ` touchend ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _POINTERDOWN  =  ` pointerdown ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _POINTERUP  =  ` pointerup ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _DRAG _START  =  ` dragstart ${ EVENT _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API$2  =  ` load ${ EVENT _KEY$9 } ${ DATA _API _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$5  =  ` click ${ EVENT _KEY$9 } ${ DATA _API _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _CAROUSEL  =  'carousel' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE$2  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SLIDE  =  'slide' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _END  =  'carousel-item-end' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _START  =  'carousel-item-start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _NEXT  =  'carousel-item-next' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _PREV  =  'carousel-item-prev' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _POINTER _EVENT  =  'pointer-event' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE$1  =  '.active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE _ITEM  =  '.active.carousel-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ITEM  =  '.carousel-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ITEM _IMG  =  '.carousel-item img' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NEXT _PREV  =  '.carousel-item-next, .carousel-item-prev' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _INDICATORS  =  '.carousel-indicators' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _INDICATOR  =  '[data-bs-target]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _SLIDE  =  '[data-bs-slide], [data-bs-slide-to]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _RIDE  =  '[data-bs-ride="carousel"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  POINTER _TYPE _TOUCH  =  'touch' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  POINTER _TYPE _PEN  =  'pen' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Carousel  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _items  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _interval  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeElement  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isPaused  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isSliding  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . touchTimeout  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . touchStartX  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . touchDeltaX  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _indicatorsElement  =  SelectorEngine . findOne ( SELECTOR _INDICATORS ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _touchSupported  =  'ontouchstart'  in  document . documentElement  ||  navigator . maxTouchPoints  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _pointerEvent  =  Boolean ( window . PointerEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _addEventListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _slide ( ORDER _NEXT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nextWhenVisible ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // Don't call next when the page isn't visible
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // or the carousel or its parent isn't visible
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! document . hidden  &&  isVisible ( this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . next ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prev ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _slide ( ORDER _PREV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pause ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isPaused  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( SelectorEngine . findOne ( SELECTOR _NEXT _PREV ,  this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        triggerTransitionEnd ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . cycle ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      clearInterval ( this . _interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _interval  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cycle ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isPaused  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _interval )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearInterval ( this . _interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _interval  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config  &&  this . _config . interval  &&  ! this . _isPaused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _updateInterval ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _interval  =  setInterval ( ( document . visibilityState  ?  this . nextWhenVisible  :  this . next ) . bind ( this ) ,  this . _config . interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    to ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeElement  =  SelectorEngine . findOne ( SELECTOR _ACTIVE _ITEM ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  activeIndex  =  this . _getItemIndex ( this . _activeElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( index  >  this . _items . length  -  1  ||  index  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . one ( this . _element ,  EVENT _SLID ,  ( )  =>  this . to ( index ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( activeIndex  ===  index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . pause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . cycle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  order  =  index  >  activeIndex  ?  ORDER _NEXT  :  ORDER _PREV ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _slide ( order ,  this . _items [ index ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$9 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  ?  config  :  { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$a ,  config ,  DefaultType$9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _handleSwipe ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  absDeltax  =  Math . abs ( this . touchDeltaX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( absDeltax  <=  SWIPE _THRESHOLD )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  direction  =  absDeltax  /  this . touchDeltaX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . touchDeltaX  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! direction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _slide ( direction  >  0  ?  DIRECTION _RIGHT  :  DIRECTION _LEFT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . keyboard )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _KEYDOWN ,  event  =>  this . _keydown ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . pause  ===  'hover' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _MOUSEENTER ,  event  =>  this . pause ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _MOUSELEAVE ,  event  =>  this . cycle ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . touch  &&  this . _touchSupported )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _addTouchEventListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addTouchEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  start  =  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _pointerEvent  &&  ( event . pointerType  ===  POINTER _TYPE _PEN  ||  event . pointerType  ===  POINTER _TYPE _TOUCH ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . touchStartX  =  event . clientX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( ! this . _pointerEvent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . touchStartX  =  event . touches [ 0 ] . clientX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  move  =  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // ensure swiping with one touch and not pinching
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . touchDeltaX  =  event . touches  &&  event . touches . length  >  1  ?  0  :  event . touches [ 0 ] . clientX  -  this . touchStartX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  end  =  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _pointerEvent  &&  ( event . pointerType  ===  POINTER _TYPE _PEN  ||  event . pointerType  ===  POINTER _TYPE _TOUCH ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . touchDeltaX  =  event . clientX  -  this . touchStartX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _handleSwipe ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . pause  ===  'hover' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // If it's a touch-enabled device, mouseenter/leave are fired as
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // part of the mouse compatibility events on first tap - the carousel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // would stop cycling until user tapped out of it;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // here, we listen for touchend, explicitly pause the carousel
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // (as if it's the second time we tap on it, mouseenter compat event
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // is NOT fired) and after a timeout (to allow for mouse compatibility
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // events to fire) we explicitly restart cycling
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . pause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( this . touchTimeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            clearTimeout ( this . touchTimeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . touchTimeout  =  setTimeout ( event  =>  this . cycle ( event ) ,  TOUCHEVENT _COMPAT _WAIT  +  this . _config . interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SelectorEngine . find ( SELECTOR _ITEM _IMG ,  this . _element ) . forEach ( itemImg  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( itemImg ,  EVENT _DRAG _START ,  e  =>  e . preventDefault ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _pointerEvent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _POINTERDOWN ,  event  =>  start ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _POINTERUP ,  event  =>  end ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _POINTER _EVENT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHSTART ,  event  =>  start ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHMOVE ,  event  =>  move ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHEND ,  event  =>  end ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _keydown ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( /input|textarea/i . test ( event . target . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  direction  =  KEY _TO _DIRECTION [ event . key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( direction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _slide ( direction ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getItemIndex ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _items  =  element  &&  element . parentNode  ?  SelectorEngine . find ( SELECTOR _ITEM ,  element . parentNode )  :  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _items . indexOf ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getItemByOrder ( order ,  activeElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isNext  =  order  ===  ORDER _NEXT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  getNextActiveElement ( this . _items ,  activeElement ,  isNext ,  this . _config . wrap ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _triggerSlideEvent ( relatedTarget ,  eventDirectionName )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  targetIndex  =  this . _getItemIndex ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  fromIndex  =  this . _getItemIndex ( SelectorEngine . findOne ( SELECTOR _ACTIVE _ITEM ,  this . _element ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  EventHandler . trigger ( this . _element ,  EVENT _SLIDE ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        direction :  eventDirectionName , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        from :  fromIndex , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        to :  targetIndex 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _setActiveIndicatorElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _indicatorsElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  activeIndicator  =  SelectorEngine . findOne ( SELECTOR _ACTIVE$1 ,  this . _indicatorsElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeIndicator . classList . remove ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeIndicator . removeAttribute ( 'aria-current' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  indicators  =  SelectorEngine . find ( SELECTOR _INDICATOR ,  this . _indicatorsElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  0 ;  i  <  indicators . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( Number . parseInt ( indicators [ i ] . getAttribute ( 'data-bs-slide-to' ) ,  10 )  ===  this . _getItemIndex ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            indicators [ i ] . classList . add ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            indicators [ i ] . setAttribute ( 'aria-current' ,  'true' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _updateInterval ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  element  =  this . _activeElement  ||  SelectorEngine . findOne ( SELECTOR _ACTIVE _ITEM ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  elementInterval  =  Number . parseInt ( element . getAttribute ( 'data-bs-interval' ) ,  10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( elementInterval )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _config . defaultInterval  =  this . _config . defaultInterval  ||  this . _config . interval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _config . interval  =  elementInterval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _config . interval  =  this . _config . defaultInterval  ||  this . _config . interval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _slide ( directionOrOrder ,  element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  order  =  this . _directionToOrder ( directionOrOrder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  activeElement  =  SelectorEngine . findOne ( SELECTOR _ACTIVE _ITEM ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  activeElementIndex  =  this . _getItemIndex ( activeElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  nextElement  =  element  ||  this . _getItemByOrder ( order ,  activeElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  nextElementIndex  =  this . _getItemIndex ( nextElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isCycling  =  Boolean ( this . _interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isNext  =  order  ===  ORDER _NEXT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  directionalClassName  =  isNext  ?  CLASS _NAME _START  :  CLASS _NAME _END ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  orderClassName  =  isNext  ?  CLASS _NAME _NEXT  :  CLASS _NAME _PREV ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  eventDirectionName  =  this . _orderToDirection ( order ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( nextElement  &&  nextElement . classList . contains ( CLASS _NAME _ACTIVE$2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isSliding  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  slideEvent  =  this . _triggerSlideEvent ( nextElement ,  eventDirectionName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( slideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! activeElement  ||  ! nextElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Some weirdness is happening, so we bail
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isSliding  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isCycling )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . pause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setActiveIndicatorElement ( nextElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeElement  =  nextElement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  triggerSlidEvent  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SLID ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  nextElement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          direction :  eventDirectionName , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          from :  activeElementIndex , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          to :  nextElementIndex 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _element . classList . contains ( CLASS _NAME _SLIDE ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nextElement . classList . add ( orderClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reflow ( nextElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeElement . classList . add ( directionalClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nextElement . classList . add ( directionalClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  completeCallBack  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          nextElement . classList . remove ( directionalClassName ,  orderClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          nextElement . classList . add ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          activeElement . classList . remove ( CLASS _NAME _ACTIVE$2 ,  orderClassName ,  directionalClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _isSliding  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          setTimeout ( triggerSlidEvent ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _queueCallback ( completeCallBack ,  activeElement ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeElement . classList . remove ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nextElement . classList . add ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isSliding  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        triggerSlidEvent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isCycling )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . cycle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _directionToOrder ( direction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! [ DIRECTION _RIGHT ,  DIRECTION _LEFT ] . includes ( direction ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  direction ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  direction  ===  DIRECTION _LEFT  ?  ORDER _PREV  :  ORDER _NEXT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  direction  ===  DIRECTION _LEFT  ?  ORDER _NEXT  :  ORDER _PREV ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _orderToDirection ( order )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! [ ORDER _NEXT ,  ORDER _PREV ] . includes ( order ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  order ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  order  ===  ORDER _PREV  ?  DIRECTION _LEFT  :  DIRECTION _RIGHT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  order  ===  ORDER _PREV  ?  DIRECTION _RIGHT  :  DIRECTION _LEFT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  carouselInterface ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  data  =  Carousel . getOrCreateInstance ( element ,  config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  config  ===  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _config  =  {  ... _config , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ... config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  action  =  typeof  config  ===  'string'  ?  config  :  _config . slide ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data . to ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( typeof  action  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  data [ action ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ action } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data [ action ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( _config . interval  &&  _config . ride )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data . pause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data . cycle ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Carousel . carouselInterface ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  dataApiClickHandler ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  target  =  getElementFromSelector ( this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! target  ||  ! target . classList . contains ( CLASS _NAME _CAROUSEL ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  config  =  {  ... Manipulator . getDataAttributes ( target ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  slideIndex  =  this . getAttribute ( 'data-bs-slide-to' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( slideIndex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . interval  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Carousel . carouselInterface ( target ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( slideIndex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Carousel . getInstance ( target ) . to ( slideIndex ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$5 ,  SELECTOR _DATA _SLIDE ,  Carousel . dataApiClickHandler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API$2 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  carousels  =  SelectorEngine . find ( SELECTOR _DATA _RIDE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  len  =  carousels . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Carousel . carouselInterface ( carousels [ i ] ,  Carousel . getInstance ( carousels [ i ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Carousel  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Carousel ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  collapse . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$9  =  'collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$8  =  'bs.collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$8  =  ` . ${ DATA _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$5  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$8  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggle :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent :  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$8  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggle :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent :  '(string|element)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$5  =  ` show ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$5  =  ` shown ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$5  =  ` hide ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$5  =  ` hidden ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$4  =  ` click ${ EVENT _KEY$8 } ${ DATA _API _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$8  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSE  =  'collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSING  =  'collapsing' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSED  =  'collapsed' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  WIDTH  =  'width' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  HEIGHT  =  'height' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVES  =  '.show, .collapsing' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$4  =  '[data-bs-toggle="collapse"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Collapse  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _triggerArray  =  SelectorEngine . find ( ` ${ SELECTOR _DATA _TOGGLE$4 } [href="# ${ this . _element . id } "], `  +  ` ${ SELECTOR _DATA _TOGGLE$4 } [data-bs-target="# ${ this . _element . id } "] ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  toggleList  =  SelectorEngine . find ( SELECTOR _DATA _TOGGLE$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( let  i  =  0 ,  len  =  toggleList . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  elem  =  toggleList [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  selector  =  getSelectorFromElement ( elem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  filterElement  =  SelectorEngine . find ( selector ) . filter ( foundElem  =>  foundElem  ===  this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( selector  !==  null  &&  filterElement . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _selector  =  selector ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          this . _triggerArray . push ( elem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _parent  =  this . _config . parent  ?  this . _getParent ( )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _config . parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _addAriaAndCollapsedClass ( this . _element ,  this . _triggerArray ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . toggle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . toggle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _element . classList . contains ( CLASS _NAME _SHOW$8 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isTransitioning  ||  this . _element . classList . contains ( CLASS _NAME _SHOW$8 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  actives ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  activesData ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        actives  =  SelectorEngine . find ( SELECTOR _ACTIVES ,  this . _parent ) . filter ( elem  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  this . _config . parent  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  elem . getAttribute ( 'data-bs-parent' )  ===  this . _config . parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return  elem . classList . contains ( CLASS _NAME _COLLAPSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( actives . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          actives  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  container  =  SelectorEngine . findOne ( this . _selector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( actives )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  tempActiveData  =  actives . find ( elem  =>  container  !==  elem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activesData  =  tempActiveData  ?  Collapse . getInstance ( tempActiveData )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( activesData  &&  activesData . _isTransitioning )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  startEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( startEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( actives )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        actives . forEach ( elemActive  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( container  !==  elemActive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Collapse . collapseInterface ( elemActive ,  'hide' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( ! activesData )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Data . set ( elemActive ,  DATA _KEY$8 ,  null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  dimension  =  this . _getDimension ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _COLLAPSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _COLLAPSING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style [ dimension ]  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _triggerArray . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _triggerArray . forEach ( element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . classList . remove ( CLASS _NAME _COLLAPSED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . setAttribute ( 'aria-expanded' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . setTransitioning ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _COLLAPSING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _COLLAPSE ,  CLASS _NAME _SHOW$8 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . style [ dimension ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . setTransitioning ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  capitalizedDimension  =  dimension [ 0 ] . toUpperCase ( )  +  dimension . slice ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  scrollSize  =  ` scroll ${ capitalizedDimension } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . _element ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style [ dimension ]  =  ` ${ this . _element [ scrollSize ] } px ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isTransitioning  ||  ! this . _element . classList . contains ( CLASS _NAME _SHOW$8 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  startEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( startEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  dimension  =  this . _getDimension ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style [ dimension ]  =  ` ${ this . _element . getBoundingClientRect ( ) [ dimension ] } px ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reflow ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _COLLAPSING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _COLLAPSE ,  CLASS _NAME _SHOW$8 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  triggerArrayLength  =  this . _triggerArray . length ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( triggerArrayLength  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( let  i  =  0 ;  i  <  triggerArrayLength ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  trigger  =  this . _triggerArray [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  elem  =  getElementFromSelector ( trigger ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( elem  &&  ! elem . classList . contains ( CLASS _NAME _SHOW$8 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            trigger . classList . add ( CLASS _NAME _COLLAPSED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            trigger . setAttribute ( 'aria-expanded' ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . setTransitioning ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . setTransitioning ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _COLLAPSING ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _COLLAPSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style [ dimension ]  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . _element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setTransitioning ( isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isTransitioning  =  isTransitioning ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... config 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config . toggle  =  Boolean ( config . toggle ) ;  // Coerce string values
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$9 ,  config ,  DefaultType$8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getDimension ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( WIDTH )  ?  WIDTH  :  HEIGHT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getParent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      parent  =  getElement ( parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  selector  =  ` ${ SELECTOR _DATA _TOGGLE$4 } [data-bs-parent=" ${ parent } "] ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SelectorEngine . find ( selector ,  parent ) . forEach ( element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  selected  =  getElementFromSelector ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _addAriaAndCollapsedClass ( selected ,  [ element ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addAriaAndCollapsedClass ( element ,  triggerArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element  ||  ! triggerArray . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isOpen  =  element . classList . contains ( CLASS _NAME _SHOW$8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      triggerArray . forEach ( elem  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isOpen )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          elem . classList . remove ( CLASS _NAME _COLLAPSED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          elem . classList . add ( CLASS _NAME _COLLAPSED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elem . setAttribute ( 'aria-expanded' ,  isOpen ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  collapseInterface ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  data  =  Collapse . getInstance ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  _config  =  {  ... Default$8 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  &&  config  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! data  &&  _config . toggle  &&  typeof  config  ===  'string'  &&  /show|hide/ . test ( config ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _config . toggle  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data  =  new  Collapse ( element ,  _config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Collapse . collapseInterface ( this ,  config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$4 ,  SELECTOR _DATA _TOGGLE$4 ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( event . target . tagName  ===  'A'  ||  event . delegateTarget  &&  event . delegateTarget . tagName  ===  'A' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  triggerData  =  Manipulator . getDataAttributes ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  selector  =  getSelectorFromElement ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  selectorElements  =  SelectorEngine . find ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    selectorElements . forEach ( element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  data  =  Collapse . getInstance ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // update parent attribute
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( data . _parent  ===  null  &&  typeof  triggerData . parent  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          data . _config . parent  =  triggerData . parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          data . _parent  =  data . _getParent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config  =  'toggle' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config  =  triggerData ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Collapse . collapseInterface ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Collapse  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Collapse ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  dropdown . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$8  =  'dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$7  =  'bs.dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$7  =  ` . ${ DATA _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$4  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ESCAPE _KEY$2  =  'Escape' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SPACE _KEY  =  'Space' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TAB _KEY  =  'Tab' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _UP _KEY  =  'ArrowUp' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _DOWN _KEY  =  'ArrowDown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  RIGHT _MOUSE _BUTTON  =  2 ;  // MouseEvent.button value for the secondary button, usually the right button
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  REGEXP _KEYDOWN  =  new  RegExp ( ` ${ ARROW _UP _KEY } | ${ ARROW _DOWN _KEY } | ${ ESCAPE _KEY$2 } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$4  =  ` hide ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$4  =  ` hidden ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$4  =  ` show ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$4  =  ` shown ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK  =  ` click ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$3  =  ` click ${ EVENT _KEY$7 } ${ DATA _API _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DATA _API  =  ` keydown ${ EVENT _KEY$7 } ${ DATA _API _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYUP _DATA _API  =  ` keyup ${ EVENT _KEY$7 } ${ DATA _API _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$7  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPUP  =  'dropup' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPEND  =  'dropend' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPSTART  =  'dropstart' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _NAVBAR  =  'navbar' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$3  =  '[data-bs-toggle="dropdown"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _MENU  =  '.dropdown-menu' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAVBAR _NAV  =  '.navbar-nav' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _VISIBLE _ITEMS  =  '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _TOP  =  isRTL ( )  ?  'top-end'  :  'top-start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _TOPEND  =  isRTL ( )  ?  'top-start'  :  'top-end' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _BOTTOM  =  isRTL ( )  ?  'bottom-end'  :  'bottom-start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _BOTTOMEND  =  isRTL ( )  ?  'bottom-start'  :  'bottom-end' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _RIGHT  =  isRTL ( )  ?  'left-start'  :  'right-start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _LEFT  =  isRTL ( )  ?  'right-start'  :  'left-start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$7  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  [ 0 ,  2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    boundary :  'clippingParents' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reference :  'toggle' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display :  'dynamic' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autoClose :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$7  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  '(array|string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    boundary :  '(string|element)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reference :  '(string|element|object)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  '(null|object|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autoClose :  '(boolean|string)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Dropdown  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _popper  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _menu  =  this . _getMenuElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _inNavbar  =  this . _detectNavbar ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _addEventListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isDisabled ( this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isActive  =  this . _element . classList . contains ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isActive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isDisabled ( this . _element )  ||  this . _menu . classList . contains ( CLASS _NAME _SHOW$7 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  parent  =  Dropdown . getParentFromElement ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  relatedTarget  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  this . _element 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$4 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Totally disable Popper for Dropdowns in Navbar
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _inNavbar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Manipulator . setDataAttribute ( this . _menu ,  'popper' ,  'none' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  Popper _ _namespace  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( 'Bootstrap\'s dropdowns require Popper (https://popper.js.org)' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        let  referenceElement  =  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . reference  ===  'parent' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          referenceElement  =  parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( isElement ( this . _config . reference ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          referenceElement  =  getElement ( this . _config . reference ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( typeof  this . _config . reference  ===  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          referenceElement  =  this . _config . reference ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  popperConfig  =  this . _getPopperConfig ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  isDisplayStatic  =  popperConfig . modifiers . find ( modifier  =>  modifier . name  ===  'applyStyles'  &&  modifier . enabled  ===  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper  =  Popper _ _namespace . createPopper ( referenceElement ,  this . _menu ,  popperConfig ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isDisplayStatic )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Manipulator . setDataAttribute ( this . _menu ,  'popper' ,  'static' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }  // If this is a touch-enabled device we add extra
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // empty mouseover listeners to the body's immediate children;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // only needed because of broken event delegation on iOS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement  &&  ! parent . closest ( SELECTOR _NAVBAR _NAV ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ ] . concat ( ... document . body . children ) . forEach ( elem  =>  EventHandler . on ( elem ,  'mouseover' ,  noop ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-expanded' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _menu . classList . toggle ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . toggle ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _SHOWN$4 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isDisabled ( this . _element )  ||  ! this . _menu . classList . contains ( CLASS _NAME _SHOW$7 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  relatedTarget  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  this . _element 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _completeHide ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    update ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _inNavbar  =  this . _detectNavbar ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _CLICK ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . toggle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _completeHide ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$4 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // If this is a touch-enabled device we remove the extra
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // empty mouseover listeners we added for iOS support
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ ] . concat ( ... document . body . children ) . forEach ( elem  =>  EventHandler . off ( elem ,  'mouseover' ,  noop ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _menu . classList . remove ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-expanded' ,  'false' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Manipulator . removeDataAttribute ( this . _menu ,  'popper' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$4 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... this . constructor . Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... config 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$8 ,  config ,  this . constructor . DefaultType ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . reference  ===  'object'  &&  ! isElement ( config . reference )  &&  typeof  config . reference . getBoundingClientRect  !==  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Popper virtual elements require a getBoundingClientRect method
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  TypeError ( ` ${ NAME$8 . toUpperCase ( ) } : Option "reference" provided type "object" without a required "getBoundingClientRect" method. ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getMenuElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . next ( this . _element ,  SELECTOR _MENU ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getPlacement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  parentDropdown  =  this . _element . parentNode ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parentDropdown . classList . contains ( CLASS _NAME _DROPEND ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  PLACEMENT _RIGHT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parentDropdown . classList . contains ( CLASS _NAME _DROPSTART ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  PLACEMENT _LEFT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // We need to trim the value because custom properties can also include spaces
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isEnd  =  getComputedStyle ( this . _menu ) . getPropertyValue ( '--bs-position' ) . trim ( )  ===  'end' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parentDropdown . classList . contains ( CLASS _NAME _DROPUP ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  isEnd  ?  PLACEMENT _TOPEND  :  PLACEMENT _TOP ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  isEnd  ?  PLACEMENT _BOTTOMEND  :  PLACEMENT _BOTTOM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _detectNavbar ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . closest ( ` . ${ CLASS _NAME _NAVBAR } ` )  !==  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getOffset ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offset 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  offset  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  offset . split ( ',' ) . map ( val  =>  Number . parseInt ( val ,  10 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  offset  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  popperData  =>  offset ( popperData ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getPopperConfig ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  defaultBsPopperConfig  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  this . _getPlacement ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modifiers :  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'preventOverflow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            boundary :  this . _config . boundary 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'offset' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            offset :  this . _getOffset ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ;  // Disable Popper if we have a static display
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . display  ===  'static' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        defaultBsPopperConfig . modifiers  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'applyStyles' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          enabled :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  {  ... defaultBsPopperConfig , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  this . _config . popperConfig  ===  'function'  ?  this . _config . popperConfig ( defaultBsPopperConfig )  :  this . _config . popperConfig ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _selectMenuItem ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      key , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  items  =  SelectorEngine . find ( SELECTOR _VISIBLE _ITEMS ,  this . _menu ) . filter ( isVisible ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! items . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // if target isn't included in items (e.g. when expanding the dropdown)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // allow cycling to get the last item in case key equals ARROW_UP_KEY
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      getNextActiveElement ( items ,  target ,  key  ===  ARROW _DOWN _KEY ,  ! items . includes ( target ) ) . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  dropdownInterface ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  data  =  Dropdown . getOrCreateInstance ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Dropdown . dropdownInterface ( this ,  config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  clearMenus ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event  &&  ( event . button  ===  RIGHT _MOUSE _BUTTON  ||  event . type  ===  'keyup'  &&  event . key  !==  TAB _KEY ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  toggles  =  SelectorEngine . find ( SELECTOR _DATA _TOGGLE$3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( let  i  =  0 ,  len  =  toggles . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  context  =  Dropdown . getInstance ( toggles [ i ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! context  ||  context . _config . autoClose  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! context . _element . classList . contains ( CLASS _NAME _SHOW$7 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  relatedTarget  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  context . _element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  composedPath  =  event . composedPath ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  isMenuTarget  =  composedPath . includes ( context . _menu ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( composedPath . includes ( context . _element )  ||  context . _config . autoClose  ===  'inside'  &&  ! isMenuTarget  ||  context . _config . autoClose  ===  'outside'  &&  isMenuTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( context . _menu . contains ( event . target )  &&  ( event . type  ===  'keyup'  &&  event . key  ===  TAB _KEY  ||  /input|select|option|textarea|form/i . test ( event . target . tagName ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( event . type  ===  'click' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            relatedTarget . clickEvent  =  event ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context . _completeHide ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  getParentFromElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  getElementFromSelector ( element )  ||  element . parentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  dataApiKeydownHandler ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If not input/textarea:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If input/textarea:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //  - If space key => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //  - If key is other than escape
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //    - If key is not up or down => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      //    - If trigger inside the menu => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( /input|textarea/i . test ( event . target . tagName )  ?  event . key  ===  SPACE _KEY  ||  event . key  !==  ESCAPE _KEY$2  &&  ( event . key  !==  ARROW _DOWN _KEY  &&  event . key  !==  ARROW _UP _KEY  ||  event . target . closest ( SELECTOR _MENU ) )  :  ! REGEXP _KEYDOWN . test ( event . key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isActive  =  this . classList . contains ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isActive  &&  event . key  ===  ESCAPE _KEY$2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      event . stopPropagation ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isDisabled ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  getToggleButton  =  ( )  =>  this . matches ( SELECTOR _DATA _TOGGLE$3 )  ?  this  :  SelectorEngine . prev ( this ,  SELECTOR _DATA _TOGGLE$3 ) [ 0 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( event . key  ===  ESCAPE _KEY$2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        getToggleButton ( ) . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Dropdown . clearMenus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( event . key  ===  ARROW _UP _KEY  ||  event . key  ===  ARROW _DOWN _KEY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! isActive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          getToggleButton ( ) . click ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Dropdown . getInstance ( getToggleButton ( ) ) . _selectMenuItem ( event ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isActive  ||  event . key  ===  SPACE _KEY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Dropdown . clearMenus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _KEYDOWN _DATA _API ,  SELECTOR _DATA _TOGGLE$3 ,  Dropdown . dataApiKeydownHandler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _KEYDOWN _DATA _API ,  SELECTOR _MENU ,  Dropdown . dataApiKeydownHandler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$3 ,  Dropdown . clearMenus ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _KEYUP _DATA _API ,  Dropdown . clearMenus ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$3 ,  SELECTOR _DATA _TOGGLE$3 ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Dropdown . dropdownInterface ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Dropdown  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Dropdown ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  util / scrollBar . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _FIXED _CONTENT  =  '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _STICKY _CONTENT  =  '.sticky-top' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  ScrollBarHelper  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  document . body ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    getWidth ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  documentWidth  =  document . documentElement . clientWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Math . abs ( window . innerWidth  -  documentWidth ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  width  =  this . getWidth ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _disableOverFlow ( ) ;  // give padding to element to balance the hidden scrollbar width
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setElementAttributes ( this . _element ,  'paddingRight' ,  calculatedValue  =>  calculatedValue  +  width ) ;  // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setElementAttributes ( SELECTOR _FIXED _CONTENT ,  'paddingRight' ,  calculatedValue  =>  calculatedValue  +  width ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setElementAttributes ( SELECTOR _STICKY _CONTENT ,  'marginRight' ,  calculatedValue  =>  calculatedValue  -  width ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _disableOverFlow ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _saveInitialAttribute ( this . _element ,  'overflow' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style . overflow  =  'hidden' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setElementAttributes ( selector ,  styleProp ,  callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  scrollbarWidth  =  this . getWidth ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  manipulationCallBack  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( element  !==  this . _element  &&  window . innerWidth  >  element . clientWidth  +  scrollbarWidth )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _saveInitialAttribute ( element ,  styleProp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  calculatedValue  =  window . getComputedStyle ( element ) [ styleProp ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . style [ styleProp ]  =  ` ${ callback ( Number . parseFloat ( calculatedValue ) ) } px ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _applyManipulationCallback ( selector ,  manipulationCallBack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    reset ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( this . _element ,  'overflow' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( this . _element ,  'paddingRight' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( SELECTOR _FIXED _CONTENT ,  'paddingRight' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( SELECTOR _STICKY _CONTENT ,  'marginRight' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _saveInitialAttribute ( element ,  styleProp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  actualValue  =  element . style [ styleProp ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( actualValue )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Manipulator . setDataAttribute ( element ,  styleProp ,  actualValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _resetElementAttributes ( selector ,  styleProp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  manipulationCallBack  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  value  =  Manipulator . getDataAttribute ( element ,  styleProp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  value  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . style . removeProperty ( styleProp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Manipulator . removeDataAttribute ( element ,  styleProp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . style [ styleProp ]  =  value ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _applyManipulationCallback ( selector ,  manipulationCallBack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _applyManipulationCallback ( selector ,  callBack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isElement ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        callBack ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . find ( selector ,  this . _element ) . forEach ( callBack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isOverflowing ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . getWidth ( )  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  util / backdrop . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$6  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isVisible :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if false, we use the backdrop helper without adding any element to the dom
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isAnimated :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootElement :  'body' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // give the choice to place backdrop under different elements
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clickCallback :  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$6  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isVisible :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isAnimated :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootElement :  '(element|string)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clickCallback :  '(function|null)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$7  =  'backdrop' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _BACKDROP  =  'modal-backdrop' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$5  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$6  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEDOWN  =  ` mousedown.bs. ${ NAME$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Backdrop  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isAppended  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . isVisible )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _append ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . isAnimated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reflow ( this . _getElement ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _getElement ( ) . classList . add ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _emulateAnimation ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . isVisible )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _getElement ( ) . classList . remove ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _emulateAnimation ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  backdrop  =  document . createElement ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        backdrop . className  =  CLASS _NAME _BACKDROP ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _config . isAnimated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          backdrop . classList . add ( CLASS _NAME _FADE$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element  =  backdrop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  ?  config  :  { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ;  // use getElement() with the default "body" to get a fresh Element on each instantiation
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . rootElement  =  getElement ( config . rootElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$7 ,  config ,  DefaultType$6 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _append ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isAppended )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _config . rootElement . appendChild ( this . _getElement ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( this . _getElement ( ) ,  EVENT _MOUSEDOWN ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( this . _config . clickCallback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isAppended  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _isAppended )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  EVENT _MOUSEDOWN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isAppended  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _emulateAnimation ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      executeAfterTransition ( callback ,  this . _getElement ( ) ,  this . _config . isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  modal . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$6  =  'modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$6  =  'bs.modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$6  =  ` . ${ DATA _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$3  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ESCAPE _KEY$1  =  'Escape' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$5  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    focus :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$5  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  '(boolean|string)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    focus :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$3  =  ` hide ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE _PREVENTED  =  ` hidePrevented ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$3  =  ` hidden ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$3  =  ` show ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$3  =  ` shown ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSIN$2  =  ` focusin ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _RESIZE  =  ` resize ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DISMISS$2  =  ` click.dismiss ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DISMISS$1  =  ` keydown.dismiss ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEUP _DISMISS  =  ` mouseup.dismiss ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEDOWN _DISMISS  =  ` mousedown.dismiss ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$2  =  ` click ${ EVENT _KEY$6 } ${ DATA _API _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _OPEN  =  'modal-open' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$4  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$5  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _STATIC  =  'modal-static' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DIALOG  =  '.modal-dialog' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _MODAL _BODY  =  '.modal-body' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$2  =  '[data-bs-toggle="modal"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _DISMISS$2  =  '[data-bs-dismiss="modal"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Modal  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _dialog  =  SelectorEngine . findOne ( SELECTOR _DIALOG ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop  =  this . _initializeBackDrop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _ignoreBackdropClick  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _scrollBar  =  new  ScrollBarHelper ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _isShown  ?  this . hide ( )  :  this . show ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown  ||  this . _isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$3 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isAnimated ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isTransitioning  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _scrollBar . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      document . body . classList . add ( CLASS _NAME _OPEN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _adjustDialog ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setEscapeEvent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setResizeEvent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _CLICK _DISMISS$2 ,  SELECTOR _DATA _DISMISS$2 ,  event  =>  this . hide ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _dialog ,  EVENT _MOUSEDOWN _DISMISS ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . one ( this . _element ,  EVENT _MOUSEUP _DISMISS ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( event . target  ===  this . _element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _ignoreBackdropClick  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _showBackdrop ( ( )  =>  this . _showElement ( relatedTarget ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event  &&  [ 'A' ,  'AREA' ] . includes ( event . target . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _isShown  ||  this . _isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isAnimated  =  this . _isAnimated ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isAnimated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isTransitioning  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setEscapeEvent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setResizeEvent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  EVENT _CLICK _DISMISS$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _dialog ,  EVENT _MOUSEDOWN _DISMISS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  this . _hideModal ( ) ,  this . _element ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      [ window ,  this . _dialog ] . forEach ( htmlElement  =>  EventHandler . off ( htmlElement ,  EVENT _KEY$6 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       *  ` document `  has  2  events  ` EVENT_FOCUSIN `  and  ` EVENT_CLICK_DATA_API ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       *  Do  not  move  ` document `  in  ` htmlElements `  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       *  It  will  remove  ` EVENT_CLICK_DATA_API `  event  that  should  remain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    handleUpdate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _adjustDialog ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeBackDrop ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  new  Backdrop ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isVisible :  Boolean ( this . _config . backdrop ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // 'static' option will be translated to true, and booleans will keep their value
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isAnimated :  this . _isAnimated ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$6 ,  config ,  DefaultType$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _showElement ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isAnimated  =  this . _isAnimated ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  modalBody  =  SelectorEngine . findOne ( SELECTOR _MODAL _BODY ,  this . _dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _element . parentNode  ||  this . _element . parentNode . nodeType  !==  Node . ELEMENT _NODE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Don't move modal's DOM position
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        document . body . appendChild ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . style . display  =  'block' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . removeAttribute ( 'aria-hidden' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-modal' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'role' ,  'dialog' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . scrollTop  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( modalBody )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modalBody . scrollTop  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isAnimated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        reflow ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOW$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . focus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _enforceFocus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  transitionComplete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . focus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _element . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$3 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( transitionComplete ,  this . _dialog ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _enforceFocus ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$2 ) ;  // guard against infinite focus loop
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( document ,  EVENT _FOCUSIN$2 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( document  !==  event . target  &&  this . _element  !==  event . target  &&  ! this . _element . contains ( event . target ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _element . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setEscapeEvent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _KEYDOWN _DISMISS$1 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( this . _config . keyboard  &&  event . key  ===  ESCAPE _KEY$1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  else  if  ( ! this . _config . keyboard  &&  event . key  ===  ESCAPE _KEY$1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _triggerBackdropTransition ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . off ( this . _element ,  EVENT _KEYDOWN _DISMISS$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setResizeEvent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( window ,  EVENT _RESIZE ,  ( )  =>  this . _adjustDialog ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . off ( window ,  EVENT _RESIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _hideModal ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . style . display  =  'none' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-hidden' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . removeAttribute ( 'aria-modal' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . removeAttribute ( 'role' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . hide ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        document . body . classList . remove ( CLASS _NAME _OPEN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _resetAdjustments ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _scrollBar . reset ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _showBackdrop ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _CLICK _DISMISS$2 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _ignoreBackdropClick )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _ignoreBackdropClick  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( event . target  !==  event . currentTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _config . backdrop  ===  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( this . _config . backdrop  ===  'static' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _triggerBackdropTransition ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . show ( callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isAnimated ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( CLASS _NAME _FADE$4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _triggerBackdropTransition ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE _PREVENTED ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        classList , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        scrollHeight , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        style 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isModalOverflowing  =  scrollHeight  >  document . documentElement . clientHeight ;  // return if the following background transition hasn't yet completed
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isModalOverflowing  &&  style . overflowY  ===  'hidden'  ||  classList . contains ( CLASS _NAME _STATIC ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isModalOverflowing )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        style . overflowY  =  'hidden' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      classList . add ( CLASS _NAME _STATIC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        classList . remove ( CLASS _NAME _STATIC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! isModalOverflowing )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _queueCallback ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            style . overflowY  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ,  this . _dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ,  this . _dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // ----------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // the following methods are used to handle overflowing modals
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // ----------------------------------------------------------------------
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _adjustDialog ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isModalOverflowing  =  this . _element . scrollHeight  >  document . documentElement . clientHeight ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  scrollbarWidth  =  this . _scrollBar . getWidth ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isBodyOverflowing  =  scrollbarWidth  >  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isBodyOverflowing  &&  isModalOverflowing  &&  ! isRTL ( )  ||  isBodyOverflowing  &&  ! isModalOverflowing  &&  isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . style . paddingLeft  =  ` ${ scrollbarWidth } px ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isBodyOverflowing  &&  ! isModalOverflowing  &&  ! isRTL ( )  ||  ! isBodyOverflowing  &&  isModalOverflowing  &&  isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . style . paddingRight  =  ` ${ scrollbarWidth } px ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _resetAdjustments ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . style . paddingLeft  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . style . paddingRight  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config ,  relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Modal . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        data [ config ] ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$2 ,  SELECTOR _DATA _TOGGLE$2 ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  target  =  getElementFromSelector ( this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( [ 'A' ,  'AREA' ] . includes ( this . tagName ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    EventHandler . one ( target ,  EVENT _SHOW$3 ,  showEvent  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // only register focus restorer if modal will actually get shown
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . one ( target ,  EVENT _HIDDEN$3 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( isVisible ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  data  =  Modal . getOrCreateInstance ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . toggle ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Modal  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Modal ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  offcanvas . js 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/master/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$5  =  'offcanvas' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$5  =  'bs.offcanvas' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$5  =  ` . ${ DATA _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$2  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API$1  =  ` load ${ EVENT _KEY$5 } ${ DATA _API _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ESCAPE _KEY  =  'Escape' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$4  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    scroll :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$4  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    scroll :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$4  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  OPEN _SELECTOR  =  '.offcanvas.show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$2  =  ` show ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$2  =  ` shown ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$2  =  ` hide ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$2  =  ` hidden ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSIN$1  =  ` focusin ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$1  =  ` click ${ EVENT _KEY$5 } ${ DATA _API _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DISMISS$1  =  ` click.dismiss ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DISMISS  =  ` keydown.dismiss ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _DISMISS$1  =  '[data-bs-dismiss="offcanvas"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$1  =  '[data-bs-toggle="offcanvas"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Offcanvas  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop  =  this . _initializeBackDrop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _addEventListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _isShown  ?  this . hide ( )  :  this . show ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$2 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . style . visibility  =  'visible' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _config . scroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        new  ScrollBarHelper ( ) . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _enforceFocusOnElement ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . removeAttribute ( 'aria-hidden' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-modal' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'role' ,  'dialog' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOW$4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  completeCallBack  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$2 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( completeCallBack ,  this . _element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _isShown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . blur ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  completeCallback  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . setAttribute ( 'aria-hidden' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . removeAttribute ( 'aria-modal' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . removeAttribute ( 'role' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . style . visibility  =  'hidden' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _config . scroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          new  ScrollBarHelper ( ) . reset ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( completeCallback ,  this . _element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$4 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$5 ,  config ,  DefaultType$4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeBackDrop ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  new  Backdrop ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isVisible :  this . _config . backdrop , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isAnimated :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootElement :  this . _element . parentNode , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clickCallback :  ( )  =>  this . hide ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _enforceFocusOnElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _FOCUSIN$1 ) ;  // guard against infinite focus loop
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( document ,  EVENT _FOCUSIN$1 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( document  !==  event . target  &&  element  !==  event . target  &&  ! element . contains ( event . target ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _CLICK _DISMISS$1 ,  SELECTOR _DATA _DISMISS$1 ,  ( )  =>  this . hide ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _KEYDOWN _DISMISS ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . keyboard  &&  event . key  ===  ESCAPE _KEY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Offcanvas . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( data [ config ]  ===  undefined  ||  config . startsWith ( '_' )  ||  config  ===  'constructor' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        data [ config ] ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$1 ,  SELECTOR _DATA _TOGGLE$1 ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  target  =  getElementFromSelector ( this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( [ 'A' ,  'AREA' ] . includes ( this . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isDisabled ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    EventHandler . one ( target ,  EVENT _HIDDEN$2 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // focus on trigger when it is closed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isVisible ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ;  // avoid conflict when clicking a toggler of an offcanvas, while another is open
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  allReadyOpen  =  SelectorEngine . findOne ( OPEN _SELECTOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( allReadyOpen  &&  allReadyOpen  !==  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Offcanvas . getInstance ( allReadyOpen ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  data  =  Offcanvas . getOrCreateInstance ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . toggle ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API$1 ,  ( )  =>  SelectorEngine . find ( OPEN _SELECTOR ) . forEach ( el  =>  Offcanvas . getOrCreateInstance ( el ) . show ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Offcanvas ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  util / sanitizer . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  uriAttrs  =  new  Set ( [ 'background' ,  'cite' ,  'href' ,  'itemtype' ,  'longdesc' ,  'poster' ,  'src' ,  'xlink:href' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARIA _ATTRIBUTE _PATTERN  =  /^aria-[\w-]*$/i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  A  pattern  that  recognizes  a  commonly  useful  subset  of  URLs  that  are  safe . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Shoutout  to  Angular  7  https : //github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SAFE _URL _PATTERN  =  /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  A  pattern  that  matches  safe  data  URLs .  Only  matches  image ,  video  and  audio  types . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Shoutout  to  Angular  7  https : //github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DATA _URL _PATTERN  =  /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  allowedAttribute  =  ( attr ,  allowedAttributeList )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  attrName  =  attr . nodeName . toLowerCase ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( allowedAttributeList . includes ( attrName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( uriAttrs . has ( attrName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Boolean ( SAFE _URL _PATTERN . test ( attr . nodeValue )  ||  DATA _URL _PATTERN . test ( attr . nodeValue ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  regExp  =  allowedAttributeList . filter ( attrRegex  =>  attrRegex  instanceof  RegExp ) ;  // Check if a regular expression validates the attribute.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  len  =  regExp . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( regExp [ i ] . test ( attrName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultAllowlist  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Global attributes allowed on any supplied element below.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    '*' :  [ 'class' ,  'dir' ,  'id' ,  'lang' ,  'role' ,  ARIA _ATTRIBUTE _PATTERN ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    a :  [ 'target' ,  'href' ,  'title' ,  'rel' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    area :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    b :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    br :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    col :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    code :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    div :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    em :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hr :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h1 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h2 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h3 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h4 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h5 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    h6 :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    i :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    img :  [ 'src' ,  'srcset' ,  'alt' ,  'title' ,  'width' ,  'height' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    li :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ol :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    p :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pre :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    s :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    small :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    span :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sub :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sup :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    strong :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    u :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ul :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  sanitizeHtml ( unsafeHtml ,  allowList ,  sanitizeFn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! unsafeHtml . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  unsafeHtml ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( sanitizeFn  &&  typeof  sanitizeFn  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  sanitizeFn ( unsafeHtml ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  domParser  =  new  window . DOMParser ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  createdDocument  =  domParser . parseFromString ( unsafeHtml ,  'text/html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  allowlistKeys  =  Object . keys ( allowList ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  elements  =  [ ] . concat ( ... createdDocument . body . querySelectorAll ( '*' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( let  i  =  0 ,  len  =  elements . length ;  i  <  len ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  el  =  elements [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  elName  =  el . nodeName . toLowerCase ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! allowlistKeys . includes ( elName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        el . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  attributeList  =  [ ] . concat ( ... el . attributes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  allowedAttributes  =  [ ] . concat ( allowList [ '*' ]  ||  [ ] ,  allowList [ elName ]  ||  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      attributeList . forEach ( attr  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! allowedAttribute ( attr ,  allowedAttributes ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          el . removeAttribute ( attr . nodeName ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  createdDocument . body . innerHTML ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  tooltip . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$4  =  'tooltip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$4  =  'bs.tooltip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$4  =  ` . ${ DATA _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _PREFIX$1  =  'bs-tooltip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  BSCLS _PREFIX _REGEX$1  =  new  RegExp ( ` (^| \\ s) ${ CLASS _PREFIX$1 } \\ S+ ` ,  'g' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DISALLOWED _ATTRIBUTES  =  new  Set ( [ 'sanitize' ,  'allowList' ,  'sanitizeFn' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$3  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    animation :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title :  '(string|element|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delay :  '(number|object)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    html :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    selector :  '(string|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  '(string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  '(array|string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    container :  '(string|element|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fallbackPlacements :  'array' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    boundary :  '(string|element)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    customClass :  '(string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitize :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  '(null|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allowList :  'object' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  '(null|object|function)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  AttachmentMap  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AUTO :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    TOP :  'top' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    RIGHT :  isRTL ( )  ?  'left'  :  'right' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    BOTTOM :  'bottom' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LEFT :  isRTL ( )  ?  'right'  :  'left' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$3  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    animation :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  '<div class="tooltip" role="tooltip">'  +  '<div class="tooltip-arrow"></div>'  +  '<div class="tooltip-inner"></div>'  +  '</div>' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'hover focus' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delay :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    html :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    selector :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  'top' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  [ 0 ,  0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    container :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fallbackPlacements :  [ 'top' ,  'right' ,  'bottom' ,  'left' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    boundary :  'clippingParents' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    customClass :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitize :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allowList :  DefaultAllowlist , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Event$2  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HIDE :  ` hide ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HIDDEN :  ` hidden ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SHOW :  ` show ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SHOWN :  ` shown ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    INSERTED :  ` inserted ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CLICK :  ` click ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FOCUSIN :  ` focusin ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FOCUSOUT :  ` focusout ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MOUSEENTER :  ` mouseenter ${ EVENT _KEY$4 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MOUSELEAVE :  ` mouseleave ${ EVENT _KEY$4 } ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$3  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _MODAL  =  'modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$3  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  HOVER _STATE _SHOW  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  HOVER _STATE _OUT  =  'out' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _TOOLTIP _INNER  =  '.tooltip-inner' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _HOVER  =  'hover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _FOCUS  =  'focus' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _CLICK  =  'click' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _MANUAL  =  'manual' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Tooltip  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  Popper _ _namespace  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  TypeError ( 'Bootstrap\'s tooltips require Popper (https://popper.js.org)' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ) ;  // private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isEnabled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _timeout  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _hoverState  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTrigger  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _popper  =  null ;  // Protected
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . tip  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Event ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Event$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enable ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isEnabled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    disable ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isEnabled  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggleEnabled ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isEnabled  =  ! this . _isEnabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _isEnabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  context  =  this . _initializeOnDelegatedTarget ( event ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        context . _activeTrigger . click  =  ! context . _activeTrigger . click ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( context . _isWithActiveTrigger ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          context . _enter ( null ,  context ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          context . _leave ( null ,  context ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . getTipElement ( ) . classList . contains ( CLASS _NAME _SHOW$3 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _leave ( null ,  this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _enter ( null ,  this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      clearTimeout ( this . _timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element . closest ( ` . ${ CLASS _NAME _MODAL } ` ) ,  'hide.bs.modal' ,  this . _hideModalHandler ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . tip . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . destroy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _element . style . display  ===  'none' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  Error ( 'Please use show on visible elements' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! ( this . isWithContent ( )  &&  this . _isEnabled ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  this . constructor . Event . SHOW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  shadowRoot  =  findShadowRoot ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isInTheDom  =  shadowRoot  ===  null  ?  this . _element . ownerDocument . documentElement . contains ( this . _element )  :  shadowRoot . contains ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented  ||  ! isInTheDom )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tipId  =  getUID ( this . constructor . NAME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . setAttribute ( 'id' ,  tipId ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-describedby' ,  tipId ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . setContent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . animation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tip . classList . add ( CLASS _NAME _FADE$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  placement  =  typeof  this . _config . placement  ===  'function'  ?  this . _config . placement . call ( this ,  tip ,  this . _element )  :  this . _config . placement ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  attachment  =  this . _getAttachment ( placement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _addAttachmentClass ( attachment ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        container 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Data . set ( tip ,  this . constructor . DATA _KEY ,  this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _element . ownerDocument . documentElement . contains ( this . tip ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        container . appendChild ( tip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . Event . INSERTED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper  =  Popper _ _namespace . createPopper ( this . _element ,  tip ,  this . _getPopperConfig ( attachment ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      tip . classList . add ( CLASS _NAME _SHOW$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  customClass  =  typeof  this . _config . customClass  ===  'function'  ?  this . _config . customClass ( )  :  this . _config . customClass ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( customClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tip . classList . add ( ... customClass . split ( ' ' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // If this is a touch-enabled device we add extra
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // empty mouseover listeners to the body's immediate children;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // only needed because of broken event delegation on iOS
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ ] . concat ( ... document . body . children ) . forEach ( element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( element ,  'mouseover' ,  noop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  prevHoverState  =  this . _hoverState ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _hoverState  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . Event . SHOWN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( prevHoverState  ===  HOVER _STATE _OUT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _leave ( null ,  this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isAnimated  =  this . tip . classList . contains ( CLASS _NAME _FADE$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . tip ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _isWithActiveTrigger ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _hoverState  !==  HOVER _STATE _SHOW )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          tip . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _cleanTipClass ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . removeAttribute ( 'aria-describedby' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . Event . HIDDEN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _popper . destroy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          this . _popper  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  this . constructor . Event . HIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      tip . classList . remove ( CLASS _NAME _SHOW$3 ) ;  // If this is a touch-enabled device we remove the extra
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // empty mouseover listeners we added for iOS support
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ ] . concat ( ... document . body . children ) . forEach ( element  =>  EventHandler . off ( element ,  'mouseover' ,  noop ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _activeTrigger [ TRIGGER _CLICK ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTrigger [ TRIGGER _FOCUS ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTrigger [ TRIGGER _HOVER ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isAnimated  =  this . tip . classList . contains ( CLASS _NAME _FADE$3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . tip ,  isAnimated ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _hoverState  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    update ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Protected
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isWithContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Boolean ( this . getTitle ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    getTipElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . tip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  element  =  document . createElement ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . innerHTML  =  this . _config . template ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . tip  =  element . children [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . tip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . setElementContent ( SelectorEngine . findOne ( SELECTOR _TOOLTIP _INNER ,  tip ) ,  this . getTitle ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . classList . remove ( CLASS _NAME _FADE$3 ,  CLASS _NAME _SHOW$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setElementContent ( element ,  content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( element  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isElement ( content ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        content  =  getElement ( content ) ;  // content is a DOM node or a jQuery
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _config . html )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( content . parentNode  !==  element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            element . innerHTML  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            element . appendChild ( content ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          element . textContent  =  content . textContent ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . html )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . sanitize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          content  =  sanitizeHtml ( content ,  this . _config . allowList ,  this . _config . sanitizeFn ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        element . innerHTML  =  content ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . textContent  =  content ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    getTitle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  title  =  this . _element . getAttribute ( 'data-bs-original-title' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! title )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        title  =  typeof  this . _config . title  ===  'function'  ?  this . _config . title . call ( this . _element )  :  this . _config . title ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  title ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    updateAttachment ( attachment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( attachment  ===  'right' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  'end' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( attachment  ===  'left' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  'start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  attachment ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeOnDelegatedTarget ( event ,  context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  dataKey  =  this . constructor . DATA _KEY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      context  =  context  ||  Data . get ( event . delegateTarget ,  dataKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context  =  new  this . constructor ( event . delegateTarget ,  this . _getDelegateConfig ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Data . set ( event . delegateTarget ,  dataKey ,  context ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  context ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getOffset ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offset 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  offset  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  offset . split ( ',' ) . map ( val  =>  Number . parseInt ( val ,  10 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  offset  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  popperData  =>  offset ( popperData ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getPopperConfig ( attachment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  defaultBsPopperConfig  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  attachment , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modifiers :  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'flip' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fallbackPlacements :  this . _config . fallbackPlacements 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'offset' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            offset :  this . _getOffset ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'preventOverflow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            boundary :  this . _config . boundary 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'arrow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            element :  ` . ${ this . constructor . NAME } -arrow ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'onChange' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          phase :  'afterWrite' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fn :  data  =>  this . _handlePopperPlacementChange ( data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onFirstUpdate :  data  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( data . options . placement  !==  data . placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _handlePopperPlacementChange ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  {  ... defaultBsPopperConfig , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  this . _config . popperConfig  ===  'function'  ?  this . _config . popperConfig ( defaultBsPopperConfig )  :  this . _config . popperConfig ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addAttachmentClass ( attachment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . getTipElement ( ) . classList . add ( ` ${ CLASS _PREFIX$1 } - ${ this . updateAttachment ( attachment ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getAttachment ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  AttachmentMap [ placement . toUpperCase ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  triggers  =  this . _config . trigger . split ( ' ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      triggers . forEach ( trigger  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( trigger  ===  'click' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  this . constructor . Event . CLICK ,  this . _config . selector ,  event  =>  this . toggle ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  if  ( trigger  !==  TRIGGER _MANUAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  eventIn  =  trigger  ===  TRIGGER _HOVER  ?  this . constructor . Event . MOUSEENTER  :  this . constructor . Event . FOCUSIN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  eventOut  =  trigger  ===  TRIGGER _HOVER  ?  this . constructor . Event . MOUSELEAVE  :  this . constructor . Event . FOCUSOUT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  eventIn ,  this . _config . selector ,  event  =>  this . _enter ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  eventOut ,  this . _config . selector ,  event  =>  this . _leave ( event ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _hideModalHandler  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element . closest ( ` . ${ CLASS _NAME _MODAL } ` ) ,  'hide.bs.modal' ,  this . _hideModalHandler ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _config  =  {  ... this . _config , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          trigger :  'manual' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          selector :  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _fixTitle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _fixTitle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  title  =  this . _element . getAttribute ( 'title' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  originalTitleType  =  typeof  this . _element . getAttribute ( 'data-bs-original-title' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( title  ||  originalTitleType  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . setAttribute ( 'data-bs-original-title' ,  title  ||  '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( title  &&  ! this . _element . getAttribute ( 'aria-label' )  &&  ! this . _element . textContent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _element . setAttribute ( 'aria-label' ,  title ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . setAttribute ( 'title' ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _enter ( event ,  context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      context  =  this . _initializeOnDelegatedTarget ( event ,  context ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . _activeTrigger [ event . type  ===  'focusin'  ?  TRIGGER _FOCUS  :  TRIGGER _HOVER ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( context . getTipElement ( ) . classList . contains ( CLASS _NAME _SHOW$3 )  ||  context . _hoverState  ===  HOVER _STATE _SHOW )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . _hoverState  =  HOVER _STATE _SHOW ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      clearTimeout ( context . _timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      context . _hoverState  =  HOVER _STATE _SHOW ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! context . _config . delay  ||  ! context . _config . delay . show )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      context . _timeout  =  setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( context . _hoverState  ===  HOVER _STATE _SHOW )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          context . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ,  context . _config . delay . show ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _leave ( event ,  context )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      context  =  this . _initializeOnDelegatedTarget ( event ,  context ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . _activeTrigger [ event . type  ===  'focusout'  ?  TRIGGER _FOCUS  :  TRIGGER _HOVER ]  =  context . _element . contains ( event . relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( context . _isWithActiveTrigger ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      clearTimeout ( context . _timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      context . _hoverState  =  HOVER _STATE _OUT ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! context . _config . delay  ||  ! context . _config . delay . hide )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        context . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      context . _timeout  =  setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( context . _hoverState  ===  HOVER _STATE _OUT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          context . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ,  context . _config . delay . hide ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isWithActiveTrigger ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  trigger  in  this . _activeTrigger )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _activeTrigger [ trigger ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  dataAttributes  =  Manipulator . getDataAttributes ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( dataAttributes ) . forEach ( dataAttr  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( DISALLOWED _ATTRIBUTES . has ( dataAttr ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          delete  dataAttributes [ dataAttr ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... this . constructor . Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... dataAttributes , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  &&  config  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . container  =  config . container  ===  false  ?  document . body  :  getElement ( config . container ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . delay  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . delay  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          show :  config . delay , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          hide :  config . delay 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . title  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . title  =  config . title . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . content  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . content  =  config . content . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$4 ,  config ,  this . constructor . DefaultType ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( config . sanitize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . template  =  sanitizeHtml ( config . template ,  config . allowList ,  config . sanitizeFn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getDelegateConfig ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  config  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  key  in  this . _config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( this . constructor . Default [ key ]  !==  this . _config [ key ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            config [ key ]  =  this . _config [ key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _cleanTipClass ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tabClass  =  tip . getAttribute ( 'class' ) . match ( BSCLS _PREFIX _REGEX$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( tabClass  !==  null  &&  tabClass . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tabClass . map ( token  =>  token . trim ( ) ) . forEach ( tClass  =>  tip . classList . remove ( tClass ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _handlePopperPlacementChange ( popperData )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        state 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  popperData ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! state )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . tip  =  state . elements . popper ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _cleanTipClass ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _addAttachmentClass ( this . _getAttachment ( state . placement ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Tooltip . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Tooltip  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Tooltip ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  popover . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$3  =  'popover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$3  =  'bs.popover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$3  =  ` . ${ DATA _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _PREFIX  =  'bs-popover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  BSCLS _PREFIX _REGEX  =  new  RegExp ( ` (^| \\ s) ${ CLASS _PREFIX } \\ S+ ` ,  'g' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$2  =  {  ... Tooltip . Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  'right' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  [ 0 ,  8 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'click' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  '<div class="popover" role="tooltip">'  +  '<div class="popover-arrow"></div>'  +  '<h3 class="popover-header"></h3>'  +  '<div class="popover-body"></div>'  +  '</div>' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$2  =  {  ... Tooltip . DefaultType , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  '(string|element|function)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Event$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HIDE :  ` hide ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HIDDEN :  ` hidden ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SHOW :  ` show ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SHOWN :  ` shown ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    INSERTED :  ` inserted ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CLICK :  ` click ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FOCUSIN :  ` focusin ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FOCUSOUT :  ` focusout ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MOUSEENTER :  ` mouseenter ${ EVENT _KEY$3 } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MOUSELEAVE :  ` mouseleave ${ EVENT _KEY$3 } ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$2  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$2  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _TITLE  =  '.popover-header' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _CONTENT  =  '.popover-body' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Popover  extends  Tooltip  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Event ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Event$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Overrides
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isWithContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . getTitle ( )  ||  this . _getContent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    getTipElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  this . tip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . tip  =  super . getTipElement ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . getTitle ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . findOne ( SELECTOR _TITLE ,  this . tip ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _getContent ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . findOne ( SELECTOR _CONTENT ,  this . tip ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . tip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ;  // we use append for html objects to maintain js events
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . setElementContent ( SelectorEngine . findOne ( SELECTOR _TITLE ,  tip ) ,  this . getTitle ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  content  =  this . _getContent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  content  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        content  =  content . call ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . setElementContent ( SelectorEngine . findOne ( SELECTOR _CONTENT ,  tip ) ,  content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . classList . remove ( CLASS _NAME _FADE$2 ,  CLASS _NAME _SHOW$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addAttachmentClass ( attachment )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . getTipElement ( ) . classList . add ( ` ${ CLASS _PREFIX } - ${ this . updateAttachment ( attachment ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . getAttribute ( 'data-bs-content' )  ||  this . _config . content ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _cleanTipClass ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tip  =  this . getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tabClass  =  tip . getAttribute ( 'class' ) . match ( BSCLS _PREFIX _REGEX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( tabClass  !==  null  &&  tabClass . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tabClass . map ( token  =>  token . trim ( ) ) . forEach ( tClass  =>  tip . classList . remove ( tClass ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Popover . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Popover  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Popover ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  scrollspy . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$2  =  'scrollspy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$2  =  'bs.scrollspy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$2  =  ` . ${ DATA _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$1  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  10 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    target :  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  'number' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    target :  '(string|element)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _ACTIVATE  =  ` activate ${ EVENT _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SCROLL  =  ` scroll ${ EVENT _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API  =  ` load ${ EVENT _KEY$2 } ${ DATA _API _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPDOWN _ITEM  =  'dropdown-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE$1  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _SPY  =  '[data-bs-spy="scroll"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _LIST _GROUP$1  =  '.nav, .list-group' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _LINKS  =  '.nav-link' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _ITEMS  =  '.nav-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _LIST _ITEMS  =  '.list-group-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN$1  =  '.dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _TOGGLE$1  =  '.dropdown-toggle' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  METHOD _OFFSET  =  'offset' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  METHOD _POSITION  =  'position' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  ScrollSpy  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _scrollElement  =  this . _element . tagName  ===  'BODY'  ?  window  :  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _selector  =  ` ${ this . _config . target }   ${ SELECTOR _NAV _LINKS } ,  ${ this . _config . target }   ${ SELECTOR _LIST _ITEMS } ,  ${ this . _config . target }  . ${ CLASS _NAME _DROPDOWN _ITEM } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _offsets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _targets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTarget  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _scrollHeight  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _scrollElement ,  EVENT _SCROLL ,  ( )  =>  this . _process ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . refresh ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _process ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    refresh ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  autoMethod  =  this . _scrollElement  ===  this . _scrollElement . window  ?  METHOD _OFFSET  :  METHOD _POSITION ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  offsetMethod  =  this . _config . method  ===  'auto'  ?  autoMethod  :  this . _config . method ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  offsetBase  =  offsetMethod  ===  METHOD _POSITION  ?  this . _getScrollTop ( )  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _offsets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _targets  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _scrollHeight  =  this . _getScrollHeight ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  targets  =  SelectorEngine . find ( this . _selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      targets . map ( element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  targetSelector  =  getSelectorFromElement ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  target  =  targetSelector  ?  SelectorEngine . findOne ( targetSelector )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  targetBCR  =  target . getBoundingClientRect ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( targetBCR . width  ||  targetBCR . height )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  [ Manipulator [ offsetMethod ] ( target ) . top  +  offsetBase ,  targetSelector ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) . filter ( item  =>  item ) . sort ( ( a ,  b )  =>  a [ 0 ]  -  b [ 0 ] ) . forEach ( item  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _offsets . push ( item [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _targets . push ( item [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _scrollElement ,  EVENT _KEY$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  &&  config  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . target  !==  'string'  &&  isElement ( config . target ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  =  config . target ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          id  =  getUID ( NAME$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          config . target . id  =  id ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        config . target  =  ` # ${ id } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME$2 ,  config ,  DefaultType$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getScrollTop ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _scrollElement  ===  window  ?  this . _scrollElement . pageYOffset  :  this . _scrollElement . scrollTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getScrollHeight ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _scrollElement . scrollHeight  ||  Math . max ( document . body . scrollHeight ,  document . documentElement . scrollHeight ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getOffsetHeight ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _scrollElement  ===  window  ?  window . innerHeight  :  this . _scrollElement . getBoundingClientRect ( ) . height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _process ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  scrollTop  =  this . _getScrollTop ( )  +  this . _config . offset ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  scrollHeight  =  this . _getScrollHeight ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  maxScroll  =  this . _config . offset  +  scrollHeight  -  this . _getOffsetHeight ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _scrollHeight  !==  scrollHeight )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . refresh ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( scrollTop  >=  maxScroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  target  =  this . _targets [ this . _targets . length  -  1 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _activeTarget  !==  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _activate ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _activeTarget  &&  scrollTop  <  this . _offsets [ 0 ]  &&  this . _offsets [ 0 ]  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        this . _activeTarget  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( let  i  =  this . _offsets . length ;  i -- ; )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  isActiveTarget  =  this . _activeTarget  !==  this . _targets [ i ]  &&  scrollTop  >=  this . _offsets [ i ]  &&  ( typeof  this . _offsets [ i  +  1 ]  ===  'undefined'  ||  scrollTop  <  this . _offsets [ i  +  1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isActiveTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _activate ( this . _targets [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _activate ( target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTarget  =  target ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  queries  =  this . _selector . split ( ',' ) . map ( selector  =>  ` ${ selector } [data-bs-target=" ${ target } "], ${ selector } [href=" ${ target } "] ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  link  =  SelectorEngine . findOne ( queries . join ( ',' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( link . classList . contains ( CLASS _NAME _DROPDOWN _ITEM ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . findOne ( SELECTOR _DROPDOWN _TOGGLE$1 ,  link . closest ( SELECTOR _DROPDOWN$1 ) ) . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        link . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Set triggered link as active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        link . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . parents ( link ,  SELECTOR _NAV _LIST _GROUP$1 ) . forEach ( listGroup  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // Set triggered links parents as active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          SelectorEngine . prev ( listGroup ,  ` ${ SELECTOR _NAV _LINKS } ,  ${ SELECTOR _LIST _ITEMS } ` ) . forEach ( item  =>  item . classList . add ( CLASS _NAME _ACTIVE$1 ) ) ;  // Handle special case when .nav-link is inside .nav-item
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          SelectorEngine . prev ( listGroup ,  SELECTOR _NAV _ITEMS ) . forEach ( navItem  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SelectorEngine . children ( navItem ,  SELECTOR _NAV _LINKS ) . forEach ( item  =>  item . classList . add ( CLASS _NAME _ACTIVE$1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _scrollElement ,  EVENT _ACTIVATE ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _clear ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      SelectorEngine . find ( this . _selector ) . filter ( node  =>  node . classList . contains ( CLASS _NAME _ACTIVE$1 ) ) . forEach ( node  =>  node . classList . remove ( CLASS _NAME _ACTIVE$1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  ScrollSpy . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SelectorEngine . find ( SELECTOR _DATA _SPY ) . forEach ( spy  =>  new  ScrollSpy ( spy ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . ScrollSpy  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( ScrollSpy ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  tab . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$1  =  'tab' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$1  =  'bs.tab' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$1  =  ` . ${ DATA _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$1  =  ` hide ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$1  =  ` hidden ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$1  =  ` show ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$1  =  ` shown ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API  =  ` click ${ EVENT _KEY$1 } ${ DATA _API _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPDOWN _MENU  =  'dropdown-menu' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$1  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$1  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN  =  '.dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _LIST _GROUP  =  '.nav, .list-group' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE  =  '.active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE _UL  =  ':scope > li > .active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE  =  '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _TOGGLE  =  '.dropdown-toggle' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _ACTIVE _CHILD  =  ':scope > .dropdown-menu .active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Tab  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _element . parentNode  &&  this . _element . parentNode . nodeType  ===  Node . ELEMENT _NODE  &&  this . _element . classList . contains ( CLASS _NAME _ACTIVE ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  previous ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  target  =  getElementFromSelector ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  listElement  =  this . _element . closest ( SELECTOR _NAV _LIST _GROUP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( listElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  itemSelector  =  listElement . nodeName  ===  'UL'  ||  listElement . nodeName  ===  'OL'  ?  SELECTOR _ACTIVE _UL  :  SELECTOR _ACTIVE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        previous  =  SelectorEngine . find ( itemSelector ,  listElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        previous  =  previous [ previous . length  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  previous  ?  EventHandler . trigger ( previous ,  EVENT _HIDE$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  this . _element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  previous 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented  ||  hideEvent  !==  null  &&  hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _activate ( this . _element ,  listElement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( previous ,  EVENT _HIDDEN$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  this . _element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  previous 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _activate ( target ,  target . parentNode ,  complete ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        complete ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _activate ( element ,  container ,  callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  activeElements  =  container  &&  ( container . nodeName  ===  'UL'  ||  container . nodeName  ===  'OL' )  ?  SelectorEngine . find ( SELECTOR _ACTIVE _UL ,  container )  :  SelectorEngine . children ( container ,  SELECTOR _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  active  =  activeElements [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isTransitioning  =  callback  &&  active  &&  active . classList . contains ( CLASS _NAME _FADE$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  this . _transitionComplete ( element ,  active ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( active  &&  isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        active . classList . remove ( CLASS _NAME _SHOW$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _queueCallback ( complete ,  element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        complete ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _transitionComplete ( element ,  active ,  callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( active )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        active . classList . remove ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  dropdownChild  =  SelectorEngine . findOne ( SELECTOR _DROPDOWN _ACTIVE _CHILD ,  active . parentNode ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( dropdownChild )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          dropdownChild . classList . remove ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( active . getAttribute ( 'role' )  ===  'tab' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          active . setAttribute ( 'aria-selected' ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      element . classList . add ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( element . getAttribute ( 'role' )  ===  'tab' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'aria-selected' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      reflow ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( element . classList . contains ( CLASS _NAME _FADE$1 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . classList . add ( CLASS _NAME _SHOW$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  parent  =  element . parentNode ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parent  &&  parent . nodeName  ===  'LI' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parent  =  parent . parentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parent  &&  parent . classList . contains ( CLASS _NAME _DROPDOWN _MENU ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  dropdownElement  =  element . closest ( SELECTOR _DROPDOWN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( dropdownElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          SelectorEngine . find ( SELECTOR _DROPDOWN _TOGGLE ,  dropdownElement ) . forEach ( dropdown  =>  dropdown . classList . add ( CLASS _NAME _ACTIVE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'aria-expanded' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        callback ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Tab . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  Api  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API ,  SELECTOR _DATA _TOGGLE ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( [ 'A' ,  'AREA' ] . includes ( this . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isDisabled ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  data  =  Tab . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Tab  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Tab ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  toast . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME  =  'toast' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY  =  'bs.toast' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY  =  ` . ${ DATA _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DISMISS  =  ` click.dismiss ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEOVER  =  ` mouseover ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEOUT  =  ` mouseout ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSIN  =  ` focusin ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSOUT  =  ` focusout ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE  =  ` hide ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN  =  ` hidden ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW  =  ` show ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN  =  ` shown ${ EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _HIDE  =  'hide' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOWING  =  'showing' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    animation :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autohide :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delay :  'number' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    animation :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autohide :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delay :  5000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _DISMISS  =  '[data-bs-dismiss="toast"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  Definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Toast  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _timeout  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _hasMouseInteraction  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _hasKeyboardInteraction  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _clearTimeout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . animation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _FADE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _SHOWING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _SHOW ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _maybeScheduleHide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _HIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      reflow ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOWING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . _element ,  this . _config . animation ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _element . classList . contains ( CLASS _NAME _SHOW ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _HIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . _element ,  this . _config . animation ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _clearTimeout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _element . classList . contains ( CLASS _NAME _SHOW ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _SHOW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... Manipulator . getDataAttributes ( this . _element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  &&  config  ?  config  :  { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      typeCheckConfig ( NAME ,  config ,  this . constructor . DefaultType ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _maybeScheduleHide ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . autohide )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _hasMouseInteraction  ||  this . _hasKeyboardInteraction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _timeout  =  setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ,  this . _config . delay ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _onInteraction ( event ,  isInteracting )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      switch  ( event . type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'mouseover' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'mouseout' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _hasMouseInteraction  =  isInteracting ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'focusin' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'focusout' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _hasKeyboardInteraction  =  isInteracting ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isInteracting )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _clearTimeout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  nextElement  =  event . relatedTarget ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _element  ===  nextElement  ||  this . _element . contains ( nextElement ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _maybeScheduleHide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _CLICK _DISMISS ,  SELECTOR _DATA _DISMISS ,  ( )  =>  this . hide ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _MOUSEOVER ,  event  =>  this . _onInteraction ( event ,  true ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _MOUSEOUT ,  event  =>  this . _onInteraction ( event ,  false ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _FOCUSIN ,  event  =>  this . _onInteraction ( event ,  true ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _FOCUSOUT ,  event  =>  this . _onInteraction ( event ,  false ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _clearTimeout ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      clearTimeout ( this . _timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _timeout  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Toast . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  add  . Toast  to  jQuery  only  if  jQuery  is  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Toast ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 0.2 ) :  index . umd . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  index _umd  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Alert , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Button , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Carousel , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Collapse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Dropdown , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Modal , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Offcanvas , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Popover , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ScrollSpy , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Tab , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Toast , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Tooltip 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  index _umd ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=bootstrap.js.map