You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.7 KiB
111 lines
2.7 KiB
/** |
|
* Copyright 2014-2015, Facebook, Inc. |
|
* All rights reserved. |
|
* |
|
* This source code is licensed under the BSD-style license found in the |
|
* LICENSE file in the root directory of this source tree. An additional grant |
|
* of patent rights can be found in the PATENTS file in the same directory. |
|
* |
|
* @providesModule ReactServerRenderingTransaction |
|
* @typechecks |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var PooledClass = require("./PooledClass"); |
|
var CallbackQueue = require("./CallbackQueue"); |
|
var ReactPutListenerQueue = require("./ReactPutListenerQueue"); |
|
var Transaction = require("./Transaction"); |
|
|
|
var assign = require("./Object.assign"); |
|
var emptyFunction = require("./emptyFunction"); |
|
|
|
/** |
|
* Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks |
|
* during the performing of the transaction. |
|
*/ |
|
var ON_DOM_READY_QUEUEING = { |
|
/** |
|
* Initializes the internal `onDOMReady` queue. |
|
*/ |
|
initialize: function() { |
|
this.reactMountReady.reset(); |
|
}, |
|
|
|
close: emptyFunction |
|
}; |
|
|
|
var PUT_LISTENER_QUEUEING = { |
|
initialize: function() { |
|
this.putListenerQueue.reset(); |
|
}, |
|
|
|
close: emptyFunction |
|
}; |
|
|
|
/** |
|
* Executed within the scope of the `Transaction` instance. Consider these as |
|
* being member methods, but with an implied ordering while being isolated from |
|
* each other. |
|
*/ |
|
var TRANSACTION_WRAPPERS = [ |
|
PUT_LISTENER_QUEUEING, |
|
ON_DOM_READY_QUEUEING |
|
]; |
|
|
|
/** |
|
* @class ReactServerRenderingTransaction |
|
* @param {boolean} renderToStaticMarkup |
|
*/ |
|
function ReactServerRenderingTransaction(renderToStaticMarkup) { |
|
this.reinitializeTransaction(); |
|
this.renderToStaticMarkup = renderToStaticMarkup; |
|
this.reactMountReady = CallbackQueue.getPooled(null); |
|
this.putListenerQueue = ReactPutListenerQueue.getPooled(); |
|
} |
|
|
|
var Mixin = { |
|
/** |
|
* @see Transaction |
|
* @abstract |
|
* @final |
|
* @return {array} Empty list of operation wrap proceedures. |
|
*/ |
|
getTransactionWrappers: function() { |
|
return TRANSACTION_WRAPPERS; |
|
}, |
|
|
|
/** |
|
* @return {object} The queue to collect `onDOMReady` callbacks with. |
|
*/ |
|
getReactMountReady: function() { |
|
return this.reactMountReady; |
|
}, |
|
|
|
getPutListenerQueue: function() { |
|
return this.putListenerQueue; |
|
}, |
|
|
|
/** |
|
* `PooledClass` looks for this, and will invoke this before allowing this |
|
* instance to be resused. |
|
*/ |
|
destructor: function() { |
|
CallbackQueue.release(this.reactMountReady); |
|
this.reactMountReady = null; |
|
|
|
ReactPutListenerQueue.release(this.putListenerQueue); |
|
this.putListenerQueue = null; |
|
} |
|
}; |
|
|
|
|
|
assign( |
|
ReactServerRenderingTransaction.prototype, |
|
Transaction.Mixin, |
|
Mixin |
|
); |
|
|
|
PooledClass.addPoolingTo(ReactServerRenderingTransaction); |
|
|
|
module.exports = ReactServerRenderingTransaction;
|
|
|