11import { createState , type State } from '@videojs/store' ;
2- import { afterDoubleAnimationFrame , getMaxCSSTransitionTime } from '@videojs/utils/dom' ;
2+ import { getMaxCSSTransitionTime } from '@videojs/utils/dom' ;
33import { noop } from '@videojs/utils/function' ;
44import type { TransitionState } from '../../core/ui/transition' ;
55
@@ -16,57 +16,6 @@ export interface WaitForAnimationsOptions {
1616 includeCSSTransitions ?: boolean ;
1717}
1818
19- export interface ScheduleTransitionSettleOptions {
20- includeCSSTransitions ?: boolean ;
21- isVisuallyComplete ?: ( element : HTMLElement ) => boolean ;
22- }
23-
24- /** After double-RAF, optionally poll visual completion, then wait for animations to settle. */
25- export function scheduleTransitionSettle (
26- element : HTMLElement ,
27- isCurrent : ( ) => boolean ,
28- onSettled : ( ) => void ,
29- options : ScheduleTransitionSettleOptions = { }
30- ) : ( ) => void {
31- let pollRaf = 0 ;
32- let settled = false ;
33-
34- function settle ( ) : void {
35- if ( settled || ! isCurrent ( ) ) return ;
36- settled = true ;
37- cancelAnimationFrame ( pollRaf ) ;
38- pollRaf = 0 ;
39- onSettled ( ) ;
40- }
41-
42- function pollVisualComplete ( ) : void {
43- pollRaf = 0 ;
44- if ( settled || ! isCurrent ( ) ) return ;
45-
46- if ( options . isVisuallyComplete ?.( element ) ) {
47- settle ( ) ;
48- return ;
49- }
50-
51- pollRaf = requestAnimationFrame ( pollVisualComplete ) ;
52- }
53-
54- afterDoubleAnimationFrame ( isCurrent , ( ) => {
55- pollVisualComplete ( ) ;
56-
57- waitForAnimations ( element , {
58- includeCSSTransitions : options . includeCSSTransitions ?? false ,
59- } ) . then ( ( ) => {
60- settle ( ) ;
61- } ) ;
62- } ) ;
63-
64- return ( ) => {
65- settled = true ;
66- cancelAnimationFrame ( pollRaf ) ;
67- } ;
68- }
69-
7019/**
7120 * Manages open/close transition lifecycle via `createState`.
7221 *
@@ -109,8 +58,6 @@ export function createTransition(): TransitionApi {
10958 element = el ;
11059 }
11160
112- const animationTarget = element ;
113-
11461 state . patch ( { active : true , status : 'starting' , transitioning : true } ) ;
11562
11663 return new Promise < void > ( ( resolve ) => {
@@ -120,7 +67,7 @@ export function createTransition(): TransitionApi {
12067 rafId2 = 0 ;
12168 if ( destroyed || currentTransitionId !== transitionId || ! state . current . active ) return resolve ( ) ;
12269 state . patch ( { status : 'idle' } ) ;
123- waitForAnimations ( animationTarget ) . finally ( ( ) => {
70+ waitForAnimations ( element ) . finally ( ( ) => {
12471 if ( destroyed || currentTransitionId !== transitionId || ! state . current . active ) return resolve ( ) ;
12572 state . patch ( { transitioning : false } ) ;
12673 resolve ( ) ;
0 commit comments