11/**
2- * Copyright IBM Corp. 2016, 2023
2+ * Copyright IBM Corp. 2016, 2025
33 *
44 * This source code is licensed under the Apache-2.0 license found in the
55 * LICENSE file in the root directory of this source tree.
88// mdn resize function
99import window from 'window-or-global' ;
1010
11- const OptimizedResize = ( function optimizedResize ( ) {
12- const callbacks = [ ] ;
11+ /**
12+ * A callback function to be executed on `resize`.
13+ */
14+ type Callback = ( ) => void ;
15+
16+ export const OptimizedResize = ( ( ) => {
17+ const callbacks : Callback [ ] = [ ] ;
1318 let running = false ;
1419
15- // run the actual callbacks
16- function runCallbacks ( ) {
20+ const runCallbacks = ( ) => {
1721 callbacks . forEach ( ( callback ) => {
1822 callback ( ) ;
1923 } ) ;
2024
2125 running = false ;
22- }
26+ } ;
2327
24- // fired on resize event
25- function resize ( ) {
28+ const handleResize = ( ) => {
2629 if ( ! running ) {
2730 running = true ;
2831 window . requestAnimationFrame ( runCallbacks ) ;
2932 }
30- }
31-
32- // adds callback to loop
33- function addCallback ( callback ) {
34- if ( callback ) {
35- const index = callbacks . indexOf ( callback ) ;
36- if ( index < 0 ) {
37- callbacks . push ( callback ) ;
38- }
33+ } ;
34+
35+ const addCallback = ( callback : Callback ) => {
36+ const index = callbacks . indexOf ( callback ) ;
37+ if ( index < 0 ) {
38+ callbacks . push ( callback ) ;
3939 }
40- }
40+ } ;
4141
4242 return {
43- // public method to add additional callback
44- add : ( callback ) => {
43+ /** Adds a callback function to be executed on window `resize`. */
44+ add : ( callback : Callback ) => {
4545 if ( ! callbacks . length ) {
46- window . addEventListener ( 'resize' , resize ) ;
46+ window . addEventListener ( 'resize' , handleResize ) ;
4747 }
4848 addCallback ( callback ) ;
4949 return {
50- release ( ) {
50+ /** Removes the callback. */
51+ remove : ( ) => {
5152 const index = callbacks . indexOf ( callback ) ;
5253 if ( index >= 0 ) {
5354 callbacks . splice ( index , 1 ) ;
@@ -57,5 +58,3 @@ const OptimizedResize = (function optimizedResize() {
5758 } ,
5859 } ;
5960} ) ( ) ;
60-
61- export default OptimizedResize ;
0 commit comments