Skip to content
This repository was archived by the owner on Jul 19, 2019. It is now read-only.

Commit 2e56ebb

Browse files
committed
feat: allow mode to be defined, default to fast
1 parent d98e74e commit 2e56ebb

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

src/ReactART.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
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;
1618
var Transform = require('art/core/transform');
17-
var Mode = require('art/modes/current');
19+
20+
// var ReplayPath = require('./util/ReplayPath');
1821

1922
var React = require('react');
2023
var ReactInstanceMap = require('react/lib/ReactInstanceMap');
@@ -24,7 +27,18 @@ var ReactUpdates = require('react/lib/ReactUpdates');
2427
var assign = require('react/lib/Object.assign');
2528
var 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

615641
module.exports = ReactART;

0 commit comments

Comments
 (0)