Broke Y.Attribute up into:
- Y.AttributeCore
- Y.AttributeEvents
- Y.AttributeExtras
To support core Attribute usage, without Events, but still allow upgrade
path to add Events, if required.
Y.AttributeCore is likely to form the basis for BaseCore and WidgetCore
(ala Node Plugins, where low-level state change events are not required).
Y.Attribute's public and protected API reimain unchanged, and loader will
pull in the new dependencies.
However if you're manually pulling in attribute-base, you'll need to
manually pull in attribute-core, attribute-events and attribute-extras
before it.
Summary:
Y.Attribute - Common Attribute Functionality (100% backwards compat)
Y.AttributeCore - Lightest Attribute support, without CustomEvents
--
Y.AttributeEvents - Augmentable Attribute Events support
Y.AttributeExtras - Augmentable 20% usage for Attribute (modifyAttr, removeAttr, reset ...)
Y.AttributeComplex - Augmentable support for constructor complex attribute parsing ({"x.y":foo})
--
Y.Attribute = Y.AttributeCore + Y.AttributeEvents + Y.AttributeExtras
--
Modules:
"attribute-base" : Y.Attribute
"attribute-core" : Y.AttributeCore
"attribute-complex" : Y.AttributeComplex mixin (mixed into Y.Attribute)
"attribute-events" : Y.AttributeEvents mixin
"attribute-extras" : Y.AttributeExtras mixin