12
* Base now destroys plugins before destroying itself
14
* Base.create/mix extensions can now define initializer and
15
destructor prototype functions, which will get invoked after
16
the initializer for the host class into which they are mixed and
17
before it's destructor.
19
* Use a hash version of whitelist mix for improved performance.
20
Also removed non-required hasOwnProperty check and delete.
25
* Fixed Base.mix when used on a class created using Base.create
27
* toString no longer inadvertently stamps the object, however,
28
we now stamp Base objects in the constructor, to support
29
use cases where the "toString" stamping was implicitly being
30
relied upon (e.g. in DD, as hashkeys).
35
* Fixed Base.create to properly isolate ATTRS on extensions
45
* As the final step in the destroy phase, Base now does a detachAll() to avoid invoking listeners
46
which may be waiting to be in an async. step which occurs after destruction.
48
* "init" and "destroy" events are now published with the defaultTargetOnly property set to true
50
* Added support for MyClass.EVENT_PREFIX to allow developers
51
to define their own event prefix
53
* Made "init" and "destroy" events fireOnce:true (along with
54
"render" in Widget), so that subscriptions made after the
55
events are fired, are notified immediately.
57
* Dynamic and non-dynamically built classes now have their
58
extensions instantiated the same way - during _initHierarchy.
60
* Updated ATTRS handling for Base.build, so that ATTRS are
61
also aggregated at the attribute configuration object level,
62
allowing extensions to add to, or overwrite, attribute
63
configuration properties on the host.
65
* Added sugar Base.create and Base.mix methods on top of
66
Base.build, to simplify the 2 main use cases:
68
1) Creating a completely new class which uses extensions.
69
2) Mixing in extensions to an existing class.
71
* Documented non-attribute on, after, bubbleTargets and plugins
72
property support in the Base constructor config argument
77
* Fixed hasImpl method on built classes, to look up the class
78
hierarchy for applied extensions.
80
* Plugin.Host removed from base-base module and delivered as it's
81
own module - "pluginhost"
83
* base broken up into..
85
base-base: Provides class hierarchy support for ATTRS and
88
base-build: Provides Extension support in the form of
91
base-pluginhost: Augments Plugin.Host to Base, adding plugin
97
* Config argument for init event now merged into the event facade,
98
instead of being passed separately (available as e.cfg).
100
* Removed Base.create. On review, considered to be overkill.
101
Users can easily create new instances, using Base.build
103
* Moved PluginHost down from Widget to Base, since utils and
104
Node will also support Plugins.
106
* PluginHost.plug and unplug now accept the plugin class as
107
arguments [plug(pluginClass, cfg) and unplug(pluginClass)].
109
* Split base module up into base-base and base-build.
111
* Added lazy attribute initialization support, to improve performance.
113
This also removes order dependency when processing ATTRS for a
116
If a get/set call is made for an uninitialized attribute A, in the
117
getter/setter/validator or valueFns of another attribute B, A will
118
be intiailized on the fly.
120
* Added ability to subscribe to on/after events through the
121
constructor config object, e.g.:
126
myAttrChange: handlerFn
130
myAttrChange: handlerFn
135
* Developers can now override the default clone behavior we use to
136
isolate default ATTRS config values, using cloneDefaultValue, e.g.:
140
value: AnObjectOrArrayReference
141
cloneDefaultValue: true|false|"deep"|"shallow"
145
If the cloneDefaultValue property is not defined, Base will clone
146
any Arrays or Object literals which are used as default values when
147
configuring attributes for an instance, so that updates to instance
148
values do not modify the default value.
150
This behavior can be over-ridden using the cloneDefaultValue property:
154
Use Y.clone to protect the default value.
158
Use Y.merge, to protect the default value.
162
Don't clone Arrays or Object literals. The value is intended
163
to be used by reference, for example, when it points to
166
* Base.plug and Base.unplug used to add static Plugins (default plugins
167
for a class). Replaces static PLUGINS array, allowing subclasses to
168
easily unplug static plugins added higher up in the hierarchy.
170
* Base adds all attributes lazily. This means attributes don't get
171
initialized until the first call to get/set, speeding up construction
172
of Base based objects.
174
Attributes which have setters which set some other state in the object,
175
can configure the attribute to disable lazy initialization, by setting
176
lazyAdd:false as part of their attribute configuration, so that the setter
177
gets invoked during construction.
179
3.0.0PR1 - Initial release
180
--------------------------