2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ * !  
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  *  Bootstrap  v5 . 2.3  ( https : //getbootstrap.com/)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  *  Copyright  2011 - 2022  The  Bootstrap  Authors  ( https : //github.com/twbs/bootstrap/graphs/contributors)
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  *  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 ( )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  typeof  define  ===  'function'  &&  define . amd  ?  define ( factory )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ( global  =  typeof  globalThis  !==  'undefined'  ?  globalThis  :  global  ||  self ,  global . bootstrap  =  factory ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ( this ,  ( function  ( )  {  'use strict' ;  
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / index . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  MAX _UID  =  1000000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  MILLISECONDS _MULTIPLIER  =  1000 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  TRANSITION _END  =  'transitionend' ;  // Shout-out Angus Croll (https://goo.gl/pxwQGp)
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  toType  =  object  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( object  ===  null  ||  object  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` ${ object } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  Object . prototype . toString . call ( object ) . match ( /\s([a-z]+)/i ) [ 1 ] . toLowerCase ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Public  Util  API 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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  ===  '#' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  hrefAttribute  =  element . getAttribute ( 'href' ) ;  // The only valid content that could double as a selector are IDs or classes,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! hrefAttribute  ||  ! hrefAttribute . includes ( '#' )  &&  ! hrefAttribute . startsWith ( '.' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Just in case some CMS puts out a full URL with the anchor appended
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hrefAttribute . includes ( '#' )  &&  ! hrefAttribute . startsWith ( '#' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hrefAttribute  =  ` # ${ hrefAttribute . split ( '#' ) [ 1 ] } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      selector  =  hrefAttribute  &&  hrefAttribute  !==  '#'  ?  hrefAttribute . trim ( )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  isElement$1  =  object  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! object  ||  typeof  object  !==  'object' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( typeof  object . jquery  !==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      object  =  object [ 0 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  typeof  object . nodeType  !==  'undefined' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  getElement  =  object  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // it's a jQuery object or a node element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isElement$1 ( object ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  object . jquery  ?  object [ 0 ]  :  object ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( typeof  object  ===  'string'  &&  object . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  document . querySelector ( object ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  isVisible  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isElement$1 ( element )  ||  element . getClientRects ( ) . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  elementIsVisible  =  getComputedStyle ( element ) . getPropertyValue ( 'visibility' )  ===  'visible' ;  // Handle `details` element as its content may falsie appear visible when it is closed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  closedDetails  =  element . closest ( 'details:not([open])' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! closedDetails )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  elementIsVisible ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( closedDetails  !==  element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  summary  =  element . closest ( 'summary' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( summary  &&  summary . parentNode  !==  closedDetails )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( summary  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  elementIsVisible ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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  =  ( )  =>  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Trick  to  restart  an  element ' s  animation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  { HTMLElement }  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ see  https : //www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  reflow  =  element  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . offsetHeight ;  // eslint-disable-line no-unused-expressions
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  getjQuery  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( window . jQuery  &&  ! document . body . hasAttribute ( 'data-bs-no-jquery' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  window . jQuery ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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' ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          for  ( const  callback  of  DOMContentLoadedCallbacks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            callback ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      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 )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  listLength  =  list . length ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( index  ===  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  ! shouldGetNext  &&  isCycleAllowed  ?  list [ listLength  -  1 ]  :  list [ 0 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    index  +=  shouldGetNext  ?  1  :  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isCycleAllowed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      index  =  ( index  +  listLength )  %  listLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  list [ Math . max ( 0 ,  Math . min ( index ,  listLength  -  1 ) ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  dom / event - handler . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  makeEventUid ( element ,  uid )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  uid  &&  ` ${ uid } :: ${ uidEvent ++ } `  ||  element . uidEvent  ||  uidEvent ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getElementEvents ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  uid  =  makeEventUid ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    element . uidEvent  =  uid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    eventRegistry [ uid ]  =  eventRegistry [ uid ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  eventRegistry [ uid ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  bootstrapHandler ( element ,  fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  handler ( event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      hydrateObj ( event ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delegateTarget :  element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      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 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  ( const  domElement  of  domElements )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( domElement  !==  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          hydrateObj ( event ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            delegateTarget :  target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( handler . oneOff )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            EventHandler . off ( element ,  event . type ,  selector ,  fn ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return  fn . apply ( target ,  [ event ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  findHandler ( events ,  callable ,  delegationSelector  =  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . values ( events ) . find ( event  =>  event . callable  ===  callable  &&  event . delegationSelector  ===  delegationSelector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  normalizeParameters ( originalTypeEvent ,  handler ,  delegationFunction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  isDelegated  =  typeof  handler  ===  'string' ;  // todo: tooltip passes `false` instead of selector, so we need to check
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  callable  =  isDelegated  ?  delegationFunction  :  handler  ||  delegationFunction ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    let  typeEvent  =  getTypeEvent ( originalTypeEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! nativeEvents . has ( typeEvent ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      typeEvent  =  originalTypeEvent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  [ isDelegated ,  callable ,  typeEvent ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  addHandler ( element ,  originalTypeEvent ,  handler ,  delegationFunction ,  oneOff )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( typeof  originalTypeEvent  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    let  [ isDelegated ,  callable ,  typeEvent ]  =  normalizeParameters ( originalTypeEvent ,  handler ,  delegationFunction ) ;  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( originalTypeEvent  in  customEvents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  wrapFunction  =  fn  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ! event . relatedTarget  ||  event . relatedTarget  !==  event . delegateTarget  &&  ! event . delegateTarget . contains ( event . relatedTarget ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  fn . call ( this ,  event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      callable  =  wrapFunction ( callable ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  events  =  getElementEvents ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  handlers  =  events [ typeEvent ]  ||  ( events [ typeEvent ]  =  { } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  previousFunction  =  findHandler ( handlers ,  callable ,  isDelegated  ?  handler  :  null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( previousFunction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      previousFunction . oneOff  =  previousFunction . oneOff  &&  oneOff ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  uid  =  makeEventUid ( callable ,  originalTypeEvent . replace ( namespaceRegex ,  '' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  fn  =  isDelegated  ?  bootstrapDelegationHandler ( element ,  handler ,  callable )  :  bootstrapHandler ( element ,  callable ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . delegationSelector  =  isDelegated  ?  handler  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . callable  =  callable ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fn . oneOff  =  oneOff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn . uidEvent  =  uid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    handlers [ uid ]  =  fn ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    element . addEventListener ( typeEvent ,  fn ,  isDelegated ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 ]  ||  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  handlerKey  of  Object . keys ( storeElementEvent ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( handlerKey . includes ( namespace ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  event  =  storeElementEvent [ handlerKey ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        removeHandler ( element ,  events ,  typeEvent ,  event . callable ,  event . delegationSelector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    on ( element ,  event ,  handler ,  delegationFunction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      addHandler ( element ,  event ,  handler ,  delegationFunction ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    one ( element ,  event ,  handler ,  delegationFunction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      addHandler ( element ,  event ,  handler ,  delegationFunction ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    off ( element ,  originalTypeEvent ,  handler ,  delegationFunction )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  originalTypeEvent  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  [ isDelegated ,  callable ,  typeEvent ]  =  normalizeParameters ( originalTypeEvent ,  handler ,  delegationFunction ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  inNamespace  =  typeEvent  !==  originalTypeEvent ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  events  =  getElementEvents ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  storeElementEvent  =  events [ typeEvent ]  ||  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isNamespace  =  originalTypeEvent . startsWith ( '.' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  callable  !==  'undefined' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Simplest case: handler is passed, remove that listener ONLY.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! Object . keys ( storeElementEvent ) . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        removeHandler ( element ,  events ,  typeEvent ,  callable ,  isDelegated  ?  handler  :  null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isNamespace )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  ( const  elementEvent  of  Object . keys ( events ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          removeNamespacedHandlers ( element ,  events ,  elementEvent ,  originalTypeEvent . slice ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  keyHandlers  of  Object . keys ( storeElementEvent ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  handlerKey  =  keyHandlers . replace ( stripUidRegex ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! inNamespace  ||  originalTypeEvent . includes ( handlerKey ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  event  =  storeElementEvent [ keyHandlers ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          removeHandler ( element ,  events ,  typeEvent ,  event . callable ,  event . delegationSelector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger ( element ,  event ,  args )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  event  !==  'string'  ||  ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  $  =  getjQuery ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  typeEvent  =  getTypeEvent ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  inNamespace  =  event  !==  typeEvent ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  jQueryEvent  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  bubbles  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  nativeDispatch  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  defaultPrevented  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( inNamespace  &&  $ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        jQueryEvent  =  $ . Event ( event ,  args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ ( element ) . trigger ( jQueryEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bubbles  =  ! jQueryEvent . isPropagationStopped ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nativeDispatch  =  ! jQueryEvent . isImmediatePropagationStopped ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        defaultPrevented  =  jQueryEvent . isDefaultPrevented ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  evt  =  new  Event ( event ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bubbles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cancelable :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      evt  =  hydrateObj ( evt ,  args ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        evt . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( nativeDispatch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . dispatchEvent ( evt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( evt . defaultPrevented  &&  jQueryEvent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        jQueryEvent . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  evt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  hydrateObj ( obj ,  meta )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  [ key ,  value ]  of  Object . entries ( meta  ||  { } ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        obj [ key ]  =  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  catch  ( _unused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Object . defineProperty ( obj ,  key ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          configurable :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          get ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  obj ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  dom / data . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  elementMap  =  new  Map ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Data  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  dom / manipulator . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  normalizeData ( value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( value  ===  'true' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( value  ===  'false' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( value  ===  Number ( value ) . toString ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Number ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( value  ===  ''  ||  value  ===  'null' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( typeof  value  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  value ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  JSON . parse ( decodeURIComponent ( value ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  catch  ( _unused )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  value ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  normalizeDataKey ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  key . replace ( /[A-Z]/g ,  chr  =>  ` - ${ chr . toLowerCase ( ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Manipulator  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    setDataAttribute ( element ,  key ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . setAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    removeDataAttribute ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . removeAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    getDataAttributes ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  attributes  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  bsKeys  =  Object . keys ( element . dataset ) . filter ( key  =>  key . startsWith ( 'bs' )  &&  ! key . startsWith ( 'bsConfig' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  key  of  bsKeys )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        let  pureKey  =  key . replace ( /^bs/ ,  '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pureKey  =  pureKey . charAt ( 0 ) . toLowerCase ( )  +  pureKey . slice ( 1 ,  pureKey . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        attributes [ pureKey ]  =  normalizeData ( element . dataset [ key ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  attributes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getDataAttribute ( element ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  normalizeData ( element . getAttribute ( ` data-bs- ${ normalizeDataKey ( key ) } ` ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / config . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Config  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  Error ( 'You have to implement the static method "NAME", for each component!' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  this . _mergeConfigObj ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  this . _configAfterMerge ( config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _typeCheckConfig ( config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _mergeConfigObj ( config ,  element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  jsonConfig  =  isElement$1 ( element )  ?  Manipulator . getDataAttribute ( element ,  'config' )  :  { } ;  // try to parse
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  {  ... this . constructor . Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  jsonConfig  ===  'object'  ?  jsonConfig  :  { } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( isElement$1 ( element )  ?  Manipulator . getDataAttributes ( element )  :  { } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _typeCheckConfig ( config ,  configTypes  =  this . constructor . DefaultType )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  property  of  Object . keys ( configTypes ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  expectedTypes  =  configTypes [ property ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  value  =  config [ property ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  valueType  =  isElement$1 ( value )  ?  'element'  :  toType ( value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! new  RegExp ( expectedTypes ) . test ( valueType ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` ${ this . constructor . NAME . toUpperCase ( ) } : Option " ${ property } " provided type " ${ valueType } " but expected type " ${ expectedTypes } ". ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  base - component . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  VERSION  =  '5.2.3' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  BaseComponent  extends  Config  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element  =  getElement ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Data . set ( this . _element ,  this . constructor . DATA _KEY ,  this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Data . remove ( this . _element ,  this . constructor . DATA _KEY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  this . constructor . EVENT _KEY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  propertyName  of  Object . getOwnPropertyNames ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this [ propertyName ]  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _queueCallback ( callback ,  element ,  isAnimated  =  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      executeAfterTransition ( callback ,  element ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  this . _mergeConfigObj ( config ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  this . _configAfterMerge ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _typeCheckConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  getInstance ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Data . get ( getElement ( 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  DATA _KEY ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` bs. ${ this . NAME } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  EVENT _KEY ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` . ${ this . DATA _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  eventName ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ` ${ name } ${ this . EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / component - functions . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  enableDismissTrigger  =  ( component ,  method  =  'hide' )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  clickEvent  =  ` click.dismiss ${ component . EVENT _KEY } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  name  =  component . NAME ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    EventHandler . on ( document ,  clickEvent ,  ` [data-bs-dismiss=" ${ name } "] ` ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( [ 'A' ,  'AREA' ] . includes ( this . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isDisabled ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  target  =  getElementFromSelector ( this )  ||  this . closest ( ` . ${ name } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  instance  =  component . getOrCreateInstance ( target ) ;  // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      instance [ method ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  alert . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$f  =  'alert' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$a  =  'bs.alert' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$b  =  ` . ${ DATA _KEY$a } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLOSE  =  ` close ${ EVENT _KEY$b } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLOSED  =  ` closed ${ EVENT _KEY$b } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$5  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$8  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Alert  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    close ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  closeEvent  =  EventHandler . trigger ( this . _element ,  EVENT _CLOSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( closeEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isAnimated  =  this . _element . classList . contains ( CLASS _NAME _FADE$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  this . _destroyElement ( ) ,  this . _element ,  isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _destroyElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _CLOSED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Alert . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( data [ config ]  ===  undefined  ||  config . startsWith ( '_' )  ||  config  ===  'constructor' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data [ config ] ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  enableDismissTrigger ( Alert ,  'close' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Alert ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  button . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$e  =  'button' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$9  =  'bs.button' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$a  =  ` . ${ DATA _KEY$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$6  =  '.data-api' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE$3  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$5  =  '[data-bs-toggle="button"]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$6  =  ` click ${ EVENT _KEY$a } ${ DATA _API _KEY$6 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Button  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  NAME$e ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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  =  Button . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( config  ===  'toggle' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  dom / selector - engine . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 . closest ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( ancestor )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parents . push ( ancestor ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ancestor  =  ancestor . parentNode . closest ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  parents ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    prev ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  previous  =  element . previousElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( previous )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( previous . matches ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  [ previous ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        previous  =  previous . previousElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: this is now unused; remove later along with prev()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next ( element ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  next  =  element . nextElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      while  ( next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( next . matches ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  [ next ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        next  =  next . nextElementSibling ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    focusableChildren ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  focusables  =  [ 'a' ,  'button' ,  'input' ,  'textarea' ,  'select' ,  'details' ,  '[tabindex]' ,  '[contenteditable="true"]' ] . map ( selector  =>  ` ${ selector } :not([tabindex^="-"]) ` ) . join ( ',' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . find ( focusables ,  element ) . filter ( el  =>  ! isDisabled ( el )  &&  isVisible ( el ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / swipe . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$d  =  'swipe' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$9  =  '.bs.swipe' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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  POINTER _TYPE _TOUCH  =  'touch' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  POINTER _TYPE _PEN  =  'pen' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _POINTER _EVENT  =  'pointer-event' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SWIPE _THRESHOLD  =  40 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$c  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endCallback :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    leftCallback :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rightCallback :  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$c  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endCallback :  '(function|null)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    leftCallback :  '(function|null)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rightCallback :  '(function|null)' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Swipe  extends  Config  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element  ||  ! Swipe . isSupported ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _deltaX  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _supportPointerEvents  =  Boolean ( window . PointerEvent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _initEvents ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$c ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$c ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$d ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  EVENT _KEY$9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _start ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _supportPointerEvents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _deltaX  =  event . touches [ 0 ] . clientX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _eventIsPointerPenTouch ( event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _deltaX  =  event . clientX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _end ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _eventIsPointerPenTouch ( event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _deltaX  =  event . clientX  -  this . _deltaX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _handleSwipe ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      execute ( this . _config . endCallback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _move ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _deltaX  =  event . touches  &&  event . touches . length  >  1  ?  0  :  event . touches [ 0 ] . clientX  -  this . _deltaX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _handleSwipe ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  absDeltaX  =  Math . abs ( this . _deltaX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( absDeltaX  <=  SWIPE _THRESHOLD )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  direction  =  absDeltaX  /  this . _deltaX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _deltaX  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! direction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      execute ( direction  >  0  ?  this . _config . rightCallback  :  this . _config . leftCallback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initEvents ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _supportPointerEvents )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _POINTERDOWN ,  event  =>  this . _start ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _POINTERUP ,  event  =>  this . _end ( event ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _POINTER _EVENT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHSTART ,  event  =>  this . _start ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHMOVE ,  event  =>  this . _move ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _TOUCHEND ,  event  =>  this . _end ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _eventIsPointerPenTouch ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _supportPointerEvents  &&  ( event . pointerType  ===  POINTER _TYPE _PEN  ||  event . pointerType  ===  POINTER _TYPE _TOUCH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  isSupported ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  'ontouchstart'  in  document . documentElement  ||  navigator . maxTouchPoints  >  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  carousel . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$c  =  'carousel' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$8  =  'bs.carousel' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$8  =  ` . ${ DATA _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$5  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _LEFT _KEY$1  =  'ArrowLeft' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _RIGHT _KEY$1  =  'ArrowRight' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  TOUCHEVENT _COMPAT _WAIT  =  500 ;  // Time for mouse compat events to fire after touch
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ORDER _NEXT  =  'next' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ORDER _PREV  =  'prev' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DIRECTION _LEFT  =  'left' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DIRECTION _RIGHT  =  'right' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _SLIDE  =  ` slide ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SLID  =  ` slid ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN$1  =  ` keydown ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEENTER$1  =  ` mouseenter ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSELEAVE$1  =  ` mouseleave ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _DRAG _START  =  ` dragstart ${ EVENT _KEY$8 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API$3  =  ` load ${ EVENT _KEY$8 } ${ DATA _API _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$5  =  ` click ${ EVENT _KEY$8 } ${ DATA _API _KEY$5 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  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' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE  =  '.active' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _ITEM  =  '.carousel-item' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVE _ITEM  =  SELECTOR _ACTIVE  +  SELECTOR _ITEM ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _ITEM _IMG  =  '.carousel-item img' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _INDICATORS  =  '.carousel-indicators' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _SLIDE  =  '[data-bs-slide], [data-bs-slide-to]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _RIDE  =  '[data-bs-ride="carousel"]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  KEY _TO _DIRECTION  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ARROW _LEFT _KEY$1 ] :  DIRECTION _RIGHT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ ARROW _RIGHT _KEY$1 ] :  DIRECTION _LEFT 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$b  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    interval :  5000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pause :  'hover' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ride :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    touch :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wrap :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$b  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    interval :  '(number|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO:v6 remove boolean support
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pause :  '(string|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ride :  '(boolean|string)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    touch :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wrap :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  Carousel  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _interval  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeElement  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isSliding  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . touchTimeout  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _swipeHelper  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _indicatorsElement  =  SelectorEngine . findOne ( SELECTOR _INDICATORS ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _addEventListeners ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . ride  ===  CLASS _NAME _CAROUSEL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . cycle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  Default$b ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$b ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  NAME$c ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    next ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _slide ( ORDER _NEXT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nextWhenVisible ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // FIXME TODO use `document.visibilityState`
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    pause ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        triggerTransitionEnd ( this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _clearInterval ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    cycle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _clearInterval ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _updateInterval ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _interval  =  setInterval ( ( )  =>  this . nextWhenVisible ( ) ,  this . _config . interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _maybeEnableCycle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . ride )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . one ( this . _element ,  EVENT _SLID ,  ( )  =>  this . cycle ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . cycle ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    to ( index )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  items  =  this . _getItems ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( index  >  items . length  -  1  ||  index  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . one ( this . _element ,  EVENT _SLID ,  ( )  =>  this . to ( index ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  activeIndex  =  this . _getItemIndex ( this . _getActive ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( activeIndex  ===  index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  order  =  index  >  activeIndex  ?  ORDER _NEXT  :  ORDER _PREV ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _slide ( order ,  items [ index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _swipeHelper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _swipeHelper . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config . defaultInterval  =  config . interval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . keyboard )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _KEYDOWN$1 ,  event  =>  this . _keydown ( event ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . pause  ===  'hover' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _MOUSEENTER$1 ,  ( )  =>  this . pause ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( this . _element ,  EVENT _MOUSELEAVE$1 ,  ( )  =>  this . _maybeEnableCycle ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . touch  &&  Swipe . isSupported ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _addTouchEventListeners ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _addTouchEventListeners ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  img  of  SelectorEngine . find ( SELECTOR _ITEM _IMG ,  this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . on ( img ,  EVENT _DRAG _START ,  event  =>  event . preventDefault ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  endCallBack  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . pause  !==  'hover' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  // 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
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . pause ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . touchTimeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          clearTimeout ( this . touchTimeout ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . touchTimeout  =  setTimeout ( ( )  =>  this . _maybeEnableCycle ( ) ,  TOUCHEVENT _COMPAT _WAIT  +  this . _config . interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  swipeConfig  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        leftCallback :  ( )  =>  this . _slide ( this . _directionToOrder ( DIRECTION _LEFT ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rightCallback :  ( )  =>  this . _slide ( this . _directionToOrder ( DIRECTION _RIGHT ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endCallback :  endCallBack 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _swipeHelper  =  new  Swipe ( this . _element ,  swipeConfig ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _keydown ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( /input|textarea/i . test ( event . target . tagName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  direction  =  KEY _TO _DIRECTION [ event . key ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( direction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _slide ( this . _directionToOrder ( direction ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getItemIndex ( element )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _getItems ( ) . indexOf ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setActiveIndicatorElement ( index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _indicatorsElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  activeIndicator  =  SelectorEngine . findOne ( SELECTOR _ACTIVE ,  this . _indicatorsElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      activeIndicator . classList . remove ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      activeIndicator . removeAttribute ( 'aria-current' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  newActiveIndicator  =  SelectorEngine . findOne ( ` [data-bs-slide-to=" ${ index } "] ` ,  this . _indicatorsElement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( newActiveIndicator )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        newActiveIndicator . classList . add ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        newActiveIndicator . setAttribute ( 'aria-current' ,  'true' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _updateInterval ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  element  =  this . _activeElement  ||  this . _getActive ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  elementInterval  =  Number . parseInt ( element . getAttribute ( 'data-bs-interval' ) ,  10 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _config . interval  =  elementInterval  ||  this . _config . defaultInterval ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _slide ( order ,  element  =  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isSliding )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  activeElement  =  this . _getActive ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isNext  =  order  ===  ORDER _NEXT ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  nextElement  =  element  ||  getNextActiveElement ( this . _getItems ( ) ,  activeElement ,  isNext ,  this . _config . wrap ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( nextElement  ===  activeElement )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  nextElementIndex  =  this . _getItemIndex ( nextElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  triggerEvent  =  eventName  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  EventHandler . trigger ( this . _element ,  eventName ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  nextElement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          direction :  this . _orderToDirection ( order ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          from :  this . _getItemIndex ( activeElement ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          to :  nextElementIndex 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  slideEvent  =  triggerEvent ( EVENT _SLIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( slideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! activeElement  ||  ! nextElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Some weirdness is happening, so we bail
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // todo: change tests that use empty divs to avoid this check
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isCycling  =  Boolean ( this . _interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . pause ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isSliding  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setActiveIndicatorElement ( nextElementIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _activeElement  =  nextElement ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  directionalClassName  =  isNext  ?  CLASS _NAME _START  :  CLASS _NAME _END ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  orderClassName  =  isNext  ?  CLASS _NAME _NEXT  :  CLASS _NAME _PREV ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      nextElement . classList . add ( orderClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reflow ( nextElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      activeElement . classList . add ( directionalClassName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      nextElement . classList . add ( directionalClassName ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  completeCallBack  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nextElement . classList . remove ( directionalClassName ,  orderClassName ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        nextElement . classList . add ( CLASS _NAME _ACTIVE$2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        activeElement . classList . remove ( CLASS _NAME _ACTIVE$2 ,  orderClassName ,  directionalClassName ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isSliding  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        triggerEvent ( EVENT _SLID ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _queueCallback ( completeCallBack ,  activeElement ,  this . _isAnimated ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isCycling )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . cycle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isAnimated ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( CLASS _NAME _SLIDE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getActive ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . findOne ( SELECTOR _ACTIVE _ITEM ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getItems ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . find ( SELECTOR _ITEM ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _clearInterval ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _interval )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clearInterval ( this . _interval ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _interval  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _directionToOrder ( direction )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  direction  ===  DIRECTION _LEFT  ?  ORDER _PREV  :  ORDER _NEXT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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  ( isRTL ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  order  ===  ORDER _PREV  ?  DIRECTION _LEFT  :  DIRECTION _RIGHT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  order  ===  ORDER _PREV  ?  DIRECTION _RIGHT  :  DIRECTION _LEFT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Carousel . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'number' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          data . to ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( data [ config ]  ===  undefined  ||  config . startsWith ( '_' )  ||  config  ===  'constructor' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( document ,  EVENT _CLICK _DATA _API$5 ,  SELECTOR _DATA _SLIDE ,  function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  target  =  getElementFromSelector ( this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! target  ||  ! target . classList . contains ( CLASS _NAME _CAROUSEL ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  carousel  =  Carousel . getOrCreateInstance ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  slideIndex  =  this . getAttribute ( 'data-bs-slide-to' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( slideIndex )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      carousel . to ( slideIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      carousel . _maybeEnableCycle ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( Manipulator . getDataAttribute ( this ,  'slide' )  ===  'next' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      carousel . next ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      carousel . _maybeEnableCycle ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    carousel . prev ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    carousel . _maybeEnableCycle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API$3 ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  carousels  =  SelectorEngine . find ( SELECTOR _DATA _RIDE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( const  carousel  of  carousels )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Carousel . getOrCreateInstance ( carousel ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Carousel ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  collapse . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$b  =  'collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$7  =  'bs.collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$7  =  ` . ${ DATA _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$4  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$6  =  ` show ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$6  =  ` shown ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$6  =  ` hide ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$6  =  ` hidden ${ EVENT _KEY$7 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$4  =  ` click ${ EVENT _KEY$7 } ${ DATA _API _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$7  =  'show' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSE  =  'collapse' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSING  =  'collapsing' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _COLLAPSED  =  'collapsed' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _DEEPER _CHILDREN  =  ` :scope . ${ CLASS _NAME _COLLAPSE }  . ${ CLASS _NAME _COLLAPSE } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _HORIZONTAL  =  'collapse-horizontal' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  WIDTH  =  'width' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  HEIGHT  =  'height' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _ACTIVES  =  '.collapse.show, .collapse.collapsing' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$4  =  '[data-bs-toggle="collapse"]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Default$a  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggle :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$a  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parent :  '(null|element)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toggle :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Collapse  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _triggerArray  =  [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  toggleList  =  SelectorEngine . find ( SELECTOR _DATA _TOGGLE$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  elem  of  toggleList )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  selector  =  getSelectorFromElement ( elem ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  filterElement  =  SelectorEngine . find ( selector ) . filter ( foundElement  =>  foundElement  ===  this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( selector  !==  null  &&  filterElement . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _triggerArray . push ( elem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _initializeChildren ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _config . parent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _addAriaAndCollapsedClass ( this . _triggerArray ,  this . _isShown ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											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 ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  Default$a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$a ; 
							 
						 
					
						
							
								
									
										
										
										
											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  get  NAME ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  NAME$b ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isTransitioning  ||  this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      let  activeChildren  =  [ ] ;  // find active children
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeChildren  =  this . _getFirstLevelChildren ( SELECTOR _ACTIVES ) . filter ( element  =>  element  !==  this . _element ) . map ( element  =>  Collapse . getOrCreateInstance ( element ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          toggle :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( activeChildren . length  &&  activeChildren [ 0 ] . _isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  startEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( startEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  activeInstance  of  activeChildren )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        activeInstance . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _addAriaAndCollapsedClass ( this . _triggerArray ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isTransitioning  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _COLLAPSING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _COLLAPSE ,  CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . style [ dimension ]  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isTransitioning  ||  ! this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  startEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _COLLAPSE ,  CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  trigger  of  this . _triggerArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  element  =  getElementFromSelector ( trigger ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( element  &&  ! this . _isShown ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _addAriaAndCollapsedClass ( [ trigger ] ,  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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isTransitioning  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        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 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isShown ( element  =  this . _element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  element . classList . contains ( CLASS _NAME _SHOW$7 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . toggle  =  Boolean ( config . toggle ) ;  // Coerce string values
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . parent  =  getElement ( config . parent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getDimension ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( CLASS _NAME _HORIZONTAL )  ?  WIDTH  :  HEIGHT ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeChildren ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  children  =  this . _getFirstLevelChildren ( SELECTOR _DATA _TOGGLE$4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  element  of  children )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  selected  =  getElementFromSelector ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( selected )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _addAriaAndCollapsedClass ( [ element ] ,  this . _isShown ( selected ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getFirstLevelChildren ( selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  children  =  SelectorEngine . find ( CLASS _NAME _DEEPER _CHILDREN ,  this . _config . parent ) ;  // remove children if greater depth
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . find ( selector ,  this . _config . parent ) . filter ( element  =>  ! children . includes ( element ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addAriaAndCollapsedClass ( triggerArray ,  isOpen )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! triggerArray . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  element  of  triggerArray )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . classList . toggle ( CLASS _NAME _COLLAPSED ,  ! isOpen ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'aria-expanded' ,  isOpen ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  _config  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config  ===  'string'  &&  /show|hide/ . test ( config ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        _config . toggle  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Collapse . getOrCreateInstance ( this ,  _config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          data [ config ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											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 . 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' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  selector  =  getSelectorFromElement ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  selectorElements  =  SelectorEngine . find ( selector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( const  element  of  selectorElements )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Collapse . getOrCreateInstance ( element ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        toggle :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) . toggle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Collapse ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  top  =  'top' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  bottom  =  'bottom' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  right  =  'right' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  left  =  'left' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  auto  =  'auto' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  basePlacements  =  [ top ,  bottom ,  right ,  left ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  start  =  'start' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  end  =  'end' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  clippingParents  =  'clippingParents' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  viewport  =  'viewport' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  popper  =  'popper' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  reference  =  'reference' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  variationPlacements  =  /*#__PURE__*/ basePlacements . reduce ( function  ( acc ,  placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  acc . concat ( [ placement  +  "-"  +  start ,  placement  +  "-"  +  end ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  placements  =  /*#__PURE__*/ [ ] . concat ( basePlacements ,  [ auto ] ) . reduce ( function  ( acc ,  placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  acc . concat ( [ placement ,  placement  +  "-"  +  start ,  placement  +  "-"  +  end ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ,  [ ] ) ;  // modifiers that need to read the DOM
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  beforeRead  =  'beforeRead' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  read  =  'read' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  afterRead  =  'afterRead' ;  // pure-logic modifiers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  beforeMain  =  'beforeMain' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  main  =  'main' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  afterMain  =  'afterMain' ;  // modifier with the purpose to write to the DOM (or write into a framework state)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  beforeWrite  =  'beforeWrite' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  write  =  'write' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  afterWrite  =  'afterWrite' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  modifierPhases  =  [ beforeRead ,  read ,  afterRead ,  beforeMain ,  main ,  afterMain ,  beforeWrite ,  write ,  afterWrite ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getNodeName ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  element  ?  ( element . nodeName  ||  '' ) . toLowerCase ( )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getWindow ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( node  ==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( node . toString ( )  !==  '[object Window]' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  ownerDocument  =  node . ownerDocument ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ownerDocument  ?  ownerDocument . defaultView  ||  window  :  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isElement ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  OwnElement  =  getWindow ( node ) . Element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  node  instanceof  OwnElement  ||  node  instanceof  Element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isHTMLElement ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  OwnElement  =  getWindow ( node ) . HTMLElement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  node  instanceof  OwnElement  ||  node  instanceof  HTMLElement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isShadowRoot ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // IE 11 has no ShadowRoot
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( typeof  ShadowRoot  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  OwnElement  =  getWindow ( node ) . ShadowRoot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  node  instanceof  OwnElement  ||  node  instanceof  ShadowRoot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // and applies them to the HTMLElements such as popper and arrow
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  applyStyles ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Object . keys ( state . elements ) . forEach ( function  ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  style  =  state . styles [ name ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  attributes  =  state . attributes [ name ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  element  =  state . elements [ name ] ;  // arrow is optional + virtual elements
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isHTMLElement ( element )  ||  ! getNodeName ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Flow doesn't support to extend this property, but it's the most
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // effective way to apply styles to an HTMLElement
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // $FlowFixMe[cannot-write]
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Object . assign ( element . style ,  style ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( attributes ) . forEach ( function  ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  value  =  attributes [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( value  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . removeAttribute ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . setAttribute ( name ,  value  ===  true  ?  ''  :  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  effect$2 ( _ref2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref2 . state ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  initialStyles  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      popper :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        position :  state . options . strategy , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        left :  '0' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        top :  '0' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        margin :  '0' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      arrow :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        position :  'absolute' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reference :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Object . assign ( state . elements . popper . style ,  initialStyles . popper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . styles  =  initialStyles ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( state . elements . arrow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . assign ( state . elements . arrow . style ,  initialStyles . arrow ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( state . elements ) . forEach ( function  ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  element  =  state . elements [ name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  attributes  =  state . attributes [ name ]  ||  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  styleProperties  =  Object . keys ( state . styles . hasOwnProperty ( name )  ?  state . styles [ name ]  :  initialStyles [ name ] ) ;  // Set all values to an empty string to unset them
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        var  style  =  styleProperties . reduce ( function  ( style ,  property )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          style [ property ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  style ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { } ) ;  // arrow is optional + virtual elements
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! isHTMLElement ( element )  ||  ! getNodeName ( element ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Object . assign ( element . style ,  style ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Object . keys ( attributes ) . forEach ( function  ( attribute )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . removeAttribute ( attribute ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  applyStyles$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'applyStyles' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'write' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  applyStyles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    effect :  effect$2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requires :  [ 'computeStyles' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getBasePlacement ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  placement . split ( '-' ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  max  =  Math . max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  min  =  Math . min ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  round  =  Math . round ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getUAString ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  uaData  =  navigator . userAgentData ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( uaData  !=  null  &&  uaData . brands )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  uaData . brands . map ( function  ( item )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  item . brand  +  "/"  +  item . version ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) . join ( ' ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  navigator . userAgent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  isLayoutViewport ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! /^((?!chrome|android).)*safari/i . test ( getUAString ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getBoundingClientRect ( element ,  includeScale ,  isFixedStrategy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( includeScale  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      includeScale  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isFixedStrategy  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isFixedStrategy  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clientRect  =  element . getBoundingClientRect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scaleX  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scaleY  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( includeScale  &&  isHTMLElement ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scaleX  =  element . offsetWidth  >  0  ?  round ( clientRect . width )  /  element . offsetWidth  ||  1  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scaleY  =  element . offsetHeight  >  0  ?  round ( clientRect . height )  /  element . offsetHeight  ||  1  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _ref  =  isElement ( element )  ?  getWindow ( element )  :  window , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        visualViewport  =  _ref . visualViewport ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  addVisualOffsets  =  ! isLayoutViewport ( )  &&  isFixedStrategy ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  x  =  ( clientRect . left  +  ( addVisualOffsets  &&  visualViewport  ?  visualViewport . offsetLeft  :  0 ) )  /  scaleX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  y  =  ( clientRect . top  +  ( addVisualOffsets  &&  visualViewport  ?  visualViewport . offsetTop  :  0 ) )  /  scaleY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  width  =  clientRect . width  /  scaleX ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  height  =  clientRect . height  /  scaleY ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      width :  width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height :  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      top :  y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      right :  x  +  width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bottom :  y  +  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      left :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // means it doesn't take into account transforms.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getLayoutRect ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clientRect  =  getBoundingClientRect ( element ) ;  // Use the clientRect sizes if it's not been transformed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Fixes https://github.com/popperjs/popper-core/issues/1223
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  width  =  element . offsetWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  height  =  element . offsetHeight ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( Math . abs ( clientRect . width  -  width )  <=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width  =  clientRect . width ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( Math . abs ( clientRect . height  -  height )  <=  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height  =  clientRect . height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  element . offsetLeft , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  element . offsetTop , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width :  width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height :  height 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  contains ( parent ,  child )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  rootNode  =  child . getRootNode  &&  child . getRootNode ( ) ;  // First, attempt with faster native method
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( parent . contains ( child ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // then fallback to custom implementation with Shadow DOM support
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  if  ( rootNode  &&  isShadowRoot ( rootNode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  next  =  child ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( next  &&  parent . isSameNode ( next ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  // $FlowFixMe[prop-missing]: need a better way to handle this...
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          next  =  next . parentNode  ||  next . host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  while  ( next ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Give up, the result is false
 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getComputedStyle$1 ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  getWindow ( element ) . getComputedStyle ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isTableElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ 'table' ,  'td' ,  'th' ] . indexOf ( getNodeName ( element ) )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getDocumentElement ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // $FlowFixMe[incompatible-return]: assume body is always available
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( ( isElement ( element )  ?  element . ownerDocument  :  // $FlowFixMe[prop-missing]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    element . document )  ||  window . document ) . documentElement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getParentNode ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( getNodeName ( element )  ===  'html' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( // this is a quicker (but less type safe) way to save quite some bytes from the bundle
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // $FlowFixMe[incompatible-return]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // $FlowFixMe[prop-missing]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . assignedSlot  ||  // step into the shadow DOM of the parent of a slotted node
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . parentNode  ||  (  // DOM Element detected
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isShadowRoot ( element )  ?  element . host  :  null )  ||  // ShadowRoot detected
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      getDocumentElement ( element )  // fallback
 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getTrueOffsetParent ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! isHTMLElement ( element )  ||  // https://github.com/popperjs/popper-core/issues/837
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getComputedStyle$1 ( element ) . position  ===  'fixed' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  element . offsetParent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // `.offsetParent` reports `null` for fixed elements, while absolute elements
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // return the containing block
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getContainingBlock ( element )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  isFirefox  =  /firefox/i . test ( getUAString ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isIE  =  /Trident/i . test ( getUAString ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isIE  &&  isHTMLElement ( element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  elementCss  =  getComputedStyle$1 ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( elementCss . position  ===  'fixed' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  currentNode  =  getParentNode ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isShadowRoot ( currentNode ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      currentNode  =  currentNode . host ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while  ( isHTMLElement ( currentNode )  &&  [ 'html' ,  'body' ] . indexOf ( getNodeName ( currentNode ) )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  css  =  getComputedStyle$1 ( currentNode ) ;  // This is non-exhaustive but covers the most common CSS properties that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // create a containing block.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( css . transform  !==  'none'  ||  css . perspective  !==  'none'  ||  css . contain  ===  'paint'  ||  [ 'transform' ,  'perspective' ] . indexOf ( css . willChange )  !==  - 1  ||  isFirefox  &&  css . willChange  ===  'filter'  ||  isFirefox  &&  css . filter  &&  css . filter  !==  'none' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  currentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        currentNode  =  currentNode . parentNode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // Gets the closest ancestor positioned element. Handles some edge cases,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // such as table ancestors and cross browser bugs.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getOffsetParent ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  window  =  getWindow ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offsetParent  =  getTrueOffsetParent ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while  ( offsetParent  &&  isTableElement ( offsetParent )  &&  getComputedStyle$1 ( offsetParent ) . position  ===  'static' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      offsetParent  =  getTrueOffsetParent ( offsetParent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( offsetParent  &&  ( getNodeName ( offsetParent )  ===  'html'  ||  getNodeName ( offsetParent )  ===  'body'  &&  getComputedStyle$1 ( offsetParent ) . position  ===  'static' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  offsetParent  ||  getContainingBlock ( element )  ||  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getMainAxisFromPlacement ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ 'top' ,  'bottom' ] . indexOf ( placement )  >=  0  ?  'x'  :  'y' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  within ( min$1 ,  value ,  max$1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  max ( min$1 ,  min ( value ,  max$1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  withinMaxClamp ( min ,  value ,  max )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  v  =  within ( min ,  value ,  max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  v  >  max  ?  max  :  v ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getFreshSideObject ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      top :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      right :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bottom :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      left :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  mergePaddingObject ( paddingObject )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . assign ( { } ,  getFreshSideObject ( ) ,  paddingObject ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  expandToHashMap ( value ,  keys )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  keys . reduce ( function  ( hashMap ,  key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      hashMap [ key ]  =  value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  hashMap ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  toPaddingObject  =  function  toPaddingObject ( padding ,  state )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    padding  =  typeof  padding  ===  'function'  ?  padding ( Object . assign ( { } ,  state . rects ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  state . placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) )  :  padding ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  mergePaddingObject ( typeof  padding  !==  'number'  ?  padding  :  expandToHashMap ( padding ,  basePlacements ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  arrow ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _state$modifiersData$ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref . name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref . options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arrowElement  =  state . elements . arrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperOffsets  =  state . modifiersData . popperOffsets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  basePlacement  =  getBasePlacement ( state . placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  axis  =  getMainAxisFromPlacement ( basePlacement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isVertical  =  [ left ,  right ] . indexOf ( basePlacement )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  len  =  isVertical  ?  'height'  :  'width' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! arrowElement  ||  ! popperOffsets )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  paddingObject  =  toPaddingObject ( options . padding ,  state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arrowRect  =  getLayoutRect ( arrowElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  minProp  =  axis  ===  'y'  ?  top  :  left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  maxProp  =  axis  ===  'y'  ?  bottom  :  right ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  endDiff  =  state . rects . reference [ len ]  +  state . rects . reference [ axis ]  -  popperOffsets [ axis ]  -  state . rects . popper [ len ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  startDiff  =  popperOffsets [ axis ]  -  state . rects . reference [ axis ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  arrowOffsetParent  =  getOffsetParent ( arrowElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clientSize  =  arrowOffsetParent  ?  axis  ===  'y'  ?  arrowOffsetParent . clientHeight  ||  0  :  arrowOffsetParent . clientWidth  ||  0  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  centerToReference  =  endDiff  /  2  -  startDiff  /  2 ;  // Make sure the arrow doesn't overflow the popper if the center point is
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // outside of the popper bounds
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  min  =  paddingObject [ minProp ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  max  =  clientSize  -  arrowRect [ len ]  -  paddingObject [ maxProp ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  center  =  clientSize  /  2  -  arrowRect [ len ]  /  2  +  centerToReference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offset  =  within ( min ,  center ,  max ) ;  // Prevents breaking syntax highlighting...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  axisProp  =  axis ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . modifiersData [ name ]  =  ( _state$modifiersData$  =  { } ,  _state$modifiersData$ [ axisProp ]  =  offset ,  _state$modifiersData$ . centerOffset  =  offset  -  center ,  _state$modifiersData$ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  effect$1 ( _ref2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref2 . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref2 . options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _options$element  =  options . element , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        arrowElement  =  _options$element  ===  void  0  ?  '[data-popper-arrow]'  :  _options$element ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( arrowElement  ==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // CSS selector
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( typeof  arrowElement  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      arrowElement  =  state . elements . popper . querySelector ( arrowElement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! arrowElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! contains ( state . elements . popper ,  arrowElement ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . elements . arrow  =  arrowElement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  arrow$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'arrow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'main' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  arrow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    effect :  effect$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requires :  [ 'popperOffsets' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requiresIfExists :  [ 'preventOverflow' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getVariation ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  placement . split ( '-' ) [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  unsetSides  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    top :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    right :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bottom :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    left :  'auto' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ;  // Round the offsets to the nearest suitable subpixel based on the DPR.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // Zooming can change the DPR, but it seems to report a value that will
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // cleanly divide the values into the appropriate subpixels.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  roundOffsetsByDPR ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  x  =  _ref . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y  =  _ref . y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  win  =  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  dpr  =  win . devicePixelRatio  ||  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      x :  round ( x  *  dpr )  /  dpr  ||  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  round ( y  *  dpr )  /  dpr  ||  0 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  mapToStyles ( _ref2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _Object$assign2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  popper  =  _ref2 . popper , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        popperRect  =  _ref2 . popperRect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement  =  _ref2 . placement , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        variation  =  _ref2 . variation , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        offsets  =  _ref2 . offsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        position  =  _ref2 . position , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        gpuAcceleration  =  _ref2 . gpuAcceleration , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        adaptive  =  _ref2 . adaptive , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        roundOffsets  =  _ref2 . roundOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isFixed  =  _ref2 . isFixed ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _offsets$x  =  offsets . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        x  =  _offsets$x  ===  void  0  ?  0  :  _offsets$x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _offsets$y  =  offsets . y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y  =  _offsets$y  ===  void  0  ?  0  :  _offsets$y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _ref3  =  typeof  roundOffsets  ===  'function'  ?  roundOffsets ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    x  =  _ref3 . x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    y  =  _ref3 . y ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  hasX  =  offsets . hasOwnProperty ( 'x' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hasY  =  offsets . hasOwnProperty ( 'y' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  sideX  =  left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  sideY  =  top ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  win  =  window ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( adaptive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  offsetParent  =  getOffsetParent ( popper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  heightProp  =  'clientHeight' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  widthProp  =  'clientWidth' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( offsetParent  ===  getWindow ( popper ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsetParent  =  getDocumentElement ( popper ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( getComputedStyle$1 ( offsetParent ) . position  !==  'static'  &&  position  ===  'absolute' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          heightProp  =  'scrollHeight' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          widthProp  =  'scrollWidth' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }  // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      offsetParent  =  offsetParent ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( placement  ===  top  ||  ( placement  ===  left  ||  placement  ===  right )  &&  variation  ===  end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sideY  =  bottom ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  offsetY  =  isFixed  &&  offsetParent  ===  win  &&  win . visualViewport  ?  win . visualViewport . height  :  // $FlowFixMe[prop-missing]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsetParent [ heightProp ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y  -=  offsetY  -  popperRect . height ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        y  *=  gpuAcceleration  ?  1  :  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( placement  ===  left  ||  ( placement  ===  top  ||  placement  ===  bottom )  &&  variation  ===  end )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sideX  =  right ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  offsetX  =  isFixed  &&  offsetParent  ===  win  &&  win . visualViewport  ?  win . visualViewport . width  :  // $FlowFixMe[prop-missing]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsetParent [ widthProp ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        x  -=  offsetX  -  popperRect . width ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        x  *=  gpuAcceleration  ?  1  :  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  commonStyles  =  Object . assign ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      position :  position 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  adaptive  &&  unsetSides ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _ref4  =  roundOffsets  ===  true  ?  roundOffsetsByDPR ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    x  =  _ref4 . x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    y  =  _ref4 . y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( gpuAcceleration )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _Object$assign ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  Object . assign ( { } ,  commonStyles ,  ( _Object$assign  =  { } ,  _Object$assign [ sideY ]  =  hasY  ?  '0'  :  '' ,  _Object$assign [ sideX ]  =  hasX  ?  '0'  :  '' ,  _Object$assign . transform  =  ( win . devicePixelRatio  ||  1 )  <=  1  ?  "translate("  +  x  +  "px, "  +  y  +  "px)"  :  "translate3d("  +  x  +  "px, "  +  y  +  "px, 0)" ,  _Object$assign ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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  Object . assign ( { } ,  commonStyles ,  ( _Object$assign2  =  { } ,  _Object$assign2 [ sideY ]  =  hasY  ?  y  +  "px"  :  '' ,  _Object$assign2 [ sideX ]  =  hasX  ?  x  +  "px"  :  '' ,  _Object$assign2 . transform  =  '' ,  _Object$assign2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  computeStyles ( _ref5 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref5 . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref5 . options ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _options$gpuAccelerat  =  options . gpuAcceleration , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        gpuAcceleration  =  _options$gpuAccelerat  ===  void  0  ?  true  :  _options$gpuAccelerat , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$adaptive  =  options . adaptive , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        adaptive  =  _options$adaptive  ===  void  0  ?  true  :  _options$adaptive , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$roundOffsets  =  options . roundOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        roundOffsets  =  _options$roundOffsets  ===  void  0  ?  true  :  _options$roundOffsets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  commonStyles  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  getBasePlacement ( state . placement ) , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      variation :  getVariation ( state . placement ) , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      popper :  state . elements . popper , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      popperRect :  state . rects . popper , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      gpuAcceleration :  gpuAcceleration , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isFixed :  state . options . strategy  ===  'fixed' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( state . modifiersData . popperOffsets  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . styles . popper  =  Object . assign ( { } ,  state . styles . popper ,  mapToStyles ( Object . assign ( { } ,  commonStyles ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets :  state . modifiersData . popperOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        position :  state . options . strategy , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        adaptive :  adaptive , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        roundOffsets :  roundOffsets 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( state . modifiersData . arrow  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . styles . arrow  =  Object . assign ( { } ,  state . styles . arrow ,  mapToStyles ( Object . assign ( { } ,  commonStyles ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets :  state . modifiersData . arrow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        position :  'absolute' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        adaptive :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        roundOffsets :  roundOffsets 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    state . attributes . popper  =  Object . assign ( { } ,  state . attributes . popper ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'data-popper-placement' :  state . placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  computeStyles$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'computeStyles' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'beforeWrite' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  computeStyles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  passive  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    passive :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  effect ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        instance  =  _ref . instance , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref . options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _options$scroll  =  options . scroll , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        scroll  =  _options$scroll  ===  void  0  ?  true  :  _options$scroll , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$resize  =  options . resize , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        resize  =  _options$resize  ===  void  0  ?  true  :  _options$resize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  window  =  getWindow ( state . elements . popper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scrollParents  =  [ ] . concat ( state . scrollParents . reference ,  state . scrollParents . popper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( scroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollParents . forEach ( function  ( scrollParent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        scrollParent . addEventListener ( 'scroll' ,  instance . update ,  passive ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( resize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      window . addEventListener ( 'resize' ,  instance . update ,  passive ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( scroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        scrollParents . forEach ( function  ( scrollParent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          scrollParent . removeEventListener ( 'scroll' ,  instance . update ,  passive ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( resize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        window . removeEventListener ( 'resize' ,  instance . update ,  passive ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  eventListeners  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'eventListeners' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'write' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  function  fn ( )  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    effect :  effect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  hash$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    left :  'right' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    right :  'left' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bottom :  'top' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    top :  'bottom' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getOppositePlacement ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  placement . replace ( /left|right|bottom|top/g ,  function  ( matched )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  hash$1 [ matched ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  hash  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start :  'end' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end :  'start' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getOppositeVariationPlacement ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  placement . replace ( /start|end/g ,  function  ( matched )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  hash [ matched ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  getWindowScroll ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  win  =  getWindow ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scrollLeft  =  win . pageXOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scrollTop  =  win . pageYOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollLeft :  scrollLeft , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollTop :  scrollTop 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getWindowScrollBarX ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // If <html> has a CSS width greater than the viewport, then this will be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // incorrect for RTL.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Popper 1 is broken in this case and never had a bug report so let's assume
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // it's not an issue. I don't think anyone ever specifies width on <html>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // anyway.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Browsers where the left scrollbar doesn't cause an issue report `0` for
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // this (e.g. Edge 2019, IE11, Safari)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  getBoundingClientRect ( getDocumentElement ( element ) ) . left  +  getWindowScroll ( element ) . scrollLeft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getViewportRect ( element ,  strategy )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  win  =  getWindow ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  html  =  getDocumentElement ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  visualViewport  =  win . visualViewport ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  width  =  html . clientWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  height  =  html . clientHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  x  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  y  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( visualViewport )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width  =  visualViewport . width ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      height  =  visualViewport . height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  layoutViewport  =  isLayoutViewport ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( layoutViewport  ||  ! layoutViewport  &&  strategy  ===  'fixed' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        x  =  visualViewport . offsetLeft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y  =  visualViewport . offsetTop ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width :  width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height :  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x  +  getWindowScrollBarX ( element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // of the `<html>` and `<body>` rect bounds if horizontally scrollable
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getDocumentRect ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _element$ownerDocumen ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  html  =  getDocumentElement ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  winScroll  =  getWindowScroll ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  body  =  ( _element$ownerDocumen  =  element . ownerDocument )  ==  null  ?  void  0  :  _element$ownerDocumen . body ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  width  =  max ( html . scrollWidth ,  html . clientWidth ,  body  ?  body . scrollWidth  :  0 ,  body  ?  body . clientWidth  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  height  =  max ( html . scrollHeight ,  html . clientHeight ,  body  ?  body . scrollHeight  :  0 ,  body  ?  body . clientHeight  :  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  x  =  - winScroll . scrollLeft  +  getWindowScrollBarX ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  y  =  - winScroll . scrollTop ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( getComputedStyle$1 ( body  ||  html ) . direction  ===  'rtl' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x  +=  max ( html . clientWidth ,  body  ?  body . clientWidth  :  0 )  -  width ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width :  width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height :  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isScrollParent ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Firefox wants us to check `-x` and `-y` variations as well
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _getComputedStyle  =  getComputedStyle$1 ( element ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        overflow  =  _getComputedStyle . overflow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        overflowX  =  _getComputedStyle . overflowX , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        overflowY  =  _getComputedStyle . overflowY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  /auto|scroll|overlay|hidden/ . test ( overflow  +  overflowY  +  overflowX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getScrollParent ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( [ 'html' ,  'body' ,  '#document' ] . indexOf ( getNodeName ( node ) )  >=  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // $FlowFixMe[incompatible-return]: assume body is always available
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  node . ownerDocument . body ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isHTMLElement ( node )  &&  isScrollParent ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  node ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  getScrollParent ( getParentNode ( node ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  given  a  DOM  element ,  return  the  list  of  all  scroll  parents ,  up  the  list  of  ancesors 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  until  we  get  to  the  top  window  object .  This  list  is  what  we  attach  scroll  listeners 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to ,  because  if  any  of  these  parent  elements  scroll ,  we ' ll  need  to  re - calculate  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  reference  element ' s  position . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  listScrollParents ( element ,  list )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _element$ownerDocumen ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( list  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      list  =  [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  scrollParent  =  getScrollParent ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isBody  =  scrollParent  ===  ( ( _element$ownerDocumen  =  element . ownerDocument )  ==  null  ?  void  0  :  _element$ownerDocumen . body ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  win  =  getWindow ( scrollParent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  target  =  isBody  ?  [ win ] . concat ( win . visualViewport  ||  [ ] ,  isScrollParent ( scrollParent )  ?  scrollParent  :  [ ] )  :  scrollParent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  updatedList  =  list . concat ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  isBody  ?  updatedList  :  // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    updatedList . concat ( listScrollParents ( getParentNode ( target ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  rectToClientRect ( rect )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . assign ( { } ,  rect ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      left :  rect . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      top :  rect . y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      right :  rect . x  +  rect . width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bottom :  rect . y  +  rect . height 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getInnerBoundingClientRect ( element ,  strategy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  rect  =  getBoundingClientRect ( element ,  false ,  strategy  ===  'fixed' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rect . top  =  rect . top  +  element . clientTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . left  =  rect . left  +  element . clientLeft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . bottom  =  rect . top  +  element . clientHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . right  =  rect . left  +  element . clientWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . width  =  element . clientWidth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . height  =  element . clientHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . x  =  rect . left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rect . y  =  rect . top ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  rect ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getClientRectFromMixedType ( element ,  clippingParent ,  strategy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  clippingParent  ===  viewport  ?  rectToClientRect ( getViewportRect ( element ,  strategy ) )  :  isElement ( clippingParent )  ?  getInnerBoundingClientRect ( clippingParent ,  strategy )  :  rectToClientRect ( getDocumentRect ( getDocumentElement ( element ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  // A "clipping parent" is an overflowable container with the characteristic of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // clipping (or hiding) overflowing elements with a position different from
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // `initial`
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getClippingParents ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clippingParents  =  listScrollParents ( getParentNode ( element ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  canEscapeClipping  =  [ 'absolute' ,  'fixed' ] . indexOf ( getComputedStyle$1 ( element ) . position )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clipperElement  =  canEscapeClipping  &&  isHTMLElement ( element )  ?  getOffsetParent ( element )  :  element ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! isElement ( clipperElement ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  clippingParents . filter ( function  ( clippingParent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  isElement ( clippingParent )  &&  contains ( clippingParent ,  clipperElement )  &&  getNodeName ( clippingParent )  !==  'body' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // Gets the maximum area that the element is visible in due to any number of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // clipping parents
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getClippingRect ( element ,  boundary ,  rootBoundary ,  strategy )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  mainClippingParents  =  boundary  ===  'clippingParents'  ?  getClippingParents ( element )  :  [ ] . concat ( boundary ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clippingParents  =  [ ] . concat ( mainClippingParents ,  [ rootBoundary ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  firstClippingParent  =  clippingParents [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  clippingRect  =  clippingParents . reduce ( function  ( accRect ,  clippingParent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  rect  =  getClientRectFromMixedType ( element ,  clippingParent ,  strategy ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      accRect . top  =  max ( rect . top ,  accRect . top ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      accRect . right  =  min ( rect . right ,  accRect . right ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      accRect . bottom  =  min ( rect . bottom ,  accRect . bottom ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      accRect . left  =  max ( rect . left ,  accRect . left ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  accRect ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  getClientRectFromMixedType ( element ,  firstClippingParent ,  strategy ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    clippingRect . width  =  clippingRect . right  -  clippingRect . left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clippingRect . height  =  clippingRect . bottom  -  clippingRect . top ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clippingRect . x  =  clippingRect . left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clippingRect . y  =  clippingRect . top ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  clippingRect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  computeOffsets ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  reference  =  _ref . reference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element  =  _ref . element , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement  =  _ref . placement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  basePlacement  =  placement  ?  getBasePlacement ( placement )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  variation  =  placement  ?  getVariation ( placement )  :  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  commonX  =  reference . x  +  reference . width  /  2  -  element . width  /  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  commonY  =  reference . y  +  reference . height  /  2  -  element . height  /  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offsets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    switch  ( basePlacement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      case  top : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          x :  commonX , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          y :  reference . y  -  element . height 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      case  bottom : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          x :  commonX , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          y :  reference . y  +  reference . height 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      case  right : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          x :  reference . x  +  reference . width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          y :  commonY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      case  left : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          x :  reference . x  -  element . width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          y :  commonY 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          x :  reference . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          y :  reference . y 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  mainAxis  =  basePlacement  ?  getMainAxisFromPlacement ( basePlacement )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( mainAxis  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  len  =  mainAxis  ===  'y'  ?  'height'  :  'width' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      switch  ( variation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  start : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          offsets [ mainAxis ]  =  offsets [ mainAxis ]  -  ( reference [ len ]  /  2  -  element [ len ]  /  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  end : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          offsets [ mainAxis ]  =  offsets [ mainAxis ]  +  ( reference [ len ]  /  2  -  element [ len ]  /  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  offsets ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  detectOverflow ( state ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _options  =  options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$placement  =  _options . placement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement  =  _options$placement  ===  void  0  ?  state . placement  :  _options$placement , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        _options$strategy  =  _options . strategy , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        strategy  =  _options$strategy  ===  void  0  ?  state . strategy  :  _options$strategy , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        _options$boundary  =  _options . boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary  =  _options$boundary  ===  void  0  ?  clippingParents  :  _options$boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$rootBoundary  =  _options . rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary  =  _options$rootBoundary  ===  void  0  ?  viewport  :  _options$rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$elementConte  =  _options . elementContext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elementContext  =  _options$elementConte  ===  void  0  ?  popper  :  _options$elementConte , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$altBoundary  =  _options . altBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        altBoundary  =  _options$altBoundary  ===  void  0  ?  false  :  _options$altBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$padding  =  _options . padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding  =  _options$padding  ===  void  0  ?  0  :  _options$padding ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  paddingObject  =  mergePaddingObject ( typeof  padding  !==  'number'  ?  padding  :  expandToHashMap ( padding ,  basePlacements ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  altContext  =  elementContext  ===  popper  ?  reference  :  popper ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperRect  =  state . rects . popper ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  element  =  state . elements [ altBoundary  ?  altContext  :  elementContext ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  clippingClientRect  =  getClippingRect ( isElement ( element )  ?  element  :  element . contextElement  ||  getDocumentElement ( state . elements . popper ) ,  boundary ,  rootBoundary ,  strategy ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceClientRect  =  getBoundingClientRect ( state . elements . reference ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  popperOffsets  =  computeOffsets ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reference :  referenceClientRect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element :  popperRect , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      strategy :  'absolute' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperClientRect  =  rectToClientRect ( Object . assign ( { } ,  popperRect ,  popperOffsets ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  elementClientRect  =  elementContext  ===  popper  ?  popperClientRect  :  referenceClientRect ;  // positive = overflowing the clipping rect
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // 0 or negative = within the clipping rect
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  overflowOffsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      top :  clippingClientRect . top  -  elementClientRect . top  +  paddingObject . top , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bottom :  elementClientRect . bottom  -  clippingClientRect . bottom  +  paddingObject . bottom , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      left :  clippingClientRect . left  -  elementClientRect . left  +  paddingObject . left , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      right :  elementClientRect . right  -  clippingClientRect . right  +  paddingObject . right 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offsetData  =  state . modifiersData . offset ;  // Offsets can be applied only to the popper element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( elementContext  ===  popper  &&  offsetData )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  offset  =  offsetData [ placement ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Object . keys ( overflowOffsets ) . forEach ( function  ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  multiply  =  [ right ,  bottom ] . indexOf ( key )  >=  0  ?  1  :  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  axis  =  [ top ,  bottom ] . indexOf ( key )  >=  0  ?  'y'  :  'x' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        overflowOffsets [ key ]  +=  offset [ axis ]  *  multiply ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  overflowOffsets ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  computeAutoPlacement ( state ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( options  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      options  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _options  =  options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement  =  _options . placement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary  =  _options . boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary  =  _options . rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding  =  _options . padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flipVariations  =  _options . flipVariations , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$allowedAutoP  =  _options . allowedAutoPlacements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        allowedAutoPlacements  =  _options$allowedAutoP  ===  void  0  ?  placements  :  _options$allowedAutoP ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  variation  =  getVariation ( placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  placements$1  =  variation  ?  flipVariations  ?  variationPlacements  :  variationPlacements . filter ( function  ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  getVariation ( placement )  ===  variation ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  :  basePlacements ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  allowedPlacements  =  placements$1 . filter ( function  ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  allowedAutoPlacements . indexOf ( placement )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( allowedPlacements . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      allowedPlacements  =  placements$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  overflows  =  allowedPlacements . reduce ( function  ( acc ,  placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      acc [ placement ]  =  detectOverflow ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  placement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary :  boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary :  rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding :  padding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) [ getBasePlacement ( placement ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  acc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . keys ( overflows ) . sort ( function  ( a ,  b )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  overflows [ a ]  -  overflows [ b ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getExpandedFallbackPlacements ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( getBasePlacement ( placement )  ===  auto )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  oppositePlacement  =  getOppositePlacement ( placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ getOppositeVariationPlacement ( placement ) ,  oppositePlacement ,  getOppositeVariationPlacement ( oppositePlacement ) ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  flip ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref . name ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( state . modifiersData [ name ] . _skip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _options$mainAxis  =  options . mainAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checkMainAxis  =  _options$mainAxis  ===  void  0  ?  true  :  _options$mainAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$altAxis  =  options . altAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checkAltAxis  =  _options$altAxis  ===  void  0  ?  true  :  _options$altAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        specifiedFallbackPlacements  =  options . fallbackPlacements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding  =  options . padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary  =  options . boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary  =  options . rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        altBoundary  =  options . altBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$flipVariatio  =  options . flipVariations , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flipVariations  =  _options$flipVariatio  ===  void  0  ?  true  :  _options$flipVariatio , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        allowedAutoPlacements  =  options . allowedAutoPlacements ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  preferredPlacement  =  state . options . placement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  basePlacement  =  getBasePlacement ( preferredPlacement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isBasePlacement  =  basePlacement  ===  preferredPlacement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  fallbackPlacements  =  specifiedFallbackPlacements  ||  ( isBasePlacement  ||  ! flipVariations  ?  [ getOppositePlacement ( preferredPlacement ) ]  :  getExpandedFallbackPlacements ( preferredPlacement ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  placements  =  [ preferredPlacement ] . concat ( fallbackPlacements ) . reduce ( function  ( acc ,  placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  acc . concat ( getBasePlacement ( placement )  ===  auto  ?  computeAutoPlacement ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  placement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary :  boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary :  rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding :  padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flipVariations :  flipVariations , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        allowedAutoPlacements :  allowedAutoPlacements 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } )  :  placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceRect  =  state . rects . reference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperRect  =  state . rects . popper ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  checksMap  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  makeFallbackChecks  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  firstFittingPlacement  =  placements [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  i  =  0 ;  i  <  placements . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  placement  =  placements [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _basePlacement  =  getBasePlacement ( placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  isStartVariation  =  getVariation ( placement )  ===  start ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  isVertical  =  [ top ,  bottom ] . indexOf ( _basePlacement )  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  len  =  isVertical  ?  'width'  :  'height' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  overflow  =  detectOverflow ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  placement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary :  boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary :  rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        altBoundary :  altBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding :  padding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  mainVariationSide  =  isVertical  ?  isStartVariation  ?  right  :  left  :  isStartVariation  ?  bottom  :  top ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( referenceRect [ len ]  >  popperRect [ len ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mainVariationSide  =  getOppositePlacement ( mainVariationSide ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  altVariationSide  =  getOppositePlacement ( mainVariationSide ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  checks  =  [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( checkMainAxis )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checks . push ( overflow [ _basePlacement ]  <=  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( checkAltAxis )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checks . push ( overflow [ mainVariationSide ]  <=  0 ,  overflow [ altVariationSide ]  <=  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( checks . every ( function  ( check )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  check ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        firstFittingPlacement  =  placement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        makeFallbackChecks  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      checksMap . set ( placement ,  checks ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( makeFallbackChecks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // `2` may be desired in some cases – research later
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  numberOfChecks  =  flipVariations  ?  3  :  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _loop  =  function  _loop ( _i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  fittingPlacement  =  placements . find ( function  ( placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  checks  =  checksMap . get ( placement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( checks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  checks . slice ( 0 ,  _i ) . every ( function  ( check )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              return  check ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( fittingPlacement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          firstFittingPlacement  =  fittingPlacement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  "break" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( var  _i  =  numberOfChecks ;  _i  >  0 ;  _i -- )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        var  _ret  =  _loop ( _i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( _ret  ===  "break" )  break ; 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( state . placement  !==  firstFittingPlacement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . modifiersData [ name ] . _skip  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . placement  =  firstFittingPlacement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . reset  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  flip$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'flip' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'main' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  flip , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requiresIfExists :  [ 'offset' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _skip :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getSideOffsets ( overflow ,  rect ,  preventedOffsets )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( preventedOffsets  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      preventedOffsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        x :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      top :  overflow . top  -  rect . height  -  preventedOffsets . y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      right :  overflow . right  -  rect . width  +  preventedOffsets . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      bottom :  overflow . bottom  -  rect . height  +  preventedOffsets . y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      left :  overflow . left  -  rect . width  -  preventedOffsets . x 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  isAnySideFullyClipped ( overflow )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ top ,  right ,  bottom ,  left ] . some ( function  ( side )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  overflow [ side ]  >=  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  hide ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceRect  =  state . rects . reference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperRect  =  state . rects . popper ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  preventedOffsets  =  state . modifiersData . preventOverflow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceOverflow  =  detectOverflow ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      elementContext :  'reference' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperAltOverflow  =  detectOverflow ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      altBoundary :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceClippingOffsets  =  getSideOffsets ( referenceOverflow ,  referenceRect ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperEscapeOffsets  =  getSideOffsets ( popperAltOverflow ,  popperRect ,  preventedOffsets ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isReferenceHidden  =  isAnySideFullyClipped ( referenceClippingOffsets ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  hasPopperEscaped  =  isAnySideFullyClipped ( popperEscapeOffsets ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . modifiersData [ name ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      referenceClippingOffsets :  referenceClippingOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      popperEscapeOffsets :  popperEscapeOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isReferenceHidden :  isReferenceHidden , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      hasPopperEscaped :  hasPopperEscaped 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . attributes . popper  =  Object . assign ( { } ,  state . attributes . popper ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'data-popper-reference-hidden' :  isReferenceHidden , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'data-popper-escaped' :  hasPopperEscaped 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  hide$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'hide' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'main' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requiresIfExists :  [ 'preventOverflow' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  hide 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  distanceAndSkiddingToXY ( placement ,  rects ,  offset )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  basePlacement  =  getBasePlacement ( placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  invertDistance  =  [ left ,  top ] . indexOf ( basePlacement )  >=  0  ?  - 1  :  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _ref  =  typeof  offset  ===  'function'  ?  offset ( Object . assign ( { } ,  rects ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) )  :  offset , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        skidding  =  _ref [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        distance  =  _ref [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    skidding  =  skidding  ||  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    distance  =  ( distance  ||  0 )  *  invertDistance ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  [ left ,  right ] . indexOf ( basePlacement )  >=  0  ?  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  distance , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  skidding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  skidding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  distance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  offset ( _ref2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref2 . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref2 . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref2 . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _options$offset  =  options . offset , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offset  =  _options$offset  ===  void  0  ?  [ 0 ,  0 ]  :  _options$offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  data  =  placements . reduce ( function  ( acc ,  placement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      acc [ placement ]  =  distanceAndSkiddingToXY ( placement ,  state . rects ,  offset ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  acc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _data$state$placement  =  data [ state . placement ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        x  =  _data$state$placement . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        y  =  _data$state$placement . y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( state . modifiersData . popperOffsets  !=  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . modifiersData . popperOffsets . x  +=  x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      state . modifiersData . popperOffsets . y  +=  y ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    state . modifiersData [ name ]  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  offset$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'offset' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'main' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requires :  [ 'popperOffsets' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  offset 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  popperOffsets ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Offsets are the actual position the popper needs to have to be
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // properly positioned near its reference element
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This is the most basic placement, and will be adjusted by
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // the modifiers in the next step
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state . modifiersData [ name ]  =  computeOffsets ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reference :  state . rects . reference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element :  state . rects . popper , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      strategy :  'absolute' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  state . placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  popperOffsets$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'popperOffsets' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'read' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  popperOffsets , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getAltAxis ( axis )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  axis  ===  'x'  ?  'y'  :  'x' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  preventOverflow ( _ref )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  state  =  _ref . state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  _ref . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        name  =  _ref . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  _options$mainAxis  =  options . mainAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checkMainAxis  =  _options$mainAxis  ===  void  0  ?  true  :  _options$mainAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$altAxis  =  options . altAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        checkAltAxis  =  _options$altAxis  ===  void  0  ?  false  :  _options$altAxis , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        boundary  =  options . boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootBoundary  =  options . rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        altBoundary  =  options . altBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        padding  =  options . padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$tether  =  options . tether , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tether  =  _options$tether  ===  void  0  ?  true  :  _options$tether , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _options$tetherOffset  =  options . tetherOffset , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tetherOffset  =  _options$tetherOffset  ===  void  0  ?  0  :  _options$tetherOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  overflow  =  detectOverflow ( state ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      boundary :  boundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      rootBoundary :  rootBoundary , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      padding :  padding , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      altBoundary :  altBoundary 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  basePlacement  =  getBasePlacement ( state . placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  variation  =  getVariation ( state . placement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  isBasePlacement  =  ! variation ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  mainAxis  =  getMainAxisFromPlacement ( basePlacement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  altAxis  =  getAltAxis ( mainAxis ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperOffsets  =  state . modifiersData . popperOffsets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  referenceRect  =  state . rects . reference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  popperRect  =  state . rects . popper ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  tetherOffsetValue  =  typeof  tetherOffset  ===  'function'  ?  tetherOffset ( Object . assign ( { } ,  state . rects ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      placement :  state . placement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) )  :  tetherOffset ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  normalizedTetherOffsetValue  =  typeof  tetherOffsetValue  ===  'number'  ?  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      mainAxis :  tetherOffsetValue , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      altAxis :  tetherOffsetValue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  :  Object . assign ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      mainAxis :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      altAxis :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  tetherOffsetValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offsetModifierState  =  state . modifiersData . offset  ?  state . modifiersData . offset [ state . placement ]  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  data  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! popperOffsets )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( checkMainAxis )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _offsetModifierState$ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  mainSide  =  mainAxis  ===  'y'  ?  top  :  left ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  altSide  =  mainAxis  ===  'y'  ?  bottom  :  right ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  len  =  mainAxis  ===  'y'  ?  'height'  :  'width' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  offset  =  popperOffsets [ mainAxis ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  min$1  =  offset  +  overflow [ mainSide ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  max$1  =  offset  -  overflow [ altSide ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  additive  =  tether  ?  - popperRect [ len ]  /  2  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  minLen  =  variation  ===  start  ?  referenceRect [ len ]  :  popperRect [ len ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  maxLen  =  variation  ===  start  ?  - popperRect [ len ]  :  - referenceRect [ len ] ;  // We need to include the arrow in the calculation so the arrow doesn't go
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // outside the reference bounds
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowElement  =  state . elements . arrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowRect  =  tether  &&  arrowElement  ?  getLayoutRect ( arrowElement )  :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        width :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        height :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowPaddingObject  =  state . modifiersData [ 'arrow#persistent' ]  ?  state . modifiersData [ 'arrow#persistent' ] . padding  :  getFreshSideObject ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowPaddingMin  =  arrowPaddingObject [ mainSide ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowPaddingMax  =  arrowPaddingObject [ altSide ] ;  // If the reference length is smaller than the arrow length, we don't want
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // to include its full size in the calculation. If the reference is small
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // and near the edge of a boundary, the popper can overflow even if the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // reference is not overflowing as well (e.g. virtual elements with no
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // width or height)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  arrowLen  =  within ( 0 ,  referenceRect [ len ] ,  arrowRect [ len ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  minOffset  =  isBasePlacement  ?  referenceRect [ len ]  /  2  -  additive  -  arrowLen  -  arrowPaddingMin  -  normalizedTetherOffsetValue . mainAxis  :  minLen  -  arrowLen  -  arrowPaddingMin  -  normalizedTetherOffsetValue . mainAxis ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  maxOffset  =  isBasePlacement  ?  - referenceRect [ len ]  /  2  +  additive  +  arrowLen  +  arrowPaddingMax  +  normalizedTetherOffsetValue . mainAxis  :  maxLen  +  arrowLen  +  arrowPaddingMax  +  normalizedTetherOffsetValue . mainAxis ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  arrowOffsetParent  =  state . elements . arrow  &&  getOffsetParent ( state . elements . arrow ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  clientOffset  =  arrowOffsetParent  ?  mainAxis  ===  'y'  ?  arrowOffsetParent . clientTop  ||  0  :  arrowOffsetParent . clientLeft  ||  0  :  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  offsetModifierValue  =  ( _offsetModifierState$  =  offsetModifierState  ==  null  ?  void  0  :  offsetModifierState [ mainAxis ] )  !=  null  ?  _offsetModifierState$  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  tetherMin  =  offset  +  minOffset  -  offsetModifierValue  -  clientOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  tetherMax  =  offset  +  maxOffset  -  offsetModifierValue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  preventedOffset  =  within ( tether  ?  min ( min$1 ,  tetherMin )  :  min$1 ,  offset ,  tether  ?  max ( max$1 ,  tetherMax )  :  max$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      popperOffsets [ mainAxis ]  =  preventedOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      data [ mainAxis ]  =  preventedOffset  -  offset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( checkAltAxis )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _offsetModifierState$2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _mainSide  =  mainAxis  ===  'x'  ?  top  :  left ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _altSide  =  mainAxis  ===  'x'  ?  bottom  :  right ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _offset  =  popperOffsets [ altAxis ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _len  =  altAxis  ===  'y'  ?  'height'  :  'width' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _min  =  _offset  +  overflow [ _mainSide ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  _max  =  _offset  -  overflow [ _altSide ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  isOriginSide  =  [ top ,  left ] . indexOf ( basePlacement )  !==  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _offsetModifierValue  =  ( _offsetModifierState$2  =  offsetModifierState  ==  null  ?  void  0  :  offsetModifierState [ altAxis ] )  !=  null  ?  _offsetModifierState$2  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _tetherMin  =  isOriginSide  ?  _min  :  _offset  -  referenceRect [ _len ]  -  popperRect [ _len ]  -  _offsetModifierValue  +  normalizedTetherOffsetValue . altAxis ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _tetherMax  =  isOriginSide  ?  _offset  +  referenceRect [ _len ]  +  popperRect [ _len ]  -  _offsetModifierValue  -  normalizedTetherOffsetValue . altAxis  :  _max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  _preventedOffset  =  tether  &&  isOriginSide  ?  withinMaxClamp ( _tetherMin ,  _offset ,  _tetherMax )  :  within ( tether  ?  _tetherMin  :  _min ,  _offset ,  tether  ?  _tetherMax  :  _max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      popperOffsets [ altAxis ]  =  _preventedOffset ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      data [ altAxis ]  =  _preventedOffset  -  _offset ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    state . modifiersData [ name ]  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  preventOverflow$1  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    name :  'preventOverflow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    enabled :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    phase :  'main' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fn :  preventOverflow , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    requiresIfExists :  [ 'offset' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getHTMLElementScroll ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollLeft :  element . scrollLeft , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollTop :  element . scrollTop 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getNodeScroll ( node )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( node  ===  getWindow ( node )  ||  ! isHTMLElement ( node ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  getWindowScroll ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  getHTMLElementScroll ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  isElementScaled ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  rect  =  element . getBoundingClientRect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scaleX  =  round ( rect . width )  /  element . offsetWidth  ||  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  scaleY  =  round ( rect . height )  /  element . offsetHeight  ||  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  scaleX  !==  1  ||  scaleY  !==  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  // Returns the composite rect of an element relative to its offsetParent.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // Composite means it takes into account transforms as well as layout.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  getCompositeRect ( elementOrVirtualElement ,  offsetParent ,  isFixed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isFixed  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isFixed  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  isOffsetParentAnElement  =  isHTMLElement ( offsetParent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  offsetParentIsScaled  =  isHTMLElement ( offsetParent )  &&  isElementScaled ( offsetParent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  documentElement  =  getDocumentElement ( offsetParent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  rect  =  getBoundingClientRect ( elementOrVirtualElement ,  offsetParentIsScaled ,  isFixed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  scroll  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollLeft :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scrollTop :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  offsets  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isOffsetParentAnElement  ||  ! isOffsetParentAnElement  &&  ! isFixed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( getNodeName ( offsetParent )  !==  'body'  ||  // https://github.com/popperjs/popper-core/issues/1078
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      isScrollParent ( documentElement ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        scroll  =  getNodeScroll ( offsetParent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isHTMLElement ( offsetParent ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        offsets  =  getBoundingClientRect ( offsetParent ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        offsets . x  +=  offsetParent . clientLeft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets . y  +=  offsetParent . clientTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( documentElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        offsets . x  =  getWindowScrollBarX ( documentElement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      x :  rect . left  +  scroll . scrollLeft  -  offsets . x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      y :  rect . top  +  scroll . scrollTop  -  offsets . y , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      width :  rect . width , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      height :  rect . height 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  order ( modifiers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  map  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  visited  =  new  Set ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  result  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    modifiers . forEach ( function  ( modifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      map . set ( modifier . name ,  modifier ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ;  // On visiting object, check for its dependencies and visit them recursively
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function  sort ( modifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      visited . add ( modifier . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  requires  =  [ ] . concat ( modifier . requires  ||  [ ] ,  modifier . requiresIfExists  ||  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      requires . forEach ( function  ( dep )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! visited . has ( dep ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  depModifier  =  map . get ( dep ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( depModifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sort ( depModifier ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      result . push ( modifier ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    modifiers . forEach ( function  ( modifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! visited . has ( modifier . name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // check for visited object
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sort ( modifier ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  orderModifiers ( modifiers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // order based on dependencies
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  orderedModifiers  =  order ( modifiers ) ;  // order based on phase
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  modifierPhases . reduce ( function  ( acc ,  phase )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  acc . concat ( orderedModifiers . filter ( function  ( modifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  modifier . phase  ===  phase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  [ ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  debounce ( fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  pending ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! pending )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pending  =  new  Promise ( function  ( resolve )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Promise . resolve ( ) . then ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pending  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resolve ( fn ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  pending ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  mergeByName ( modifiers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    var  merged  =  modifiers . reduce ( function  ( merged ,  current )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  existing  =  merged [ current . name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      merged [ current . name ]  =  existing  ?  Object . assign ( { } ,  existing ,  current ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options :  Object . assign ( { } ,  existing . options ,  current . options ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data :  Object . assign ( { } ,  existing . data ,  current . data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } )  :  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  merged ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  { } ) ;  // IE11 does not support Object.values
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Object . keys ( merged ) . map ( function  ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  merged [ key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  DEFAULT _OPTIONS  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  'bottom' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    modifiers :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    strategy :  'absolute' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  areValidElements ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( var  _len  =  arguments . length ,  args  =  new  Array ( _len ) ,  _key  =  0 ;  _key  <  _len ;  _key ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      args [ _key ]  =  arguments [ _key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ! args . some ( function  ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  ! ( element  &&  typeof  element . getBoundingClientRect  ===  'function' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  popperGenerator ( generatorOptions )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( generatorOptions  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      generatorOptions  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    var  _generatorOptions  =  generatorOptions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _generatorOptions$def  =  _generatorOptions . defaultModifiers , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        defaultModifiers  =  _generatorOptions$def  ===  void  0  ?  [ ]  :  _generatorOptions$def , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        _generatorOptions$def2  =  _generatorOptions . defaultOptions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        defaultOptions  =  _generatorOptions$def2  ===  void  0  ?  DEFAULT _OPTIONS  :  _generatorOptions$def2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  function  createPopper ( reference ,  popper ,  options )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( options  ===  void  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options  =  defaultOptions ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      var  state  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        placement :  'bottom' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        orderedModifiers :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        options :  Object . assign ( { } ,  DEFAULT _OPTIONS ,  defaultOptions ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modifiersData :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elements :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          reference :  reference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          popper :  popper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        attributes :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        styles :  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  effectCleanupFns  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  isDestroyed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      var  instance  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        state :  state , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        setOptions :  function  setOptions ( setOptionsAction )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  options  =  typeof  setOptionsAction  ===  'function'  ?  setOptionsAction ( state . options )  :  setOptionsAction ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          cleanupModifierEffects ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . options  =  Object . assign ( { } ,  defaultOptions ,  state . options ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . scrollParents  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            reference :  isElement ( reference )  ?  listScrollParents ( reference )  :  reference . contextElement  ?  listScrollParents ( reference . contextElement )  :  [ ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            popper :  listScrollParents ( popper ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ;  // Orders the modifiers based on their dependencies and `phase`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // properties
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  orderedModifiers  =  orderModifiers ( mergeByName ( [ ] . concat ( defaultModifiers ,  state . options . modifiers ) ) ) ;  // Strip out disabled modifiers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . orderedModifiers  =  orderedModifiers . filter ( function  ( m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  m . enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ;  // Validate the provided modifiers so that the consumer will get warned
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          runModifierEffects ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  instance . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Sync update – it will always be executed, even if not necessary. This
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // is useful for low frequency updates where sync behavior simplifies the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // logic.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // For high frequency updates (e.g. `resize` and `scroll` events), always
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // prefer the async Popper#update method
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        forceUpdate :  function  forceUpdate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( isDestroyed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          var  _state$elements  =  state . elements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              reference  =  _state$elements . reference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              popper  =  _state$elements . popper ;  // Don't proceed if `reference` or `popper` are not valid elements
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // anymore
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( ! areValidElements ( reference ,  popper ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  // Store the reference and popper rects to be read by modifiers
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . rects  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            reference :  getCompositeRect ( reference ,  getOffsetParent ( popper ) ,  state . options . strategy  ===  'fixed' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            popper :  getLayoutRect ( popper ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ;  // Modifiers have the ability to reset the current update cycle. The
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // most common use case for this is the `flip` modifier changing the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // placement, which then needs to re-run all the modifiers, because the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // logic was previously ran for the previous placement and is therefore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // stale/incorrect
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . reset  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . placement  =  state . options . placement ;  // On each update cycle, the `modifiersData` property for each modifier
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // is filled with the initial data specified by the modifier. This means
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // it doesn't persist and is fresh on each update.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // To ensure persistent data, use `${name}#persistent`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          state . orderedModifiers . forEach ( function  ( modifier )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  state . modifiersData [ modifier . name ]  =  Object . assign ( { } ,  modifier . data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          for  ( var  index  =  0 ;  index  <  state . orderedModifiers . length ;  index ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( state . reset  ===  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state . reset  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              index  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  _state$orderedModifie  =  state . orderedModifiers [ index ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fn  =  _state$orderedModifie . fn , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _state$orderedModifie2  =  _state$orderedModifie . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                _options  =  _state$orderedModifie2  ===  void  0  ?  { }  :  _state$orderedModifie2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name  =  _state$orderedModifie . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( typeof  fn  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state  =  fn ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                state :  state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                options :  _options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                name :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                instance :  instance 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              } )  ||  state ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Async and optimistically optimized update – it will not be executed if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // not necessary (debounced to run at most once-per-tick)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        update :  debounce ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  new  Promise ( function  ( resolve )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            instance . forceUpdate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resolve ( state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        destroy :  function  destroy ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cleanupModifierEffects ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          isDestroyed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! areValidElements ( reference ,  popper ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  instance ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      instance . setOptions ( options ) . then ( function  ( state )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! isDestroyed  &&  options . onFirstUpdate )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options . onFirstUpdate ( state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ;  // Modifiers have the ability to execute arbitrary code before the first
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // update cycle runs. They will be executed in the same order as the update
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // cycle. This is useful when a modifier adds some persistent data that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // other modifiers need to use, but the modifier is run after the dependent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      function  runModifierEffects ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        state . orderedModifiers . forEach ( function  ( _ref3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  name  =  _ref3 . name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              _ref3$options  =  _ref3 . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              options  =  _ref3$options  ===  void  0  ?  { }  :  _ref3$options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              effect  =  _ref3 . effect ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( typeof  effect  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  cleanupFn  =  effect ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state :  state , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              name :  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              instance :  instance , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              options :  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            var  noopFn  =  function  noopFn ( )  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            effectCleanupFns . push ( cleanupFn  ||  noopFn ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      function  cleanupModifierEffects ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        effectCleanupFns . forEach ( function  ( fn )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  fn ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        effectCleanupFns  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  instance ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  var  createPopper$2  =  /*#__PURE__*/ popperGenerator ( ) ;  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  defaultModifiers$1  =  [ eventListeners ,  popperOffsets$1 ,  computeStyles$1 ,  applyStyles$1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  createPopper$1  =  /*#__PURE__*/ popperGenerator ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    defaultModifiers :  defaultModifiers$1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ;  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  defaultModifiers  =  [ eventListeners ,  popperOffsets$1 ,  computeStyles$1 ,  applyStyles$1 ,  offset$1 ,  flip$1 ,  preventOverflow$1 ,  arrow$1 ,  hide$1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  var  createPopper  =  /*#__PURE__*/ popperGenerator ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    defaultModifiers :  defaultModifiers 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ;  // eslint-disable-next-line import/no-unused-modules
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Popper  =  /*#__PURE__*/ Object . freeze ( /*#__PURE__*/ Object . defineProperty ( { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _ _proto _ _ :  null , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    popperGenerator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    detectOverflow , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    createPopperBase :  createPopper$2 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    createPopper , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    createPopperLite :  createPopper$1 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    top , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bottom , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    right , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    left , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auto , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    basePlacements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    start , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clippingParents , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    viewport , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popper , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reference , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    variationPlacements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placements , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    beforeRead , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    read , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    afterRead , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    beforeMain , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    main , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    afterMain , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    beforeWrite , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    write , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    afterWrite , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    modifierPhases , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    applyStyles :  applyStyles$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    arrow :  arrow$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    computeStyles :  computeStyles$1 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    eventListeners , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    flip :  flip$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hide :  hide$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  offset$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperOffsets :  popperOffsets$1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    preventOverflow :  preventOverflow$1 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ,  Symbol . toStringTag ,  {  value :  'Module'  } ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  dropdown . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$a  =  'dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$6  =  'bs.dropdown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$6  =  ` . ${ DATA _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$3  =  '.data-api' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  ESCAPE _KEY$2  =  'Escape' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  TAB _KEY$1  =  'Tab' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _UP _KEY$1  =  'ArrowUp' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _DOWN _KEY$1  =  'ArrowDown' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  RIGHT _MOUSE _BUTTON  =  2 ;  // MouseEvent.button value for the secondary button, usually the right button
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _HIDE$5  =  ` hide ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$5  =  ` hidden ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$5  =  ` show ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$5  =  ` shown ${ EVENT _KEY$6 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$3  =  ` click ${ EVENT _KEY$6 } ${ DATA _API _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DATA _API  =  ` keydown ${ EVENT _KEY$6 } ${ DATA _API _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYUP _DATA _API  =  ` keyup ${ EVENT _KEY$6 } ${ DATA _API _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$6  =  'show' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPUP  =  'dropup' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPEND  =  'dropend' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPSTART  =  'dropstart' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPUP _CENTER  =  'dropup-center' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPDOWN _CENTER  =  'dropdown-center' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$3  =  '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE _SHOWN  =  ` ${ SELECTOR _DATA _TOGGLE$3 } . ${ CLASS _NAME _SHOW$6 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _MENU  =  '.dropdown-menu' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _NAVBAR  =  '.navbar' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  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' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  PLACEMENT _TOPCENTER  =  'top' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PLACEMENT _BOTTOMCENTER  =  'bottom' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$9  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autoClose :  true , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    boundary :  'clippingParents' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display :  'dynamic' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    offset :  [ 0 ,  2 ] , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    popperConfig :  null , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    reference :  'toggle' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DefaultType$9  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autoClose :  '(boolean|string)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    boundary :  '(string|element)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    display :  'string' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    offset :  '(array|string|function)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    popperConfig :  '(null|object|function)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    reference :  '(string|element|object)' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _popper  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _parent  =  this . _element . parentNode ;  // dropdown wrapper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _menu  =  SelectorEngine . next ( this . _element ,  SELECTOR _MENU ) [ 0 ]  ||  SelectorEngine . prev ( this . _element ,  SELECTOR _MENU ) [ 0 ]  ||  SelectorEngine . findOne ( SELECTOR _MENU ,  this . _parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _inNavbar  =  this . _detectNavbar ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  Default$9 ; 
							 
						 
					
						
							
								
									
										
										
										
											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  get  DefaultType ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  DefaultType$9 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  NAME$a ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _isShown ( )  ?  this . hide ( )  :  this . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isDisabled ( this . _element )  ||  this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											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  relatedTarget  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  this . _element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$5 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _createPopper ( ) ;  // If this is a touch-enabled device we add extra
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement  &&  ! this . _parent . closest ( SELECTOR _NAVBAR _NAV ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  element  of  [ ] . concat ( ... document . body . children ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( element ,  'mouseover' ,  noop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											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 . _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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _menu . classList . add ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _SHOWN$5 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isDisabled ( this . _element )  ||  ! this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											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  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 ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    update ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _inNavbar  =  this . _detectNavbar ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _completeHide ( relatedTarget )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$5 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // 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 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  ( const  element  of  [ ] . concat ( ... document . body . children ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . off ( element ,  'mouseover' ,  noop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _menu . classList . remove ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-expanded' ,  'false' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Manipulator . removeDataAttribute ( this . _menu ,  'popper' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$5 ,  relatedTarget ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config  =  super . _getConfig ( config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . reference  ===  'object'  &&  ! isElement$1 ( config . reference )  &&  typeof  config . reference . getBoundingClientRect  !==  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Popper virtual elements require a getBoundingClientRect method
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        throw  new  TypeError ( ` ${ NAME$a . toUpperCase ( ) } : Option "reference" provided type "object" without a required "getBoundingClientRect" method. ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _createPopper ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( typeof  Popper  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  TypeError ( 'Bootstrap\'s dropdowns require Popper (https://popper.js.org)' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      let  referenceElement  =  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . reference  ===  'parent' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        referenceElement  =  this . _parent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( isElement$1 ( this . _config . reference ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        referenceElement  =  getElement ( this . _config . reference ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( typeof  this . _config . reference  ===  'object' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        referenceElement  =  this . _config . reference ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  popperConfig  =  this . _getPopperConfig ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _popper  =  createPopper ( referenceElement ,  this . _menu ,  popperConfig ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _isShown ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _menu . classList . contains ( CLASS _NAME _SHOW$6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getPlacement ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  parentDropdown  =  this . _parent ; 
							 
						 
					
						
							
								
									
										
										
										
											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 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( parentDropdown . classList . contains ( CLASS _NAME _DROPUP _CENTER ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  PLACEMENT _TOPCENTER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( parentDropdown . classList . contains ( CLASS _NAME _DROPDOWN _CENTER ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  PLACEMENT _BOTTOMCENTER ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }  // 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 ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _element . closest ( SELECTOR _NAVBAR )  !==  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  offset . split ( ',' ) . map ( value  =>  Number . parseInt ( value ,  10 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'offset' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            offset :  this . _getOffset ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ] 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ;  // Disable Popper if we have a static display or Dropdown is in Navbar
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _inNavbar  ||  this . _config . display  ===  'static' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Manipulator . setDataAttribute ( this . _menu ,  'popper' ,  'static' ) ;  // todo:v6 remove
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _selectMenuItem ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      key , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  items  =  SelectorEngine . find ( SELECTOR _VISIBLE _ITEMS ,  this . _menu ) . filter ( element  =>  isVisible ( element ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      getNextActiveElement ( items ,  target ,  key  ===  ARROW _DOWN _KEY$1 ,  ! items . includes ( target ) ) . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Dropdown . getOrCreateInstance ( this ,  config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  clearMenus ( event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( event . button  ===  RIGHT _MOUSE _BUTTON  ||  event . type  ===  'keyup'  &&  event . key  !==  TAB _KEY$1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  openToggles  =  SelectorEngine . find ( SELECTOR _DATA _TOGGLE _SHOWN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  toggle  of  openToggles )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  context  =  Dropdown . getInstance ( toggle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  composedPath  =  event . composedPath ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  isMenuTarget  =  composedPath . includes ( context . _menu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( context . _menu . contains ( event . target )  &&  ( event . type  ===  'keyup'  &&  event . key  ===  TAB _KEY$1  ||  /input|select|option|textarea|form/i . test ( event . target . tagName ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( event . type  ===  'click' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget . clickEvent  =  event ; 
							 
						 
					
						
							
								
									
										
										
										
											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 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  dataApiKeydownHandler ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If not an UP | DOWN | ESCAPE key => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // If input/textarea && if key is other than ESCAPE => not a dropdown command
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isInput  =  /input|textarea/i . test ( event . target . tagName ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isEscapeEvent  =  event . key  ===  ESCAPE _KEY$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isUpOrDownEvent  =  [ ARROW _UP _KEY$1 ,  ARROW _DOWN _KEY$1 ] . includes ( event . key ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isUpOrDownEvent  &&  ! isEscapeEvent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isInput  &&  ! isEscapeEvent )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      event . preventDefault ( ) ;  // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  getToggleButton  =  this . matches ( SELECTOR _DATA _TOGGLE$3 )  ?  this  :  SelectorEngine . prev ( this ,  SELECTOR _DATA _TOGGLE$3 ) [ 0 ]  ||  SelectorEngine . next ( this ,  SELECTOR _DATA _TOGGLE$3 ) [ 0 ]  ||  SelectorEngine . findOne ( SELECTOR _DATA _TOGGLE$3 ,  event . delegateTarget . parentNode ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  instance  =  Dropdown . getOrCreateInstance ( getToggleButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isUpOrDownEvent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . stopPropagation ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        instance . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        instance . _selectMenuItem ( event ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( instance . _isShown ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // else is escape and we check if it is shown
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        event . stopPropagation ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        instance . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        getToggleButton . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Dropdown . getOrCreateInstance ( this ) . toggle ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / scrollBar . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  PROPERTY _PADDING  =  'padding-right' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  PROPERTY _MARGIN  =  'margin-right' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  ScrollBarHelper  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  document . body ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setElementAttributes ( this . _element ,  PROPERTY _PADDING ,  calculatedValue  =>  calculatedValue  +  width ) ;  // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setElementAttributes ( SELECTOR _FIXED _CONTENT ,  PROPERTY _PADDING ,  calculatedValue  =>  calculatedValue  +  width ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setElementAttributes ( SELECTOR _STICKY _CONTENT ,  PROPERTY _MARGIN ,  calculatedValue  =>  calculatedValue  -  width ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    reset ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( this . _element ,  'overflow' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( this . _element ,  PROPERTY _PADDING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( SELECTOR _FIXED _CONTENT ,  PROPERTY _PADDING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _resetElementAttributes ( SELECTOR _STICKY _CONTENT ,  PROPERTY _MARGIN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isOverflowing ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . getWidth ( )  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setElementAttributes ( selector ,  styleProperty ,  callback )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _saveInitialAttribute ( element ,  styleProperty ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  calculatedValue  =  window . getComputedStyle ( element ) . getPropertyValue ( styleProperty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . style . setProperty ( styleProperty ,  ` ${ callback ( Number . parseFloat ( calculatedValue ) ) } px ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 . _applyManipulationCallback ( selector ,  manipulationCallBack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _saveInitialAttribute ( element ,  styleProperty )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  actualValue  =  element . style . getPropertyValue ( styleProperty ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( actualValue )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Manipulator . setDataAttribute ( element ,  styleProperty ,  actualValue ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _resetElementAttributes ( selector ,  styleProperty )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  manipulationCallBack  =  element  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  value  =  Manipulator . getDataAttribute ( element ,  styleProperty ) ;  // We only want to remove the property if the value is `null`; the value can also be zero
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( value  ===  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . style . removeProperty ( styleProperty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Manipulator . removeDataAttribute ( element ,  styleProperty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . style . setProperty ( styleProperty ,  value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 . _applyManipulationCallback ( selector ,  manipulationCallBack ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _applyManipulationCallback ( selector ,  callBack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isElement$1 ( selector ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        callBack ( selector ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  sel  of  SelectorEngine . find ( selector ,  this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        callBack ( sel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / backdrop . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$9  =  'backdrop' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$4  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$5  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEDOWN  =  ` mousedown.bs. ${ NAME$9 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$8  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    className :  'modal-backdrop' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clickCallback :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    isAnimated :  false , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isVisible :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // if false, we use the backdrop helper without adding any element to the dom
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rootElement :  'body'  // give the choice to place backdrop under different elements
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DefaultType$8  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    className :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clickCallback :  '(function|null)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isAnimated :  'boolean' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isVisible :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootElement :  '(element|string)' 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Backdrop  extends  Config  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    constructor ( config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isAppended  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$8 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  element  =  this . _getElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . isAnimated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        reflow ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      element . classList . add ( CLASS _NAME _SHOW$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _getElement ( ) . classList . remove ( CLASS _NAME _SHOW$5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _emulateAnimation ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        execute ( callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _isAppended )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element ,  EVENT _MOUSEDOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _element . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isAppended  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        backdrop . className  =  this . _config . className ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _config . isAnimated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          backdrop . classList . add ( CLASS _NAME _FADE$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 . _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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // use getElement() with the default "body" to get a fresh Element on each instantiation
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . rootElement  =  getElement ( config . rootElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  element  =  this . _getElement ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _config . rootElement . append ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( element ,  EVENT _MOUSEDOWN ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        execute ( this . _config . clickCallback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isAppended  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _emulateAnimation ( callback )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      executeAfterTransition ( callback ,  this . _getElement ( ) ,  this . _config . isAnimated ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / focustrap . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$8  =  'focustrap' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$5  =  'bs.focustrap' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$5  =  ` . ${ DATA _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSIN$2  =  ` focusin ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _TAB  =  ` keydown.tab ${ EVENT _KEY$5 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TAB _KEY  =  'Tab' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TAB _NAV _FORWARD  =  'forward' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TAB _NAV _BACKWARD  =  'backward' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$7  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autofocus :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trapElement :  null  // The element to trap focus inside of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$7  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    autofocus :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trapElement :  'element' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  FocusTrap  extends  Config  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isActive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _lastTabNavDirection  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    activate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isActive )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _config . autofocus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _config . trapElement . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _KEY$5 ) ;  // guard against infinite focus loop
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( document ,  EVENT _FOCUSIN$2 ,  event  =>  this . _handleFocusin ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( document ,  EVENT _KEYDOWN _TAB ,  event  =>  this . _handleKeydown ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isActive  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    deactivate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _isActive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isActive  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . off ( document ,  EVENT _KEY$5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _handleFocusin ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        trapElement 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event . target  ===  document  ||  event . target  ===  trapElement  ||  trapElement . contains ( event . target ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  elements  =  SelectorEngine . focusableChildren ( trapElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( elements . length  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        trapElement . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  if  ( this . _lastTabNavDirection  ===  TAB _NAV _BACKWARD )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elements [ elements . length  -  1 ] . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elements [ 0 ] . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _handleKeydown ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( event . key  !==  TAB _KEY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _lastTabNavDirection  =  event . shiftKey  ?  TAB _NAV _BACKWARD  :  TAB _NAV _FORWARD ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  modal . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$7  =  'modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$4  =  'bs.modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$4  =  ` . ${ DATA _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$2  =  '.data-api' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  ESCAPE _KEY$1  =  'Escape' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _HIDE$4  =  ` hide ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE _PREVENTED$1  =  ` hidePrevented ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$4  =  ` hidden ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$4  =  ` show ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$4  =  ` shown ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _RESIZE$1  =  ` resize ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DISMISS  =  ` click.dismiss ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEDOWN _DISMISS  =  ` mousedown.dismiss ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DISMISS$1  =  ` keydown.dismiss ${ EVENT _KEY$4 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$2  =  ` click ${ EVENT _KEY$4 } ${ DATA _API _KEY$2 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _OPEN  =  'modal-open' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$3  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$4  =  'show' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _STATIC  =  'modal-static' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  OPEN _SELECTOR$1  =  '.modal.show' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _DIALOG  =  '.modal-dialog' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _MODAL _BODY  =  '.modal-body' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$2  =  '[data-bs-toggle="modal"]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Default$6  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    focus :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$6  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  '(boolean|string)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    focus :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Modal  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _dialog  =  SelectorEngine . findOne ( SELECTOR _DIALOG ,  this . _element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop  =  this . _initializeBackDrop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap  =  this . _initializeFocusTrap ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _scrollBar  =  new  ScrollBarHelper ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _addEventListeners ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  Default$6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$6 ; 
							 
						 
					
						
							
								
									
										
										
										
											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  get  NAME ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  NAME$7 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$4 ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        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 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . show ( ( )  =>  this . _showElement ( relatedTarget ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isTransitioning  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap . deactivate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _SHOW$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  this . _hideModal ( ) ,  this . _element ,  this . _isAnimated ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  htmlElement  of  [ window ,  this . _dialog ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . off ( htmlElement ,  EVENT _KEY$4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _backdrop . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap . deactivate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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 ) , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // 'static' option will be translated to true, and booleans will keep their value,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        isAnimated :  this . _isAnimated ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeFocusTrap ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  new  FocusTrap ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        trapElement :  this . _element 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _showElement ( relatedTarget )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // try to append dynamic modal
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! document . body . contains ( this . _element ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        document . body . append ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 . _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 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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  ( modalBody )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modalBody . scrollTop  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      reflow ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOW$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  transitionComplete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . focus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          this . _focustrap . activate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isTransitioning  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$4 ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          relatedTarget 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( transitionComplete ,  this . _dialog ,  this . _isAnimated ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _KEYDOWN _DISMISS$1 ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( event . key  !==  ESCAPE _KEY$1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . keyboard )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _triggerBackdropTransition ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( window ,  EVENT _RESIZE$1 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _isShown  &&  ! this . _isTransitioning )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _adjustDialog ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _MOUSEDOWN _DISMISS ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . one ( this . _element ,  EVENT _CLICK _DISMISS ,  event2  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( this . _element  !==  event . target  ||  this . _element  !==  event2 . target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( this . _config . backdrop  ===  'static' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            this . _triggerBackdropTransition ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( this . _config . backdrop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _HIDDEN$4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isAnimated ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( CLASS _NAME _FADE$3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _triggerBackdropTransition ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  EVENT _HIDE _PREVENTED$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isModalOverflowing  =  this . _element . scrollHeight  >  document . documentElement . clientHeight ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  initialOverflowY  =  this . _element . style . overflowY ;  // return if the following background transition hasn't yet completed
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( initialOverflowY  ===  'hidden'  ||  this . _element . classList . contains ( CLASS _NAME _STATIC ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											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  ( ! isModalOverflowing )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . style . overflowY  =  'hidden' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _STATIC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _STATIC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _queueCallback ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _element . style . overflowY  =  initialOverflowY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  this . _dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( isBodyOverflowing  &&  ! isModalOverflowing )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  property  =  isRTL ( )  ?  'paddingLeft'  :  'paddingRight' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . style [ property ]  =  ` ${ scrollbarWidth } px ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isBodyOverflowing  &&  isModalOverflowing )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  property  =  isRTL ( )  ?  'paddingRight'  :  'paddingLeft' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . style [ property ]  =  ` ${ scrollbarWidth } px ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        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 ] ( relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											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 . 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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    EventHandler . one ( target ,  EVENT _SHOW$4 ,  showEvent  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . one ( target ,  EVENT _HIDDEN$4 ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isVisible ( this ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ;  // avoid conflict when clicking modal toggler while another one is open
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  alreadyOpen  =  SelectorEngine . findOne ( OPEN _SELECTOR$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( alreadyOpen )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Modal . getInstance ( alreadyOpen ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  data  =  Modal . getOrCreateInstance ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . toggle ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  enableDismissTrigger ( Modal ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  offcanvas . 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$6  =  'offcanvas' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$3  =  'bs.offcanvas' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$3  =  ` . ${ DATA _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _API _KEY$1  =  '.data-api' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API$2  =  ` load ${ EVENT _KEY$3 } ${ DATA _API _KEY$1 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  ESCAPE _KEY  =  'Escape' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$3  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOWING$1  =  'showing' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _HIDING  =  'hiding' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _BACKDROP  =  'offcanvas-backdrop' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  OPEN _SELECTOR  =  '.offcanvas.show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$3  =  ` show ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$3  =  ` shown ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$3  =  ` hide ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE _PREVENTED  =  ` hidePrevented ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$3  =  ` hidden ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _RESIZE  =  ` resize ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API$1  =  ` click ${ EVENT _KEY$3 } ${ DATA _API _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN _DISMISS  =  ` keydown.dismiss ${ EVENT _KEY$3 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE$1  =  '[data-bs-toggle="offcanvas"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$5  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    backdrop :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    keyboard :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    scroll :  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DefaultType$5  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    backdrop :  '(boolean|string)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    keyboard :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    scroll :  'boolean' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Offcanvas  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isShown  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop  =  this . _initializeBackDrop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap  =  this . _initializeFocusTrap ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$5 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$6 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show ( relatedTarget )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  EVENT _SHOW$3 ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 . _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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOWING$1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  completeCallBack  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! this . _config . scroll  ||  this . _config . backdrop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _focustrap . activate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _SHOW$3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _SHOWING$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  EVENT _SHOWN$3 ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          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 22:00:54 +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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap . deactivate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _HIDING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _SHOW$3 ,  CLASS _NAME _HIDING ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _config . scroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          new  ScrollBarHelper ( ) . reset ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( completeCallback ,  this . _element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _backdrop . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _focustrap . deactivate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _initializeBackDrop ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  clickCallback  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _config . backdrop  ===  'static' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . trigger ( this . _element ,  EVENT _HIDE _PREVENTED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ;  // 'static' option will be translated to true, and booleans will keep their value
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isVisible  =  Boolean ( this . _config . backdrop ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  new  Backdrop ( { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        className :  CLASS _NAME _BACKDROP , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isVisible , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        isAnimated :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootElement :  this . _element . parentNode , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        clickCallback :  isVisible  ?  clickCallback  :  null 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeFocusTrap ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  new  FocusTrap ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        trapElement :  this . _element 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _addEventListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _KEYDOWN _DISMISS ,  event  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( event . key  !==  ESCAPE _KEY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _config . keyboard )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . trigger ( this . _element ,  EVENT _HIDE _PREVENTED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // 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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											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 . 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    EventHandler . one ( target ,  EVENT _HIDDEN$3 ,  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  alreadyOpen  =  SelectorEngine . findOne ( OPEN _SELECTOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( alreadyOpen  &&  alreadyOpen  !==  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Offcanvas . getInstance ( alreadyOpen ) . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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  data  =  Offcanvas . getOrCreateInstance ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    data . toggle ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API$2 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  selector  of  SelectorEngine . find ( OPEN _SELECTOR ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Offcanvas . getOrCreateInstance ( selector ) . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _RESIZE ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  element  of  SelectorEngine . find ( '[aria-modal][class*=show][class*=offcanvas-]' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( getComputedStyle ( element ) . position  !==  'fixed' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Offcanvas . getOrCreateInstance ( element ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  enableDismissTrigger ( Offcanvas ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  defineJQueryPlugin ( Offcanvas ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / sanitizer . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  uriAttributes  =  new  Set ( [ 'background' ,  'cite' ,  'href' ,  'itemtype' ,  'longdesc' ,  'poster' ,  'src' ,  'xlink:href' ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  ARIA _ATTRIBUTE _PATTERN  =  /^aria-[\w-]*$/i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  A  pattern  that  recognizes  a  commonly  useful  subset  of  URLs  that  are  safe . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Shout - out  to  Angular  https : //github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SAFE _URL _PATTERN  =  /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  A  pattern  that  matches  safe  data  URLs .  Only  matches  image ,  video  and  audio  types . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Shout - out  to  Angular  https : //github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
 
							 
						 
					
						
							
								
									
										
										
										
											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  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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  allowedAttribute  =  ( attribute ,  allowedAttributeList )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  attributeName  =  attribute . nodeName . toLowerCase ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( allowedAttributeList . includes ( attributeName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( uriAttributes . has ( attributeName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Boolean ( SAFE _URL _PATTERN . test ( attribute . nodeValue )  ||  DATA _URL _PATTERN . test ( attribute . nodeValue ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Check if a regular expression validates the attribute.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  allowedAttributeList . filter ( attributeRegex  =>  attributeRegex  instanceof  RegExp ) . some ( regex  =>  regex . test ( attributeName ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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  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 :  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  function  sanitizeHtml ( unsafeHtml ,  allowList ,  sanitizeFunction )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! unsafeHtml . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  unsafeHtml ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( sanitizeFunction  &&  typeof  sanitizeFunction  ===  'function' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  sanitizeFunction ( unsafeHtml ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  domParser  =  new  window . DOMParser ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  createdDocument  =  domParser . parseFromString ( unsafeHtml ,  'text/html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  elements  =  [ ] . concat ( ... createdDocument . body . querySelectorAll ( '*' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( const  element  of  elements )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  elementName  =  element . nodeName . toLowerCase ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! Object . keys ( allowList ) . includes ( elementName ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  attributeList  =  [ ] . concat ( ... element . attributes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  allowedAttributes  =  [ ] . concat ( allowList [ '*' ]  ||  [ ] ,  allowList [ elementName ]  ||  [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  attribute  of  attributeList )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! allowedAttribute ( attribute ,  allowedAttributes ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . removeAttribute ( attribute . nodeName ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  createdDocument . body . innerHTML ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  util / template - factory . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  NAME$5  =  'TemplateFactory' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$4  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allowList :  DefaultAllowlist , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // { selector : text ,  selector2 : text2 , }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    extraClass :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    html :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitize :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  '<div></div>' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$4  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allowList :  'object' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  'object' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    extraClass :  '(string|function)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    html :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitize :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  '(null|function)' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    template :  'string' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultContentType  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    entry :  '(string|element|function|null)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    selector :  '(string|element)' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  class  TemplateFactory  extends  Config  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config  =  this . _getConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Object . values ( this . _config . content ) . map ( config  =>  this . _resolvePossibleFunction ( config ) ) . filter ( Boolean ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    hasContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . getContent ( ) . length  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    changeContent ( content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _checkContent ( content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _config . content  =  {  ... this . _config . content , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ... content 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    toHtml ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  templateWrapper  =  document . createElement ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      templateWrapper . innerHTML  =  this . _maybeSanitize ( this . _config . template ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  [ selector ,  text ]  of  Object . entries ( this . _config . content ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _setContent ( templateWrapper ,  text ,  selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  template  =  templateWrapper . children [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  extraClass  =  this . _resolvePossibleFunction ( this . _config . extraClass ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( extraClass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        template . classList . add ( ... extraClass . split ( ' ' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  template ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _typeCheckConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super . _typeCheckConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _checkContent ( config . content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _checkContent ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  [ selector ,  content ]  of  Object . entries ( arg ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        super . _typeCheckConfig ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          selector , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          entry :  content 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  DefaultContentType ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _setContent ( template ,  content ,  selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  templateElement  =  SelectorEngine . findOne ( selector ,  template ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! templateElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      content  =  this . _resolvePossibleFunction ( content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templateElement . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isElement$1 ( content ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _putElementInTemplate ( getElement ( content ) ,  templateElement ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . html )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templateElement . innerHTML  =  this . _maybeSanitize ( content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      templateElement . textContent  =  content ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _maybeSanitize ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _config . sanitize  ?  sanitizeHtml ( arg ,  this . _config . allowList ,  this . _config . sanitizeFn )  :  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _resolvePossibleFunction ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  typeof  arg  ===  'function'  ?  arg ( this )  :  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _putElementInTemplate ( element ,  templateElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _config . html )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templateElement . innerHTML  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        templateElement . append ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      templateElement . textContent  =  element . textContent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  tooltip . js 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Constants 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NAME$4  =  'tooltip' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DISALLOWED _ATTRIBUTES  =  new  Set ( [ 'sanitize' ,  'allowList' ,  'sanitizeFn' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$2  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _MODAL  =  'modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$2  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _TOOLTIP _INNER  =  '.tooltip-inner' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _MODAL  =  ` . ${ CLASS _NAME _MODAL } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MODAL _HIDE  =  'hide.bs.modal' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _HOVER  =  'hover' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _FOCUS  =  'focus' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _CLICK  =  'click' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  TRIGGER _MANUAL  =  'manual' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDE$2  =  'hide' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _HIDDEN$2  =  'hidden' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOW$2  =  'show' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _SHOWN$2  =  'shown' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _INSERTED  =  'inserted' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _CLICK$1  =  'click' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSIN$1  =  'focusin' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _FOCUSOUT$1  =  'focusout' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSEENTER  =  'mouseenter' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _MOUSELEAVE  =  'mouseleave' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  AttachmentMap  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AUTO :  'auto' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    TOP :  'top' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    RIGHT :  isRTL ( )  ?  'left'  :  'right' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    BOTTOM :  'bottom' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LEFT :  isRTL ( )  ?  'right'  :  'left' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  Default$3  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    allowList :  DefaultAllowlist , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    animation :  true , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    boundary :  'clippingParents' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    container :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    customClass :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    delay :  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fallbackPlacements :  [ 'top' ,  'right' ,  'bottom' ,  'left' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    html :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  [ 0 ,  0 ] , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    placement :  'top' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  null , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sanitize :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  null , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    selector :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  '<div class="tooltip" role="tooltip">'  +  '<div class="tooltip-arrow"></div>'  +  '<div class="tooltip-inner"></div>'  +  '</div>' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'hover focus' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DefaultType$3  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    allowList :  'object' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    animation :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    boundary :  '(string|element)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    container :  '(string|element|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    customClass :  '(string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delay :  '(number|object)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fallbackPlacements :  'array' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    html :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  '(array|string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  '(string|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    popperConfig :  '(null|object|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitize :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sanitizeFn :  '(null|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    selector :  '(string|boolean)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    title :  '(string|element|function)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'string' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        throw  new  TypeError ( 'Bootstrap\'s tooltips require Popper (https://popper.js.org)' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ;  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isEnabled  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _timeout  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isHovered  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _activeTrigger  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _popper  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _templateFactory  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _newContent  =  null ;  // Protected
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . tip  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setListeners ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . selector )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _fixTitle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggleEnabled ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _isEnabled  =  ! this . _isEnabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    toggle ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _isEnabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _activeTrigger . click  =  ! this . _activeTrigger . click ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isShown ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _leave ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _enter ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      clearTimeout ( this . _timeout ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( this . _element . closest ( SELECTOR _MODAL ) ,  EVENT _MODAL _HIDE ,  this . _hideModalHandler ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _element . getAttribute ( 'data-bs-original-title' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . setAttribute ( 'title' ,  this . _element . getAttribute ( 'data-bs-original-title' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _disposePopper ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! ( this . _isWithContent ( )  &&  this . _isEnabled ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( this . _element ,  this . constructor . eventName ( EVENT _SHOW$2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  shadowRoot  =  findShadowRoot ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isInTheDom  =  ( shadowRoot  ||  this . _element . ownerDocument . documentElement ) . contains ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented  ||  ! isInTheDom )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }  // todo v6 remove this OR make it optional
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _disposePopper ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  tip  =  this . _getTipElement ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'aria-describedby' ,  tip . getAttribute ( 'id' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        container 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  this . _config ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _element . ownerDocument . documentElement . contains ( this . tip ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        container . append ( tip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . eventName ( EVENT _INSERTED ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _popper  =  this . _createPopper ( tip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . classList . add ( CLASS _NAME _SHOW$2 ) ;  // If this is a touch-enabled device we add extra
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( 'ontouchstart'  in  document . documentElement )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  ( const  element  of  [ ] . concat ( ... document . body . children ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          EventHandler . on ( element ,  'mouseover' ,  noop ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . eventName ( EVENT _SHOWN$2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( this . _isHovered  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _leave ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _isHovered  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . tip ,  this . _isAnimated ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    hide ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  EventHandler . trigger ( this . _element ,  this . constructor . eventName ( 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  tip  =  this . _getTipElement ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . classList . remove ( CLASS _NAME _SHOW$2 ) ;  // If this is a touch-enabled device we remove the extra
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // 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 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  ( const  element  of  [ ] . concat ( ... document . body . children ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . off ( element ,  'mouseover' ,  noop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											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 . _activeTrigger [ TRIGGER _CLICK ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTrigger [ TRIGGER _FOCUS ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTrigger [ TRIGGER _HOVER ]  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isHovered  =  null ;  // it is a trick to support manual triggering
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _isWithActiveTrigger ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _isHovered )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _disposePopper ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . removeAttribute ( 'aria-describedby' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        EventHandler . trigger ( this . _element ,  this . constructor . eventName ( EVENT _HIDDEN$2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  this . tip ,  this . _isAnimated ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    update ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _popper . update ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Protected
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isWithContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Boolean ( this . _getTitle ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getTipElement ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . tip  =  this . _createTipElement ( this . _newContent  ||  this . _getContentForTemplate ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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  this . tip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _createTipElement ( content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tip  =  this . _getTemplateFactory ( content ) . toHtml ( ) ;  // todo: remove this check on v6
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      tip . classList . remove ( CLASS _NAME _FADE$2 ,  CLASS _NAME _SHOW$2 ) ;  // todo: on v6 the following can be achieved with CSS only
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      tip . classList . add ( ` bs- ${ this . constructor . NAME } -auto ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  tipId  =  getUID ( this . constructor . NAME ) . toString ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tip . setAttribute ( 'id' ,  tipId ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isAnimated ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        tip . classList . add ( CLASS _NAME _FADE$2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  tip ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setContent ( content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _newContent  =  content ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _isShown ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _disposePopper ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getTemplateFactory ( content )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _templateFactory )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _templateFactory . changeContent ( content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _templateFactory  =  new  TemplateFactory ( {  ... this . _config , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // the `content` var has to be after `this._config`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // to override config.content in case of popover
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          content , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          extraClass :  this . _resolvePossibleFunction ( this . _config . customClass ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _templateFactory ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getContentForTemplate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ SELECTOR _TOOLTIP _INNER ] :  this . _getTitle ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getTitle ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _resolvePossibleFunction ( this . _config . title )  ||  this . _element . getAttribute ( 'data-bs-original-title' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeOnDelegatedTarget ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . constructor . getOrCreateInstance ( event . delegateTarget ,  this . _getDelegateConfig ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isAnimated ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _config . animation  ||  this . tip  &&  this . tip . classList . contains ( CLASS _NAME _FADE$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isShown ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . tip  &&  this . tip . classList . contains ( CLASS _NAME _SHOW$2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _createPopper ( tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  placement  =  typeof  this . _config . placement  ===  'function'  ?  this . _config . placement . call ( this ,  tip ,  this . _element )  :  this . _config . placement ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  attachment  =  AttachmentMap [ placement . toUpperCase ( ) ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  createPopper ( this . _element ,  tip ,  this . _getPopperConfig ( attachment ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  offset . split ( ',' ) . map ( value  =>  Number . parseInt ( value ,  10 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											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 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _resolvePossibleFunction ( arg )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  typeof  arg  ===  'function'  ?  arg . call ( this . _element )  :  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'preventOverflow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            boundary :  this . _config . boundary 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          name :  'arrow' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          options :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            element :  ` . ${ this . constructor . NAME } -arrow ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          name :  'preSetPlacement' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          enabled :  true , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          phase :  'beforeMain' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fn :  data  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _getTipElement ( ) . setAttribute ( 'data-popper-placement' ,  data . state . placement ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ] 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setListeners ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  triggers  =  this . _config . trigger . split ( ' ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  trigger  of  triggers )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( trigger  ===  'click' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  this . constructor . eventName ( EVENT _CLICK$1 ) ,  this . _config . selector ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  context  =  this . _initializeOnDelegatedTarget ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . toggle ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  if  ( trigger  !==  TRIGGER _MANUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          const  eventIn  =  trigger  ===  TRIGGER _HOVER  ?  this . constructor . eventName ( EVENT _MOUSEENTER )  :  this . constructor . eventName ( EVENT _FOCUSIN$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  eventOut  =  trigger  ===  TRIGGER _HOVER  ?  this . constructor . eventName ( EVENT _MOUSELEAVE )  :  this . constructor . eventName ( EVENT _FOCUSOUT$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  eventIn ,  this . _config . selector ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  context  =  this . _initializeOnDelegatedTarget ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . _activeTrigger [ event . type  ===  'focusin'  ?  TRIGGER _FOCUS  :  TRIGGER _HOVER ]  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . _enter ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          EventHandler . on ( this . _element ,  eventOut ,  this . _config . selector ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            const  context  =  this . _initializeOnDelegatedTarget ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . _activeTrigger [ event . type  ===  'focusout'  ?  TRIGGER _FOCUS  :  TRIGGER _HOVER ]  =  context . _element . contains ( event . relatedTarget ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            context . _leave ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element . closest ( SELECTOR _MODAL ) ,  EVENT _MODAL _HIDE ,  this . _hideModalHandler ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! title )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . _element . getAttribute ( 'aria-label' )  &&  ! this . _element . textContent . trim ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . setAttribute ( 'aria-label' ,  title ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . setAttribute ( 'data-bs-original-title' ,  title ) ;  // DO NOT USE IT. Is only for backwards compatibility
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . removeAttribute ( 'title' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _enter ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isShown ( )  ||  this . _isHovered )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _isHovered  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isHovered  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( this . _isHovered )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ,  this . _config . delay . show ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _leave ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _isWithActiveTrigger ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _isHovered  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setTimeout ( ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! this . _isHovered )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ,  this . _config . delay . hide ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setTimeout ( handler ,  timeout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      clearTimeout ( this . _timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _timeout  =  setTimeout ( handler ,  timeout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isWithActiveTrigger ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Object . values ( this . _activeTrigger ) . includes ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getConfig ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  dataAttributes  =  Manipulator . getDataAttributes ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  dataAttribute  of  Object . keys ( dataAttributes ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( DISALLOWED _ATTRIBUTES . has ( dataAttribute ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          delete  dataAttributes [ dataAttribute ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  {  ... dataAttributes , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ... ( typeof  config  ===  'object'  &&  config  ?  config  :  { } ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config  =  this . _mergeConfigObj ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config  =  this . _configAfterMerge ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _typeCheckConfig ( config ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . selector  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config . trigger  =  'manual' ;  // In the future can be replaced with:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // `Object.fromEntries(keysWithDifferentValues)`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _disposePopper ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _popper )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _popper . destroy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _popper  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . tip )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . tip . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . tip  =  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  popover . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _TITLE  =  '.popover-header' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _CONTENT  =  '.popover-body' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Default$2  =  {  ... Tooltip . Default , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    content :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    offset :  [ 0 ,  8 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    placement :  'right' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    template :  '<div class="popover" role="tooltip">'  +  '<div class="popover-arrow"></div>'  +  '<h3 class="popover-header"></h3>'  +  '<div class="popover-body"></div>'  +  '</div>' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    trigger :  'click' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$2  =  {  ... Tooltip . DefaultType , 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    content :  '(null|string|element|function)' 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Overrides
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _isWithContent ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _getTitle ( )  ||  this . _getContent ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getContentForTemplate ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ SELECTOR _TITLE ] :  this . _getTitle ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        [ SELECTOR _CONTENT ] :  this . _getContent ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getContent ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      return  this . _resolvePossibleFunction ( this . _config . content ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  data [ config ]  ===  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          throw  new  TypeError ( ` No method named " ${ config } " ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  scrollspy . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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$2  =  'scrollspy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DATA _KEY$2  =  'bs.scrollspy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEY$2  =  ` . ${ DATA _KEY$2 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  DATA _API _KEY  =  '.data-api' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _ACTIVATE  =  ` activate ${ EVENT _KEY$2 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _CLICK  =  ` click ${ EVENT _KEY$2 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API$1  =  ` load ${ EVENT _KEY$2 } ${ DATA _API _KEY } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _DROPDOWN _ITEM  =  'dropdown-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE$1  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _SPY  =  '[data-bs-spy="scroll"]' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _TARGET _LINKS  =  '[href]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _LIST _GROUP  =  '.nav, .list-group' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _LINKS  =  '.nav-link' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _NAV _ITEMS  =  '.nav-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _LIST _ITEMS  =  '.list-group-item' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _LINK _ITEMS  =  ` ${ SELECTOR _NAV _LINKS } ,  ${ SELECTOR _NAV _ITEMS }  >  ${ SELECTOR _NAV _LINKS } ,  ${ SELECTOR _LIST _ITEMS } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN  =  '.dropdown' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _TOGGLE$1  =  '.dropdown-toggle' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  Default$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootMargin :  '0px 0px -25%' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    smoothScroll :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    target :  null , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    threshold :  [ 0.1 ,  0.5 ,  1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  DefaultType$1  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    offset :  '(number|null)' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // TODO v6 @deprecated, keep it for backwards compatibility reasons
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rootMargin :  'string' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    smoothScroll :  'boolean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    target :  'element' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    threshold :  'array' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  ScrollSpy  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ;  // this._element is the observablesContainer and config.target the menu links wrapper
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _targetLinks  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _observableSections  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _rootElement  =  getComputedStyle ( this . _element ) . overflowY  ===  'visible'  ?  null  :  this . _element ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTarget  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _observer  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _previousScrollData  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        visibleEntryTop :  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        parentScrollTop :  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . refresh ( ) ;  // initialize
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  get  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _initializeTargetsAndObservables ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _maybeEnableSmoothScroll ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _observer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _observer . disconnect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _observer  =  this . _getNewObserver ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  section  of  this . _observableSections . values ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _observer . observe ( section ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _observer . disconnect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _configAfterMerge ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      config . target  =  getElement ( config . target )  ||  document . body ;  // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      config . rootMargin  =  config . offset  ?  ` ${ config . offset } px 0px -30% `  :  config . rootMargin ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( typeof  config . threshold  ===  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        config . threshold  =  config . threshold . split ( ',' ) . map ( value  =>  Number . parseFloat ( value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _maybeEnableSmoothScroll ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _config . smoothScroll )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // unregister any previous listeners
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      EventHandler . off ( this . _config . target ,  EVENT _CLICK ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _config . target ,  EVENT _CLICK ,  SELECTOR _TARGET _LINKS ,  event  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  observableSection  =  this . _observableSections . get ( event . target . hash ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( observableSection )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  root  =  this . _rootElement  ||  window ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  height  =  observableSection . offsetTop  -  this . _element . offsetTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( root . scrollTo )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            root . scrollTo ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              top :  height , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              behavior :  'smooth' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          }  // Chrome 60 doesn't support `scrollTo`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          root . scrollTop  =  height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getNewObserver ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  options  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        root :  this . _rootElement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        threshold :  this . _config . threshold , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        rootMargin :  this . _config . rootMargin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  new  IntersectionObserver ( entries  =>  this . _observerCallback ( entries ) ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // The logic of selection
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _observerCallback ( entries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  targetElement  =  entry  =>  this . _targetLinks . get ( ` # ${ entry . target . id } ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  activate  =  entry  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _previousScrollData . visibleEntryTop  =  entry . target . offsetTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _process ( targetElement ( entry ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  parentScrollTop  =  ( this . _rootElement  ||  document . documentElement ) . scrollTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  userScrollsDown  =  parentScrollTop  >=  this . _previousScrollData . parentScrollTop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _previousScrollData . parentScrollTop  =  parentScrollTop ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      for  ( const  entry  of  entries )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! entry . isIntersecting )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _activeTarget  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _clearActiveClass ( targetElement ( entry ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  entryIsLowerThanPrevious  =  entry . target . offsetTop  >=  this . _previousScrollData . visibleEntryTop ;  // if we are scrolling down, pick the bigger offsetTop
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( userScrollsDown  &&  entryIsLowerThanPrevious )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          activate ( entry ) ;  // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( ! parentScrollTop )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  // if we are scrolling up, pick the smallest offsetTop
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! userScrollsDown  &&  ! entryIsLowerThanPrevious )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          activate ( entry ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _initializeTargetsAndObservables ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _targetLinks  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _observableSections  =  new  Map ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  targetLinks  =  SelectorEngine . find ( SELECTOR _TARGET _LINKS ,  this . _config . target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  anchor  of  targetLinks )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // ensure that the anchor has an id and is not disabled
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! anchor . hash  ||  isDisabled ( anchor ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  observableSection  =  SelectorEngine . findOne ( anchor . hash ,  this . _element ) ;  // ensure that the observableSection exists & is visible
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( isVisible ( observableSection ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          this . _targetLinks . set ( anchor . hash ,  anchor ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          this . _observableSections . set ( anchor . hash ,  observableSection ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _process ( target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( this . _activeTarget  ===  target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _clearActiveClass ( this . _config . target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activeTarget  =  target ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      target . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activateParents ( target ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . trigger ( this . _element ,  EVENT _ACTIVATE ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        relatedTarget :  target 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _activateParents ( target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // Activate dropdown parents
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( target . classList . contains ( CLASS _NAME _DROPDOWN _ITEM ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SelectorEngine . findOne ( SELECTOR _DROPDOWN _TOGGLE$1 ,  target . closest ( SELECTOR _DROPDOWN ) ) . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  listGroup  of  SelectorEngine . parents ( target ,  SELECTOR _NAV _LIST _GROUP ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // Set triggered links parents as active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  item  of  SelectorEngine . prev ( listGroup ,  SELECTOR _LINK _ITEMS ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          item . classList . add ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _clearActiveClass ( parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      parent . classList . remove ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  activeNodes  =  SelectorEngine . find ( ` ${ SELECTOR _TARGET _LINKS } . ${ CLASS _NAME _ACTIVE$1 } ` ,  parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  node  of  activeNodes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        node . classList . remove ( CLASS _NAME _ACTIVE$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( data [ config ]  ===  undefined  ||  config . startsWith ( '_' )  ||  config  ===  'constructor' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API$1 ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  spy  of  SelectorEngine . find ( SELECTOR _DATA _SPY ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ScrollSpy . getOrCreateInstance ( spy ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  tab . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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  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 } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  EVENT _CLICK _DATA _API  =  ` click ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _KEYDOWN  =  ` keydown ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  EVENT _LOAD _DATA _API  =  ` load ${ EVENT _KEY$1 } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _LEFT _KEY  =  'ArrowLeft' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _RIGHT _KEY  =  'ArrowRight' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _UP _KEY  =  'ArrowUp' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  ARROW _DOWN _KEY  =  'ArrowDown' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _ACTIVE  =  'active' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _FADE$1  =  'fade' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  CLASS _NAME _SHOW$1  =  'show' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _DROPDOWN  =  'dropdown' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _TOGGLE  =  '.dropdown-toggle' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  SELECTOR _DROPDOWN _MENU  =  '.dropdown-menu' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  NOT _SELECTOR _DROPDOWN _TOGGLE  =  ':not(.dropdown-toggle)' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _TAB _PANEL  =  '.list-group, .nav, [role="tablist"]' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _OUTER  =  '.nav-item, .list-group-item' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _INNER  =  ` .nav-link ${ NOT _SELECTOR _DROPDOWN _TOGGLE } , .list-group-item ${ NOT _SELECTOR _DROPDOWN _TOGGLE } , [role="tab"] ${ NOT _SELECTOR _DROPDOWN _TOGGLE } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE  =  '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]' ;  // todo:v6: could be only `tab`
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _INNER _ELEM  =  ` ${ SELECTOR _INNER } ,  ${ SELECTOR _DATA _TOGGLE } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  SELECTOR _DATA _TOGGLE _ACTIVE  =  ` . ${ CLASS _NAME _ACTIVE } [data-bs-toggle="tab"], . ${ CLASS _NAME _ACTIVE } [data-bs-toggle="pill"], . ${ CLASS _NAME _ACTIVE } [data-bs-toggle="list"] ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Tab  extends  BaseComponent  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    constructor ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      super ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _parent  =  this . _element . closest ( SELECTOR _TAB _PANEL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! this . _parent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ;  // todo: should Throw exception on v6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Set up initial aria attributes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setInitialAttributes ( this . _parent ,  this . _getChildren ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      EventHandler . on ( this . _element ,  EVENT _KEYDOWN ,  event  =>  this . _keydown ( event ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Getters
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  NAME ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  NAME$1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Public
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // Shows this elem and deactivate the active sibling if exists
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  innerElem  =  this . _element ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . _elemIsActive ( innerElem ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  // Search for active tab on same parent to deactivate it
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  active  =  this . _getActiveElem ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  hideEvent  =  active  ?  EventHandler . trigger ( active ,  EVENT _HIDE$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  innerElem 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } )  :  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  showEvent  =  EventHandler . trigger ( innerElem ,  EVENT _SHOW$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        relatedTarget :  active 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( showEvent . defaultPrevented  ||  hideEvent  &&  hideEvent . defaultPrevented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _deactivate ( active ,  innerElem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activate ( innerElem ,  active ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _activate ( element ,  relatedElem )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      element . classList . add ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _activate ( getElementFromSelector ( element ) ) ;  // Search and activate/show the proper section
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( element . getAttribute ( 'role' )  !==  'tab' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . classList . add ( CLASS _NAME _SHOW$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . removeAttribute ( 'tabindex' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'aria-selected' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _toggleDropDown ( element ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( element ,  EVENT _SHOWN$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  relatedElem 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  element ,  element . classList . contains ( CLASS _NAME _FADE$1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _deactivate ( element ,  relatedElem )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . classList . remove ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      element . blur ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _deactivate ( getElementFromSelector ( element ) ) ;  // Search and deactivate the shown section too
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  complete  =  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( element . getAttribute ( 'role' )  !==  'tab' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . classList . remove ( CLASS _NAME _SHOW$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'aria-selected' ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( 'tabindex' ,  '-1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _toggleDropDown ( element ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        EventHandler . trigger ( element ,  EVENT _HIDDEN$1 ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          relatedTarget :  relatedElem 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _queueCallback ( complete ,  element ,  element . classList . contains ( CLASS _NAME _FADE$1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _keydown ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! [ ARROW _LEFT _KEY ,  ARROW _RIGHT _KEY ,  ARROW _UP _KEY ,  ARROW _DOWN _KEY ] . includes ( event . key ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      event . stopPropagation ( ) ;  // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  isNext  =  [ ARROW _RIGHT _KEY ,  ARROW _DOWN _KEY ] . includes ( event . key ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  nextActiveElement  =  getNextActiveElement ( this . _getChildren ( ) . filter ( element  =>  ! isDisabled ( element ) ) ,  event . target ,  isNext ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( nextActiveElement )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nextActiveElement . focus ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          preventScroll :  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Tab . getOrCreateInstance ( nextActiveElement ) . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getChildren ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // collection of inner elements
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  SelectorEngine . find ( SELECTOR _INNER _ELEM ,  this . _parent ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _getActiveElem ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _getChildren ( ) . find ( child  =>  this . _elemIsActive ( child ) )  ||  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _setInitialAttributes ( parent ,  children )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setAttributeIfNotExists ( parent ,  'role' ,  'tablist' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  child  of  children )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _setInitialAttributesOnChild ( child ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setInitialAttributesOnChild ( child )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      child  =  this . _getInnerElement ( child ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  isActive  =  this . _elemIsActive ( child ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  outerElem  =  this . _getOuterElement ( child ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      child . setAttribute ( 'aria-selected' ,  isActive ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( outerElem  !==  child )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _setAttributeIfNotExists ( outerElem ,  'role' ,  'presentation' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! isActive )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        child . setAttribute ( 'tabindex' ,  '-1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setAttributeIfNotExists ( child ,  'role' ,  'tab' ) ;  // set attributes to the related panel too
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _setInitialAttributesOnTargetPanel ( child ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _setInitialAttributesOnTargetPanel ( child )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  target  =  getElementFromSelector ( child ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! target )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _setAttributeIfNotExists ( target ,  'role' ,  'tabpanel' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( child . id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _setAttributeIfNotExists ( target ,  'aria-labelledby' ,  ` # ${ child . id } ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _toggleDropDown ( element ,  open )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  outerElem  =  this . _getOuterElement ( element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! outerElem . classList . contains ( CLASS _DROPDOWN ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  toggle  =  ( selector ,  className )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  element  =  SelectorEngine . findOne ( selector ,  outerElem ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( element )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          element . classList . toggle ( className ,  open ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      toggle ( SELECTOR _DROPDOWN _TOGGLE ,  CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      toggle ( SELECTOR _DROPDOWN _MENU ,  CLASS _NAME _SHOW$1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      outerElem . setAttribute ( 'aria-expanded' ,  open ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _setAttributeIfNotExists ( element ,  attribute ,  value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! element . hasAttribute ( attribute ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        element . setAttribute ( attribute ,  value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _elemIsActive ( elem )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  elem . classList . contains ( CLASS _NAME _ACTIVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Try to get the inner element (usually the .nav-link)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getInnerElement ( elem )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  elem . matches ( SELECTOR _INNER _ELEM )  ?  elem  :  SelectorEngine . findOne ( SELECTOR _INNER _ELEM ,  elem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Try to get the outer element (usually the .nav-item)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _getOuterElement ( elem )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  elem . closest ( SELECTOR _OUTER )  ||  elem ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  // Static
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  jQueryInterface ( config )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . each ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  data  =  Tab . getOrCreateInstance ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof  config  !==  'string' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data [ config ] ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											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 . 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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Tab . getOrCreateInstance ( this ) . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Initialize  on  focus 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  EventHandler . on ( window ,  EVENT _LOAD _DATA _API ,  ( )  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  element  of  SelectorEngine . find ( SELECTOR _DATA _TOGGLE _ACTIVE ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Tab . getOrCreateInstance ( element ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  toast . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  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 _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' ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  CLASS _NAME _HIDE  =  'hide' ;  // @deprecated - kept here only for backwards compatibility
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Class  definition 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  class  Toast  extends  BaseComponent  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    constructor ( element ,  config )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super ( element ,  config ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      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  Default ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  get  DefaultType ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  DefaultType ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        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 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . remove ( CLASS _NAME _HIDE ) ;  // @deprecated
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      reflow ( this . _element ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      this . _element . classList . add ( CLASS _NAME _SHOW ,  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 ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! this . isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											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  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  =  ( )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        this . _element . classList . add ( CLASS _NAME _HIDE ) ;  // @deprecated
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        this . _element . classList . remove ( CLASS _NAME _SHOWING ,  CLASS _NAME _SHOW ) ; 
							 
						 
					
						
							
								
									
										
										
										
											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 22:00:54 +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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dispose ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      this . _clearTimeout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( this . isShown ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      super . dispose ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isShown ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  this . _element . classList . contains ( CLASS _NAME _SHOW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  // Private
 
							 
						 
					
						
							
								
									
										
										
										
											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' : 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _hasMouseInteraction  =  isInteracting ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  'focusin' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  'focusout' : 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            this . _hasKeyboardInteraction  =  isInteracting ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											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 _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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Data  API  implementation 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  enableDismissTrigger ( Toast ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  jQuery 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Bootstrap  ( v5 . 2.3 ) :  index . umd . js 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  Licensed  under  MIT  ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * / 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  index _umd  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Alert , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Button , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Carousel , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Collapse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Dropdown , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Modal , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Offcanvas , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Popover , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ScrollSpy , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Tab , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Toast , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Tooltip 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 20:43:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  return  index _umd ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-14 22:00:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ) ;  
						 
					
						
							
								
									
										
										
										
											2019-01-09 06:54:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//# sourceMappingURL=bootstrap.bundle.js.map