diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/build/widget-child/widget-child-debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/build/widget-child/widget-child-debug.js Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,383 @@ +/* +YUI 3.10.3 (build 2fb5187) +Copyright 2013 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ + +YUI.add('widget-child', function (Y, NAME) { + +/** + * Extension enabling a Widget to be a child of another Widget. + * + * @module widget-child + */ + +var Lang = Y.Lang; + +/** + * Widget extension providing functionality enabling a Widget to be a + * child of another Widget. + * + * @class WidgetChild + * @param {Object} config User configuration object. +*/ +function Child() { + + // Widget method overlap + Y.after(this._syncUIChild, this, "syncUI"); + Y.after(this._bindUIChild, this, "bindUI"); + +} + +Child.ATTRS = { + + /** + * @attribute selected + * @type Number + * @default 0 + * + * @description Number indicating if the Widget is selected. Possible + * values are: + *
+ *
0
(Default) Not selected
+ *
1
Fully selected
+ *
2
Partially selected
+ *
+ */ + selected: { + value: 0, + validator: Lang.isNumber + }, + + + /** + * @attribute index + * @type Number + * @readOnly + * + * @description Number representing the Widget's ordinal position in its + * parent Widget. + */ + index: { + readOnly: true, + getter: function () { + + var parent = this.get("parent"), + index = -1; + + if (parent) { + index = parent.indexOf(this); + } + + return index; + + } + }, + + + /** + * @attribute parent + * @type Widget + * @readOnly + * + * @description Retrieves the parent of the Widget in the object hierarchy. + */ + parent: { + readOnly: true + }, + + + /** + * @attribute depth + * @type Number + * @default -1 + * @readOnly + * + * @description Number representing the depth of this Widget relative to + * the root Widget in the object heirarchy. + */ + depth: { + readOnly: true, + getter: function () { + + var parent = this.get("parent"), + root = this.get("root"), + depth = -1; + + while (parent) { + + depth = (depth + 1); + + if (parent == root) { + break; + } + + parent = parent.get("parent"); + + } + + return depth; + + } + }, + + /** + * @attribute root + * @type Widget + * @readOnly + * + * @description Returns the root Widget in the object hierarchy. If the + * ROOT_TYPE property is set, the search for the root Widget will be + * constrained to parent Widgets of the specified type. + */ + root: { + readOnly: true, + getter: function () { + + var getParent = function (child) { + + var parent = child.get("parent"), + FnRootType = child.ROOT_TYPE, + criteria = parent; + + if (FnRootType) { + criteria = (parent && Y.instanceOf(parent, FnRootType)); + } + + return (criteria ? getParent(parent) : child); + + }; + + return getParent(this); + + } + } + +}; + +Child.prototype = { + + /** + * Constructor reference used to determine the root of a Widget-based + * object tree. + *

+ * Currently used to control the behavior of the root + * attribute so that recursing up the object heirarchy can be constrained + * to a specific type of Widget. Widget authors should set this property + * to the constructor function for a given Widget implementation. + *

+ * + * @property ROOT_TYPE + * @type Object + */ + ROOT_TYPE: null, + + /** + * Returns the node on which to bind delegate listeners. + * + * Override of Widget's implementation of _getUIEventNode() to ensure that + * all event listeners are bound to the Widget's topmost DOM element. + * This ensures that the firing of each type of Widget UI event (click, + * mousedown, etc.) is facilitated by a single, top-level, delegated DOM + * event listener. + * + * @method _getUIEventNode + * @for Widget + * @protected + */ + _getUIEventNode: function () { + var root = this.get("root"), + returnVal; + + if (root) { + returnVal = root.get("boundingBox"); + } + + return returnVal; + }, + + /** + * @method next + * @description Returns the Widget's next sibling. + * @param {Boolean} circular Boolean indicating if the parent's first child + * should be returned if the child has no next sibling. + * @return {Widget} Widget instance. + */ + next: function (circular) { + + var parent = this.get("parent"), + sibling; + + if (parent) { + sibling = parent.item((this.get("index")+1)); + } + + if (!sibling && circular) { + sibling = parent.item(0); + } + + return sibling; + + }, + + + /** + * @method previous + * @description Returns the Widget's previous sibling. + * @param {Boolean} circular Boolean indicating if the parent's last child + * should be returned if the child has no previous sibling. + * @return {Widget} Widget instance. + */ + previous: function (circular) { + + var parent = this.get("parent"), + index = this.get("index"), + sibling; + + if (parent && index > 0) { + sibling = parent.item([(index-1)]); + } + + if (!sibling && circular) { + sibling = parent.item((parent.size() - 1)); + } + + return sibling; + + }, + + + // Override of Y.WidgetParent.remove() + // Sugar implementation allowing a child to remove itself from its parent. + remove: function (index) { + + var parent, + removed; + + if (Lang.isNumber(index)) { + removed = Y.WidgetParent.prototype.remove.apply(this, arguments); + } + else { + + parent = this.get("parent"); + + if (parent) { + removed = parent.remove(this.get("index")); + } + + } + + return removed; + + }, + + + /** + * @method isRoot + * @description Determines if the Widget is the root Widget in the + * object hierarchy. + * @return {Boolean} Boolean indicating if Widget is the root Widget in the + * object hierarchy. + */ + isRoot: function () { + return (this == this.get("root")); + }, + + + /** + * @method ancestor + * @description Returns the Widget instance at the specified depth. + * @param {number} depth Number representing the depth of the ancestor. + * @return {Widget} Widget instance. + */ + ancestor: function (depth) { + + var root = this.get("root"), + parent; + + if (this.get("depth") > depth) { + + parent = this.get("parent"); + + while (parent != root && parent.get("depth") > depth) { + parent = parent.get("parent"); + } + + } + + return parent; + + }, + + + /** + * Updates the UI to reflect the selected attribute value. + * + * @method _uiSetChildSelected + * @protected + * @param {number} selected The selected value to be reflected in the UI. + */ + _uiSetChildSelected: function (selected) { + + var box = this.get("boundingBox"), + sClassName = this.getClassName("selected"); + + if (selected === 0) { + box.removeClass(sClassName); + } + else { + box.addClass(sClassName); + } + + }, + + + /** + * Default attribute change listener for the selected + * attribute, responsible for updating the UI, in response to + * attribute changes. + * + * @method _afterChildSelectedChange + * @protected + * @param {EventFacade} event The event facade for the attribute change. + */ + _afterChildSelectedChange: function (event) { + this._uiSetChildSelected(event.newVal); + }, + + + /** + * Synchronizes the UI to match the WidgetChild state. + *

+ * This method is invoked after bindUI is invoked for the Widget class + * using YUI's aop infrastructure. + *

+ * + * @method _syncUIChild + * @protected + */ + _syncUIChild: function () { + this._uiSetChildSelected(this.get("selected")); + }, + + + /** + * Binds event listeners responsible for updating the UI state in response + * to WidgetChild related state changes. + *

+ * This method is invoked after bindUI is invoked for the Widget class + * using YUI's aop infrastructure. + *

+ * @method _bindUIChild + * @protected + */ + _bindUIChild: function () { + this.after("selectedChange", this._afterChildSelectedChange); + } + +}; + +Y.WidgetChild = Child; + +}, '3.10.3', {"requires": ["base-build", "widget"]});