Version 3.18.1
Show:

File: event/js/resize-window.js

            /**
             * Adds a window resize event that has its behavior normalized to fire at the
             * end of the resize rather than constantly during the resize.
             * @module event
             * @submodule event-resize
             */
            
            
            /**
             * Old firefox fires the window resize event once when the resize action
             * finishes, other browsers fire the event periodically during the
             * resize.  This code uses timeout logic to simulate the Firefox
             * behavior in other browsers.
             * @event windowresize
             * @for YUI
             */
            Y.Event.define('windowresize', {
            
                on: (Y.UA.gecko && Y.UA.gecko < 1.91) ?
                    function (node, sub, notifier) {
                        sub._handle = Y.Event.attach('resize', function (e) {
                            notifier.fire(e);
                        });
                    } :
                    function (node, sub, notifier) {
                        // interval bumped from 40 to 100ms as of 3.4.1
                        var delay = Y.config.windowResizeDelay || 100;
            
                        sub._handle = Y.Event.attach('resize', function (e) {
                            if (sub._timer) {
                                sub._timer.cancel();
                            }
            
                            sub._timer = Y.later(delay, Y, function () {
                                notifier.fire(e);
                            });
                        });
                    },
            
                detach: function (node, sub) {
                    if (sub._timer) {
                        sub._timer.cancel();
                    }
                    sub._handle.detach();
                }
                // delegate methods not defined because this only works for window
                // subscriptions, so...yeah.
            });