react 0.14.8 → 15.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/LICENSE +1 -1
  2. package/addons.js +2 -0
  3. package/dist/react-with-addons.js +4203 -4148
  4. package/dist/react-with-addons.min.js +7 -7
  5. package/dist/react.js +4159 -3850
  6. package/dist/react.min.js +7 -7
  7. package/lib/AutoFocusUtils.js +3 -15
  8. package/lib/BeforeInputEventPlugin.js +8 -25
  9. package/lib/CSSProperty.js +4 -1
  10. package/lib/CSSPropertyOperations.js +24 -10
  11. package/lib/CallbackQueue.js +13 -2
  12. package/lib/ChangeEventPlugin.js +58 -54
  13. package/lib/DOMChildrenOperations.js +93 -60
  14. package/lib/DOMLazyTree.js +96 -0
  15. package/lib/{ClientReactRootIndex.js → DOMNamespaces.js} +7 -10
  16. package/lib/DOMProperty.js +18 -39
  17. package/lib/DOMPropertyOperations.js +87 -53
  18. package/lib/Danger.js +13 -14
  19. package/lib/DefaultEventPluginOrder.js +1 -1
  20. package/lib/EnterLeaveEventPlugin.js +24 -43
  21. package/lib/EventConstants.js +6 -1
  22. package/lib/EventPluginHub.js +22 -66
  23. package/lib/EventPluginRegistry.js +30 -9
  24. package/lib/EventPluginUtils.js +61 -36
  25. package/lib/EventPropagators.js +19 -17
  26. package/lib/FallbackCompositionState.js +1 -2
  27. package/lib/HTMLDOMPropertyConfig.js +69 -90
  28. package/lib/LinkedStateMixin.js +1 -2
  29. package/lib/LinkedValueUtils.js +5 -6
  30. package/lib/MetaMatchers.js +2 -2
  31. package/lib/Object.assign.js +1 -1
  32. package/lib/OrderedMap.js +14 -14
  33. package/lib/PooledClass.js +2 -2
  34. package/lib/React.js +1 -13
  35. package/lib/ReactBrowserEventEmitter.js +16 -24
  36. package/lib/ReactCSSTransitionGroup.js +1 -2
  37. package/lib/ReactCSSTransitionGroupChild.js +1 -6
  38. package/lib/ReactChildReconciler.js +15 -13
  39. package/lib/ReactChildren.js +5 -4
  40. package/lib/ReactClass.js +37 -86
  41. package/lib/ReactComponent.js +7 -8
  42. package/lib/ReactComponentBrowserEnvironment.js +9 -6
  43. package/lib/ReactComponentEnvironment.js +4 -4
  44. package/lib/ReactComponentWithPureRenderMixin.js +2 -2
  45. package/lib/ReactCompositeComponent.js +160 -69
  46. package/lib/ReactCurrentOwner.js +2 -1
  47. package/lib/ReactDOM.js +27 -15
  48. package/lib/ReactDOMButton.js +2 -2
  49. package/lib/ReactDOMComponent.js +188 -244
  50. package/lib/ReactDOMComponentFlags.js +18 -0
  51. package/lib/ReactDOMComponentTree.js +186 -0
  52. package/lib/ReactDOMContainerInfo.js +32 -0
  53. package/lib/ReactDOMDebugTool.js +69 -0
  54. package/lib/ReactDOMEmptyComponent.js +60 -0
  55. package/lib/ReactDOMFactories.js +1 -2
  56. package/lib/ReactDOMFeatureFlags.js +2 -2
  57. package/lib/ReactDOMIDOperations.js +5 -60
  58. package/lib/ReactDOMInput.js +71 -22
  59. package/lib/ReactDOMInstrumentation.js +16 -0
  60. package/lib/ReactDOMOption.js +11 -10
  61. package/lib/ReactDOMSVGDeprecatedAttributeDevtool.js +61 -0
  62. package/lib/ReactDOMSelect.js +40 -17
  63. package/lib/ReactDOMSelection.js +4 -4
  64. package/lib/ReactDOMServer.js +1 -1
  65. package/lib/ReactDOMTextComponent.js +84 -43
  66. package/lib/ReactDOMTextarea.js +36 -9
  67. package/lib/ReactDOMTreeTraversal.js +134 -0
  68. package/lib/ReactDOMUnknownPropertyDevtool.js +64 -0
  69. package/lib/ReactDebugTool.js +72 -0
  70. package/lib/ReactDefaultBatchingStrategy.js +1 -1
  71. package/lib/ReactDefaultInjection.js +11 -15
  72. package/lib/ReactDefaultPerf.js +59 -19
  73. package/lib/ReactDefaultPerfAnalysis.js +17 -9
  74. package/lib/ReactElement.js +60 -21
  75. package/lib/ReactElementValidator.js +8 -8
  76. package/lib/ReactEmptyComponent.js +8 -33
  77. package/lib/ReactErrorUtils.js +1 -2
  78. package/lib/ReactEventEmitterMixin.js +3 -8
  79. package/lib/ReactEventListener.js +20 -75
  80. package/lib/ReactFeatureFlags.js +21 -0
  81. package/lib/ReactFragment.js +6 -6
  82. package/lib/ReactInjection.js +3 -3
  83. package/lib/ReactInputSelection.js +4 -4
  84. package/lib/ReactInstanceHandles.js +10 -12
  85. package/lib/ReactInstanceMap.js +2 -1
  86. package/lib/ReactInstrumentation.js +16 -0
  87. package/lib/ReactInvalidSetStateWarningDevTool.js +36 -0
  88. package/lib/ReactIsomorphic.js +1 -1
  89. package/lib/ReactLink.js +2 -3
  90. package/lib/ReactMarkupChecksum.js +1 -1
  91. package/lib/ReactMount.js +87 -460
  92. package/lib/ReactMultiChild.js +106 -200
  93. package/lib/ReactMultiChildUpdateTypes.js +1 -1
  94. package/lib/ReactNativeComponent.js +3 -3
  95. package/lib/ReactNodeTypes.js +37 -0
  96. package/lib/ReactNoopUpdateQueue.js +2 -25
  97. package/lib/ReactOwner.js +3 -3
  98. package/lib/ReactPerf.js +2 -2
  99. package/lib/ReactPropTransferer.js +1 -1
  100. package/lib/ReactPropTypeLocationNames.js +1 -1
  101. package/lib/ReactPropTypeLocations.js +1 -1
  102. package/lib/ReactPropTypes.js +27 -3
  103. package/lib/ReactReconcileTransaction.js +17 -6
  104. package/lib/ReactReconciler.js +29 -6
  105. package/lib/ReactRef.js +1 -1
  106. package/lib/ReactServerBatchingStrategy.js +1 -2
  107. package/lib/ReactServerRendering.js +17 -35
  108. package/lib/ReactServerRenderingTransaction.js +8 -26
  109. package/lib/ReactSimpleEmptyComponent.js +36 -0
  110. package/lib/ReactStateSetters.js +1 -1
  111. package/lib/ReactTestUtils.js +33 -24
  112. package/lib/ReactTransitionChildMapping.js +1 -2
  113. package/lib/ReactTransitionEvents.js +8 -44
  114. package/lib/ReactTransitionGroup.js +1 -1
  115. package/lib/ReactUpdateQueue.js +6 -65
  116. package/lib/ReactUpdates.js +26 -9
  117. package/lib/ReactVersion.js +2 -2
  118. package/lib/ReactWithAddons.js +1 -14
  119. package/lib/ResponderEventPlugin.js +54 -66
  120. package/lib/ResponderSyntheticEvent.js +1 -2
  121. package/lib/ResponderTouchHistoryStore.js +5 -5
  122. package/lib/SVGDOMPropertyConfig.js +25 -66
  123. package/lib/SelectEventPlugin.js +13 -18
  124. package/lib/SimpleEventPlugin.js +57 -17
  125. package/lib/SyntheticAnimationEvent.js +39 -0
  126. package/lib/SyntheticClipboardEvent.js +2 -3
  127. package/lib/SyntheticCompositionEvent.js +2 -3
  128. package/lib/SyntheticDragEvent.js +2 -3
  129. package/lib/SyntheticEvent.js +97 -17
  130. package/lib/SyntheticFocusEvent.js +2 -3
  131. package/lib/SyntheticInputEvent.js +2 -3
  132. package/lib/SyntheticKeyboardEvent.js +2 -3
  133. package/lib/SyntheticMouseEvent.js +2 -3
  134. package/lib/SyntheticTouchEvent.js +2 -3
  135. package/lib/SyntheticTransitionEvent.js +39 -0
  136. package/lib/SyntheticUIEvent.js +2 -3
  137. package/lib/SyntheticWheelEvent.js +2 -3
  138. package/lib/TapEventPlugin.js +3 -12
  139. package/lib/Transaction.js +3 -3
  140. package/lib/ViewportMetrics.js +1 -1
  141. package/lib/accumulate.js +2 -2
  142. package/lib/accumulateInto.js +2 -2
  143. package/lib/adler32.js +3 -2
  144. package/lib/canDefineProperty.js +1 -1
  145. package/lib/createHierarchyRenderer.js +1 -1
  146. package/lib/createMicrosoftUnsafeLocalFunction.js +32 -0
  147. package/lib/dangerousStyleValue.js +25 -3
  148. package/lib/deprecated.js +4 -2
  149. package/lib/escapeTextContentForBrowser.js +1 -1
  150. package/lib/findDOMNode.js +15 -8
  151. package/lib/flattenChildren.js +2 -2
  152. package/lib/forEachAccumulated.js +2 -1
  153. package/lib/getEventCharCode.js +2 -2
  154. package/lib/getEventKey.js +1 -2
  155. package/lib/getEventModifierState.js +1 -2
  156. package/lib/getEventTarget.js +8 -2
  157. package/lib/getIteratorFn.js +2 -2
  158. package/lib/getNativeComponentFromComposite.js +30 -0
  159. package/lib/getNodeForCharacterOffset.js +2 -1
  160. package/lib/getTestDocument.js +1 -1
  161. package/lib/getTextContentAccessor.js +1 -1
  162. package/lib/getVendorPrefixedEventName.js +101 -0
  163. package/lib/instantiateReactComponent.js +9 -11
  164. package/lib/isEventSupported.js +2 -2
  165. package/lib/isTextInputElement.js +2 -1
  166. package/lib/onlyChild.js +2 -2
  167. package/lib/quoteAttributeValueForBrowser.js +1 -1
  168. package/lib/reactComponentExpect.js +2 -2
  169. package/lib/renderSubtreeIntoContainer.js +1 -1
  170. package/lib/setInnerHTML.js +5 -14
  171. package/lib/setTextContent.js +1 -1
  172. package/lib/shallowCompare.js +1 -1
  173. package/lib/shouldUpdateReactComponent.js +2 -3
  174. package/lib/sliceChildren.js +1 -1
  175. package/lib/traverseAllChildren.js +8 -8
  176. package/lib/update.js +12 -12
  177. package/lib/validateDOMNesting.js +15 -11
  178. package/package.json +2 -2
  179. package/lib/ReactBrowserComponentMixin.js +0 -36
  180. package/lib/ReactEmptyComponentRegistry.js +0 -48
  181. package/lib/ReactRootIndex.js +0 -29
  182. package/lib/ServerReactRootIndex.js +0 -29
  183. package/lib/cloneWithProps.js +0 -54
  184. package/lib/webcomponents.js +0 -6379
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,7 +7,6 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule TapEventPlugin
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
@@ -75,15 +74,7 @@ var TapEventPlugin = {
75
74
 
76
75
  eventTypes: eventTypes,
77
76
 
78
- /**
79
- * @param {string} topLevelType Record from `EventConstants`.
80
- * @param {DOMEventTarget} topLevelTarget The listening component root node.
81
- * @param {string} topLevelTargetID ID of `topLevelTarget`.
82
- * @param {object} nativeEvent Native browser event.
83
- * @return {*} An accumulation of synthetic events.
84
- * @see {EventPluginHub.extractEvents}
85
- */
86
- extractEvents: function (topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
77
+ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
87
78
  if (!isStartish(topLevelType) && !isEndish(topLevelType)) {
88
79
  return null;
89
80
  }
@@ -101,7 +92,7 @@ var TapEventPlugin = {
101
92
  var event = null;
102
93
  var distance = getDistance(startCoords, nativeEvent);
103
94
  if (isEndish(topLevelType) && distance < tapMoveThreshold) {
104
- event = SyntheticUIEvent.getPooled(eventTypes.touchTap, topLevelTargetID, nativeEvent, nativeEventTarget);
95
+ event = SyntheticUIEvent.getPooled(eventTypes.touchTap, targetInst, nativeEvent, nativeEventTarget);
105
96
  }
106
97
  if (isStartish(topLevelType)) {
107
98
  startCoords.x = getAxisCoordOfEvent(Axis.x, nativeEvent);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -122,7 +122,7 @@ var Mixin = {
122
122
  * @return {*} Return value from `method`.
123
123
  */
124
124
  perform: function (method, scope, a, b, c, d, e, f) {
125
- !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there ' + 'is already an outstanding transaction.') : invariant(false) : undefined;
125
+ !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there ' + 'is already an outstanding transaction.') : invariant(false) : void 0;
126
126
  var errorThrown;
127
127
  var ret;
128
128
  try {
@@ -186,7 +186,7 @@ var Mixin = {
186
186
  * invoked).
187
187
  */
188
188
  closeAll: function (startIndex) {
189
- !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : invariant(false) : undefined;
189
+ !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : invariant(false) : void 0;
190
190
  var transactionWrappers = this.transactionWrappers;
191
191
  for (var i = startIndex; i < transactionWrappers.length; i++) {
192
192
  var wrapper = transactionWrappers[i];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
package/lib/accumulate.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -21,7 +21,7 @@ var invariant = require('fbjs/lib/invariant');
21
21
  * @return {*|array<*>} An accumulation of items.
22
22
  */
23
23
  function accumulate(current, next) {
24
- !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulate(...): Accumulated items must be not be null or undefined.') : invariant(false) : undefined;
24
+ !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulate(...): Accumulated items must be not be null or undefined.') : invariant(false) : void 0;
25
25
  if (current == null) {
26
26
  return next;
27
27
  } else {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2014-2015, Facebook, Inc.
2
+ * Copyright 2014-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -28,7 +28,7 @@ var invariant = require('fbjs/lib/invariant');
28
28
  */
29
29
 
30
30
  function accumulateInto(current, next) {
31
- !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : invariant(false) : undefined;
31
+ !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : invariant(false) : void 0;
32
32
  if (current == null) {
33
33
  return next;
34
34
  }
package/lib/adler32.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -25,7 +25,8 @@ function adler32(data) {
25
25
  var l = data.length;
26
26
  var m = l & ~0x3;
27
27
  while (i < m) {
28
- for (; i < Math.min(i + 4096, m); i += 4) {
28
+ var n = Math.min(i + 4096, m);
29
+ for (; i < n; i += 4) {
29
30
  b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));
30
31
  }
31
32
  a %= MOD;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright 2013-present, Facebook, Inc.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under the BSD-style license found in the
6
+ * LICENSE file in the root directory of this source tree. An additional grant
7
+ * of patent rights can be found in the PATENTS file in the same directory.
8
+ *
9
+ * @providesModule createMicrosoftUnsafeLocalFunction
10
+ */
11
+
12
+ /* globals MSApp */
13
+
14
+ 'use strict';
15
+
16
+ /**
17
+ * Create a function which has 'unsafe' privileges (required by windows8 apps)
18
+ */
19
+
20
+ var createMicrosoftUnsafeLocalFunction = function (func) {
21
+ if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
22
+ return function (arg0, arg1, arg2, arg3) {
23
+ MSApp.execUnsafeLocalFunction(function () {
24
+ return func(arg0, arg1, arg2, arg3);
25
+ });
26
+ };
27
+ } else {
28
+ return func;
29
+ }
30
+ };
31
+
32
+ module.exports = createMicrosoftUnsafeLocalFunction;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,14 +7,15 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule dangerousStyleValue
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
14
13
 
15
14
  var CSSProperty = require('./CSSProperty');
15
+ var warning = require('fbjs/lib/warning');
16
16
 
17
17
  var isUnitlessNumber = CSSProperty.isUnitlessNumber;
18
+ var styleWarnings = {};
18
19
 
19
20
  /**
20
21
  * Convert a value into the proper css writable value. The style name `name`
@@ -23,9 +24,10 @@ var isUnitlessNumber = CSSProperty.isUnitlessNumber;
23
24
  *
24
25
  * @param {string} name CSS property name such as `topMargin`.
25
26
  * @param {*} value CSS property value such as `10px`.
27
+ * @param {ReactDOMComponent} component
26
28
  * @return {string} Normalized style value with dimensions applied.
27
29
  */
28
- function dangerousStyleValue(name, value) {
30
+ function dangerousStyleValue(name, value, component) {
29
31
  // Note that we've removed escapeTextForBrowser() calls here since the
30
32
  // whole string will be escaped when the attribute is injected into
31
33
  // the markup. If you provide unsafe user data here they can inject
@@ -47,6 +49,26 @@ function dangerousStyleValue(name, value) {
47
49
  }
48
50
 
49
51
  if (typeof value === 'string') {
52
+ if (process.env.NODE_ENV !== 'production') {
53
+ if (component) {
54
+ var owner = component._currentElement._owner;
55
+ var ownerName = owner ? owner.getName() : null;
56
+ if (ownerName && !styleWarnings[ownerName]) {
57
+ styleWarnings[ownerName] = {};
58
+ }
59
+ var warned = false;
60
+ if (ownerName) {
61
+ var warnings = styleWarnings[ownerName];
62
+ warned = warnings[name];
63
+ if (!warned) {
64
+ warnings[name] = true;
65
+ }
66
+ }
67
+ if (!warned) {
68
+ process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;
69
+ }
70
+ }
71
+ }
50
72
  value = value.trim();
51
73
  }
52
74
  return value + 'px';
package/lib/deprecated.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -30,10 +30,12 @@ function deprecated(fnName, newModule, newPackage, ctx, fn) {
30
30
  if (process.env.NODE_ENV !== 'production') {
31
31
  var newFn = function () {
32
32
  process.env.NODE_ENV !== 'production' ? warning(warned,
33
+ /* eslint-disable no-useless-concat */
33
34
  // Require examples in this string must be split to prevent React's
34
35
  // build tools from mistaking them for real requires.
35
36
  // Otherwise the build tools will attempt to build a '%s' module.
36
- 'React.%s is deprecated. Please use %s.%s from require' + '(\'%s\') ' + 'instead.', fnName, newModule, fnName, newPackage) : undefined;
37
+ 'React.%s is deprecated. Please use %s.%s from require' + '(\'%s\') ' + 'instead.', fnName, newModule, fnName, newPackage) : void 0;
38
+ /* eslint-enable no-useless-concat */
37
39
  warned = true;
38
40
  return fn.apply(ctx, arguments);
39
41
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,15 +7,15 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule findDOMNode
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
14
13
 
15
14
  var ReactCurrentOwner = require('./ReactCurrentOwner');
15
+ var ReactDOMComponentTree = require('./ReactDOMComponentTree');
16
16
  var ReactInstanceMap = require('./ReactInstanceMap');
17
- var ReactMount = require('./ReactMount');
18
17
 
18
+ var getNativeComponentFromComposite = require('./getNativeComponentFromComposite');
19
19
  var invariant = require('fbjs/lib/invariant');
20
20
  var warning = require('fbjs/lib/warning');
21
21
 
@@ -29,7 +29,7 @@ function findDOMNode(componentOrElement) {
29
29
  if (process.env.NODE_ENV !== 'production') {
30
30
  var owner = ReactCurrentOwner.current;
31
31
  if (owner !== null) {
32
- process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing getDOMNode or findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : undefined;
32
+ process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;
33
33
  owner._warnedAboutRefsInRender = true;
34
34
  }
35
35
  }
@@ -39,11 +39,18 @@ function findDOMNode(componentOrElement) {
39
39
  if (componentOrElement.nodeType === 1) {
40
40
  return componentOrElement;
41
41
  }
42
- if (ReactInstanceMap.has(componentOrElement)) {
43
- return ReactMount.getNodeFromInstance(componentOrElement);
42
+
43
+ var inst = ReactInstanceMap.get(componentOrElement);
44
+ if (inst) {
45
+ inst = getNativeComponentFromComposite(inst);
46
+ return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;
47
+ }
48
+
49
+ if (typeof componentOrElement.render === 'function') {
50
+ !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : invariant(false) : void 0;
51
+ } else {
52
+ !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : invariant(false) : void 0;
44
53
  }
45
- !(componentOrElement.render == null || typeof componentOrElement.render !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : invariant(false) : undefined;
46
- !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : invariant(false) : undefined;
47
54
  }
48
55
 
49
56
  module.exports = findDOMNode;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -24,7 +24,7 @@ function flattenSingleChildIntoContext(traverseContext, child, name) {
24
24
  var result = traverseContext;
25
25
  var keyUnique = result[name] === undefined;
26
26
  if (process.env.NODE_ENV !== 'production') {
27
- process.env.NODE_ENV !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', name) : undefined;
27
+ process.env.NODE_ENV !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', name) : void 0;
28
28
  }
29
29
  if (keyUnique && child != null) {
30
30
  result[name] = child;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -18,6 +18,7 @@
18
18
  * handling the case when there is exactly one item (and we do not need to
19
19
  * allocate an array).
20
20
  */
21
+
21
22
  var forEachAccumulated = function (arr, cb, scope) {
22
23
  if (Array.isArray(arr)) {
23
24
  arr.forEach(cb, scope);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,7 +7,6 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule getEventCharCode
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
@@ -22,6 +21,7 @@
22
21
  * @param {object} nativeEvent Native browser event.
23
22
  * @return {number} Normalized `charCode` property.
24
23
  */
24
+
25
25
  function getEventCharCode(nativeEvent) {
26
26
  var charCode;
27
27
  var keyCode = nativeEvent.keyCode;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,7 +7,6 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule getEventKey
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,7 +7,6 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule getEventModifierState
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,7 +7,6 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule getEventTarget
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
@@ -19,8 +18,15 @@
19
18
  * @param {object} nativeEvent Native browser event.
20
19
  * @return {DOMEventTarget} Target node.
21
20
  */
21
+
22
22
  function getEventTarget(nativeEvent) {
23
23
  var target = nativeEvent.target || nativeEvent.srcElement || window;
24
+
25
+ // Normalize SVG <use> element events #4963
26
+ if (target.correspondingUseElement) {
27
+ target = target.correspondingUseElement;
28
+ }
29
+
24
30
  // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
25
31
  // @see http://www.quirksmode.org/js/events_properties.html
26
32
  return target.nodeType === 3 ? target.parentNode : target;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2013-2015, Facebook, Inc.
2
+ * Copyright 2013-present, Facebook, Inc.
3
3
  * All rights reserved.
4
4
  *
5
5
  * This source code is licensed under the BSD-style license found in the
@@ -7,12 +7,12 @@
7
7
  * of patent rights can be found in the PATENTS file in the same directory.
8
8
  *
9
9
  * @providesModule getIteratorFn
10
- * @typechecks static-only
11
10
  */
12
11
 
13
12
  'use strict';
14
13
 
15
14
  /* global Symbol */
15
+
16
16
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
17
17
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
18
18