diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/build/view-node-map/view-node-map-debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/build/view-node-map/view-node-map-debug.js Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,91 @@ +/* +YUI 3.10.3 (build 2fb5187) +Copyright 2013 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ + +YUI.add('view-node-map', function (Y, NAME) { + +/** +View extension that adds a static `getByNode()` method that returns the nearest +View instance associated with the given Node (similar to Widget's `getByNode()` +method). + +@module app +@submodule view-node-map +@since 3.5.0 +**/ + +var buildCfg = Y.namespace('View._buildCfg'), + instances = {}; + +/** +View extension that adds a static `getByNode()` method that returns the nearest +View instance associated with the given Node (similar to Widget's `getByNode()` +method). + +Note that it's important to call `destroy()` on a View instance using this +extension when you plan to stop using it. This ensures that all internal +references to that View are cleared to prevent memory leaks. + +@class View.NodeMap +@extensionfor View +@since 3.5.0 +**/ +function NodeMap() {} + +// Tells Base.create() to mix the static getByNode method into built classes. +// We're cheating and modifying Y.View here, because right now there's no better +// way to do it. +buildCfg.aggregates || (buildCfg.aggregates = []); +buildCfg.aggregates.push('getByNode'); + +/** +Returns the nearest View instance associated with the given Node. The Node may +be a View container or any child of a View container. + +Note that only instances of Views that have the Y.View.NodeMap extension mixed +in will be returned. The base View class doesn't provide this functionality by +default due to the additional memory management overhead involved in maintaining +a mapping of Nodes to View instances. + +@method getByNode +@param {Node|HTMLElement|String} node Node instance, selector string, or + HTMLElement. +@return {View} Closest View instance associated with the given Node, or `null` + if no associated View instance was found. +@static +@since 3.5.0 +**/ +NodeMap.getByNode = function (node) { + var view; + + Y.one(node).ancestor(function (ancestor) { + return (view = instances[Y.stamp(ancestor, true)]) || false; + }, true); + + return view || null; +}; + +// To make this testable. +NodeMap._instances = instances; + +NodeMap.prototype = { + initializer: function () { + instances[Y.stamp(this.get('container'))] = this; + }, + + destructor: function () { + var stamp = Y.stamp(this.get('container'), true); + + if (stamp in instances) { + delete instances[stamp]; + } + } +}; + +Y.View.NodeMap = NodeMap; + + +}, '3.10.3', {"requires": ["view"]});