@@ -468,37 +468,30 @@ const setSelectRect = (
468468
469469const getElementDurationTime = ( elementId ?: string ) => {
470470 const element = elementId ? querySelectById ( elementId ) : getDocument ( ) . body
471- const durationTime = window . getComputedStyle ( element ) . getPropertyValue ( 'transition-duration' )
472- const delayTime = window . getComputedStyle ( element ) . getPropertyValue ( 'transition-delay' )
473- const transition = window . getComputedStyle ( element ) . getPropertyValue ( 'transition' )
474- let delayArray : string [ ] = [ ]
475- if ( transition ) {
476- const delayRegex = / ( [ 0 - 9 ] + ( \. [ 0 - 9 ] + ) ? ) ( s | m s | S | M S ) /
477- const transitions = transition . split ( ',' )
478- transitions . forEach ( ( item ) => {
479- const parts = item . trim ( ) . split ( ' ' )
480- delayArray = delayArray . concat ( parts )
471+ const transitionDuration = window . getComputedStyle ( element ) . getPropertyValue ( 'transition-duration' )
472+ const transitionDelay = window . getComputedStyle ( element ) . getPropertyValue ( 'transition-delay' )
473+ let delayTime = 0
474+ const getMaxMillisecondNumber = ( arr : string [ ] ) => {
475+ const millisecondNumber = arr . map ( ( item ) => {
476+ const unit = item . slice ( - 2 )
477+ if ( unit === 'ms' ) {
478+ return parseFloat ( item )
479+ } else {
480+ return parseFloat ( item ) * 1000
481+ }
481482 } )
482- delayArray = delayArray . filter ( ( delay ) => delayRegex . test ( delay ) )
483+ return millisecondNumber . length ? Math . max ( ... millisecondNumber ) : 0
483484 }
484-
485- if ( durationTime ) {
486- delayArray . push ( durationTime )
485+ if ( transitionDuration ) {
486+ const transitionDurations = transitionDuration . split ( ',' )
487+ delayTime += getMaxMillisecondNumber ( transitionDurations )
487488 }
488489
489- if ( delayTime ) {
490- delayArray . push ( delayTime )
490+ if ( transitionDelay ) {
491+ const transitionDelays = transitionDelay . split ( ',' )
492+ delayTime += getMaxMillisecondNumber ( transitionDelays )
491493 }
492-
493- const delayTimes : any [ ] = delayArray . map ( ( item ) => {
494- const unit = item . slice ( - 2 )
495- if ( unit === 'ms' ) {
496- return parseFloat ( item )
497- } else {
498- return parseFloat ( item ) * 1000
499- }
500- } )
501- return delayTimes . length ? Math . max ( ...delayTimes ) : 300
494+ return delayTime === 0 ? 300 : delayTime
502495}
503496
504497export const updateRect = ( id ?: string ) => {
0 commit comments