#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# 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.
    });