event-custom.js revision feff5ae3b2148d5fbd8677623d98ba844dea1943
f0aad5341752aefe5059832f6cf3abc3283c6e16Tinderbox User * Custom event engine, DOM event listener abstraction layer, synthetic DOM
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * @module event-custom
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * @submodule event-custom-base
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * Return value from all subscribe operations
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @class EventHandle
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @constructor
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * @param evt {CustomEvent} the custom event
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * @param sub {Subscriber} the subscriber
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User// var onsubscribeType = "_event:onsub",
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User 'currentTarget',
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User 'emitFacade',
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User 'preventable',
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User 'preventedFn',
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * The custom event
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @type CustomEvent
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * The subscriber object
7e71f05d8643aca84914437c900cb716444507e4Tinderbox User * @type Subscriber
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * Detaches this subscriber
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * @method detach
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User detach: function() {
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User // Y.log('EventHandle.detach: ' + this.sub, 'info', 'Event');
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * The CustomEvent class lets you define events for your application
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * that can be subscribed to by one or more independent component.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * @param {String} type The type of event, which is passed to the callback
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * when the event fires
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * @param o configuration object
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @class CustomEvent
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * @constructor
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User // if (arguments.length > 2) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User// this.log('CustomEvent context and silent are now in the config', 'warn', 'Event');
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * The type of event, returned to subscribers when the event fires
7e71f05d8643aca84914437c900cb716444507e4Tinderbox User * @property type
cd32f419a8a5432fbb139f56ee73cbf68b9350ccTinderbox User * @type string
7e71f05d8643aca84914437c900cb716444507e4Tinderbox User * The context the the event will fire from by default. Defaults to the YUI
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @property context
1ebb25608fa10737ea27abd4e0481707ccd45581Tinderbox User * @type object
this.subscribers = {};
this.afters = {};
this.preventable = true;
this.bubbles = true;
this.applyConfig(o, true);
if (!fn) {
this.hasAfters = true;
this.hasSubscribers = true;
return new Y.EventHandle(this, s);
if (!fn) {
return this.unsubscribeAll();
for (i in subs) {
s = subs[i];
this._delete(s);
found = true;
return found;
unsubscribe: function() {
var ret;
if (!this.silent) {
fire: function() {
this.fired = true;
if (this.emitFacade) {
return this.stopped ? false : true;
for (i in subs) {
s = subs[i];
if (s && s.fn) {
if (this.host !== Y) {
unsubscribeAll: function() {
detachAll: function() {
for (i in subs) {
this.subscribers={};
_delete: function(s) {
delete s.fn;
delete s.context;
this.events = null;
if (a || args) {
return ret;
var c = this.context,
ret = true;
return ret;
if (context) {