UNPKG

raptor

Version:

RaptorJS provides an AMD module loader that works in Node, Rhino and the web browser. It also includes various sub-modules to support building optimized web applications.

77 lines (63 loc) 2.41 kB
define.Class( 'raptor/optimizer/OptimizerRenderContext', function(require) { "use strict"; var listeners = require('raptor/listeners'); var packaging = require('raptor/packaging'); var OptimizerRenderContext = function() { this._ob = listeners.createObservable(); this._enabledExtensions = null; this._waitFor = []; }; OptimizerRenderContext.prototype = { onBeforeSlot: function(slotName, cb) { this._ob.on('beforeSlot.' + slotName, cb); }, onAfterSlot: function(slotName, cb) { this._ob.on('afterSlot.' + slotName, cb); }, emitBeforeSlot: function(slotName, context) { this._ob.publish('beforeSlot.' + slotName, { context: context, slotName: slotName }); }, emitAfterSlot: function(slotName, context) { this._ob.publish('afterSlot.' + slotName, { context: context, slotName: slotName }); }, enableExtension: function(extensionName) { var extensions = this._enabledExtensions; if (!extensions) { extensions = this._enabledExtensions = packaging.createExtensionCollection(); } extensions.add(extensionName); }, disableExtension: function(extensionName) { var extensions = this._enabledExtensions; if (extensions) { extensions.remove(extensionName); } }, getEnabledExtensions: function() { return this._enabledExtensions; }, waitFor: function(promise) { if (!promise) { throw new Error('Invalid waitFor promise'); } if (Array.isArray(promise)) { this._waitFor = this._waitFor.concat(promise); } else { this._waitFor.push(promise); } }, getWaitFor: function() { return this._waitFor; } }; return OptimizerRenderContext; });