react 0.10.0 → 0.11.2
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.
- package/README.md +3 -0
- package/dist/JSXTransformer.js +20344 -0
- package/dist/react-with-addons.js +20276 -0
- package/dist/react-with-addons.min.js +22 -0
- package/dist/react.js +18484 -0
- package/dist/react.min.js +21 -0
- package/lib/BeforeInputEventPlugin.js +222 -0
- package/lib/CSSPropertyOperations.js +3 -3
- package/lib/{ReactMountReady.js → CallbackQueue.js} +32 -24
- package/lib/ChangeEventPlugin.js +1 -1
- package/lib/CompositionEventPlugin.js +5 -1
- package/lib/DOMChildrenOperations.js +21 -14
- package/lib/DOMProperty.js +45 -17
- package/lib/DOMPropertyOperations.js +22 -10
- package/lib/DefaultEventPluginOrder.js +1 -0
- package/lib/EventConstants.js +1 -0
- package/lib/EventListener.js +5 -2
- package/lib/EventPluginHub.js +0 -5
- package/lib/EventPluginRegistry.js +6 -4
- package/lib/EventPluginUtils.js +11 -1
- package/lib/ExecutionEnvironment.js +8 -2
- package/lib/{DefaultDOMPropertyConfig.js → HTMLDOMPropertyConfig.js} +42 -49
- package/lib/LinkedValueUtils.js +21 -22
- package/lib/LocalEventTrapMixin.js +52 -0
- package/lib/React.js +57 -3
- package/lib/ReactBrowserComponentMixin.js +4 -0
- package/lib/{ReactEventEmitter.js → ReactBrowserEventEmitter.js} +115 -94
- package/lib/ReactCSSTransitionGroup.js +2 -0
- package/lib/ReactCSSTransitionGroupChild.js +2 -5
- package/lib/ReactChildren.js +31 -10
- package/lib/ReactComponent.js +88 -237
- package/lib/ReactComponentBrowserEnvironment.js +3 -2
- package/lib/ReactComponentWithPureRenderMixin.js +54 -0
- package/lib/ReactCompositeComponent.js +222 -384
- package/lib/ReactDOM.js +22 -18
- package/lib/ReactDOMComponent.js +26 -24
- package/lib/ReactDOMForm.js +5 -13
- package/lib/ReactDOMIDOperations.js +2 -31
- package/lib/ReactDOMImg.js +5 -14
- package/lib/ReactDOMSelect.js +16 -15
- package/lib/ReactDOMSelection.js +35 -10
- package/lib/ReactDOMTextarea.js +2 -4
- package/lib/ReactDefaultBatchingStrategy.js +3 -3
- package/lib/ReactDefaultInjection.js +18 -15
- package/lib/ReactDefaultPerf.js +28 -11
- package/lib/ReactDefaultPerfAnalysis.js +4 -0
- package/lib/ReactDescriptor.js +251 -0
- package/lib/ReactDescriptorValidator.js +283 -0
- package/lib/ReactEmptyComponent.js +78 -0
- package/lib/ReactEventEmitterMixin.js +1 -3
- package/lib/ReactEventListener.js +189 -0
- package/lib/ReactInjection.js +4 -2
- package/lib/ReactLink.js +24 -0
- package/lib/ReactMount.js +51 -19
- package/lib/ReactMultiChild.js +9 -11
- package/lib/ReactPropTransferer.js +44 -29
- package/lib/ReactPropTypes.js +226 -242
- package/lib/ReactPutListenerQueue.js +2 -2
- package/lib/ReactReconcileTransaction.js +14 -14
- package/lib/ReactServerRendering.js +5 -5
- package/lib/ReactServerRenderingTransaction.js +4 -5
- package/lib/ReactTestUtils.js +39 -21
- package/lib/ReactTextComponent.js +8 -22
- package/lib/ReactTransitionChildMapping.js +2 -2
- package/lib/ReactTransitionEvents.js +19 -0
- package/lib/ReactTransitionGroup.js +9 -6
- package/lib/ReactUpdates.js +139 -22
- package/lib/ReactWithAddons.js +5 -2
- package/lib/SVGDOMPropertyConfig.js +97 -0
- package/lib/SimpleEventPlugin.js +7 -1
- package/lib/SyntheticInputEvent.js +52 -0
- package/lib/SyntheticKeyboardEvent.js +33 -4
- package/lib/SyntheticMouseEvent.js +3 -0
- package/lib/SyntheticTouchEvent.js +4 -1
- package/lib/SyntheticUIEvent.js +24 -2
- package/lib/Transaction.js +0 -32
- package/lib/cloneWithProps.js +3 -1
- package/lib/createFullPageComponent.js +1 -1
- package/lib/dangerousStyleValue.js +11 -5
- package/lib/escapeTextForBrowser.js +2 -3
- package/lib/flattenChildren.js +9 -7
- package/lib/getEventKey.js +35 -5
- package/lib/getEventModifierState.js +52 -0
- package/lib/getMarkupWrap.js +2 -0
- package/lib/getTextContentAccessor.js +1 -1
- package/lib/hyphenate.js +3 -0
- package/lib/hyphenateStyleName.js +46 -0
- package/lib/instantiateReactComponent.js +13 -21
- package/lib/invariant.js +17 -19
- package/lib/{objMap.js → mapObject.js} +8 -3
- package/lib/mergeHelpers.js +11 -0
- package/lib/mergeInto.js +3 -2
- package/lib/onlyChild.js +3 -3
- package/lib/performance.js +33 -0
- package/lib/performanceNow.js +5 -14
- package/lib/setInnerHTML.js +85 -0
- package/lib/shouldUpdateReactComponent.js +12 -29
- package/lib/toArray.js +1 -1
- package/lib/traverseAllChildren.js +7 -4
- package/lib/update.js +57 -45
- package/package.json +4 -3
- package/lib/ReactEventTopLevelCallback.js +0 -149
- package/lib/createObjectFrom.js +0 -61
- package/lib/objMapKeyVal.js +0 -47
package/lib/DOMProperty.js
CHANGED
|
@@ -32,7 +32,9 @@ var DOMPropertyInjection = {
|
|
|
32
32
|
MUST_USE_PROPERTY: 0x2,
|
|
33
33
|
HAS_SIDE_EFFECTS: 0x4,
|
|
34
34
|
HAS_BOOLEAN_VALUE: 0x8,
|
|
35
|
-
|
|
35
|
+
HAS_NUMERIC_VALUE: 0x10,
|
|
36
|
+
HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,
|
|
37
|
+
HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,
|
|
36
38
|
|
|
37
39
|
/**
|
|
38
40
|
* Inject some specialized knowledge about the DOM. This takes a config object
|
|
@@ -73,32 +75,36 @@ var DOMPropertyInjection = {
|
|
|
73
75
|
|
|
74
76
|
for (var propName in Properties) {
|
|
75
77
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
76
|
-
!DOMProperty.isStandardName
|
|
78
|
+
!DOMProperty.isStandardName.hasOwnProperty(propName),
|
|
77
79
|
'injectDOMPropertyConfig(...): You\'re trying to inject DOM property ' +
|
|
78
80
|
'\'%s\' which has already been injected. You may be accidentally ' +
|
|
79
81
|
'injecting the same DOM property config twice, or you may be ' +
|
|
80
82
|
'injecting two configs that have conflicting property names.',
|
|
81
83
|
propName
|
|
82
|
-
) : invariant(!DOMProperty.isStandardName
|
|
84
|
+
) : invariant(!DOMProperty.isStandardName.hasOwnProperty(propName)));
|
|
83
85
|
|
|
84
86
|
DOMProperty.isStandardName[propName] = true;
|
|
85
87
|
|
|
86
88
|
var lowerCased = propName.toLowerCase();
|
|
87
89
|
DOMProperty.getPossibleStandardName[lowerCased] = propName;
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
+
if (DOMAttributeNames.hasOwnProperty(propName)) {
|
|
92
|
+
var attributeName = DOMAttributeNames[propName];
|
|
91
93
|
DOMProperty.getPossibleStandardName[attributeName] = propName;
|
|
94
|
+
DOMProperty.getAttributeName[propName] = attributeName;
|
|
95
|
+
} else {
|
|
96
|
+
DOMProperty.getAttributeName[propName] = lowerCased;
|
|
92
97
|
}
|
|
93
98
|
|
|
94
|
-
DOMProperty.getAttributeName[propName] = attributeName || lowerCased;
|
|
95
|
-
|
|
96
99
|
DOMProperty.getPropertyName[propName] =
|
|
97
|
-
DOMPropertyNames
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
DOMPropertyNames.hasOwnProperty(propName) ?
|
|
101
|
+
DOMPropertyNames[propName] :
|
|
102
|
+
propName;
|
|
103
|
+
|
|
104
|
+
if (DOMMutationMethods.hasOwnProperty(propName)) {
|
|
105
|
+
DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];
|
|
106
|
+
} else {
|
|
107
|
+
DOMProperty.getMutationMethod[propName] = null;
|
|
102
108
|
}
|
|
103
109
|
|
|
104
110
|
var propConfig = Properties[propName];
|
|
@@ -110,8 +116,12 @@ var DOMPropertyInjection = {
|
|
|
110
116
|
propConfig & DOMPropertyInjection.HAS_SIDE_EFFECTS;
|
|
111
117
|
DOMProperty.hasBooleanValue[propName] =
|
|
112
118
|
propConfig & DOMPropertyInjection.HAS_BOOLEAN_VALUE;
|
|
119
|
+
DOMProperty.hasNumericValue[propName] =
|
|
120
|
+
propConfig & DOMPropertyInjection.HAS_NUMERIC_VALUE;
|
|
113
121
|
DOMProperty.hasPositiveNumericValue[propName] =
|
|
114
122
|
propConfig & DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE;
|
|
123
|
+
DOMProperty.hasOverloadedBooleanValue[propName] =
|
|
124
|
+
propConfig & DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE;
|
|
115
125
|
|
|
116
126
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
117
127
|
!DOMProperty.mustUseAttribute[propName] ||
|
|
@@ -128,12 +138,15 @@ var DOMPropertyInjection = {
|
|
|
128
138
|
) : invariant(DOMProperty.mustUseProperty[propName] ||
|
|
129
139
|
!DOMProperty.hasSideEffects[propName]));
|
|
130
140
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
141
|
+
!!DOMProperty.hasBooleanValue[propName] +
|
|
142
|
+
!!DOMProperty.hasNumericValue[propName] +
|
|
143
|
+
!!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,
|
|
144
|
+
'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +
|
|
145
|
+
'numeric value, but not a combination: %s',
|
|
134
146
|
propName
|
|
135
|
-
) : invariant(
|
|
136
|
-
|
|
147
|
+
) : invariant(!!DOMProperty.hasBooleanValue[propName] +
|
|
148
|
+
!!DOMProperty.hasNumericValue[propName] +
|
|
149
|
+
!!DOMProperty.hasOverloadedBooleanValue[propName] <= 1));
|
|
137
150
|
}
|
|
138
151
|
}
|
|
139
152
|
};
|
|
@@ -217,6 +230,13 @@ var DOMProperty = {
|
|
|
217
230
|
*/
|
|
218
231
|
hasBooleanValue: {},
|
|
219
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Whether the property must be numeric or parse as a
|
|
235
|
+
* numeric and should be removed when set to a falsey value.
|
|
236
|
+
* @type {Object}
|
|
237
|
+
*/
|
|
238
|
+
hasNumericValue: {},
|
|
239
|
+
|
|
220
240
|
/**
|
|
221
241
|
* Whether the property must be positive numeric or parse as a positive
|
|
222
242
|
* numeric and should be removed when set to a falsey value.
|
|
@@ -224,6 +244,14 @@ var DOMProperty = {
|
|
|
224
244
|
*/
|
|
225
245
|
hasPositiveNumericValue: {},
|
|
226
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Whether the property can be used as a flag as well as with a value. Removed
|
|
249
|
+
* when strictly equal to false; present without a value when strictly equal
|
|
250
|
+
* to true; present with a value otherwise.
|
|
251
|
+
* @type {Object}
|
|
252
|
+
*/
|
|
253
|
+
hasOverloadedBooleanValue: {},
|
|
254
|
+
|
|
227
255
|
/**
|
|
228
256
|
* All of the isCustomAttribute() functions that have been injected.
|
|
229
257
|
*/
|
|
@@ -27,8 +27,10 @@ var warning = require("./warning");
|
|
|
27
27
|
|
|
28
28
|
function shouldIgnoreValue(name, value) {
|
|
29
29
|
return value == null ||
|
|
30
|
-
DOMProperty.hasBooleanValue[name] && !value ||
|
|
31
|
-
DOMProperty.
|
|
30
|
+
(DOMProperty.hasBooleanValue[name] && !value) ||
|
|
31
|
+
(DOMProperty.hasNumericValue[name] && isNaN(value)) ||
|
|
32
|
+
(DOMProperty.hasPositiveNumericValue[name] && (value < 1)) ||
|
|
33
|
+
(DOMProperty.hasOverloadedBooleanValue[name] && value === false);
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
var processAttributeNameAndPrefix = memoizeStringOnly(function(name) {
|
|
@@ -45,7 +47,8 @@ if ("production" !== process.env.NODE_ENV) {
|
|
|
45
47
|
var warnedProperties = {};
|
|
46
48
|
|
|
47
49
|
var warnUnknownProperty = function(name) {
|
|
48
|
-
if (reactProps
|
|
50
|
+
if (reactProps.hasOwnProperty(name) && reactProps[name] ||
|
|
51
|
+
warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
51
54
|
|
|
@@ -53,8 +56,13 @@ if ("production" !== process.env.NODE_ENV) {
|
|
|
53
56
|
var lowerCasedName = name.toLowerCase();
|
|
54
57
|
|
|
55
58
|
// data-* attributes should be lowercase; suggest the lowercase version
|
|
56
|
-
var standardName =
|
|
57
|
-
|
|
59
|
+
var standardName = (
|
|
60
|
+
DOMProperty.isCustomAttribute(lowerCasedName) ?
|
|
61
|
+
lowerCasedName :
|
|
62
|
+
DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ?
|
|
63
|
+
DOMProperty.getPossibleStandardName[lowerCasedName] :
|
|
64
|
+
null
|
|
65
|
+
);
|
|
58
66
|
|
|
59
67
|
// For now, only warn when we have a suggested correction. This prevents
|
|
60
68
|
// logging too much when using transferPropsTo.
|
|
@@ -90,12 +98,14 @@ var DOMPropertyOperations = {
|
|
|
90
98
|
* @return {?string} Markup string, or null if the property was invalid.
|
|
91
99
|
*/
|
|
92
100
|
createMarkupForProperty: function(name, value) {
|
|
93
|
-
if (DOMProperty.isStandardName
|
|
101
|
+
if (DOMProperty.isStandardName.hasOwnProperty(name) &&
|
|
102
|
+
DOMProperty.isStandardName[name]) {
|
|
94
103
|
if (shouldIgnoreValue(name, value)) {
|
|
95
104
|
return '';
|
|
96
105
|
}
|
|
97
106
|
var attributeName = DOMProperty.getAttributeName[name];
|
|
98
|
-
if (DOMProperty.hasBooleanValue[name]
|
|
107
|
+
if (DOMProperty.hasBooleanValue[name] ||
|
|
108
|
+
(DOMProperty.hasOverloadedBooleanValue[name] && value === true)) {
|
|
99
109
|
return escapeTextForBrowser(attributeName);
|
|
100
110
|
}
|
|
101
111
|
return processAttributeNameAndPrefix(attributeName) +
|
|
@@ -120,7 +130,8 @@ var DOMPropertyOperations = {
|
|
|
120
130
|
* @param {*} value
|
|
121
131
|
*/
|
|
122
132
|
setValueForProperty: function(node, name, value) {
|
|
123
|
-
if (DOMProperty.isStandardName
|
|
133
|
+
if (DOMProperty.isStandardName.hasOwnProperty(name) &&
|
|
134
|
+
DOMProperty.isStandardName[name]) {
|
|
124
135
|
var mutationMethod = DOMProperty.getMutationMethod[name];
|
|
125
136
|
if (mutationMethod) {
|
|
126
137
|
mutationMethod(node, value);
|
|
@@ -136,7 +147,7 @@ var DOMPropertyOperations = {
|
|
|
136
147
|
}
|
|
137
148
|
} else if (DOMProperty.isCustomAttribute(name)) {
|
|
138
149
|
if (value == null) {
|
|
139
|
-
node.removeAttribute(
|
|
150
|
+
node.removeAttribute(name);
|
|
140
151
|
} else {
|
|
141
152
|
node.setAttribute(name, '' + value);
|
|
142
153
|
}
|
|
@@ -152,7 +163,8 @@ var DOMPropertyOperations = {
|
|
|
152
163
|
* @param {string} name
|
|
153
164
|
*/
|
|
154
165
|
deleteValueForProperty: function(node, name) {
|
|
155
|
-
if (DOMProperty.isStandardName
|
|
166
|
+
if (DOMProperty.isStandardName.hasOwnProperty(name) &&
|
|
167
|
+
DOMProperty.isStandardName[name]) {
|
|
156
168
|
var mutationMethod = DOMProperty.getMutationMethod[name];
|
|
157
169
|
if (mutationMethod) {
|
|
158
170
|
mutationMethod(node, undefined);
|
|
@@ -37,6 +37,7 @@ var DefaultEventPluginOrder = [
|
|
|
37
37
|
keyOf({ChangeEventPlugin: null}),
|
|
38
38
|
keyOf({SelectEventPlugin: null}),
|
|
39
39
|
keyOf({CompositionEventPlugin: null}),
|
|
40
|
+
keyOf({BeforeInputEventPlugin: null}),
|
|
40
41
|
keyOf({AnalyticsEventPlugin: null}),
|
|
41
42
|
keyOf({MobileSafariClickEventPlugin: null})
|
|
42
43
|
];
|
package/lib/EventConstants.js
CHANGED
package/lib/EventListener.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @providesModule EventListener
|
|
3
|
+
* @typechecks
|
|
3
4
|
*/
|
|
4
5
|
|
|
5
6
|
var emptyFunction = require("./emptyFunction");
|
|
@@ -29,7 +30,7 @@ var EventListener = {
|
|
|
29
30
|
target.attachEvent('on' + eventType, callback);
|
|
30
31
|
return {
|
|
31
32
|
remove: function() {
|
|
32
|
-
target.detachEvent(eventType, callback);
|
|
33
|
+
target.detachEvent('on' + eventType, callback);
|
|
33
34
|
}
|
|
34
35
|
};
|
|
35
36
|
}
|
|
@@ -63,7 +64,9 @@ var EventListener = {
|
|
|
63
64
|
}
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
|
-
}
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
registerDefault: function() {}
|
|
67
70
|
};
|
|
68
71
|
|
|
69
72
|
module.exports = EventListener;
|
package/lib/EventPluginHub.js
CHANGED
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
|
|
21
21
|
var EventPluginRegistry = require("./EventPluginRegistry");
|
|
22
22
|
var EventPluginUtils = require("./EventPluginUtils");
|
|
23
|
-
var ExecutionEnvironment = require("./ExecutionEnvironment");
|
|
24
23
|
|
|
25
24
|
var accumulate = require("./accumulate");
|
|
26
25
|
var forEachAccumulated = require("./forEachAccumulated");
|
|
@@ -154,10 +153,6 @@ var EventPluginHub = {
|
|
|
154
153
|
* @param {?function} listener The callback to store.
|
|
155
154
|
*/
|
|
156
155
|
putListener: function(id, registrationName, listener) {
|
|
157
|
-
("production" !== process.env.NODE_ENV ? invariant(
|
|
158
|
-
ExecutionEnvironment.canUseDOM,
|
|
159
|
-
'Cannot call putListener() in a non-DOM environment.'
|
|
160
|
-
) : invariant(ExecutionEnvironment.canUseDOM));
|
|
161
156
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
162
157
|
!listener || typeof listener === 'function',
|
|
163
158
|
'Expected %s listener to be a function, instead got type %s',
|
|
@@ -90,11 +90,11 @@ function recomputePluginOrdering() {
|
|
|
90
90
|
*/
|
|
91
91
|
function publishEventForPlugin(dispatchConfig, PluginModule, eventName) {
|
|
92
92
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
93
|
-
!EventPluginRegistry.eventNameDispatchConfigs
|
|
93
|
+
!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),
|
|
94
94
|
'EventPluginHub: More than one plugin attempted to publish the same ' +
|
|
95
95
|
'event name, `%s`.',
|
|
96
96
|
eventName
|
|
97
|
-
) : invariant(!EventPluginRegistry.eventNameDispatchConfigs
|
|
97
|
+
) : invariant(!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName)));
|
|
98
98
|
EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
|
|
99
99
|
|
|
100
100
|
var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
|
|
@@ -180,7 +180,8 @@ var EventPluginRegistry = {
|
|
|
180
180
|
injectEventPluginOrder: function(InjectedEventPluginOrder) {
|
|
181
181
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
182
182
|
!EventPluginOrder,
|
|
183
|
-
'EventPluginRegistry: Cannot inject event plugin ordering more than
|
|
183
|
+
'EventPluginRegistry: Cannot inject event plugin ordering more than ' +
|
|
184
|
+
'once. You are likely trying to load more than one copy of React.'
|
|
184
185
|
) : invariant(!EventPluginOrder));
|
|
185
186
|
// Clone the ordering so it cannot be dynamically mutated.
|
|
186
187
|
EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);
|
|
@@ -204,7 +205,8 @@ var EventPluginRegistry = {
|
|
|
204
205
|
continue;
|
|
205
206
|
}
|
|
206
207
|
var PluginModule = injectedNamesToPlugins[pluginName];
|
|
207
|
-
if (namesToPlugins
|
|
208
|
+
if (!namesToPlugins.hasOwnProperty(pluginName) ||
|
|
209
|
+
namesToPlugins[pluginName] !== PluginModule) {
|
|
208
210
|
("production" !== process.env.NODE_ENV ? invariant(
|
|
209
211
|
!namesToPlugins[pluginName],
|
|
210
212
|
'EventPluginRegistry: Cannot inject two different event plugins ' +
|
package/lib/EventPluginUtils.js
CHANGED
|
@@ -135,7 +135,7 @@ function executeDispatchesInOrder(event, executeDispatch) {
|
|
|
135
135
|
* @return id of the first dispatch execution who's listener returns true, or
|
|
136
136
|
* null if no listener returned true.
|
|
137
137
|
*/
|
|
138
|
-
function
|
|
138
|
+
function executeDispatchesInOrderStopAtTrueImpl(event) {
|
|
139
139
|
var dispatchListeners = event._dispatchListeners;
|
|
140
140
|
var dispatchIDs = event._dispatchIDs;
|
|
141
141
|
if ("production" !== process.env.NODE_ENV) {
|
|
@@ -159,6 +159,16 @@ function executeDispatchesInOrderStopAtTrue(event) {
|
|
|
159
159
|
return null;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
/**
|
|
163
|
+
* @see executeDispatchesInOrderStopAtTrueImpl
|
|
164
|
+
*/
|
|
165
|
+
function executeDispatchesInOrderStopAtTrue(event) {
|
|
166
|
+
var ret = executeDispatchesInOrderStopAtTrueImpl(event);
|
|
167
|
+
event._dispatchIDs = null;
|
|
168
|
+
event._dispatchListeners = null;
|
|
169
|
+
return ret;
|
|
170
|
+
}
|
|
171
|
+
|
|
162
172
|
/**
|
|
163
173
|
* Execution of a "direct" dispatch - there must be at most one dispatch
|
|
164
174
|
* accumulated on the event or it is considered an error. It doesn't really make
|
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
|
|
21
21
|
"use strict";
|
|
22
22
|
|
|
23
|
-
var canUseDOM =
|
|
23
|
+
var canUseDOM = !!(
|
|
24
|
+
typeof window !== 'undefined' &&
|
|
25
|
+
window.document &&
|
|
26
|
+
window.document.createElement
|
|
27
|
+
);
|
|
24
28
|
|
|
25
29
|
/**
|
|
26
30
|
* Simple, lightweight module assisting with the detection and context of
|
|
@@ -35,7 +39,9 @@ var ExecutionEnvironment = {
|
|
|
35
39
|
canUseWorkers: typeof Worker !== 'undefined',
|
|
36
40
|
|
|
37
41
|
canUseEventListeners:
|
|
38
|
-
canUseDOM && (window.addEventListener || window.attachEvent),
|
|
42
|
+
canUseDOM && !!(window.addEventListener || window.attachEvent),
|
|
43
|
+
|
|
44
|
+
canUseViewport: canUseDOM && !!window.screen,
|
|
39
45
|
|
|
40
46
|
isInWorker: !canUseDOM // For now, this is true - might change in the future.
|
|
41
47
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*
|
|
16
|
-
* @providesModule
|
|
16
|
+
* @providesModule HTMLDOMPropertyConfig
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
/*jslint bitwise: true*/
|
|
@@ -21,15 +21,33 @@
|
|
|
21
21
|
"use strict";
|
|
22
22
|
|
|
23
23
|
var DOMProperty = require("./DOMProperty");
|
|
24
|
+
var ExecutionEnvironment = require("./ExecutionEnvironment");
|
|
24
25
|
|
|
25
26
|
var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
|
|
26
27
|
var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
|
|
27
28
|
var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
|
|
28
29
|
var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;
|
|
30
|
+
var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
|
|
29
31
|
var HAS_POSITIVE_NUMERIC_VALUE =
|
|
30
32
|
DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
|
|
33
|
+
var HAS_OVERLOADED_BOOLEAN_VALUE =
|
|
34
|
+
DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
|
|
31
35
|
|
|
32
|
-
var
|
|
36
|
+
var hasSVG;
|
|
37
|
+
if (ExecutionEnvironment.canUseDOM) {
|
|
38
|
+
var implementation = document.implementation;
|
|
39
|
+
hasSVG = (
|
|
40
|
+
implementation &&
|
|
41
|
+
implementation.hasFeature &&
|
|
42
|
+
implementation.hasFeature(
|
|
43
|
+
'http://www.w3.org/TR/SVG11/feature#BasicStructure',
|
|
44
|
+
'1.1'
|
|
45
|
+
)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
var HTMLDOMPropertyConfig = {
|
|
33
51
|
isCustomAttribute: RegExp.prototype.test.bind(
|
|
34
52
|
/^(data|aria)-[a-z_][a-z\d_.\-]*$/
|
|
35
53
|
),
|
|
@@ -52,20 +70,26 @@ var DefaultDOMPropertyConfig = {
|
|
|
52
70
|
cellSpacing: null,
|
|
53
71
|
charSet: MUST_USE_ATTRIBUTE,
|
|
54
72
|
checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
|
55
|
-
className
|
|
73
|
+
// To set className on SVG elements, it's necessary to use .setAttribute;
|
|
74
|
+
// this works on HTML elements too in all browsers except IE8. Conveniently,
|
|
75
|
+
// IE8 doesn't support SVG and so we can simply use the attribute in
|
|
76
|
+
// browsers that support SVG and the property in browsers that don't,
|
|
77
|
+
// regardless of whether the element is HTML or SVG.
|
|
78
|
+
className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,
|
|
56
79
|
cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
|
|
57
80
|
colSpan: null,
|
|
58
81
|
content: null,
|
|
59
82
|
contentEditable: null,
|
|
60
83
|
contextMenu: MUST_USE_ATTRIBUTE,
|
|
61
84
|
controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
|
85
|
+
coords: null,
|
|
62
86
|
crossOrigin: null,
|
|
63
87
|
data: null, // For `<object />` acts as `src`.
|
|
64
88
|
dateTime: MUST_USE_ATTRIBUTE,
|
|
65
89
|
defer: HAS_BOOLEAN_VALUE,
|
|
66
90
|
dir: null,
|
|
67
91
|
disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
|
68
|
-
download:
|
|
92
|
+
download: HAS_OVERLOADED_BOOLEAN_VALUE,
|
|
69
93
|
draggable: null,
|
|
70
94
|
encType: null,
|
|
71
95
|
form: MUST_USE_ATTRIBUTE,
|
|
@@ -85,6 +109,7 @@ var DefaultDOMPropertyConfig = {
|
|
|
85
109
|
loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
|
86
110
|
max: null,
|
|
87
111
|
maxLength: MUST_USE_ATTRIBUTE,
|
|
112
|
+
media: MUST_USE_ATTRIBUTE,
|
|
88
113
|
mediaGroup: null,
|
|
89
114
|
method: null,
|
|
90
115
|
min: null,
|
|
@@ -92,6 +117,7 @@ var DefaultDOMPropertyConfig = {
|
|
|
92
117
|
muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
|
93
118
|
name: null,
|
|
94
119
|
noValidate: HAS_BOOLEAN_VALUE,
|
|
120
|
+
open: null,
|
|
95
121
|
pattern: null,
|
|
96
122
|
placeholder: null,
|
|
97
123
|
poster: null,
|
|
@@ -106,21 +132,26 @@ var DefaultDOMPropertyConfig = {
|
|
|
106
132
|
sandbox: null,
|
|
107
133
|
scope: null,
|
|
108
134
|
scrollLeft: MUST_USE_PROPERTY,
|
|
135
|
+
scrolling: null,
|
|
109
136
|
scrollTop: MUST_USE_PROPERTY,
|
|
110
137
|
seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
|
|
111
138
|
selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
|
|
139
|
+
shape: null,
|
|
112
140
|
size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
|
|
141
|
+
sizes: MUST_USE_ATTRIBUTE,
|
|
113
142
|
span: HAS_POSITIVE_NUMERIC_VALUE,
|
|
114
143
|
spellCheck: null,
|
|
115
144
|
src: null,
|
|
116
145
|
srcDoc: MUST_USE_PROPERTY,
|
|
117
|
-
srcSet:
|
|
146
|
+
srcSet: MUST_USE_ATTRIBUTE,
|
|
147
|
+
start: HAS_NUMERIC_VALUE,
|
|
118
148
|
step: null,
|
|
119
149
|
style: null,
|
|
120
150
|
tabIndex: null,
|
|
121
151
|
target: null,
|
|
122
152
|
title: null,
|
|
123
153
|
type: null,
|
|
154
|
+
useMap: null,
|
|
124
155
|
value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
|
|
125
156
|
width: MUST_USE_ATTRIBUTE,
|
|
126
157
|
wmode: MUST_USE_ATTRIBUTE,
|
|
@@ -130,53 +161,15 @@ var DefaultDOMPropertyConfig = {
|
|
|
130
161
|
*/
|
|
131
162
|
autoCapitalize: null, // Supported in Mobile Safari for keyboard hints
|
|
132
163
|
autoCorrect: null, // Supported in Mobile Safari for keyboard hints
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
*/
|
|
138
|
-
cx: MUST_USE_ATTRIBUTE,
|
|
139
|
-
cy: MUST_USE_ATTRIBUTE,
|
|
140
|
-
d: MUST_USE_ATTRIBUTE,
|
|
141
|
-
fill: MUST_USE_ATTRIBUTE,
|
|
142
|
-
fx: MUST_USE_ATTRIBUTE,
|
|
143
|
-
fy: MUST_USE_ATTRIBUTE,
|
|
144
|
-
gradientTransform: MUST_USE_ATTRIBUTE,
|
|
145
|
-
gradientUnits: MUST_USE_ATTRIBUTE,
|
|
146
|
-
offset: MUST_USE_ATTRIBUTE,
|
|
147
|
-
points: MUST_USE_ATTRIBUTE,
|
|
148
|
-
r: MUST_USE_ATTRIBUTE,
|
|
149
|
-
rx: MUST_USE_ATTRIBUTE,
|
|
150
|
-
ry: MUST_USE_ATTRIBUTE,
|
|
151
|
-
spreadMethod: MUST_USE_ATTRIBUTE,
|
|
152
|
-
stopColor: MUST_USE_ATTRIBUTE,
|
|
153
|
-
stopOpacity: MUST_USE_ATTRIBUTE,
|
|
154
|
-
stroke: MUST_USE_ATTRIBUTE,
|
|
155
|
-
strokeLinecap: MUST_USE_ATTRIBUTE,
|
|
156
|
-
strokeWidth: MUST_USE_ATTRIBUTE,
|
|
157
|
-
textAnchor: MUST_USE_ATTRIBUTE,
|
|
158
|
-
transform: MUST_USE_ATTRIBUTE,
|
|
159
|
-
version: MUST_USE_ATTRIBUTE,
|
|
160
|
-
viewBox: MUST_USE_ATTRIBUTE,
|
|
161
|
-
x1: MUST_USE_ATTRIBUTE,
|
|
162
|
-
x2: MUST_USE_ATTRIBUTE,
|
|
163
|
-
x: MUST_USE_ATTRIBUTE,
|
|
164
|
-
y1: MUST_USE_ATTRIBUTE,
|
|
165
|
-
y2: MUST_USE_ATTRIBUTE,
|
|
166
|
-
y: MUST_USE_ATTRIBUTE
|
|
164
|
+
itemProp: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html
|
|
165
|
+
itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE, // Microdata: http://schema.org/docs/gs.html
|
|
166
|
+
itemType: MUST_USE_ATTRIBUTE, // Microdata: http://schema.org/docs/gs.html
|
|
167
|
+
property: null // Supports OG in meta tags
|
|
167
168
|
},
|
|
168
169
|
DOMAttributeNames: {
|
|
169
170
|
className: 'class',
|
|
170
|
-
gradientTransform: 'gradientTransform',
|
|
171
|
-
gradientUnits: 'gradientUnits',
|
|
172
171
|
htmlFor: 'for',
|
|
173
|
-
|
|
174
|
-
stopColor: 'stop-color',
|
|
175
|
-
stopOpacity: 'stop-opacity',
|
|
176
|
-
strokeLinecap: 'stroke-linecap',
|
|
177
|
-
strokeWidth: 'stroke-width',
|
|
178
|
-
textAnchor: 'text-anchor',
|
|
179
|
-
viewBox: 'viewBox'
|
|
172
|
+
httpEquiv: 'http-equiv'
|
|
180
173
|
},
|
|
181
174
|
DOMPropertyNames: {
|
|
182
175
|
autoCapitalize: 'autocapitalize',
|
|
@@ -193,4 +186,4 @@ var DefaultDOMPropertyConfig = {
|
|
|
193
186
|
}
|
|
194
187
|
};
|
|
195
188
|
|
|
196
|
-
module.exports =
|
|
189
|
+
module.exports = HTMLDOMPropertyConfig;
|