Commit Graph
1482 Commits
Author SHA1 Message Date
Jim 4e5543965d Flip console.warn to use warning module so users can intercept all warnings by shimming the warning module.
The two remaining console.warns are:

/Users/jsproch/react/src/test/mock-modules.js:
   19      return mocks.generateFromMetadata(mocks.getMetadata(exports));
   20    } catch (err) {
   21:     console.warn(err);
   22      return exports;
   23    }

/Users/jsproch/react/src/vendor/core/warning.js:
   39        var argIndex = 0;
   40        var message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);
   41:       console.warn(message);
   42        try {
   43          // --- Welcome to debugging React ---
2015-02-10 15:23:24 -08:00
Paul O’Shannessy f6f0bab237 Merge pull request #3103 from zpao/lifecyle-warn-not-throw
Warn when calling setState & other methods at wrong time
2015-02-10 09:58:34 -08:00
Matias Singers b9310a8fa5 Consistently use calls.length instead of callCount for Jasmine spies 2015-02-10 10:11:22 +08:00
Paul O’Shannessy 5967915ec4 Warn when calling setState & other methods at wrong time
Currently we use an invariant to prevent this code pattern. That is really
aggressive for something that doesn't actually put React in a bad state. This
diff replaces invariants with warnings and makes those code paths no-ops.
2015-02-09 17:04:13 -08:00
Sebastian Markbage 18c9a6e54a Dead code
Missed this because lint was off
2015-02-09 14:57:07 -08:00
Sebastian Markbåge 0fdd2a74e2 Merge pull request #3030 from sebmarkbage/fragments
Make keyed object fragments an opaque type
2015-02-09 14:50:46 -08:00
Paul O’Shannessy dae1dc6292 Upgrade to newer eslint, use esprima-fb
Eslint now allows us to use a different parser, which allows us to use
esprima-fb explicitly. This means we don't have to wait for espree to add
things like rest-param parsing. Though we do need eslint to upgrade its rules
to handle that AST.

I had hoped to enable parsing of our tests but we can't do that until we
change esprima-fb's XJS nodes to JSX.

While I was here, I also enabled the no-unused-vars rule since eslint
understands template strings. I also made the single quote enforcement
actually fail instead of just warn.
2015-02-09 14:27:28 -08:00
Sebastian Markbage 56f51156ba Make keyed object fragments an opaque type
This triggers a warning if you try to pass a keyed object as a child.

You now have to wrap it in React.addons.createFragment(object) which
creates a proxy (in dev) which warns if it is accessed. The purpose of
this is to make these into opaque objects so that nobody relies on its
data structure.

After that we can turn it into a different data structure such as a
ReactFragment node or an iterable of flattened ReactElements.
2015-02-09 14:24:56 -08:00
Paul O’Shannessy a6a64d1ed4 Merge pull request #2854 from cedrics/add-iframe-component
Adds a composite component for an iframe to handle load events
2015-02-09 09:59:01 -08:00
Paul O’Shannessy 7853260788 Merge pull request #3080 from zpao/upgrade-internal-modules
Upgrade internal modules
2015-02-06 17:17:00 -08:00
Paul O’Shannessy 705353fbaf Move keyMirror to vendor to match internal move 2015-02-06 12:09:36 -08:00
Paul O’Shannessy 3525d01b9b Remove more upstream modules that aren't used
Immutable* hasn't been used... ever?
copyProperties, merge were deprecated as part of 0.12. We've replaced
them with Object.assign.
2015-02-06 09:54:52 -08:00
Paul O’Shannessy 8ab0ecba13 Sync internal modules
We've actually diverged more with some modules, but we don't want
a cascade of dependencies out here. Mostly, the changes internally that
we don't want are tied to FB infrastructure but otherwise are
functionally equivalent (usually around error reporting, code monitoring).
2015-02-05 16:31:54 -08:00
Sebastian Markbage 140d9b4192 Warn only once for each class when accessing .type
Currently it is a bit too spammy.
2015-02-05 12:32:15 -08:00
syranide 6af987c524 Drop processAttributeNameAndPrefix and invalid attribute name escaping 2015-02-05 09:43:26 +01:00
Andreas Svensson 04e6d02e40 Merge pull request #1599 from syranide/escbrow
Split escapeTextForBrowser into escapeTextContentForBrowser and quoteAttributeValueForBrowser
2015-02-05 09:41:36 +01:00
Marlon Landaverde 876fdd0190 removes loose validation message 2015-02-04 21:13:59 -06:00
Paul O’Shannessy 7e6c820cd2 Merge pull request #3022 from btholt/master
Added itemRef and itemId for complete microdata support.
2015-02-04 16:57:03 -08:00
Sebastian Markbage 263800e09b Fix isMounted inside of render
This is apparently used to determine if you can access refs.

Bad pattern, but a pattern nonetheless.
2015-02-04 11:50:04 -08:00
Andreas Svensson 6672a7ec62 Merge pull request #2135 from syranide/ie8enctype
IE8 does not have a setter for property "enctype"
2015-02-04 13:47:54 +01:00
Andreas Svensson 8ca058ac4e Split escapeTextForBrowser into escapeTextContentForBrowser and quoteAttributeValueForBrowser 2015-02-04 13:44:38 +01:00
Lee Byron 9174501771 Merge pull request #2991 from leebyron/state-queue
Set state takes a function
2015-02-03 19:52:26 -05:00
Lee Byron 279b956c9b Set state takes a function
This diff enables setState to accept a function in addition to a state partial. If you provide a function, it will be called with the up-to-date `state, props, context` as arguments.

This enables some nicer syntax for complex setState patterns:

If setState is doing an increment and wants to guarantee atomicy, you need a function:

```
this.setState(state => ({ number: state.number + 1 }));
```

This atomicy is particularly important if setState is called multiple times in a single frame of execution as the result of complex user actions. It's a tricky bug to chase down and difficult to determine how to fix when you find it. The current pattern of reaching into _pendingState relies on an implementation detail.

In this example: props.doAction() may result in your ancestor re-rendering and providing you with new props. If setState is called directly with an object literal referencing `this.props`, it will use the *old* version of props, not the new value. Using a function solves for this case:

```
this.props.doAction();
this.setState((state, props) => ({ number: state.number * props.multiplier }));
```
2015-02-03 19:49:17 -05:00
Sebastian Markbage e3f95ea293 Hot fix cyclic dependency
We accidentally created an unfortunate cyclic dependency because of the
auto-wrapper hack that uses ReactClass.

Making it injected instead.
2015-02-02 23:55:34 -08:00
Sebastian Markbåge 50c38bbc75 Merge pull request #3023 from sebmarkbage/devtoolsfix
Expose ReactReconciler
2015-02-02 22:07:28 -08:00
Brian Holt 7b92d71744 Changed itemId to itemID and added clarity to the comments of where it is specified. 2015-02-02 21:58:00 -08:00
Sebastian Markbage 2702281a13 Always trigger an update when a callback is enqueued.
enqueueCallbackInternal forgot to schedule an update.

We could rely on the implicit contract of enqueueElement to do it. However,
if we're currently outside a transaction, it'll flush synchronously. Before
we enqueue the callback. We could also enqueueCallback before we
enqueueElement, but that causes a fragile relationship between them. E.g.
enqueueElement should not need to schedule an update if it is the same
element.
2015-02-02 20:42:15 -08:00
Sebastian Markbage e67ff7ee78 Expose ReactReconciler
This can be used by devtools to monkey patch the reconciler and therefore
get notified whenever any internal instance is updated.
2015-02-02 18:15:31 -08:00
Brian Holt ea67a1d436 Added itemRef and itemId for complete microdata support. 2015-02-02 17:17:04 -08:00
Andreas Svensson c371709d23 Newlines handled incorrectly in innerText in IE8 2015-02-02 21:27:27 +01:00
Andreas Svensson 8d6c8a7793 Merge pull request #3017 from syranide/trydefine
Try/catch property deprecation warnings to support IE8
2015-02-02 21:26:18 +01:00
Andreas Svensson 387adae3de Merge pull request #3000 from syranide/openbool
Set HTML DOM property "open" to HAS_BOOLEAN_VALUE
2015-02-02 21:11:10 +01:00
syranide 0a1cd56ead Try/catch property deprecation warnings to support IE8 2015-02-02 21:00:04 +01:00
Sebastian Markbåge 534d23d903 Merge pull request #3012 from sebmarkbage/typescript
Use TypeScript Compiler API Directly
2015-02-02 11:21:40 -08:00
Paul O’Shannessy 2aeb8a2a6b Merge pull request #2995 from rickbeerendonk/copyright-2015
Update copyright headers for 2015
2015-02-02 11:15:30 -08:00
Sebastian Markbage f6fd4a8506 Use TypeScript Compiler API Directly
In 1.4.0 we can use the TypeScript API directly to preprocess our files.
This lets us get rid of a dependency.

https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API

We can also use this to provide our default libraries so that we don't
need to keep the references in the test file.
2015-02-01 22:41:00 -08:00
syranide aa9edc2a9c Set HTML DOM property "open" to HAS_BOOLEAN_VALUE 2015-01-31 23:11:08 +01:00
Rick Beerendonk 3e0750a4ad Update copyright headers for 2015 2015-01-31 20:18:25 +01:00
Andreas Svensson 905bfcec60 Merge pull request #1912 from syranide/safereuse
Warn if mounting into node with dirty rendered markup
2015-01-31 19:56:34 +01:00
Andreas Svensson c460ad660b Warn if mounting into node with dirty rendered markup 2015-01-31 19:36:12 +01:00
Andreas Svensson a170629128 Merge pull request #1568 from syranide/dompurge
Only purgeID on ReactDOMComponent and ReactDOMTextComponent unmount
2015-01-31 18:21:22 +01:00
syranide a7f0fb7c4f Only purgeID on ReactDOMComponent and ReactDOMTextComponent unmount 2015-01-30 21:32:58 +01:00
Jim b2f77e6de3 Add detectable prefix to ReactElement proptype warning. 2015-01-30 11:43:57 -08:00
Paul O’Shannessy 5bd078508a v0.13.0-beta.1 2015-01-27 21:13:35 -08:00
Paul O’Shannessy dbdeb078ce [testing] dump the cache when depending on warning messages
It's possible to configure Jest to not dump the module cache between
specs. This makes it tricky when we silence warnings one a 2nd call.

In this case, the same message was getting logged so when we expected
the count of warning calls to increment, it didn't.
2015-01-27 16:02:00 -08:00
Paul O’Shannessy 9801f2d8ab Merge pull request #2940 from kevinold/2749-consistent-use-of-spys-or-mocks
update to use spyOn for console.warn #2749
2015-01-27 13:38:56 -08:00
Sebastian Markbåge 8bbaa95a49 Merge pull request #2948 from jergason/master
do not validate propTypes in production
2015-01-27 10:55:14 -08:00
Sebastian Markbåge 61c4497d58 Merge pull request #2959 from sebmarkbage/createmixin
We don't currently have a way to trace the origin of a mixin
2015-01-27 10:39:25 -08:00
Sebastian Markbage 295ef0063b We don't currently have a way to trace the origin of a mixin
This makes it more difficult to find bugs in mixins both dynamically
and using a static type system.

We also don't have a way to find these to be upgraded to a new mixin
syntax if we needed to.

This hook is currently an optional noop but could be made required to
create a mixin class.
2015-01-27 09:36:14 -08:00
Sebastian Markbage c3c98084b9 Rename ReactComponentBase -> ReactComponent
We freed up this internal name by removing the internal base class.
We're now free to use this name as it was intended.

ReactDOMComponent and ReactCompositeComponent are still confusing as
they're internal but we'll rename them later.
2015-01-27 09:22:07 -08:00