1111
1212"use strict" ;
1313
14- require ( 'art/modes/ fast') ; // Flip this to DOM mode for debugging
14+ var defaultMode = ' fast';
1515
16+ // set by ReactART.mode() or Surface.componentWillMount
17+ var Mode ;
1618var Transform = require ( 'art/core/transform' ) ;
17- var Mode = require ( 'art/modes/current' ) ;
19+
20+ // var ReplayPath = require('./util/ReplayPath');
1821
1922var React = require ( 'react' ) ;
2023var ReactInstanceMap = require ( 'react/lib/ReactInstanceMap' ) ;
@@ -24,7 +27,18 @@ var ReactUpdates = require('react/lib/ReactUpdates');
2427var assign = require ( 'react/lib/Object.assign' ) ;
2528var emptyObject = require ( 'fbjs/lib/emptyObject' ) ;
2629
27- var pooledTransform = new Transform ( ) ;
30+ var pooledTransform ;
31+
32+ function setMode ( mode ) {
33+ var mode = require ( 'art/modes/' + mode ) ;
34+
35+ Mode = require ( 'art/modes/current' ) ;
36+ // canvas mode does not explicitly set itself like the other modes
37+ Mode . setCurrent ( mode ) ;
38+
39+ pooledTransform = new Transform ( ) ;
40+ }
41+
2842
2943// Utilities
3044
@@ -185,6 +199,12 @@ var Surface = React.createClass({
185199
186200 mixins : [ ContainerMixin ] ,
187201
202+ componentWillMount : function ( ) {
203+ if ( ! Mode ) {
204+ setMode ( defaultMode ) ;
205+ }
206+ } ,
207+
188208 componentDidMount : function ( ) {
189209
190210 this . node = Mode . Surface ( + this . props . width , + this . props . height , this . domNode ) ;
@@ -597,19 +617,25 @@ Pattern.prototype.applyFill = function(node) {
597617 node . fillImage . apply ( node , this . args ) ;
598618} ;
599619
600- var ReactART = {
620+ function pathFactory ( ) {
621+ if ( ! Mode ) {
622+ throw Error ( 'Mode not set. Call ReactART.mode() before using Path' ) ;
623+ }
624+ return Mode . Path ( ) ;
625+ }
601626
627+ var ReactART = {
628+ mode : setMode ,
602629 LinearGradient : LinearGradient ,
603630 RadialGradient : RadialGradient ,
604631 Pattern : Pattern ,
605632 Transform : Transform ,
606- Path : Mode . Path ,
633+ Path : pathFactory ,
607634 Surface : Surface ,
608635 Group : Group ,
609636 ClippingRectangle : ClippingRectangle ,
610637 Shape : Shape ,
611638 Text : Text
612-
613639} ;
614640
615641module . exports = ReactART ;
0 commit comments