AutorÃa | Ultima modificación | Ver Log |
YUI.add('attribute-base', function (Y, NAME) {/*** The attribute module provides an augmentable Attribute implementation, which* adds configurable attributes and attribute change events to the class being* augmented. It also provides a State class, which is used internally by Attribute,* but can also be used independently to provide a name/property/value data structure to* store state.** @module attribute*//*** The attribute-base submodule provides core attribute handling support, with everything* aside from complex attribute handling in the provider's constructor.** @module attribute* @submodule attribute-base*//*** <p>* Attribute provides configurable attribute support along with attribute change events. It is designed to be* augmented on to a host class, and provides the host with the ability to configure attributes to store and retrieve state,* along with attribute change events.* </p>* <p>For example, attributes added to the host can be configured:</p>* <ul>* <li>As read only.</li>* <li>As write once.</li>* <li>With a setter function, which can be used to manipulate* values passed to Attribute's <a href="#method_set">set</a> method, before they are stored.</li>* <li>With a getter function, which can be used to manipulate stored values,* before they are returned by Attribute's <a href="#method_get">get</a> method.</li>* <li>With a validator function, to validate values before they are stored.</li>* </ul>** <p>See the <a href="#method_addAttr">addAttr</a> method, for the complete set of configuration* options available for attributes.</p>** <p><strong>NOTE:</strong> Most implementations will be better off extending the <a href="Base.html">Base</a> class,* instead of augmenting Attribute directly. Base augments Attribute and will handle the initial configuration* of attributes for derived classes, accounting for values passed into the constructor.</p>** @class Attribute* @param attrs {Object} The attributes to add during construction (passed through to <a href="#method_addAttrs">addAttrs</a>).* These can also be defined on the constructor being augmented with Attribute by defining the ATTRS property on the constructor.* @param values {Object} The initial attribute values to apply (passed through to <a href="#method_addAttrs">addAttrs</a>).* These are not merged/cloned. The caller is responsible for isolating user provided values if required.* @param lazy {boolean} Whether or not to add attributes lazily (passed through to <a href="#method_addAttrs">addAttrs</a>).* @uses AttributeCore* @uses AttributeObservable* @uses EventTarget* @uses AttributeExtras*/function Attribute() {Y.AttributeCore.apply(this, arguments);Y.AttributeObservable.apply(this, arguments);Y.AttributeExtras.apply(this, arguments);}Y.mix(Attribute, Y.AttributeCore, false, null, 1);Y.mix(Attribute, Y.AttributeExtras, false, null, 1);// Needs to be `true`, to overwrite methods from AttributeCoreY.mix(Attribute, Y.AttributeObservable, true, null, 1);/*** <p>The value to return from an attribute setter in order to prevent the set from going through.</p>** <p>You can return this value from your setter if you wish to combine validator and setter* functionality into a single setter function, which either returns the massaged value to be stored or* AttributeCore.INVALID_VALUE to prevent invalid values from being stored.</p>** @property INVALID_VALUE* @type Object* @static* @final*/Attribute.INVALID_VALUE = Y.AttributeCore.INVALID_VALUE;/*** The list of properties which can be configured for* each attribute (e.g. setter, getter, writeOnce etc.).** This property is used internally as a whitelist for faster* Y.mix operations.** @property _ATTR_CFG* @type Array* @static* @protected*/Attribute._ATTR_CFG = Y.AttributeCore._ATTR_CFG.concat(Y.AttributeObservable._ATTR_CFG);/*** Utility method to protect an attribute configuration hash, by merging the* entire object and the individual attr config objects.** @method protectAttrs* @static* @param {Object} attrs A hash of attribute to configuration object pairs.* @return {Object} A protected version of the `attrs` argument.*/Attribute.protectAttrs = Y.AttributeCore.protectAttrs;Y.Attribute = Attribute;}, '3.18.1', {"requires": ["attribute-core", "attribute-observable", "attribute-extras"]});