diff options
| author | Florian Dold <florian.dold@gmail.com> | 2017-10-14 18:40:54 +0200 | 
|---|---|---|
| committer | Florian Dold <florian.dold@gmail.com> | 2017-10-14 18:40:54 +0200 | 
| commit | 9df98e65f842cf3acae09cbdd969966f42d64469 (patch) | |
| tree | f071d3e09a342c208fb8e1cd3f5241d64fbfbaf3 /node_modules/react-dom/lib | |
| parent | 008926b18470e7f394cd640302957b29728a9803 (diff) | |
update dependencies
Diffstat (limited to 'node_modules/react-dom/lib')
169 files changed, 0 insertions, 20682 deletions
diff --git a/node_modules/react-dom/lib/ARIADOMPropertyConfig.js b/node_modules/react-dom/lib/ARIADOMPropertyConfig.js deleted file mode 100644 index b6d8a3f93..000000000 --- a/node_modules/react-dom/lib/ARIADOMPropertyConfig.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ARIADOMPropertyConfig = { -  Properties: { -    // Global States and Properties -    'aria-current': 0, // state -    'aria-details': 0, -    'aria-disabled': 0, // state -    'aria-hidden': 0, // state -    'aria-invalid': 0, // state -    'aria-keyshortcuts': 0, -    'aria-label': 0, -    'aria-roledescription': 0, -    // Widget Attributes -    'aria-autocomplete': 0, -    'aria-checked': 0, -    'aria-expanded': 0, -    'aria-haspopup': 0, -    'aria-level': 0, -    'aria-modal': 0, -    'aria-multiline': 0, -    'aria-multiselectable': 0, -    'aria-orientation': 0, -    'aria-placeholder': 0, -    'aria-pressed': 0, -    'aria-readonly': 0, -    'aria-required': 0, -    'aria-selected': 0, -    'aria-sort': 0, -    'aria-valuemax': 0, -    'aria-valuemin': 0, -    'aria-valuenow': 0, -    'aria-valuetext': 0, -    // Live Region Attributes -    'aria-atomic': 0, -    'aria-busy': 0, -    'aria-live': 0, -    'aria-relevant': 0, -    // Drag-and-Drop Attributes -    'aria-dropeffect': 0, -    'aria-grabbed': 0, -    // Relationship Attributes -    'aria-activedescendant': 0, -    'aria-colcount': 0, -    'aria-colindex': 0, -    'aria-colspan': 0, -    'aria-controls': 0, -    'aria-describedby': 0, -    'aria-errormessage': 0, -    'aria-flowto': 0, -    'aria-labelledby': 0, -    'aria-owns': 0, -    'aria-posinset': 0, -    'aria-rowcount': 0, -    'aria-rowindex': 0, -    'aria-rowspan': 0, -    'aria-setsize': 0 -  }, -  DOMAttributeNames: {}, -  DOMPropertyNames: {} -}; - -module.exports = ARIADOMPropertyConfig;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/AutoFocusUtils.js b/node_modules/react-dom/lib/AutoFocusUtils.js deleted file mode 100644 index 31e64690f..000000000 --- a/node_modules/react-dom/lib/AutoFocusUtils.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - -var focusNode = require('fbjs/lib/focusNode'); - -var AutoFocusUtils = { -  focusDOMComponent: function () { -    focusNode(ReactDOMComponentTree.getNodeFromInstance(this)); -  } -}; - -module.exports = AutoFocusUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/BeforeInputEventPlugin.js b/node_modules/react-dom/lib/BeforeInputEventPlugin.js deleted file mode 100644 index be43a7f93..000000000 --- a/node_modules/react-dom/lib/BeforeInputEventPlugin.js +++ /dev/null @@ -1,383 +0,0 @@ -/** - * Copyright 2013-present Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPropagators = require('./EventPropagators'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var FallbackCompositionState = require('./FallbackCompositionState'); -var SyntheticCompositionEvent = require('./SyntheticCompositionEvent'); -var SyntheticInputEvent = require('./SyntheticInputEvent'); - -var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space -var START_KEYCODE = 229; - -var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window; - -var documentMode = null; -if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) { -  documentMode = document.documentMode; -} - -// Webkit offers a very useful `textInput` event that can be used to -// directly represent `beforeInput`. The IE `textinput` event is not as -// useful, so we don't use it. -var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); - -// In IE9+, we have access to composition events, but the data supplied -// by the native compositionend event may be incorrect. Japanese ideographic -// spaces, for instance (\u3000) are not recorded correctly. -var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); - -/** - * Opera <= 12 includes TextEvent in window, but does not fire - * text input events. Rely on keypress instead. - */ -function isPresto() { -  var opera = window.opera; -  return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; -} - -var SPACEBAR_CODE = 32; -var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); - -// Events and their corresponding property names. -var eventTypes = { -  beforeInput: { -    phasedRegistrationNames: { -      bubbled: 'onBeforeInput', -      captured: 'onBeforeInputCapture' -    }, -    dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste'] -  }, -  compositionEnd: { -    phasedRegistrationNames: { -      bubbled: 'onCompositionEnd', -      captured: 'onCompositionEndCapture' -    }, -    dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] -  }, -  compositionStart: { -    phasedRegistrationNames: { -      bubbled: 'onCompositionStart', -      captured: 'onCompositionStartCapture' -    }, -    dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] -  }, -  compositionUpdate: { -    phasedRegistrationNames: { -      bubbled: 'onCompositionUpdate', -      captured: 'onCompositionUpdateCapture' -    }, -    dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] -  } -}; - -// Track whether we've ever handled a keypress on the space key. -var hasSpaceKeypress = false; - -/** - * Return whether a native keypress event is assumed to be a command. - * This is required because Firefox fires `keypress` events for key commands - * (cut, copy, select-all, etc.) even though no character is inserted. - */ -function isKeypressCommand(nativeEvent) { -  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && -  // ctrlKey && altKey is equivalent to AltGr, and is not a command. -  !(nativeEvent.ctrlKey && nativeEvent.altKey); -} - -/** - * Translate native top level events into event types. - * - * @param {string} topLevelType - * @return {object} - */ -function getCompositionEventType(topLevelType) { -  switch (topLevelType) { -    case 'topCompositionStart': -      return eventTypes.compositionStart; -    case 'topCompositionEnd': -      return eventTypes.compositionEnd; -    case 'topCompositionUpdate': -      return eventTypes.compositionUpdate; -  } -} - -/** - * Does our fallback best-guess model think this event signifies that - * composition has begun? - * - * @param {string} topLevelType - * @param {object} nativeEvent - * @return {boolean} - */ -function isFallbackCompositionStart(topLevelType, nativeEvent) { -  return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE; -} - -/** - * Does our fallback mode think that this event is the end of composition? - * - * @param {string} topLevelType - * @param {object} nativeEvent - * @return {boolean} - */ -function isFallbackCompositionEnd(topLevelType, nativeEvent) { -  switch (topLevelType) { -    case 'topKeyUp': -      // Command keys insert or clear IME input. -      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; -    case 'topKeyDown': -      // Expect IME keyCode on each keydown. If we get any other -      // code we must have exited earlier. -      return nativeEvent.keyCode !== START_KEYCODE; -    case 'topKeyPress': -    case 'topMouseDown': -    case 'topBlur': -      // Events are not possible without cancelling IME. -      return true; -    default: -      return false; -  } -} - -/** - * Google Input Tools provides composition data via a CustomEvent, - * with the `data` property populated in the `detail` object. If this - * is available on the event object, use it. If not, this is a plain - * composition event and we have nothing special to extract. - * - * @param {object} nativeEvent - * @return {?string} - */ -function getDataFromCustomEvent(nativeEvent) { -  var detail = nativeEvent.detail; -  if (typeof detail === 'object' && 'data' in detail) { -    return detail.data; -  } -  return null; -} - -// Track the current IME composition fallback object, if any. -var currentComposition = null; - -/** - * @return {?object} A SyntheticCompositionEvent. - */ -function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { -  var eventType; -  var fallbackData; - -  if (canUseCompositionEvent) { -    eventType = getCompositionEventType(topLevelType); -  } else if (!currentComposition) { -    if (isFallbackCompositionStart(topLevelType, nativeEvent)) { -      eventType = eventTypes.compositionStart; -    } -  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { -    eventType = eventTypes.compositionEnd; -  } - -  if (!eventType) { -    return null; -  } - -  if (useFallbackCompositionData) { -    // The current composition is stored statically and must not be -    // overwritten while composition continues. -    if (!currentComposition && eventType === eventTypes.compositionStart) { -      currentComposition = FallbackCompositionState.getPooled(nativeEventTarget); -    } else if (eventType === eventTypes.compositionEnd) { -      if (currentComposition) { -        fallbackData = currentComposition.getData(); -      } -    } -  } - -  var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); - -  if (fallbackData) { -    // Inject data generated from fallback path into the synthetic event. -    // This matches the property of native CompositionEventInterface. -    event.data = fallbackData; -  } else { -    var customData = getDataFromCustomEvent(nativeEvent); -    if (customData !== null) { -      event.data = customData; -    } -  } - -  EventPropagators.accumulateTwoPhaseDispatches(event); -  return event; -} - -/** - * @param {string} topLevelType Record from `EventConstants`. - * @param {object} nativeEvent Native browser event. - * @return {?string} The string corresponding to this `beforeInput` event. - */ -function getNativeBeforeInputChars(topLevelType, nativeEvent) { -  switch (topLevelType) { -    case 'topCompositionEnd': -      return getDataFromCustomEvent(nativeEvent); -    case 'topKeyPress': -      /** -       * If native `textInput` events are available, our goal is to make -       * use of them. However, there is a special case: the spacebar key. -       * In Webkit, preventing default on a spacebar `textInput` event -       * cancels character insertion, but it *also* causes the browser -       * to fall back to its default spacebar behavior of scrolling the -       * page. -       * -       * Tracking at: -       * https://code.google.com/p/chromium/issues/detail?id=355103 -       * -       * To avoid this issue, use the keypress event as if no `textInput` -       * event is available. -       */ -      var which = nativeEvent.which; -      if (which !== SPACEBAR_CODE) { -        return null; -      } - -      hasSpaceKeypress = true; -      return SPACEBAR_CHAR; - -    case 'topTextInput': -      // Record the characters to be added to the DOM. -      var chars = nativeEvent.data; - -      // If it's a spacebar character, assume that we have already handled -      // it at the keypress level and bail immediately. Android Chrome -      // doesn't give us keycodes, so we need to blacklist it. -      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { -        return null; -      } - -      return chars; - -    default: -      // For other native event types, do nothing. -      return null; -  } -} - -/** - * For browsers that do not provide the `textInput` event, extract the - * appropriate string to use for SyntheticInputEvent. - * - * @param {string} topLevelType Record from `EventConstants`. - * @param {object} nativeEvent Native browser event. - * @return {?string} The fallback string for this `beforeInput` event. - */ -function getFallbackBeforeInputChars(topLevelType, nativeEvent) { -  // If we are currently composing (IME) and using a fallback to do so, -  // try to extract the composed characters from the fallback object. -  // If composition event is available, we extract a string only at -  // compositionevent, otherwise extract it at fallback events. -  if (currentComposition) { -    if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { -      var chars = currentComposition.getData(); -      FallbackCompositionState.release(currentComposition); -      currentComposition = null; -      return chars; -    } -    return null; -  } - -  switch (topLevelType) { -    case 'topPaste': -      // If a paste event occurs after a keypress, throw out the input -      // chars. Paste events should not lead to BeforeInput events. -      return null; -    case 'topKeyPress': -      /** -       * As of v27, Firefox may fire keypress events even when no character -       * will be inserted. A few possibilities: -       * -       * - `which` is `0`. Arrow keys, Esc key, etc. -       * -       * - `which` is the pressed key code, but no char is available. -       *   Ex: 'AltGr + d` in Polish. There is no modified character for -       *   this key combination and no character is inserted into the -       *   document, but FF fires the keypress for char code `100` anyway. -       *   No `input` event will occur. -       * -       * - `which` is the pressed key code, but a command combination is -       *   being used. Ex: `Cmd+C`. No character is inserted, and no -       *   `input` event will occur. -       */ -      if (nativeEvent.which && !isKeypressCommand(nativeEvent)) { -        return String.fromCharCode(nativeEvent.which); -      } -      return null; -    case 'topCompositionEnd': -      return useFallbackCompositionData ? null : nativeEvent.data; -    default: -      return null; -  } -} - -/** - * Extract a SyntheticInputEvent for `beforeInput`, based on either native - * `textInput` or fallback behavior. - * - * @return {?object} A SyntheticInputEvent. - */ -function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { -  var chars; - -  if (canUseTextInputEvent) { -    chars = getNativeBeforeInputChars(topLevelType, nativeEvent); -  } else { -    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); -  } - -  // If no characters are being inserted, no BeforeInput event should -  // be fired. -  if (!chars) { -    return null; -  } - -  var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget); - -  event.data = chars; -  EventPropagators.accumulateTwoPhaseDispatches(event); -  return event; -} - -/** - * Create an `onBeforeInput` event to match - * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. - * - * This event plugin is based on the native `textInput` event - * available in Chrome, Safari, Opera, and IE. This event fires after - * `onKeyPress` and `onCompositionEnd`, but before `onInput`. - * - * `beforeInput` is spec'd but not implemented in any browsers, and - * the `input` event does not provide any useful information about what has - * actually been added, contrary to the spec. Thus, `textInput` is the best - * available event to identify the characters that have actually been inserted - * into the target node. - * - * This plugin is also responsible for emitting `composition` events, thus - * allowing us to share composition fallback code for both `beforeInput` and - * `composition` event types. - */ -var BeforeInputEventPlugin = { -  eventTypes: eventTypes, - -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)]; -  } -}; - -module.exports = BeforeInputEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/CSSProperty.js b/node_modules/react-dom/lib/CSSProperty.js deleted file mode 100644 index 8507106b1..000000000 --- a/node_modules/react-dom/lib/CSSProperty.js +++ /dev/null @@ -1,153 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * CSS properties which accept numbers but are not in units of "px". - */ - -var isUnitlessNumber = { -  animationIterationCount: true, -  borderImageOutset: true, -  borderImageSlice: true, -  borderImageWidth: true, -  boxFlex: true, -  boxFlexGroup: true, -  boxOrdinalGroup: true, -  columnCount: true, -  flex: true, -  flexGrow: true, -  flexPositive: true, -  flexShrink: true, -  flexNegative: true, -  flexOrder: true, -  gridRow: true, -  gridRowEnd: true, -  gridRowSpan: true, -  gridRowStart: true, -  gridColumn: true, -  gridColumnEnd: true, -  gridColumnSpan: true, -  gridColumnStart: true, -  fontWeight: true, -  lineClamp: true, -  lineHeight: true, -  opacity: true, -  order: true, -  orphans: true, -  tabSize: true, -  widows: true, -  zIndex: true, -  zoom: true, - -  // SVG-related properties -  fillOpacity: true, -  floodOpacity: true, -  stopOpacity: true, -  strokeDasharray: true, -  strokeDashoffset: true, -  strokeMiterlimit: true, -  strokeOpacity: true, -  strokeWidth: true -}; - -/** - * @param {string} prefix vendor-specific prefix, eg: Webkit - * @param {string} key style name, eg: transitionDuration - * @return {string} style name prefixed with `prefix`, properly camelCased, eg: - * WebkitTransitionDuration - */ -function prefixKey(prefix, key) { -  return prefix + key.charAt(0).toUpperCase() + key.substring(1); -} - -/** - * Support style names that may come passed in prefixed by adding permutations - * of vendor prefixes. - */ -var prefixes = ['Webkit', 'ms', 'Moz', 'O']; - -// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an -// infinite loop, because it iterates over the newly added props too. -Object.keys(isUnitlessNumber).forEach(function (prop) { -  prefixes.forEach(function (prefix) { -    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; -  }); -}); - -/** - * Most style properties can be unset by doing .style[prop] = '' but IE8 - * doesn't like doing that with shorthand properties so for the properties that - * IE8 breaks on, which are listed here, we instead unset each of the - * individual properties. See http://bugs.jquery.com/ticket/12385. - * The 4-value 'clock' properties like margin, padding, border-width seem to - * behave without any problems. Curiously, list-style works too without any - * special prodding. - */ -var shorthandPropertyExpansions = { -  background: { -    backgroundAttachment: true, -    backgroundColor: true, -    backgroundImage: true, -    backgroundPositionX: true, -    backgroundPositionY: true, -    backgroundRepeat: true -  }, -  backgroundPosition: { -    backgroundPositionX: true, -    backgroundPositionY: true -  }, -  border: { -    borderWidth: true, -    borderStyle: true, -    borderColor: true -  }, -  borderBottom: { -    borderBottomWidth: true, -    borderBottomStyle: true, -    borderBottomColor: true -  }, -  borderLeft: { -    borderLeftWidth: true, -    borderLeftStyle: true, -    borderLeftColor: true -  }, -  borderRight: { -    borderRightWidth: true, -    borderRightStyle: true, -    borderRightColor: true -  }, -  borderTop: { -    borderTopWidth: true, -    borderTopStyle: true, -    borderTopColor: true -  }, -  font: { -    fontStyle: true, -    fontVariant: true, -    fontWeight: true, -    fontSize: true, -    lineHeight: true, -    fontFamily: true -  }, -  outline: { -    outlineWidth: true, -    outlineStyle: true, -    outlineColor: true -  } -}; - -var CSSProperty = { -  isUnitlessNumber: isUnitlessNumber, -  shorthandPropertyExpansions: shorthandPropertyExpansions -}; - -module.exports = CSSProperty;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/CSSPropertyOperations.js b/node_modules/react-dom/lib/CSSPropertyOperations.js deleted file mode 100644 index 2d7c11438..000000000 --- a/node_modules/react-dom/lib/CSSPropertyOperations.js +++ /dev/null @@ -1,214 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var CSSProperty = require('./CSSProperty'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var ReactInstrumentation = require('./ReactInstrumentation'); - -var camelizeStyleName = require('fbjs/lib/camelizeStyleName'); -var dangerousStyleValue = require('./dangerousStyleValue'); -var hyphenateStyleName = require('fbjs/lib/hyphenateStyleName'); -var memoizeStringOnly = require('fbjs/lib/memoizeStringOnly'); -var warning = require('fbjs/lib/warning'); - -var processStyleName = memoizeStringOnly(function (styleName) { -  return hyphenateStyleName(styleName); -}); - -var hasShorthandPropertyBug = false; -var styleFloatAccessor = 'cssFloat'; -if (ExecutionEnvironment.canUseDOM) { -  var tempStyle = document.createElement('div').style; -  try { -    // IE8 throws "Invalid argument." if resetting shorthand style properties. -    tempStyle.font = ''; -  } catch (e) { -    hasShorthandPropertyBug = true; -  } -  // IE8 only supports accessing cssFloat (standard) as styleFloat -  if (document.documentElement.style.cssFloat === undefined) { -    styleFloatAccessor = 'styleFloat'; -  } -} - -if (process.env.NODE_ENV !== 'production') { -  // 'msTransform' is correct, but the other prefixes should be capitalized -  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; - -  // style values shouldn't contain a semicolon -  var badStyleValueWithSemicolonPattern = /;\s*$/; - -  var warnedStyleNames = {}; -  var warnedStyleValues = {}; -  var warnedForNaNValue = false; - -  var warnHyphenatedStyleName = function (name, owner) { -    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { -      return; -    } - -    warnedStyleNames[name] = true; -    process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0; -  }; - -  var warnBadVendoredStyleName = function (name, owner) { -    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { -      return; -    } - -    warnedStyleNames[name] = true; -    process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0; -  }; - -  var warnStyleValueWithSemicolon = function (name, value, owner) { -    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { -      return; -    } - -    warnedStyleValues[value] = true; -    process.env.NODE_ENV !== 'production' ? warning(false, "Style property values shouldn't contain a semicolon.%s " + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0; -  }; - -  var warnStyleValueIsNaN = function (name, value, owner) { -    if (warnedForNaNValue) { -      return; -    } - -    warnedForNaNValue = true; -    process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0; -  }; - -  var checkRenderMessage = function (owner) { -    if (owner) { -      var name = owner.getName(); -      if (name) { -        return ' Check the render method of `' + name + '`.'; -      } -    } -    return ''; -  }; - -  /** -   * @param {string} name -   * @param {*} value -   * @param {ReactDOMComponent} component -   */ -  var warnValidStyle = function (name, value, component) { -    var owner; -    if (component) { -      owner = component._currentElement._owner; -    } -    if (name.indexOf('-') > -1) { -      warnHyphenatedStyleName(name, owner); -    } else if (badVendoredStyleNamePattern.test(name)) { -      warnBadVendoredStyleName(name, owner); -    } else if (badStyleValueWithSemicolonPattern.test(value)) { -      warnStyleValueWithSemicolon(name, value, owner); -    } - -    if (typeof value === 'number' && isNaN(value)) { -      warnStyleValueIsNaN(name, value, owner); -    } -  }; -} - -/** - * Operations for dealing with CSS properties. - */ -var CSSPropertyOperations = { -  /** -   * Serializes a mapping of style properties for use as inline styles: -   * -   *   > createMarkupForStyles({width: '200px', height: 0}) -   *   "width:200px;height:0;" -   * -   * Undefined values are ignored so that declarative programming is easier. -   * The result should be HTML-escaped before insertion into the DOM. -   * -   * @param {object} styles -   * @param {ReactDOMComponent} component -   * @return {?string} -   */ -  createMarkupForStyles: function (styles, component) { -    var serialized = ''; -    for (var styleName in styles) { -      if (!styles.hasOwnProperty(styleName)) { -        continue; -      } -      var isCustomProperty = styleName.indexOf('--') === 0; -      var styleValue = styles[styleName]; -      if (process.env.NODE_ENV !== 'production') { -        if (!isCustomProperty) { -          warnValidStyle(styleName, styleValue, component); -        } -      } -      if (styleValue != null) { -        serialized += processStyleName(styleName) + ':'; -        serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';'; -      } -    } -    return serialized || null; -  }, - -  /** -   * Sets the value for multiple styles on a node.  If a value is specified as -   * '' (empty string), the corresponding style property will be unset. -   * -   * @param {DOMElement} node -   * @param {object} styles -   * @param {ReactDOMComponent} component -   */ -  setValueForStyles: function (node, styles, component) { -    if (process.env.NODE_ENV !== 'production') { -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: component._debugID, -        type: 'update styles', -        payload: styles -      }); -    } - -    var style = node.style; -    for (var styleName in styles) { -      if (!styles.hasOwnProperty(styleName)) { -        continue; -      } -      var isCustomProperty = styleName.indexOf('--') === 0; -      if (process.env.NODE_ENV !== 'production') { -        if (!isCustomProperty) { -          warnValidStyle(styleName, styles[styleName], component); -        } -      } -      var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty); -      if (styleName === 'float' || styleName === 'cssFloat') { -        styleName = styleFloatAccessor; -      } -      if (isCustomProperty) { -        style.setProperty(styleName, styleValue); -      } else if (styleValue) { -        style[styleName] = styleValue; -      } else { -        var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName]; -        if (expansion) { -          // Shorthand property that IE8 won't like unsetting, so unset each -          // component to placate it -          for (var individualStyleName in expansion) { -            style[individualStyleName] = ''; -          } -        } else { -          style[styleName] = ''; -        } -      } -    } -  } -}; - -module.exports = CSSPropertyOperations;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/CallbackQueue.js b/node_modules/react-dom/lib/CallbackQueue.js deleted file mode 100644 index 4405c5f49..000000000 --- a/node_modules/react-dom/lib/CallbackQueue.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var PooledClass = require('./PooledClass'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * A specialized pseudo-event module to help keep track of components waiting to - * be notified when their DOM representations are available for use. - * - * This implements `PooledClass`, so you should never need to instantiate this. - * Instead, use `CallbackQueue.getPooled()`. - * - * @class ReactMountReady - * @implements PooledClass - * @internal - */ - -var CallbackQueue = function () { -  function CallbackQueue(arg) { -    _classCallCheck(this, CallbackQueue); - -    this._callbacks = null; -    this._contexts = null; -    this._arg = arg; -  } - -  /** -   * Enqueues a callback to be invoked when `notifyAll` is invoked. -   * -   * @param {function} callback Invoked when `notifyAll` is invoked. -   * @param {?object} context Context to call `callback` with. -   * @internal -   */ - - -  CallbackQueue.prototype.enqueue = function enqueue(callback, context) { -    this._callbacks = this._callbacks || []; -    this._callbacks.push(callback); -    this._contexts = this._contexts || []; -    this._contexts.push(context); -  }; - -  /** -   * Invokes all enqueued callbacks and clears the queue. This is invoked after -   * the DOM representation of a component has been created or updated. -   * -   * @internal -   */ - - -  CallbackQueue.prototype.notifyAll = function notifyAll() { -    var callbacks = this._callbacks; -    var contexts = this._contexts; -    var arg = this._arg; -    if (callbacks && contexts) { -      !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0; -      this._callbacks = null; -      this._contexts = null; -      for (var i = 0; i < callbacks.length; i++) { -        callbacks[i].call(contexts[i], arg); -      } -      callbacks.length = 0; -      contexts.length = 0; -    } -  }; - -  CallbackQueue.prototype.checkpoint = function checkpoint() { -    return this._callbacks ? this._callbacks.length : 0; -  }; - -  CallbackQueue.prototype.rollback = function rollback(len) { -    if (this._callbacks && this._contexts) { -      this._callbacks.length = len; -      this._contexts.length = len; -    } -  }; - -  /** -   * Resets the internal queue. -   * -   * @internal -   */ - - -  CallbackQueue.prototype.reset = function reset() { -    this._callbacks = null; -    this._contexts = null; -  }; - -  /** -   * `PooledClass` looks for this. -   */ - - -  CallbackQueue.prototype.destructor = function destructor() { -    this.reset(); -  }; - -  return CallbackQueue; -}(); - -module.exports = PooledClass.addPoolingTo(CallbackQueue);
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ChangeEventPlugin.js b/node_modules/react-dom/lib/ChangeEventPlugin.js deleted file mode 100644 index 0da17879e..000000000 --- a/node_modules/react-dom/lib/ChangeEventPlugin.js +++ /dev/null @@ -1,311 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPluginHub = require('./EventPluginHub'); -var EventPropagators = require('./EventPropagators'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactUpdates = require('./ReactUpdates'); -var SyntheticEvent = require('./SyntheticEvent'); - -var inputValueTracking = require('./inputValueTracking'); -var getEventTarget = require('./getEventTarget'); -var isEventSupported = require('./isEventSupported'); -var isTextInputElement = require('./isTextInputElement'); - -var eventTypes = { -  change: { -    phasedRegistrationNames: { -      bubbled: 'onChange', -      captured: 'onChangeCapture' -    }, -    dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange'] -  } -}; - -function createAndAccumulateChangeEvent(inst, nativeEvent, target) { -  var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target); -  event.type = 'change'; -  EventPropagators.accumulateTwoPhaseDispatches(event); -  return event; -} -/** - * For IE shims - */ -var activeElement = null; -var activeElementInst = null; - -/** - * SECTION: handle `change` event - */ -function shouldUseChangeEvent(elem) { -  var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); -  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; -} - -var doesChangeEventBubble = false; -if (ExecutionEnvironment.canUseDOM) { -  // See `handleChange` comment below -  doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8); -} - -function manualDispatchChangeEvent(nativeEvent) { -  var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent)); - -  // If change and propertychange bubbled, we'd just bind to it like all the -  // other events and have it go through ReactBrowserEventEmitter. Since it -  // doesn't, we manually listen for the events and so we have to enqueue and -  // process the abstract event manually. -  // -  // Batching is necessary here in order to ensure that all event handlers run -  // before the next rerender (including event handlers attached to ancestor -  // elements instead of directly on the input). Without this, controlled -  // components don't work properly in conjunction with event bubbling because -  // the component is rerendered and the value reverted before all the event -  // handlers can run. See https://github.com/facebook/react/issues/708. -  ReactUpdates.batchedUpdates(runEventInBatch, event); -} - -function runEventInBatch(event) { -  EventPluginHub.enqueueEvents(event); -  EventPluginHub.processEventQueue(false); -} - -function startWatchingForChangeEventIE8(target, targetInst) { -  activeElement = target; -  activeElementInst = targetInst; -  activeElement.attachEvent('onchange', manualDispatchChangeEvent); -} - -function stopWatchingForChangeEventIE8() { -  if (!activeElement) { -    return; -  } -  activeElement.detachEvent('onchange', manualDispatchChangeEvent); -  activeElement = null; -  activeElementInst = null; -} - -function getInstIfValueChanged(targetInst, nativeEvent) { -  var updated = inputValueTracking.updateValueIfChanged(targetInst); -  var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough; - -  if (updated || simulated) { -    return targetInst; -  } -} - -function getTargetInstForChangeEvent(topLevelType, targetInst) { -  if (topLevelType === 'topChange') { -    return targetInst; -  } -} - -function handleEventsForChangeEventIE8(topLevelType, target, targetInst) { -  if (topLevelType === 'topFocus') { -    // stopWatching() should be a noop here but we call it just in case we -    // missed a blur event somehow. -    stopWatchingForChangeEventIE8(); -    startWatchingForChangeEventIE8(target, targetInst); -  } else if (topLevelType === 'topBlur') { -    stopWatchingForChangeEventIE8(); -  } -} - -/** - * SECTION: handle `input` event - */ -var isInputEventSupported = false; -if (ExecutionEnvironment.canUseDOM) { -  // IE9 claims to support the input event but fails to trigger it when -  // deleting text, so we ignore its input events. - -  isInputEventSupported = isEventSupported('input') && (!('documentMode' in document) || document.documentMode > 9); -} - -/** - * (For IE <=9) Starts tracking propertychange events on the passed-in element - * and override the value property so that we can distinguish user events from - * value changes in JS. - */ -function startWatchingForValueChange(target, targetInst) { -  activeElement = target; -  activeElementInst = targetInst; -  activeElement.attachEvent('onpropertychange', handlePropertyChange); -} - -/** - * (For IE <=9) Removes the event listeners from the currently-tracked element, - * if any exists. - */ -function stopWatchingForValueChange() { -  if (!activeElement) { -    return; -  } -  activeElement.detachEvent('onpropertychange', handlePropertyChange); - -  activeElement = null; -  activeElementInst = null; -} - -/** - * (For IE <=9) Handles a propertychange event, sending a `change` event if - * the value of the active element has changed. - */ -function handlePropertyChange(nativeEvent) { -  if (nativeEvent.propertyName !== 'value') { -    return; -  } -  if (getInstIfValueChanged(activeElementInst, nativeEvent)) { -    manualDispatchChangeEvent(nativeEvent); -  } -} - -function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) { -  if (topLevelType === 'topFocus') { -    // In IE8, we can capture almost all .value changes by adding a -    // propertychange handler and looking for events with propertyName -    // equal to 'value' -    // In IE9, propertychange fires for most input events but is buggy and -    // doesn't fire when text is deleted, but conveniently, selectionchange -    // appears to fire in all of the remaining cases so we catch those and -    // forward the event if the value has changed -    // In either case, we don't want to call the event handler if the value -    // is changed from JS so we redefine a setter for `.value` that updates -    // our activeElementValue variable, allowing us to ignore those changes -    // -    // stopWatching() should be a noop here but we call it just in case we -    // missed a blur event somehow. -    stopWatchingForValueChange(); -    startWatchingForValueChange(target, targetInst); -  } else if (topLevelType === 'topBlur') { -    stopWatchingForValueChange(); -  } -} - -// For IE8 and IE9. -function getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) { -  if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') { -    // On the selectionchange event, the target is just document which isn't -    // helpful for us so just check activeElement instead. -    // -    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire -    // propertychange on the first input event after setting `value` from a -    // script and fires only keydown, keypress, keyup. Catching keyup usually -    // gets it and catching keydown lets us fire an event for the first -    // keystroke if user does a key repeat (it'll be a little delayed: right -    // before the second keystroke). Other input methods (e.g., paste) seem to -    // fire selectionchange normally. -    return getInstIfValueChanged(activeElementInst, nativeEvent); -  } -} - -/** - * SECTION: handle `click` event - */ -function shouldUseClickEvent(elem) { -  // Use the `click` event to detect changes to checkbox and radio inputs. -  // This approach works across all browsers, whereas `change` does not fire -  // until `blur` in IE8. -  var nodeName = elem.nodeName; -  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); -} - -function getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) { -  if (topLevelType === 'topClick') { -    return getInstIfValueChanged(targetInst, nativeEvent); -  } -} - -function getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) { -  if (topLevelType === 'topInput' || topLevelType === 'topChange') { -    return getInstIfValueChanged(targetInst, nativeEvent); -  } -} - -function handleControlledInputBlur(inst, node) { -  // TODO: In IE, inst is occasionally null. Why? -  if (inst == null) { -    return; -  } - -  // Fiber and ReactDOM keep wrapper state in separate places -  var state = inst._wrapperState || node._wrapperState; - -  if (!state || !state.controlled || node.type !== 'number') { -    return; -  } - -  // If controlled, assign the value attribute to the current value on blur -  var value = '' + node.value; -  if (node.getAttribute('value') !== value) { -    node.setAttribute('value', value); -  } -} - -/** - * This plugin creates an `onChange` event that normalizes change events - * across form elements. This event fires at a time when it's possible to - * change the element's value without seeing a flicker. - * - * Supported elements are: - * - input (see `isTextInputElement`) - * - textarea - * - select - */ -var ChangeEventPlugin = { -  eventTypes: eventTypes, - -  _allowSimulatedPassThrough: true, -  _isInputEventSupported: isInputEventSupported, - -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; - -    var getTargetInstFunc, handleEventFunc; -    if (shouldUseChangeEvent(targetNode)) { -      if (doesChangeEventBubble) { -        getTargetInstFunc = getTargetInstForChangeEvent; -      } else { -        handleEventFunc = handleEventsForChangeEventIE8; -      } -    } else if (isTextInputElement(targetNode)) { -      if (isInputEventSupported) { -        getTargetInstFunc = getTargetInstForInputOrChangeEvent; -      } else { -        getTargetInstFunc = getTargetInstForInputEventPolyfill; -        handleEventFunc = handleEventsForInputEventPolyfill; -      } -    } else if (shouldUseClickEvent(targetNode)) { -      getTargetInstFunc = getTargetInstForClickEvent; -    } - -    if (getTargetInstFunc) { -      var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent); -      if (inst) { -        var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget); -        return event; -      } -    } - -    if (handleEventFunc) { -      handleEventFunc(topLevelType, targetNode, targetInst); -    } - -    // When blurring, set the value attribute for number inputs -    if (topLevelType === 'topBlur') { -      handleControlledInputBlur(targetInst, targetNode); -    } -  } -}; - -module.exports = ChangeEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DOMChildrenOperations.js b/node_modules/react-dom/lib/DOMChildrenOperations.js deleted file mode 100644 index ebbdc756b..000000000 --- a/node_modules/react-dom/lib/DOMChildrenOperations.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMLazyTree = require('./DOMLazyTree'); -var Danger = require('./Danger'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactInstrumentation = require('./ReactInstrumentation'); - -var createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction'); -var setInnerHTML = require('./setInnerHTML'); -var setTextContent = require('./setTextContent'); - -function getNodeAfter(parentNode, node) { -  // Special case for text components, which return [open, close] comments -  // from getHostNode. -  if (Array.isArray(node)) { -    node = node[1]; -  } -  return node ? node.nextSibling : parentNode.firstChild; -} - -/** - * Inserts `childNode` as a child of `parentNode` at the `index`. - * - * @param {DOMElement} parentNode Parent node in which to insert. - * @param {DOMElement} childNode Child node to insert. - * @param {number} index Index at which to insert the child. - * @internal - */ -var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) { -  // We rely exclusively on `insertBefore(node, null)` instead of also using -  // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so -  // we are careful to use `null`.) -  parentNode.insertBefore(childNode, referenceNode); -}); - -function insertLazyTreeChildAt(parentNode, childTree, referenceNode) { -  DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode); -} - -function moveChild(parentNode, childNode, referenceNode) { -  if (Array.isArray(childNode)) { -    moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode); -  } else { -    insertChildAt(parentNode, childNode, referenceNode); -  } -} - -function removeChild(parentNode, childNode) { -  if (Array.isArray(childNode)) { -    var closingComment = childNode[1]; -    childNode = childNode[0]; -    removeDelimitedText(parentNode, childNode, closingComment); -    parentNode.removeChild(closingComment); -  } -  parentNode.removeChild(childNode); -} - -function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) { -  var node = openingComment; -  while (true) { -    var nextNode = node.nextSibling; -    insertChildAt(parentNode, node, referenceNode); -    if (node === closingComment) { -      break; -    } -    node = nextNode; -  } -} - -function removeDelimitedText(parentNode, startNode, closingComment) { -  while (true) { -    var node = startNode.nextSibling; -    if (node === closingComment) { -      // The closing comment is removed by ReactMultiChild. -      break; -    } else { -      parentNode.removeChild(node); -    } -  } -} - -function replaceDelimitedText(openingComment, closingComment, stringText) { -  var parentNode = openingComment.parentNode; -  var nodeAfterComment = openingComment.nextSibling; -  if (nodeAfterComment === closingComment) { -    // There are no text nodes between the opening and closing comments; insert -    // a new one if stringText isn't empty. -    if (stringText) { -      insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment); -    } -  } else { -    if (stringText) { -      // Set the text content of the first node after the opening comment, and -      // remove all following nodes up until the closing comment. -      setTextContent(nodeAfterComment, stringText); -      removeDelimitedText(parentNode, nodeAfterComment, closingComment); -    } else { -      removeDelimitedText(parentNode, openingComment, closingComment); -    } -  } - -  if (process.env.NODE_ENV !== 'production') { -    ReactInstrumentation.debugTool.onHostOperation({ -      instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, -      type: 'replace text', -      payload: stringText -    }); -  } -} - -var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup; -if (process.env.NODE_ENV !== 'production') { -  dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) { -    Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup); -    if (prevInstance._debugID !== 0) { -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: prevInstance._debugID, -        type: 'replace with', -        payload: markup.toString() -      }); -    } else { -      var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node); -      if (nextInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onHostOperation({ -          instanceID: nextInstance._debugID, -          type: 'mount', -          payload: markup.toString() -        }); -      } -    } -  }; -} - -/** - * Operations for updating with DOM children. - */ -var DOMChildrenOperations = { -  dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup, - -  replaceDelimitedText: replaceDelimitedText, - -  /** -   * Updates a component's children by processing a series of updates. The -   * update configurations are each expected to have a `parentNode` property. -   * -   * @param {array<object>} updates List of update configurations. -   * @internal -   */ -  processUpdates: function (parentNode, updates) { -    if (process.env.NODE_ENV !== 'production') { -      var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID; -    } - -    for (var k = 0; k < updates.length; k++) { -      var update = updates[k]; -      switch (update.type) { -        case 'INSERT_MARKUP': -          insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode)); -          if (process.env.NODE_ENV !== 'production') { -            ReactInstrumentation.debugTool.onHostOperation({ -              instanceID: parentNodeDebugID, -              type: 'insert child', -              payload: { -                toIndex: update.toIndex, -                content: update.content.toString() -              } -            }); -          } -          break; -        case 'MOVE_EXISTING': -          moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode)); -          if (process.env.NODE_ENV !== 'production') { -            ReactInstrumentation.debugTool.onHostOperation({ -              instanceID: parentNodeDebugID, -              type: 'move child', -              payload: { fromIndex: update.fromIndex, toIndex: update.toIndex } -            }); -          } -          break; -        case 'SET_MARKUP': -          setInnerHTML(parentNode, update.content); -          if (process.env.NODE_ENV !== 'production') { -            ReactInstrumentation.debugTool.onHostOperation({ -              instanceID: parentNodeDebugID, -              type: 'replace children', -              payload: update.content.toString() -            }); -          } -          break; -        case 'TEXT_CONTENT': -          setTextContent(parentNode, update.content); -          if (process.env.NODE_ENV !== 'production') { -            ReactInstrumentation.debugTool.onHostOperation({ -              instanceID: parentNodeDebugID, -              type: 'replace text', -              payload: update.content.toString() -            }); -          } -          break; -        case 'REMOVE_NODE': -          removeChild(parentNode, update.fromNode); -          if (process.env.NODE_ENV !== 'production') { -            ReactInstrumentation.debugTool.onHostOperation({ -              instanceID: parentNodeDebugID, -              type: 'remove child', -              payload: { fromIndex: update.fromIndex } -            }); -          } -          break; -      } -    } -  } -}; - -module.exports = DOMChildrenOperations;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DOMLazyTree.js b/node_modules/react-dom/lib/DOMLazyTree.js deleted file mode 100644 index f2f64d5b0..000000000 --- a/node_modules/react-dom/lib/DOMLazyTree.js +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMNamespaces = require('./DOMNamespaces'); -var setInnerHTML = require('./setInnerHTML'); - -var createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction'); -var setTextContent = require('./setTextContent'); - -var ELEMENT_NODE_TYPE = 1; -var DOCUMENT_FRAGMENT_NODE_TYPE = 11; - -/** - * In IE (8-11) and Edge, appending nodes with no children is dramatically - * faster than appending a full subtree, so we essentially queue up the - * .appendChild calls here and apply them so each node is added to its parent - * before any children are added. - * - * In other browsers, doing so is slower or neutral compared to the other order - * (in Firefox, twice as slow) so we only do this inversion in IE. - * - * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode. - */ -var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent); - -function insertTreeChildren(tree) { -  if (!enableLazy) { -    return; -  } -  var node = tree.node; -  var children = tree.children; -  if (children.length) { -    for (var i = 0; i < children.length; i++) { -      insertTreeBefore(node, children[i], null); -    } -  } else if (tree.html != null) { -    setInnerHTML(node, tree.html); -  } else if (tree.text != null) { -    setTextContent(node, tree.text); -  } -} - -var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) { -  // DocumentFragments aren't actually part of the DOM after insertion so -  // appending children won't update the DOM. We need to ensure the fragment -  // is properly populated first, breaking out of our lazy approach for just -  // this level. Also, some <object> plugins (like Flash Player) will read -  // <param> nodes immediately upon insertion into the DOM, so <object> -  // must also be populated prior to insertion into the DOM. -  if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) { -    insertTreeChildren(tree); -    parentNode.insertBefore(tree.node, referenceNode); -  } else { -    parentNode.insertBefore(tree.node, referenceNode); -    insertTreeChildren(tree); -  } -}); - -function replaceChildWithTree(oldNode, newTree) { -  oldNode.parentNode.replaceChild(newTree.node, oldNode); -  insertTreeChildren(newTree); -} - -function queueChild(parentTree, childTree) { -  if (enableLazy) { -    parentTree.children.push(childTree); -  } else { -    parentTree.node.appendChild(childTree.node); -  } -} - -function queueHTML(tree, html) { -  if (enableLazy) { -    tree.html = html; -  } else { -    setInnerHTML(tree.node, html); -  } -} - -function queueText(tree, text) { -  if (enableLazy) { -    tree.text = text; -  } else { -    setTextContent(tree.node, text); -  } -} - -function toString() { -  return this.node.nodeName; -} - -function DOMLazyTree(node) { -  return { -    node: node, -    children: [], -    html: null, -    text: null, -    toString: toString -  }; -} - -DOMLazyTree.insertTreeBefore = insertTreeBefore; -DOMLazyTree.replaceChildWithTree = replaceChildWithTree; -DOMLazyTree.queueChild = queueChild; -DOMLazyTree.queueHTML = queueHTML; -DOMLazyTree.queueText = queueText; - -module.exports = DOMLazyTree;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DOMNamespaces.js b/node_modules/react-dom/lib/DOMNamespaces.js deleted file mode 100644 index a14ef8aa5..000000000 --- a/node_modules/react-dom/lib/DOMNamespaces.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMNamespaces = { -  html: 'http://www.w3.org/1999/xhtml', -  mathml: 'http://www.w3.org/1998/Math/MathML', -  svg: 'http://www.w3.org/2000/svg' -}; - -module.exports = DOMNamespaces;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DOMProperty.js b/node_modules/react-dom/lib/DOMProperty.js deleted file mode 100644 index da76729eb..000000000 --- a/node_modules/react-dom/lib/DOMProperty.js +++ /dev/null @@ -1,208 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -function checkMask(value, bitmask) { -  return (value & bitmask) === bitmask; -} - -var DOMPropertyInjection = { -  /** -   * Mapping from normalized, camelcased property names to a configuration that -   * specifies how the associated DOM property should be accessed or rendered. -   */ -  MUST_USE_PROPERTY: 0x1, -  HAS_BOOLEAN_VALUE: 0x4, -  HAS_NUMERIC_VALUE: 0x8, -  HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8, -  HAS_OVERLOADED_BOOLEAN_VALUE: 0x20, - -  /** -   * Inject some specialized knowledge about the DOM. This takes a config object -   * with the following properties: -   * -   * isCustomAttribute: function that given an attribute name will return true -   * if it can be inserted into the DOM verbatim. Useful for data-* or aria-* -   * attributes where it's impossible to enumerate all of the possible -   * attribute names, -   * -   * Properties: object mapping DOM property name to one of the -   * DOMPropertyInjection constants or null. If your attribute isn't in here, -   * it won't get written to the DOM. -   * -   * DOMAttributeNames: object mapping React attribute name to the DOM -   * attribute name. Attribute names not specified use the **lowercase** -   * normalized name. -   * -   * DOMAttributeNamespaces: object mapping React attribute name to the DOM -   * attribute namespace URL. (Attribute names not specified use no namespace.) -   * -   * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties. -   * Property names not specified use the normalized name. -   * -   * DOMMutationMethods: Properties that require special mutation methods. If -   * `value` is undefined, the mutation method should unset the property. -   * -   * @param {object} domPropertyConfig the config as described above. -   */ -  injectDOMPropertyConfig: function (domPropertyConfig) { -    var Injection = DOMPropertyInjection; -    var Properties = domPropertyConfig.Properties || {}; -    var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {}; -    var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}; -    var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}; -    var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {}; - -    if (domPropertyConfig.isCustomAttribute) { -      DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute); -    } - -    for (var propName in Properties) { -      !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0; - -      var lowerCased = propName.toLowerCase(); -      var propConfig = Properties[propName]; - -      var propertyInfo = { -        attributeName: lowerCased, -        attributeNamespace: null, -        propertyName: propName, -        mutationMethod: null, - -        mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY), -        hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE), -        hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE), -        hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE), -        hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE) -      }; -      !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0; - -      if (process.env.NODE_ENV !== 'production') { -        DOMProperty.getPossibleStandardName[lowerCased] = propName; -      } - -      if (DOMAttributeNames.hasOwnProperty(propName)) { -        var attributeName = DOMAttributeNames[propName]; -        propertyInfo.attributeName = attributeName; -        if (process.env.NODE_ENV !== 'production') { -          DOMProperty.getPossibleStandardName[attributeName] = propName; -        } -      } - -      if (DOMAttributeNamespaces.hasOwnProperty(propName)) { -        propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName]; -      } - -      if (DOMPropertyNames.hasOwnProperty(propName)) { -        propertyInfo.propertyName = DOMPropertyNames[propName]; -      } - -      if (DOMMutationMethods.hasOwnProperty(propName)) { -        propertyInfo.mutationMethod = DOMMutationMethods[propName]; -      } - -      DOMProperty.properties[propName] = propertyInfo; -    } -  } -}; - -/* eslint-disable max-len */ -var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; -/* eslint-enable max-len */ - -/** - * DOMProperty exports lookup objects that can be used like functions: - * - *   > DOMProperty.isValid['id'] - *   true - *   > DOMProperty.isValid['foobar'] - *   undefined - * - * Although this may be confusing, it performs better in general. - * - * @see http://jsperf.com/key-exists - * @see http://jsperf.com/key-missing - */ -var DOMProperty = { -  ID_ATTRIBUTE_NAME: 'data-reactid', -  ROOT_ATTRIBUTE_NAME: 'data-reactroot', - -  ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR, -  ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040', - -  /** -   * Map from property "standard name" to an object with info about how to set -   * the property in the DOM. Each object contains: -   * -   * attributeName: -   *   Used when rendering markup or with `*Attribute()`. -   * attributeNamespace -   * propertyName: -   *   Used on DOM node instances. (This includes properties that mutate due to -   *   external factors.) -   * mutationMethod: -   *   If non-null, used instead of the property or `setAttribute()` after -   *   initial render. -   * mustUseProperty: -   *   Whether the property must be accessed and mutated as an object property. -   * hasBooleanValue: -   *   Whether the property should be removed when set to a falsey value. -   * hasNumericValue: -   *   Whether the property must be numeric or parse as a numeric and should be -   *   removed when set to a falsey value. -   * hasPositiveNumericValue: -   *   Whether the property must be positive numeric or parse as a positive -   *   numeric and should be removed when set to a falsey value. -   * hasOverloadedBooleanValue: -   *   Whether the property can be used as a flag as well as with a value. -   *   Removed when strictly equal to false; present without a value when -   *   strictly equal to true; present with a value otherwise. -   */ -  properties: {}, - -  /** -   * Mapping from lowercase property names to the properly cased version, used -   * to warn in the case of missing properties. Available only in __DEV__. -   * -   * autofocus is predefined, because adding it to the property whitelist -   * causes unintended side effects. -   * -   * @type {Object} -   */ -  getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null, - -  /** -   * All of the isCustomAttribute() functions that have been injected. -   */ -  _isCustomAttributeFunctions: [], - -  /** -   * Checks whether a property name is a custom attribute. -   * @method -   */ -  isCustomAttribute: function (attributeName) { -    for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) { -      var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i]; -      if (isCustomAttributeFn(attributeName)) { -        return true; -      } -    } -    return false; -  }, - -  injection: DOMPropertyInjection -}; - -module.exports = DOMProperty;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DOMPropertyOperations.js b/node_modules/react-dom/lib/DOMPropertyOperations.js deleted file mode 100644 index 12bad8169..000000000 --- a/node_modules/react-dom/lib/DOMPropertyOperations.js +++ /dev/null @@ -1,234 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMProperty = require('./DOMProperty'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactInstrumentation = require('./ReactInstrumentation'); - -var quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser'); -var warning = require('fbjs/lib/warning'); - -var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); -var illegalAttributeNameCache = {}; -var validatedAttributeNameCache = {}; - -function isAttributeNameSafe(attributeName) { -  if (validatedAttributeNameCache.hasOwnProperty(attributeName)) { -    return true; -  } -  if (illegalAttributeNameCache.hasOwnProperty(attributeName)) { -    return false; -  } -  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { -    validatedAttributeNameCache[attributeName] = true; -    return true; -  } -  illegalAttributeNameCache[attributeName] = true; -  process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0; -  return false; -} - -function shouldIgnoreValue(propertyInfo, value) { -  return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false; -} - -/** - * Operations for dealing with DOM properties. - */ -var DOMPropertyOperations = { -  /** -   * Creates markup for the ID property. -   * -   * @param {string} id Unescaped ID. -   * @return {string} Markup string. -   */ -  createMarkupForID: function (id) { -    return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id); -  }, - -  setAttributeForID: function (node, id) { -    node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id); -  }, - -  createMarkupForRoot: function () { -    return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""'; -  }, - -  setAttributeForRoot: function (node) { -    node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, ''); -  }, - -  /** -   * Creates markup for a property. -   * -   * @param {string} name -   * @param {*} value -   * @return {?string} Markup string, or null if the property was invalid. -   */ -  createMarkupForProperty: function (name, value) { -    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; -    if (propertyInfo) { -      if (shouldIgnoreValue(propertyInfo, value)) { -        return ''; -      } -      var attributeName = propertyInfo.attributeName; -      if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { -        return attributeName + '=""'; -      } -      return attributeName + '=' + quoteAttributeValueForBrowser(value); -    } else if (DOMProperty.isCustomAttribute(name)) { -      if (value == null) { -        return ''; -      } -      return name + '=' + quoteAttributeValueForBrowser(value); -    } -    return null; -  }, - -  /** -   * Creates markup for a custom property. -   * -   * @param {string} name -   * @param {*} value -   * @return {string} Markup string, or empty string if the property was invalid. -   */ -  createMarkupForCustomAttribute: function (name, value) { -    if (!isAttributeNameSafe(name) || value == null) { -      return ''; -    } -    return name + '=' + quoteAttributeValueForBrowser(value); -  }, - -  /** -   * Sets the value for a property on a node. -   * -   * @param {DOMElement} node -   * @param {string} name -   * @param {*} value -   */ -  setValueForProperty: function (node, name, value) { -    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; -    if (propertyInfo) { -      var mutationMethod = propertyInfo.mutationMethod; -      if (mutationMethod) { -        mutationMethod(node, value); -      } else if (shouldIgnoreValue(propertyInfo, value)) { -        this.deleteValueForProperty(node, name); -        return; -      } else if (propertyInfo.mustUseProperty) { -        // Contrary to `setAttribute`, object properties are properly -        // `toString`ed by IE8/9. -        node[propertyInfo.propertyName] = value; -      } else { -        var attributeName = propertyInfo.attributeName; -        var namespace = propertyInfo.attributeNamespace; -        // `setAttribute` with objects becomes only `[object]` in IE8/9, -        // ('' + value) makes it output the correct toString()-value. -        if (namespace) { -          node.setAttributeNS(namespace, attributeName, '' + value); -        } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { -          node.setAttribute(attributeName, ''); -        } else { -          node.setAttribute(attributeName, '' + value); -        } -      } -    } else if (DOMProperty.isCustomAttribute(name)) { -      DOMPropertyOperations.setValueForAttribute(node, name, value); -      return; -    } - -    if (process.env.NODE_ENV !== 'production') { -      var payload = {}; -      payload[name] = value; -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, -        type: 'update attribute', -        payload: payload -      }); -    } -  }, - -  setValueForAttribute: function (node, name, value) { -    if (!isAttributeNameSafe(name)) { -      return; -    } -    if (value == null) { -      node.removeAttribute(name); -    } else { -      node.setAttribute(name, '' + value); -    } - -    if (process.env.NODE_ENV !== 'production') { -      var payload = {}; -      payload[name] = value; -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, -        type: 'update attribute', -        payload: payload -      }); -    } -  }, - -  /** -   * Deletes an attributes from a node. -   * -   * @param {DOMElement} node -   * @param {string} name -   */ -  deleteValueForAttribute: function (node, name) { -    node.removeAttribute(name); -    if (process.env.NODE_ENV !== 'production') { -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, -        type: 'remove attribute', -        payload: name -      }); -    } -  }, - -  /** -   * Deletes the value for a property on a node. -   * -   * @param {DOMElement} node -   * @param {string} name -   */ -  deleteValueForProperty: function (node, name) { -    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; -    if (propertyInfo) { -      var mutationMethod = propertyInfo.mutationMethod; -      if (mutationMethod) { -        mutationMethod(node, undefined); -      } else if (propertyInfo.mustUseProperty) { -        var propName = propertyInfo.propertyName; -        if (propertyInfo.hasBooleanValue) { -          node[propName] = false; -        } else { -          node[propName] = ''; -        } -      } else { -        node.removeAttribute(propertyInfo.attributeName); -      } -    } else if (DOMProperty.isCustomAttribute(name)) { -      node.removeAttribute(name); -    } - -    if (process.env.NODE_ENV !== 'production') { -      ReactInstrumentation.debugTool.onHostOperation({ -        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, -        type: 'remove attribute', -        payload: name -      }); -    } -  } -}; - -module.exports = DOMPropertyOperations;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/Danger.js b/node_modules/react-dom/lib/Danger.js deleted file mode 100644 index 5e25bf2d0..000000000 --- a/node_modules/react-dom/lib/Danger.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var DOMLazyTree = require('./DOMLazyTree'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -var createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup'); -var emptyFunction = require('fbjs/lib/emptyFunction'); -var invariant = require('fbjs/lib/invariant'); - -var Danger = { -  /** -   * Replaces a node with a string of markup at its current position within its -   * parent. The markup must render into a single root node. -   * -   * @param {DOMElement} oldChild Child node to replace. -   * @param {string} markup Markup to render in place of the child node. -   * @internal -   */ -  dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) { -    !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0; -    !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0; -    !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0; - -    if (typeof markup === 'string') { -      var newChild = createNodesFromMarkup(markup, emptyFunction)[0]; -      oldChild.parentNode.replaceChild(newChild, oldChild); -    } else { -      DOMLazyTree.replaceChildWithTree(oldChild, markup); -    } -  } -}; - -module.exports = Danger;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/DefaultEventPluginOrder.js b/node_modules/react-dom/lib/DefaultEventPluginOrder.js deleted file mode 100644 index 272318cb6..000000000 --- a/node_modules/react-dom/lib/DefaultEventPluginOrder.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Module that is injectable into `EventPluginHub`, that specifies a - * deterministic ordering of `EventPlugin`s. A convenient way to reason about - * plugins, without having to package every one of them. This is better than - * having plugins be ordered in the same order that they are injected because - * that ordering would be influenced by the packaging order. - * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that - * preventing default on events is convenient in `SimpleEventPlugin` handlers. - */ - -var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; - -module.exports = DefaultEventPluginOrder;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EnterLeaveEventPlugin.js b/node_modules/react-dom/lib/EnterLeaveEventPlugin.js deleted file mode 100644 index 891b5f548..000000000 --- a/node_modules/react-dom/lib/EnterLeaveEventPlugin.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPropagators = require('./EventPropagators'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var SyntheticMouseEvent = require('./SyntheticMouseEvent'); - -var eventTypes = { -  mouseEnter: { -    registrationName: 'onMouseEnter', -    dependencies: ['topMouseOut', 'topMouseOver'] -  }, -  mouseLeave: { -    registrationName: 'onMouseLeave', -    dependencies: ['topMouseOut', 'topMouseOver'] -  } -}; - -var EnterLeaveEventPlugin = { -  eventTypes: eventTypes, - -  /** -   * For almost every interaction we care about, there will be both a top-level -   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that -   * we do not extract duplicate events. However, moving the mouse into the -   * browser from outside will not fire a `mouseout` event. In this case, we use -   * the `mouseover` top-level event. -   */ -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { -      return null; -    } -    if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') { -      // Must not be a mouse in or mouse out - ignoring. -      return null; -    } - -    var win; -    if (nativeEventTarget.window === nativeEventTarget) { -      // `nativeEventTarget` is probably a window object. -      win = nativeEventTarget; -    } else { -      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. -      var doc = nativeEventTarget.ownerDocument; -      if (doc) { -        win = doc.defaultView || doc.parentWindow; -      } else { -        win = window; -      } -    } - -    var from; -    var to; -    if (topLevelType === 'topMouseOut') { -      from = targetInst; -      var related = nativeEvent.relatedTarget || nativeEvent.toElement; -      to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null; -    } else { -      // Moving to a node from outside the window. -      from = null; -      to = targetInst; -    } - -    if (from === to) { -      // Nothing pertains to our managed components. -      return null; -    } - -    var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from); -    var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to); - -    var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget); -    leave.type = 'mouseleave'; -    leave.target = fromNode; -    leave.relatedTarget = toNode; - -    var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget); -    enter.type = 'mouseenter'; -    enter.target = toNode; -    enter.relatedTarget = fromNode; - -    EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to); - -    return [leave, enter]; -  } -}; - -module.exports = EnterLeaveEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EventConstants.js b/node_modules/react-dom/lib/EventConstants.js deleted file mode 100644 index 5886803df..000000000 --- a/node_modules/react-dom/lib/EventConstants.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Types of raw signals from the browser caught at the top level. - */ -var topLevelTypes = { -  topAbort: null, -  topAnimationEnd: null, -  topAnimationIteration: null, -  topAnimationStart: null, -  topBlur: null, -  topCanPlay: null, -  topCanPlayThrough: null, -  topChange: null, -  topClick: null, -  topCompositionEnd: null, -  topCompositionStart: null, -  topCompositionUpdate: null, -  topContextMenu: null, -  topCopy: null, -  topCut: null, -  topDoubleClick: null, -  topDrag: null, -  topDragEnd: null, -  topDragEnter: null, -  topDragExit: null, -  topDragLeave: null, -  topDragOver: null, -  topDragStart: null, -  topDrop: null, -  topDurationChange: null, -  topEmptied: null, -  topEncrypted: null, -  topEnded: null, -  topError: null, -  topFocus: null, -  topInput: null, -  topInvalid: null, -  topKeyDown: null, -  topKeyPress: null, -  topKeyUp: null, -  topLoad: null, -  topLoadedData: null, -  topLoadedMetadata: null, -  topLoadStart: null, -  topMouseDown: null, -  topMouseMove: null, -  topMouseOut: null, -  topMouseOver: null, -  topMouseUp: null, -  topPaste: null, -  topPause: null, -  topPlay: null, -  topPlaying: null, -  topProgress: null, -  topRateChange: null, -  topReset: null, -  topScroll: null, -  topSeeked: null, -  topSeeking: null, -  topSelectionChange: null, -  topStalled: null, -  topSubmit: null, -  topSuspend: null, -  topTextInput: null, -  topTimeUpdate: null, -  topTouchCancel: null, -  topTouchEnd: null, -  topTouchMove: null, -  topTouchStart: null, -  topTransitionEnd: null, -  topVolumeChange: null, -  topWaiting: null, -  topWheel: null -}; - -var EventConstants = { -  topLevelTypes: topLevelTypes -}; - -module.exports = EventConstants;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EventPluginHub.js b/node_modules/react-dom/lib/EventPluginHub.js deleted file mode 100644 index 85ea4a501..000000000 --- a/node_modules/react-dom/lib/EventPluginHub.js +++ /dev/null @@ -1,273 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var EventPluginRegistry = require('./EventPluginRegistry'); -var EventPluginUtils = require('./EventPluginUtils'); -var ReactErrorUtils = require('./ReactErrorUtils'); - -var accumulateInto = require('./accumulateInto'); -var forEachAccumulated = require('./forEachAccumulated'); -var invariant = require('fbjs/lib/invariant'); - -/** - * Internal store for event listeners - */ -var listenerBank = {}; - -/** - * Internal queue of events that have accumulated their dispatches and are - * waiting to have their dispatches executed. - */ -var eventQueue = null; - -/** - * Dispatches an event and releases it back into the pool, unless persistent. - * - * @param {?object} event Synthetic event to be dispatched. - * @param {boolean} simulated If the event is simulated (changes exn behavior) - * @private - */ -var executeDispatchesAndRelease = function (event, simulated) { -  if (event) { -    EventPluginUtils.executeDispatchesInOrder(event, simulated); - -    if (!event.isPersistent()) { -      event.constructor.release(event); -    } -  } -}; -var executeDispatchesAndReleaseSimulated = function (e) { -  return executeDispatchesAndRelease(e, true); -}; -var executeDispatchesAndReleaseTopLevel = function (e) { -  return executeDispatchesAndRelease(e, false); -}; - -var getDictionaryKey = function (inst) { -  // Prevents V8 performance issue: -  // https://github.com/facebook/react/pull/7232 -  return '.' + inst._rootNodeID; -}; - -function isInteractive(tag) { -  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; -} - -function shouldPreventMouseEvent(name, type, props) { -  switch (name) { -    case 'onClick': -    case 'onClickCapture': -    case 'onDoubleClick': -    case 'onDoubleClickCapture': -    case 'onMouseDown': -    case 'onMouseDownCapture': -    case 'onMouseMove': -    case 'onMouseMoveCapture': -    case 'onMouseUp': -    case 'onMouseUpCapture': -      return !!(props.disabled && isInteractive(type)); -    default: -      return false; -  } -} - -/** - * This is a unified interface for event plugins to be installed and configured. - * - * Event plugins can implement the following properties: - * - *   `extractEvents` {function(string, DOMEventTarget, string, object): *} - *     Required. When a top-level event is fired, this method is expected to - *     extract synthetic events that will in turn be queued and dispatched. - * - *   `eventTypes` {object} - *     Optional, plugins that fire events must publish a mapping of registration - *     names that are used to register listeners. Values of this mapping must - *     be objects that contain `registrationName` or `phasedRegistrationNames`. - * - *   `executeDispatch` {function(object, function, string)} - *     Optional, allows plugins to override how an event gets dispatched. By - *     default, the listener is simply invoked. - * - * Each plugin that is injected into `EventsPluginHub` is immediately operable. - * - * @public - */ -var EventPluginHub = { -  /** -   * Methods for injecting dependencies. -   */ -  injection: { -    /** -     * @param {array} InjectedEventPluginOrder -     * @public -     */ -    injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder, - -    /** -     * @param {object} injectedNamesToPlugins Map from names to plugin modules. -     */ -    injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName -  }, - -  /** -   * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent. -   * -   * @param {object} inst The instance, which is the source of events. -   * @param {string} registrationName Name of listener (e.g. `onClick`). -   * @param {function} listener The callback to store. -   */ -  putListener: function (inst, registrationName, listener) { -    !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0; - -    var key = getDictionaryKey(inst); -    var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {}); -    bankForRegistrationName[key] = listener; - -    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; -    if (PluginModule && PluginModule.didPutListener) { -      PluginModule.didPutListener(inst, registrationName, listener); -    } -  }, - -  /** -   * @param {object} inst The instance, which is the source of events. -   * @param {string} registrationName Name of listener (e.g. `onClick`). -   * @return {?function} The stored callback. -   */ -  getListener: function (inst, registrationName) { -    // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not -    // live here; needs to be moved to a better place soon -    var bankForRegistrationName = listenerBank[registrationName]; -    if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) { -      return null; -    } -    var key = getDictionaryKey(inst); -    return bankForRegistrationName && bankForRegistrationName[key]; -  }, - -  /** -   * Deletes a listener from the registration bank. -   * -   * @param {object} inst The instance, which is the source of events. -   * @param {string} registrationName Name of listener (e.g. `onClick`). -   */ -  deleteListener: function (inst, registrationName) { -    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; -    if (PluginModule && PluginModule.willDeleteListener) { -      PluginModule.willDeleteListener(inst, registrationName); -    } - -    var bankForRegistrationName = listenerBank[registrationName]; -    // TODO: This should never be null -- when is it? -    if (bankForRegistrationName) { -      var key = getDictionaryKey(inst); -      delete bankForRegistrationName[key]; -    } -  }, - -  /** -   * Deletes all listeners for the DOM element with the supplied ID. -   * -   * @param {object} inst The instance, which is the source of events. -   */ -  deleteAllListeners: function (inst) { -    var key = getDictionaryKey(inst); -    for (var registrationName in listenerBank) { -      if (!listenerBank.hasOwnProperty(registrationName)) { -        continue; -      } - -      if (!listenerBank[registrationName][key]) { -        continue; -      } - -      var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; -      if (PluginModule && PluginModule.willDeleteListener) { -        PluginModule.willDeleteListener(inst, registrationName); -      } - -      delete listenerBank[registrationName][key]; -    } -  }, - -  /** -   * Allows registered plugins an opportunity to extract events from top-level -   * native browser events. -   * -   * @return {*} An accumulation of synthetic events. -   * @internal -   */ -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    var events; -    var plugins = EventPluginRegistry.plugins; -    for (var i = 0; i < plugins.length; i++) { -      // Not every plugin in the ordering may be loaded at runtime. -      var possiblePlugin = plugins[i]; -      if (possiblePlugin) { -        var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); -        if (extractedEvents) { -          events = accumulateInto(events, extractedEvents); -        } -      } -    } -    return events; -  }, - -  /** -   * Enqueues a synthetic event that should be dispatched when -   * `processEventQueue` is invoked. -   * -   * @param {*} events An accumulation of synthetic events. -   * @internal -   */ -  enqueueEvents: function (events) { -    if (events) { -      eventQueue = accumulateInto(eventQueue, events); -    } -  }, - -  /** -   * Dispatches all synthetic events on the event queue. -   * -   * @internal -   */ -  processEventQueue: function (simulated) { -    // Set `eventQueue` to null before processing it so that we can tell if more -    // events get enqueued while processing. -    var processingEventQueue = eventQueue; -    eventQueue = null; -    if (simulated) { -      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated); -    } else { -      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); -    } -    !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0; -    // This would be a good time to rethrow if any of the event handlers threw. -    ReactErrorUtils.rethrowCaughtError(); -  }, - -  /** -   * These are needed for tests only. Do not use! -   */ -  __purge: function () { -    listenerBank = {}; -  }, - -  __getListenerBank: function () { -    return listenerBank; -  } -}; - -module.exports = EventPluginHub;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EventPluginRegistry.js b/node_modules/react-dom/lib/EventPluginRegistry.js deleted file mode 100644 index ddd3d9b98..000000000 --- a/node_modules/react-dom/lib/EventPluginRegistry.js +++ /dev/null @@ -1,252 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * Injectable ordering of event plugins. - */ -var eventPluginOrder = null; - -/** - * Injectable mapping from names to event plugin modules. - */ -var namesToPlugins = {}; - -/** - * Recomputes the plugin list using the injected plugins and plugin ordering. - * - * @private - */ -function recomputePluginOrdering() { -  if (!eventPluginOrder) { -    // Wait until an `eventPluginOrder` is injected. -    return; -  } -  for (var pluginName in namesToPlugins) { -    var pluginModule = namesToPlugins[pluginName]; -    var pluginIndex = eventPluginOrder.indexOf(pluginName); -    !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0; -    if (EventPluginRegistry.plugins[pluginIndex]) { -      continue; -    } -    !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0; -    EventPluginRegistry.plugins[pluginIndex] = pluginModule; -    var publishedEvents = pluginModule.eventTypes; -    for (var eventName in publishedEvents) { -      !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; -    } -  } -} - -/** - * Publishes an event so that it can be dispatched by the supplied plugin. - * - * @param {object} dispatchConfig Dispatch configuration for the event. - * @param {object} PluginModule Plugin publishing the event. - * @return {boolean} True if the event was successfully published. - * @private - */ -function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { -  !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0; -  EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig; - -  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; -  if (phasedRegistrationNames) { -    for (var phaseName in phasedRegistrationNames) { -      if (phasedRegistrationNames.hasOwnProperty(phaseName)) { -        var phasedRegistrationName = phasedRegistrationNames[phaseName]; -        publishRegistrationName(phasedRegistrationName, pluginModule, eventName); -      } -    } -    return true; -  } else if (dispatchConfig.registrationName) { -    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); -    return true; -  } -  return false; -} - -/** - * Publishes a registration name that is used to identify dispatched events and - * can be used with `EventPluginHub.putListener` to register listeners. - * - * @param {string} registrationName Registration name to add. - * @param {object} PluginModule Plugin publishing the event. - * @private - */ -function publishRegistrationName(registrationName, pluginModule, eventName) { -  !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0; -  EventPluginRegistry.registrationNameModules[registrationName] = pluginModule; -  EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; - -  if (process.env.NODE_ENV !== 'production') { -    var lowerCasedName = registrationName.toLowerCase(); -    EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName; - -    if (registrationName === 'onDoubleClick') { -      EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName; -    } -  } -} - -/** - * Registers plugins so that they can extract and dispatch events. - * - * @see {EventPluginHub} - */ -var EventPluginRegistry = { -  /** -   * Ordered list of injected plugins. -   */ -  plugins: [], - -  /** -   * Mapping from event name to dispatch config -   */ -  eventNameDispatchConfigs: {}, - -  /** -   * Mapping from registration name to plugin module -   */ -  registrationNameModules: {}, - -  /** -   * Mapping from registration name to event name -   */ -  registrationNameDependencies: {}, - -  /** -   * Mapping from lowercase registration names to the properly cased version, -   * used to warn in the case of missing event handlers. Available -   * only in __DEV__. -   * @type {Object} -   */ -  possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null, -  // Trust the developer to only use possibleRegistrationNames in __DEV__ - -  /** -   * Injects an ordering of plugins (by plugin name). This allows the ordering -   * to be decoupled from injection of the actual plugins so that ordering is -   * always deterministic regardless of packaging, on-the-fly injection, etc. -   * -   * @param {array} InjectedEventPluginOrder -   * @internal -   * @see {EventPluginHub.injection.injectEventPluginOrder} -   */ -  injectEventPluginOrder: function (injectedEventPluginOrder) { -    !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0; -    // Clone the ordering so it cannot be dynamically mutated. -    eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); -    recomputePluginOrdering(); -  }, - -  /** -   * Injects plugins to be used by `EventPluginHub`. The plugin names must be -   * in the ordering injected by `injectEventPluginOrder`. -   * -   * Plugins can be injected as part of page initialization or on-the-fly. -   * -   * @param {object} injectedNamesToPlugins Map from names to plugin modules. -   * @internal -   * @see {EventPluginHub.injection.injectEventPluginsByName} -   */ -  injectEventPluginsByName: function (injectedNamesToPlugins) { -    var isOrderingDirty = false; -    for (var pluginName in injectedNamesToPlugins) { -      if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { -        continue; -      } -      var pluginModule = injectedNamesToPlugins[pluginName]; -      if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { -        !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0; -        namesToPlugins[pluginName] = pluginModule; -        isOrderingDirty = true; -      } -    } -    if (isOrderingDirty) { -      recomputePluginOrdering(); -    } -  }, - -  /** -   * Looks up the plugin for the supplied event. -   * -   * @param {object} event A synthetic event. -   * @return {?object} The plugin that created the supplied event. -   * @internal -   */ -  getPluginModuleForEvent: function (event) { -    var dispatchConfig = event.dispatchConfig; -    if (dispatchConfig.registrationName) { -      return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null; -    } -    if (dispatchConfig.phasedRegistrationNames !== undefined) { -      // pulling phasedRegistrationNames out of dispatchConfig helps Flow see -      // that it is not undefined. -      var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; - -      for (var phase in phasedRegistrationNames) { -        if (!phasedRegistrationNames.hasOwnProperty(phase)) { -          continue; -        } -        var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]]; -        if (pluginModule) { -          return pluginModule; -        } -      } -    } -    return null; -  }, - -  /** -   * Exposed for unit testing. -   * @private -   */ -  _resetEventPlugins: function () { -    eventPluginOrder = null; -    for (var pluginName in namesToPlugins) { -      if (namesToPlugins.hasOwnProperty(pluginName)) { -        delete namesToPlugins[pluginName]; -      } -    } -    EventPluginRegistry.plugins.length = 0; - -    var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs; -    for (var eventName in eventNameDispatchConfigs) { -      if (eventNameDispatchConfigs.hasOwnProperty(eventName)) { -        delete eventNameDispatchConfigs[eventName]; -      } -    } - -    var registrationNameModules = EventPluginRegistry.registrationNameModules; -    for (var registrationName in registrationNameModules) { -      if (registrationNameModules.hasOwnProperty(registrationName)) { -        delete registrationNameModules[registrationName]; -      } -    } - -    if (process.env.NODE_ENV !== 'production') { -      var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames; -      for (var lowerCasedName in possibleRegistrationNames) { -        if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) { -          delete possibleRegistrationNames[lowerCasedName]; -        } -      } -    } -  } -}; - -module.exports = EventPluginRegistry;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EventPluginUtils.js b/node_modules/react-dom/lib/EventPluginUtils.js deleted file mode 100644 index c3929db61..000000000 --- a/node_modules/react-dom/lib/EventPluginUtils.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactErrorUtils = require('./ReactErrorUtils'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -/** - * Injected dependencies: - */ - -/** - * - `ComponentTree`: [required] Module that can convert between React instances - *   and actual node references. - */ -var ComponentTree; -var TreeTraversal; -var injection = { -  injectComponentTree: function (Injected) { -    ComponentTree = Injected; -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0; -    } -  }, -  injectTreeTraversal: function (Injected) { -    TreeTraversal = Injected; -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0; -    } -  } -}; - -function isEndish(topLevelType) { -  return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel'; -} - -function isMoveish(topLevelType) { -  return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove'; -} -function isStartish(topLevelType) { -  return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart'; -} - -var validateEventDispatches; -if (process.env.NODE_ENV !== 'production') { -  validateEventDispatches = function (event) { -    var dispatchListeners = event._dispatchListeners; -    var dispatchInstances = event._dispatchInstances; - -    var listenersIsArr = Array.isArray(dispatchListeners); -    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; - -    var instancesIsArr = Array.isArray(dispatchInstances); -    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; - -    process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0; -  }; -} - -/** - * Dispatch the event to the listener. - * @param {SyntheticEvent} event SyntheticEvent to handle - * @param {boolean} simulated If the event is simulated (changes exn behavior) - * @param {function} listener Application-level callback - * @param {*} inst Internal component instance - */ -function executeDispatch(event, simulated, listener, inst) { -  var type = event.type || 'unknown-event'; -  event.currentTarget = EventPluginUtils.getNodeFromInstance(inst); -  if (simulated) { -    ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event); -  } else { -    ReactErrorUtils.invokeGuardedCallback(type, listener, event); -  } -  event.currentTarget = null; -} - -/** - * Standard/simple iteration through an event's collected dispatches. - */ -function executeDispatchesInOrder(event, simulated) { -  var dispatchListeners = event._dispatchListeners; -  var dispatchInstances = event._dispatchInstances; -  if (process.env.NODE_ENV !== 'production') { -    validateEventDispatches(event); -  } -  if (Array.isArray(dispatchListeners)) { -    for (var i = 0; i < dispatchListeners.length; i++) { -      if (event.isPropagationStopped()) { -        break; -      } -      // Listeners and Instances are two parallel arrays that are always in sync. -      executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]); -    } -  } else if (dispatchListeners) { -    executeDispatch(event, simulated, dispatchListeners, dispatchInstances); -  } -  event._dispatchListeners = null; -  event._dispatchInstances = null; -} - -/** - * Standard/simple iteration through an event's collected dispatches, but stops - * at the first dispatch execution returning true, and returns that id. - * - * @return {?string} id of the first dispatch execution who's listener returns - * true, or null if no listener returned true. - */ -function executeDispatchesInOrderStopAtTrueImpl(event) { -  var dispatchListeners = event._dispatchListeners; -  var dispatchInstances = event._dispatchInstances; -  if (process.env.NODE_ENV !== 'production') { -    validateEventDispatches(event); -  } -  if (Array.isArray(dispatchListeners)) { -    for (var i = 0; i < dispatchListeners.length; i++) { -      if (event.isPropagationStopped()) { -        break; -      } -      // Listeners and Instances are two parallel arrays that are always in sync. -      if (dispatchListeners[i](event, dispatchInstances[i])) { -        return dispatchInstances[i]; -      } -    } -  } else if (dispatchListeners) { -    if (dispatchListeners(event, dispatchInstances)) { -      return dispatchInstances; -    } -  } -  return null; -} - -/** - * @see executeDispatchesInOrderStopAtTrueImpl - */ -function executeDispatchesInOrderStopAtTrue(event) { -  var ret = executeDispatchesInOrderStopAtTrueImpl(event); -  event._dispatchInstances = null; -  event._dispatchListeners = null; -  return ret; -} - -/** - * Execution of a "direct" dispatch - there must be at most one dispatch - * accumulated on the event or it is considered an error. It doesn't really make - * sense for an event with multiple dispatches (bubbled) to keep track of the - * return values at each dispatch execution, but it does tend to make sense when - * dealing with "direct" dispatches. - * - * @return {*} The return value of executing the single dispatch. - */ -function executeDirectDispatch(event) { -  if (process.env.NODE_ENV !== 'production') { -    validateEventDispatches(event); -  } -  var dispatchListener = event._dispatchListeners; -  var dispatchInstance = event._dispatchInstances; -  !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0; -  event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null; -  var res = dispatchListener ? dispatchListener(event) : null; -  event.currentTarget = null; -  event._dispatchListeners = null; -  event._dispatchInstances = null; -  return res; -} - -/** - * @param {SyntheticEvent} event - * @return {boolean} True iff number of dispatches accumulated is greater than 0. - */ -function hasDispatches(event) { -  return !!event._dispatchListeners; -} - -/** - * General utilities that are useful in creating custom Event Plugins. - */ -var EventPluginUtils = { -  isEndish: isEndish, -  isMoveish: isMoveish, -  isStartish: isStartish, - -  executeDirectDispatch: executeDirectDispatch, -  executeDispatchesInOrder: executeDispatchesInOrder, -  executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue, -  hasDispatches: hasDispatches, - -  getInstanceFromNode: function (node) { -    return ComponentTree.getInstanceFromNode(node); -  }, -  getNodeFromInstance: function (node) { -    return ComponentTree.getNodeFromInstance(node); -  }, -  isAncestor: function (a, b) { -    return TreeTraversal.isAncestor(a, b); -  }, -  getLowestCommonAncestor: function (a, b) { -    return TreeTraversal.getLowestCommonAncestor(a, b); -  }, -  getParentInstance: function (inst) { -    return TreeTraversal.getParentInstance(inst); -  }, -  traverseTwoPhase: function (target, fn, arg) { -    return TreeTraversal.traverseTwoPhase(target, fn, arg); -  }, -  traverseEnterLeave: function (from, to, fn, argFrom, argTo) { -    return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo); -  }, - -  injection: injection -}; - -module.exports = EventPluginUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/EventPropagators.js b/node_modules/react-dom/lib/EventPropagators.js deleted file mode 100644 index 4704e37bb..000000000 --- a/node_modules/react-dom/lib/EventPropagators.js +++ /dev/null @@ -1,133 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPluginHub = require('./EventPluginHub'); -var EventPluginUtils = require('./EventPluginUtils'); - -var accumulateInto = require('./accumulateInto'); -var forEachAccumulated = require('./forEachAccumulated'); -var warning = require('fbjs/lib/warning'); - -var getListener = EventPluginHub.getListener; - -/** - * Some event types have a notion of different registration names for different - * "phases" of propagation. This finds listeners by a given phase. - */ -function listenerAtPhase(inst, event, propagationPhase) { -  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; -  return getListener(inst, registrationName); -} - -/** - * Tags a `SyntheticEvent` with dispatched listeners. Creating this function - * here, allows us to not have to bind or create functions for each event. - * Mutating the event's members allows us to not have to create a wrapping - * "dispatch" object that pairs the event with the listener. - */ -function accumulateDirectionalDispatches(inst, phase, event) { -  if (process.env.NODE_ENV !== 'production') { -    process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0; -  } -  var listener = listenerAtPhase(inst, event, phase); -  if (listener) { -    event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); -    event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); -  } -} - -/** - * Collect dispatches (must be entirely collected before dispatching - see unit - * tests). Lazily allocate the array to conserve memory.  We must loop through - * each event and perform the traversal for each one. We cannot perform a - * single traversal for the entire collection of events because each event may - * have a different target. - */ -function accumulateTwoPhaseDispatchesSingle(event) { -  if (event && event.dispatchConfig.phasedRegistrationNames) { -    EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); -  } -} - -/** - * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID. - */ -function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { -  if (event && event.dispatchConfig.phasedRegistrationNames) { -    var targetInst = event._targetInst; -    var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null; -    EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); -  } -} - -/** - * Accumulates without regard to direction, does not look for phased - * registration names. Same as `accumulateDirectDispatchesSingle` but without - * requiring that the `dispatchMarker` be the same as the dispatched ID. - */ -function accumulateDispatches(inst, ignoredDirection, event) { -  if (event && event.dispatchConfig.registrationName) { -    var registrationName = event.dispatchConfig.registrationName; -    var listener = getListener(inst, registrationName); -    if (listener) { -      event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); -      event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); -    } -  } -} - -/** - * Accumulates dispatches on an `SyntheticEvent`, but only for the - * `dispatchMarker`. - * @param {SyntheticEvent} event - */ -function accumulateDirectDispatchesSingle(event) { -  if (event && event.dispatchConfig.registrationName) { -    accumulateDispatches(event._targetInst, null, event); -  } -} - -function accumulateTwoPhaseDispatches(events) { -  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); -} - -function accumulateTwoPhaseDispatchesSkipTarget(events) { -  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); -} - -function accumulateEnterLeaveDispatches(leave, enter, from, to) { -  EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter); -} - -function accumulateDirectDispatches(events) { -  forEachAccumulated(events, accumulateDirectDispatchesSingle); -} - -/** - * A small set of propagation patterns, each of which will accept a small amount - * of information, and generate a set of "dispatch ready event objects" - which - * are sets of events that have already been annotated with a set of dispatched - * listener functions/ids. The API is designed this way to discourage these - * propagation strategies from actually executing the dispatches, since we - * always want to collect the entire set of dispatches before executing event a - * single one. - * - * @constructor EventPropagators - */ -var EventPropagators = { -  accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches, -  accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget, -  accumulateDirectDispatches: accumulateDirectDispatches, -  accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches -}; - -module.exports = EventPropagators;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/FallbackCompositionState.js b/node_modules/react-dom/lib/FallbackCompositionState.js deleted file mode 100644 index 43c0a1c92..000000000 --- a/node_modules/react-dom/lib/FallbackCompositionState.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var PooledClass = require('./PooledClass'); - -var getTextContentAccessor = require('./getTextContentAccessor'); - -/** - * This helper class stores information about text content of a target node, - * allowing comparison of content before and after a given event. - * - * Identify the node where selection currently begins, then observe - * both its text content and its current position in the DOM. Since the - * browser may natively replace the target node during composition, we can - * use its position to find its replacement. - * - * @param {DOMEventTarget} root - */ -function FallbackCompositionState(root) { -  this._root = root; -  this._startText = this.getText(); -  this._fallbackText = null; -} - -_assign(FallbackCompositionState.prototype, { -  destructor: function () { -    this._root = null; -    this._startText = null; -    this._fallbackText = null; -  }, - -  /** -   * Get current text of input. -   * -   * @return {string} -   */ -  getText: function () { -    if ('value' in this._root) { -      return this._root.value; -    } -    return this._root[getTextContentAccessor()]; -  }, - -  /** -   * Determine the differing substring between the initially stored -   * text content and the current content. -   * -   * @return {string} -   */ -  getData: function () { -    if (this._fallbackText) { -      return this._fallbackText; -    } - -    var start; -    var startValue = this._startText; -    var startLength = startValue.length; -    var end; -    var endValue = this.getText(); -    var endLength = endValue.length; - -    for (start = 0; start < startLength; start++) { -      if (startValue[start] !== endValue[start]) { -        break; -      } -    } - -    var minEnd = startLength - start; -    for (end = 1; end <= minEnd; end++) { -      if (startValue[startLength - end] !== endValue[endLength - end]) { -        break; -      } -    } - -    var sliceTail = end > 1 ? 1 - end : undefined; -    this._fallbackText = endValue.slice(start, sliceTail); -    return this._fallbackText; -  } -}); - -PooledClass.addPoolingTo(FallbackCompositionState); - -module.exports = FallbackCompositionState;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/HTMLDOMPropertyConfig.js b/node_modules/react-dom/lib/HTMLDOMPropertyConfig.js deleted file mode 100644 index 65edefae5..000000000 --- a/node_modules/react-dom/lib/HTMLDOMPropertyConfig.js +++ /dev/null @@ -1,235 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMProperty = require('./DOMProperty'); - -var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY; -var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE; -var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE; -var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE; -var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE; - -var HTMLDOMPropertyConfig = { -  isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')), -  Properties: { -    /** -     * Standard Properties -     */ -    accept: 0, -    acceptCharset: 0, -    accessKey: 0, -    action: 0, -    allowFullScreen: HAS_BOOLEAN_VALUE, -    allowTransparency: 0, -    alt: 0, -    // specifies target context for links with `preload` type -    as: 0, -    async: HAS_BOOLEAN_VALUE, -    autoComplete: 0, -    // autoFocus is polyfilled/normalized by AutoFocusUtils -    // autoFocus: HAS_BOOLEAN_VALUE, -    autoPlay: HAS_BOOLEAN_VALUE, -    capture: HAS_BOOLEAN_VALUE, -    cellPadding: 0, -    cellSpacing: 0, -    charSet: 0, -    challenge: 0, -    checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, -    cite: 0, -    classID: 0, -    className: 0, -    cols: HAS_POSITIVE_NUMERIC_VALUE, -    colSpan: 0, -    content: 0, -    contentEditable: 0, -    contextMenu: 0, -    controls: HAS_BOOLEAN_VALUE, -    coords: 0, -    crossOrigin: 0, -    data: 0, // For `<object />` acts as `src`. -    dateTime: 0, -    'default': HAS_BOOLEAN_VALUE, -    defer: HAS_BOOLEAN_VALUE, -    dir: 0, -    disabled: HAS_BOOLEAN_VALUE, -    download: HAS_OVERLOADED_BOOLEAN_VALUE, -    draggable: 0, -    encType: 0, -    form: 0, -    formAction: 0, -    formEncType: 0, -    formMethod: 0, -    formNoValidate: HAS_BOOLEAN_VALUE, -    formTarget: 0, -    frameBorder: 0, -    headers: 0, -    height: 0, -    hidden: HAS_BOOLEAN_VALUE, -    high: 0, -    href: 0, -    hrefLang: 0, -    htmlFor: 0, -    httpEquiv: 0, -    icon: 0, -    id: 0, -    inputMode: 0, -    integrity: 0, -    is: 0, -    keyParams: 0, -    keyType: 0, -    kind: 0, -    label: 0, -    lang: 0, -    list: 0, -    loop: HAS_BOOLEAN_VALUE, -    low: 0, -    manifest: 0, -    marginHeight: 0, -    marginWidth: 0, -    max: 0, -    maxLength: 0, -    media: 0, -    mediaGroup: 0, -    method: 0, -    min: 0, -    minLength: 0, -    // Caution; `option.selected` is not updated if `select.multiple` is -    // disabled with `removeAttribute`. -    multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, -    muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, -    name: 0, -    nonce: 0, -    noValidate: HAS_BOOLEAN_VALUE, -    open: HAS_BOOLEAN_VALUE, -    optimum: 0, -    pattern: 0, -    placeholder: 0, -    playsInline: HAS_BOOLEAN_VALUE, -    poster: 0, -    preload: 0, -    profile: 0, -    radioGroup: 0, -    readOnly: HAS_BOOLEAN_VALUE, -    referrerPolicy: 0, -    rel: 0, -    required: HAS_BOOLEAN_VALUE, -    reversed: HAS_BOOLEAN_VALUE, -    role: 0, -    rows: HAS_POSITIVE_NUMERIC_VALUE, -    rowSpan: HAS_NUMERIC_VALUE, -    sandbox: 0, -    scope: 0, -    scoped: HAS_BOOLEAN_VALUE, -    scrolling: 0, -    seamless: HAS_BOOLEAN_VALUE, -    selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, -    shape: 0, -    size: HAS_POSITIVE_NUMERIC_VALUE, -    sizes: 0, -    span: HAS_POSITIVE_NUMERIC_VALUE, -    spellCheck: 0, -    src: 0, -    srcDoc: 0, -    srcLang: 0, -    srcSet: 0, -    start: HAS_NUMERIC_VALUE, -    step: 0, -    style: 0, -    summary: 0, -    tabIndex: 0, -    target: 0, -    title: 0, -    // Setting .type throws on non-<input> tags -    type: 0, -    useMap: 0, -    value: 0, -    width: 0, -    wmode: 0, -    wrap: 0, - -    /** -     * RDFa Properties -     */ -    about: 0, -    datatype: 0, -    inlist: 0, -    prefix: 0, -    // property is also supported for OpenGraph in meta tags. -    property: 0, -    resource: 0, -    'typeof': 0, -    vocab: 0, - -    /** -     * Non-standard Properties -     */ -    // autoCapitalize and autoCorrect are supported in Mobile Safari for -    // keyboard hints. -    autoCapitalize: 0, -    autoCorrect: 0, -    // autoSave allows WebKit/Blink to persist values of input fields on page reloads -    autoSave: 0, -    // color is for Safari mask-icon link -    color: 0, -    // itemProp, itemScope, itemType are for -    // Microdata support. See http://schema.org/docs/gs.html -    itemProp: 0, -    itemScope: HAS_BOOLEAN_VALUE, -    itemType: 0, -    // itemID and itemRef are for Microdata support as well but -    // only specified in the WHATWG spec document. See -    // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api -    itemID: 0, -    itemRef: 0, -    // results show looking glass icon and recent searches on input -    // search fields in WebKit/Blink -    results: 0, -    // IE-only attribute that specifies security restrictions on an iframe -    // as an alternative to the sandbox attribute on IE<10 -    security: 0, -    // IE-only attribute that controls focus behavior -    unselectable: 0 -  }, -  DOMAttributeNames: { -    acceptCharset: 'accept-charset', -    className: 'class', -    htmlFor: 'for', -    httpEquiv: 'http-equiv' -  }, -  DOMPropertyNames: {}, -  DOMMutationMethods: { -    value: function (node, value) { -      if (value == null) { -        return node.removeAttribute('value'); -      } - -      // Number inputs get special treatment due to some edge cases in -      // Chrome. Let everything else assign the value attribute as normal. -      // https://github.com/facebook/react/issues/7253#issuecomment-236074326 -      if (node.type !== 'number' || node.hasAttribute('value') === false) { -        node.setAttribute('value', '' + value); -      } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) { -        // Don't assign an attribute if validation reports bad -        // input. Chrome will clear the value. Additionally, don't -        // operate on inputs that have focus, otherwise Chrome might -        // strip off trailing decimal places and cause the user's -        // cursor position to jump to the beginning of the input. -        // -        // In ReactDOMInput, we have an onBlur event that will trigger -        // this function again when focus is lost. -        node.setAttribute('value', '' + value); -      } -    } -  } -}; - -module.exports = HTMLDOMPropertyConfig;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/KeyEscapeUtils.js b/node_modules/react-dom/lib/KeyEscapeUtils.js deleted file mode 100644 index 0abf1a22c..000000000 --- a/node_modules/react-dom/lib/KeyEscapeUtils.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -/** - * Escape and wrap key so it is safe to use as a reactid - * - * @param {string} key to be escaped. - * @return {string} the escaped key. - */ - -function escape(key) { -  var escapeRegex = /[=:]/g; -  var escaperLookup = { -    '=': '=0', -    ':': '=2' -  }; -  var escapedString = ('' + key).replace(escapeRegex, function (match) { -    return escaperLookup[match]; -  }); - -  return '$' + escapedString; -} - -/** - * Unescape and unwrap key for human-readable display - * - * @param {string} key to unescape. - * @return {string} the unescaped key. - */ -function unescape(key) { -  var unescapeRegex = /(=0|=2)/g; -  var unescaperLookup = { -    '=0': '=', -    '=2': ':' -  }; -  var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1); - -  return ('' + keySubstring).replace(unescapeRegex, function (match) { -    return unescaperLookup[match]; -  }); -} - -var KeyEscapeUtils = { -  escape: escape, -  unescape: unescape -}; - -module.exports = KeyEscapeUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/LinkedValueUtils.js b/node_modules/react-dom/lib/LinkedValueUtils.js deleted file mode 100644 index a1e61415f..000000000 --- a/node_modules/react-dom/lib/LinkedValueUtils.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactPropTypesSecret = require('./ReactPropTypesSecret'); -var propTypesFactory = require('prop-types/factory'); - -var React = require('react/lib/React'); -var PropTypes = propTypesFactory(React.isValidElement); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var hasReadOnlyValue = { -  button: true, -  checkbox: true, -  image: true, -  hidden: true, -  radio: true, -  reset: true, -  submit: true -}; - -function _assertSingleLink(inputProps) { -  !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0; -} -function _assertValueLink(inputProps) { -  _assertSingleLink(inputProps); -  !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\'t want to use valueLink.') : _prodInvariant('88') : void 0; -} - -function _assertCheckedLink(inputProps) { -  _assertSingleLink(inputProps); -  !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\'t want to use checkedLink') : _prodInvariant('89') : void 0; -} - -var propTypes = { -  value: function (props, propName, componentName) { -    if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) { -      return null; -    } -    return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); -  }, -  checked: function (props, propName, componentName) { -    if (!props[propName] || props.onChange || props.readOnly || props.disabled) { -      return null; -    } -    return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); -  }, -  onChange: PropTypes.func -}; - -var loggedTypeFailures = {}; -function getDeclarationErrorAddendum(owner) { -  if (owner) { -    var name = owner.getName(); -    if (name) { -      return ' Check the render method of `' + name + '`.'; -    } -  } -  return ''; -} - -/** - * Provide a linked `value` attribute for controlled forms. You should not use - * this outside of the ReactDOM controlled form components. - */ -var LinkedValueUtils = { -  checkPropTypes: function (tagName, props, owner) { -    for (var propName in propTypes) { -      if (propTypes.hasOwnProperty(propName)) { -        var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret); -      } -      if (error instanceof Error && !(error.message in loggedTypeFailures)) { -        // Only monitor this failure once because there tends to be a lot of the -        // same error. -        loggedTypeFailures[error.message] = true; - -        var addendum = getDeclarationErrorAddendum(owner); -        process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0; -      } -    } -  }, - -  /** -   * @param {object} inputProps Props for form component -   * @return {*} current value of the input either from value prop or link. -   */ -  getValue: function (inputProps) { -    if (inputProps.valueLink) { -      _assertValueLink(inputProps); -      return inputProps.valueLink.value; -    } -    return inputProps.value; -  }, - -  /** -   * @param {object} inputProps Props for form component -   * @return {*} current checked status of the input either from checked prop -   *             or link. -   */ -  getChecked: function (inputProps) { -    if (inputProps.checkedLink) { -      _assertCheckedLink(inputProps); -      return inputProps.checkedLink.value; -    } -    return inputProps.checked; -  }, - -  /** -   * @param {object} inputProps Props for form component -   * @param {SyntheticEvent} event change event to handle -   */ -  executeOnChange: function (inputProps, event) { -    if (inputProps.valueLink) { -      _assertValueLink(inputProps); -      return inputProps.valueLink.requestChange(event.target.value); -    } else if (inputProps.checkedLink) { -      _assertCheckedLink(inputProps); -      return inputProps.checkedLink.requestChange(event.target.checked); -    } else if (inputProps.onChange) { -      return inputProps.onChange.call(undefined, event); -    } -  } -}; - -module.exports = LinkedValueUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/PluginModuleType.js b/node_modules/react-dom/lib/PluginModuleType.js deleted file mode 100644 index 6d94ca81e..000000000 --- a/node_modules/react-dom/lib/PluginModuleType.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/PooledClass.js b/node_modules/react-dom/lib/PooledClass.js deleted file mode 100644 index 1d10eaf15..000000000 --- a/node_modules/react-dom/lib/PooledClass.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * Static poolers. Several custom versions for each potential number of - * arguments. A completely generic pooler is easy to implement, but would - * require accessing the `arguments` object. In each of these, `this` refers to - * the Class itself, not an instance. If any others are needed, simply add them - * here, or in their own files. - */ -var oneArgumentPooler = function (copyFieldsFrom) { -  var Klass = this; -  if (Klass.instancePool.length) { -    var instance = Klass.instancePool.pop(); -    Klass.call(instance, copyFieldsFrom); -    return instance; -  } else { -    return new Klass(copyFieldsFrom); -  } -}; - -var twoArgumentPooler = function (a1, a2) { -  var Klass = this; -  if (Klass.instancePool.length) { -    var instance = Klass.instancePool.pop(); -    Klass.call(instance, a1, a2); -    return instance; -  } else { -    return new Klass(a1, a2); -  } -}; - -var threeArgumentPooler = function (a1, a2, a3) { -  var Klass = this; -  if (Klass.instancePool.length) { -    var instance = Klass.instancePool.pop(); -    Klass.call(instance, a1, a2, a3); -    return instance; -  } else { -    return new Klass(a1, a2, a3); -  } -}; - -var fourArgumentPooler = function (a1, a2, a3, a4) { -  var Klass = this; -  if (Klass.instancePool.length) { -    var instance = Klass.instancePool.pop(); -    Klass.call(instance, a1, a2, a3, a4); -    return instance; -  } else { -    return new Klass(a1, a2, a3, a4); -  } -}; - -var standardReleaser = function (instance) { -  var Klass = this; -  !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; -  instance.destructor(); -  if (Klass.instancePool.length < Klass.poolSize) { -    Klass.instancePool.push(instance); -  } -}; - -var DEFAULT_POOL_SIZE = 10; -var DEFAULT_POOLER = oneArgumentPooler; - -/** - * Augments `CopyConstructor` to be a poolable class, augmenting only the class - * itself (statically) not adding any prototypical fields. Any CopyConstructor - * you give this may have a `poolSize` property, and will look for a - * prototypical `destructor` on instances. - * - * @param {Function} CopyConstructor Constructor that can be used to reset. - * @param {Function} pooler Customizable pooler. - */ -var addPoolingTo = function (CopyConstructor, pooler) { -  // Casting as any so that flow ignores the actual implementation and trusts -  // it to match the type we declared -  var NewKlass = CopyConstructor; -  NewKlass.instancePool = []; -  NewKlass.getPooled = pooler || DEFAULT_POOLER; -  if (!NewKlass.poolSize) { -    NewKlass.poolSize = DEFAULT_POOL_SIZE; -  } -  NewKlass.release = standardReleaser; -  return NewKlass; -}; - -var PooledClass = { -  addPoolingTo: addPoolingTo, -  oneArgumentPooler: oneArgumentPooler, -  twoArgumentPooler: twoArgumentPooler, -  threeArgumentPooler: threeArgumentPooler, -  fourArgumentPooler: fourArgumentPooler -}; - -module.exports = PooledClass;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactBrowserEventEmitter.js b/node_modules/react-dom/lib/ReactBrowserEventEmitter.js deleted file mode 100644 index ac2990c15..000000000 --- a/node_modules/react-dom/lib/ReactBrowserEventEmitter.js +++ /dev/null @@ -1,323 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var EventPluginRegistry = require('./EventPluginRegistry'); -var ReactEventEmitterMixin = require('./ReactEventEmitterMixin'); -var ViewportMetrics = require('./ViewportMetrics'); - -var getVendorPrefixedEventName = require('./getVendorPrefixedEventName'); -var isEventSupported = require('./isEventSupported'); - -/** - * Summary of `ReactBrowserEventEmitter` event handling: - * - *  - Top-level delegation is used to trap most native browser events. This - *    may only occur in the main thread and is the responsibility of - *    ReactEventListener, which is injected and can therefore support pluggable - *    event sources. This is the only work that occurs in the main thread. - * - *  - We normalize and de-duplicate events to account for browser quirks. This - *    may be done in the worker thread. - * - *  - Forward these native events (with the associated top-level type used to - *    trap it) to `EventPluginHub`, which in turn will ask plugins if they want - *    to extract any synthetic events. - * - *  - The `EventPluginHub` will then process each event by annotating them with - *    "dispatches", a sequence of listeners and IDs that care about that event. - * - *  - The `EventPluginHub` then dispatches the events. - * - * Overview of React and the event system: - * - * +------------+    . - * |    DOM     |    . - * +------------+    . - *       |           . - *       v           . - * +------------+    . - * | ReactEvent |    . - * |  Listener  |    . - * +------------+    .                         +-----------+ - *       |           .               +--------+|SimpleEvent| - *       |           .               |         |Plugin     | - * +-----|------+    .               v         +-----------+ - * |     |      |    .    +--------------+                    +------------+ - * |     +-----------.--->|EventPluginHub|                    |    Event   | - * |            |    .    |              |     +-----------+  | Propagators| - * | ReactEvent |    .    |              |     |TapEvent   |  |------------| - * |  Emitter   |    .    |              |<---+|Plugin     |  |other plugin| - * |            |    .    |              |     +-----------+  |  utilities | - * |     +-----------.--->|              |                    +------------+ - * |     |      |    .    +--------------+ - * +-----|------+    .                ^        +-----------+ - *       |           .                |        |Enter/Leave| - *       +           .                +-------+|Plugin     | - * +-------------+   .                         +-----------+ - * | application |   . - * |-------------|   . - * |             |   . - * |             |   . - * +-------------+   . - *                   . - *    React Core     .  General Purpose Event Plugin System - */ - -var hasEventPageXY; -var alreadyListeningTo = {}; -var isMonitoringScrollValue = false; -var reactTopListenersCounter = 0; - -// For events like 'submit' which don't consistently bubble (which we trap at a -// lower node than `document`), binding at `document` would cause duplicate -// events so we don't include them here -var topEventMapping = { -  topAbort: 'abort', -  topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend', -  topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration', -  topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart', -  topBlur: 'blur', -  topCanPlay: 'canplay', -  topCanPlayThrough: 'canplaythrough', -  topChange: 'change', -  topClick: 'click', -  topCompositionEnd: 'compositionend', -  topCompositionStart: 'compositionstart', -  topCompositionUpdate: 'compositionupdate', -  topContextMenu: 'contextmenu', -  topCopy: 'copy', -  topCut: 'cut', -  topDoubleClick: 'dblclick', -  topDrag: 'drag', -  topDragEnd: 'dragend', -  topDragEnter: 'dragenter', -  topDragExit: 'dragexit', -  topDragLeave: 'dragleave', -  topDragOver: 'dragover', -  topDragStart: 'dragstart', -  topDrop: 'drop', -  topDurationChange: 'durationchange', -  topEmptied: 'emptied', -  topEncrypted: 'encrypted', -  topEnded: 'ended', -  topError: 'error', -  topFocus: 'focus', -  topInput: 'input', -  topKeyDown: 'keydown', -  topKeyPress: 'keypress', -  topKeyUp: 'keyup', -  topLoadedData: 'loadeddata', -  topLoadedMetadata: 'loadedmetadata', -  topLoadStart: 'loadstart', -  topMouseDown: 'mousedown', -  topMouseMove: 'mousemove', -  topMouseOut: 'mouseout', -  topMouseOver: 'mouseover', -  topMouseUp: 'mouseup', -  topPaste: 'paste', -  topPause: 'pause', -  topPlay: 'play', -  topPlaying: 'playing', -  topProgress: 'progress', -  topRateChange: 'ratechange', -  topScroll: 'scroll', -  topSeeked: 'seeked', -  topSeeking: 'seeking', -  topSelectionChange: 'selectionchange', -  topStalled: 'stalled', -  topSuspend: 'suspend', -  topTextInput: 'textInput', -  topTimeUpdate: 'timeupdate', -  topTouchCancel: 'touchcancel', -  topTouchEnd: 'touchend', -  topTouchMove: 'touchmove', -  topTouchStart: 'touchstart', -  topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend', -  topVolumeChange: 'volumechange', -  topWaiting: 'waiting', -  topWheel: 'wheel' -}; - -/** - * To ensure no conflicts with other potential React instances on the page - */ -var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2); - -function getListeningForDocument(mountAt) { -  // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty` -  // directly. -  if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) { -    mountAt[topListenersIDKey] = reactTopListenersCounter++; -    alreadyListeningTo[mountAt[topListenersIDKey]] = {}; -  } -  return alreadyListeningTo[mountAt[topListenersIDKey]]; -} - -/** - * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For - * example: - * - *   EventPluginHub.putListener('myID', 'onClick', myFunction); - * - * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'. - * - * @internal - */ -var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, { -  /** -   * Injectable event backend -   */ -  ReactEventListener: null, - -  injection: { -    /** -     * @param {object} ReactEventListener -     */ -    injectReactEventListener: function (ReactEventListener) { -      ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel); -      ReactBrowserEventEmitter.ReactEventListener = ReactEventListener; -    } -  }, - -  /** -   * Sets whether or not any created callbacks should be enabled. -   * -   * @param {boolean} enabled True if callbacks should be enabled. -   */ -  setEnabled: function (enabled) { -    if (ReactBrowserEventEmitter.ReactEventListener) { -      ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled); -    } -  }, - -  /** -   * @return {boolean} True if callbacks are enabled. -   */ -  isEnabled: function () { -    return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled()); -  }, - -  /** -   * We listen for bubbled touch events on the document object. -   * -   * Firefox v8.01 (and possibly others) exhibited strange behavior when -   * mounting `onmousemove` events at some node that was not the document -   * element. The symptoms were that if your mouse is not moving over something -   * contained within that mount point (for example on the background) the -   * top-level listeners for `onmousemove` won't be called. However, if you -   * register the `mousemove` on the document object, then it will of course -   * catch all `mousemove`s. This along with iOS quirks, justifies restricting -   * top-level listeners to the document object only, at least for these -   * movement types of events and possibly all events. -   * -   * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html -   * -   * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but -   * they bubble to document. -   * -   * @param {string} registrationName Name of listener (e.g. `onClick`). -   * @param {object} contentDocumentHandle Document which owns the container -   */ -  listenTo: function (registrationName, contentDocumentHandle) { -    var mountAt = contentDocumentHandle; -    var isListening = getListeningForDocument(mountAt); -    var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName]; - -    for (var i = 0; i < dependencies.length; i++) { -      var dependency = dependencies[i]; -      if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { -        if (dependency === 'topWheel') { -          if (isEventSupported('wheel')) { -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt); -          } else if (isEventSupported('mousewheel')) { -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt); -          } else { -            // Firefox needs to capture a different mouse scroll event. -            // @see http://www.quirksmode.org/dom/events/tests/scroll.html -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt); -          } -        } else if (dependency === 'topScroll') { -          if (isEventSupported('scroll', true)) { -            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt); -          } else { -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); -          } -        } else if (dependency === 'topFocus' || dependency === 'topBlur') { -          if (isEventSupported('focus', true)) { -            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt); -            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt); -          } else if (isEventSupported('focusin')) { -            // IE has `focusin` and `focusout` events which bubble. -            // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt); -            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt); -          } - -          // to make sure blur and focus event listeners are only attached once -          isListening.topBlur = true; -          isListening.topFocus = true; -        } else if (topEventMapping.hasOwnProperty(dependency)) { -          ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt); -        } - -        isListening[dependency] = true; -      } -    } -  }, - -  trapBubbledEvent: function (topLevelType, handlerBaseName, handle) { -    return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle); -  }, - -  trapCapturedEvent: function (topLevelType, handlerBaseName, handle) { -    return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle); -  }, - -  /** -   * Protect against document.createEvent() returning null -   * Some popup blocker extensions appear to do this: -   * https://github.com/facebook/react/issues/6887 -   */ -  supportsEventPageXY: function () { -    if (!document.createEvent) { -      return false; -    } -    var ev = document.createEvent('MouseEvent'); -    return ev != null && 'pageX' in ev; -  }, - -  /** -   * Listens to window scroll and resize events. We cache scroll values so that -   * application code can access them without triggering reflows. -   * -   * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when -   * pageX/pageY isn't supported (legacy browsers). -   * -   * NOTE: Scroll events do not bubble. -   * -   * @see http://www.quirksmode.org/dom/events/scroll.html -   */ -  ensureScrollValueMonitoring: function () { -    if (hasEventPageXY === undefined) { -      hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY(); -    } -    if (!hasEventPageXY && !isMonitoringScrollValue) { -      var refresh = ViewportMetrics.refreshScrollValues; -      ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh); -      isMonitoringScrollValue = true; -    } -  } -}); - -module.exports = ReactBrowserEventEmitter;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactChildFiber.js b/node_modules/react-dom/lib/ReactChildFiber.js deleted file mode 100644 index ed3bd96e1..000000000 --- a/node_modules/react-dom/lib/ReactChildFiber.js +++ /dev/null @@ -1,242 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var REACT_ELEMENT_TYPE = require('./ReactElementSymbol'); - -var _require = require('./ReactCoroutine'), -    REACT_COROUTINE_TYPE = _require.REACT_COROUTINE_TYPE, -    REACT_YIELD_TYPE = _require.REACT_YIELD_TYPE; - -var ReactFiber = require('./ReactFiber'); -var ReactReifiedYield = require('./ReactReifiedYield'); - -var cloneFiber = ReactFiber.cloneFiber, -    createFiberFromElement = ReactFiber.createFiberFromElement, -    createFiberFromCoroutine = ReactFiber.createFiberFromCoroutine, -    createFiberFromYield = ReactFiber.createFiberFromYield; -var createReifiedYield = ReactReifiedYield.createReifiedYield; - - -var isArray = Array.isArray; - -function ChildReconciler(shouldClone) { -  function createSubsequentChild(returnFiber, existingChild, previousSibling, newChildren, priority) { -    if (typeof newChildren !== 'object' || newChildren === null) { -      return previousSibling; -    } - -    switch (newChildren.$$typeof) { -      case REACT_ELEMENT_TYPE: -        { -          var element = newChildren; -          if (existingChild && element.type === existingChild.type && element.key === existingChild.key) { -            // TODO: This is not sufficient since previous siblings could be new. -            // Will fix reconciliation properly later. -            var clone = shouldClone ? cloneFiber(existingChild, priority) : existingChild; -            if (!shouldClone) { -              // TODO: This might be lowering the priority of nested unfinished work. -              clone.pendingWorkPriority = priority; -            } -            clone.pendingProps = element.props; -            clone.sibling = null; -            clone['return'] = returnFiber; -            previousSibling.sibling = clone; -            return clone; -          } -          var child = createFiberFromElement(element, priority); -          previousSibling.sibling = child; -          child['return'] = returnFiber; -          return child; -        } - -      case REACT_COROUTINE_TYPE: -        { -          var coroutine = newChildren; -          var _child = createFiberFromCoroutine(coroutine, priority); -          previousSibling.sibling = _child; -          _child['return'] = returnFiber; -          return _child; -        } - -      case REACT_YIELD_TYPE: -        { -          var yieldNode = newChildren; -          var reifiedYield = createReifiedYield(yieldNode); -          var _child2 = createFiberFromYield(yieldNode, priority); -          _child2.output = reifiedYield; -          previousSibling.sibling = _child2; -          _child2['return'] = returnFiber; -          return _child2; -        } -    } - -    if (isArray(newChildren)) { -      var prev = previousSibling; -      var existing = existingChild; -      for (var i = 0; i < newChildren.length; i++) { -        var nextExisting = existing && existing.sibling; -        prev = createSubsequentChild(returnFiber, existing, prev, newChildren[i], priority); -        if (prev && existing) { -          // TODO: This is not correct because there could've been more -          // than one sibling consumed but I don't want to return a tuple. -          existing = nextExisting; -        } -      } -      return prev; -    } else { -      // TODO: Throw for unknown children. -      return previousSibling; -    } -  } - -  function createFirstChild(returnFiber, existingChild, newChildren, priority) { -    if (typeof newChildren !== 'object' || newChildren === null) { -      return null; -    } - -    switch (newChildren.$$typeof) { -      case REACT_ELEMENT_TYPE: -        { -          /* $FlowFixMe(>=0.31.0): This is an unsafe cast. Consider adding a type -           *                       annotation to the `newChildren` param of this -           *                       function. -           */ -          var element = newChildren; -          if (existingChild && element.type === existingChild.type && element.key === existingChild.key) { -            // Get the clone of the existing fiber. -            var clone = shouldClone ? cloneFiber(existingChild, priority) : existingChild; -            if (!shouldClone) { -              // TODO: This might be lowering the priority of nested unfinished work. -              clone.pendingWorkPriority = priority; -            } -            clone.pendingProps = element.props; -            clone.sibling = null; -            clone['return'] = returnFiber; -            return clone; -          } -          var child = createFiberFromElement(element, priority); -          child['return'] = returnFiber; -          return child; -        } - -      case REACT_COROUTINE_TYPE: -        { -          /* $FlowFixMe(>=0.31.0): No 'handler' property found in object type -           */ -          var coroutine = newChildren; -          var _child3 = createFiberFromCoroutine(coroutine, priority); -          _child3['return'] = returnFiber; -          return _child3; -        } - -      case REACT_YIELD_TYPE: -        { -          // A yield results in a fragment fiber whose output is the continuation. -          // TODO: When there is only a single child, we can optimize this to avoid -          // the fragment. -          /* $FlowFixMe(>=0.31.0): No 'continuation' property found in object -           * type -           */ -          var yieldNode = newChildren; -          var reifiedYield = createReifiedYield(yieldNode); -          var _child4 = createFiberFromYield(yieldNode, priority); -          _child4.output = reifiedYield; -          _child4['return'] = returnFiber; -          return _child4; -        } -    } - -    if (isArray(newChildren)) { -      var first = null; -      var prev = null; -      var existing = existingChild; -      /* $FlowIssue(>=0.31.0) #12747709 -       * -       * `Array.isArray` is matched syntactically for now until predicate -       * support is complete. -       */ -      for (var i = 0; i < newChildren.length; i++) { -        var nextExisting = existing && existing.sibling; -        if (prev == null) { -          prev = createFirstChild(returnFiber, existing, newChildren[i], priority); -          first = prev; -        } else { -          prev = createSubsequentChild(returnFiber, existing, prev, newChildren[i], priority); -        } -        if (prev && existing) { -          // TODO: This is not correct because there could've been more -          // than one sibling consumed but I don't want to return a tuple. -          existing = nextExisting; -        } -      } -      return first; -    } else { -      // TODO: Throw for unknown children. -      return null; -    } -  } - -  // TODO: This API won't work because we'll need to transfer the side-effects of -  // unmounting children to the returnFiber. -  function reconcileChildFibers(returnFiber, currentFirstChild, newChildren, priority) { -    return createFirstChild(returnFiber, currentFirstChild, newChildren, priority); -  } - -  return reconcileChildFibers; -} - -exports.reconcileChildFibers = ChildReconciler(true); - -exports.reconcileChildFibersInPlace = ChildReconciler(false); - -function cloneSiblings(current, workInProgress, returnFiber) { -  workInProgress['return'] = returnFiber; -  while (current.sibling) { -    current = current.sibling; -    workInProgress = workInProgress.sibling = cloneFiber(current, current.pendingWorkPriority); -    workInProgress['return'] = returnFiber; -  } -  workInProgress.sibling = null; -} - -exports.cloneChildFibers = function (current, workInProgress) { -  if (!workInProgress.child) { -    return; -  } -  if (current && workInProgress.child === current.child) { -    // We use workInProgress.child since that lets Flow know that it can't be -    // null since we validated that already. However, as the line above suggests -    // they're actually the same thing. -    var currentChild = workInProgress.child; -    // TODO: This used to reset the pending priority. Not sure if that is needed. -    // workInProgress.pendingWorkPriority = current.pendingWorkPriority; -    // TODO: The below priority used to be set to NoWork which would've -    // dropped work. This is currently unobservable but will become -    // observable when the first sibling has lower priority work remaining -    // than the next sibling. At that point we should add tests that catches -    // this. -    var newChild = cloneFiber(currentChild, currentChild.pendingWorkPriority); -    workInProgress.child = newChild; -    cloneSiblings(currentChild, newChild, workInProgress); -  } - -  // If there is no alternate, then we don't need to clone the children. -  // If the children of the alternate fiber is a different set, then we don't -  // need to clone. We need to reset the return fiber though since we'll -  // traverse down into them. -  var child = workInProgress.child; -  while (child) { -    child['return'] = workInProgress; -    child = child.sibling; -  } -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactChildReconciler.js b/node_modules/react-dom/lib/ReactChildReconciler.js deleted file mode 100644 index e89f763d3..000000000 --- a/node_modules/react-dom/lib/ReactChildReconciler.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactReconciler = require('./ReactReconciler'); - -var instantiateReactComponent = require('./instantiateReactComponent'); -var KeyEscapeUtils = require('./KeyEscapeUtils'); -var shouldUpdateReactComponent = require('./shouldUpdateReactComponent'); -var traverseAllChildren = require('./traverseAllChildren'); -var warning = require('fbjs/lib/warning'); - -var ReactComponentTreeHook; - -if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { -  // Temporary hack. -  // Inline requires don't work well with Jest: -  // https://github.com/facebook/react/issues/7240 -  // Remove the inline requires when we don't need them anymore: -  // https://github.com/facebook/react/pull/7178 -  ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -} - -function instantiateChild(childInstances, child, name, selfDebugID) { -  // We found a component instance. -  var keyUnique = childInstances[name] === undefined; -  if (process.env.NODE_ENV !== 'production') { -    if (!ReactComponentTreeHook) { -      ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -    } -    if (!keyUnique) { -      process.env.NODE_ENV !== 'production' ? warning(false, '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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; -    } -  } -  if (child != null && keyUnique) { -    childInstances[name] = instantiateReactComponent(child, true); -  } -} - -/** - * ReactChildReconciler provides helpers for initializing or updating a set of - * children. Its output is suitable for passing it onto ReactMultiChild which - * does diffed reordering and insertion. - */ -var ReactChildReconciler = { -  /** -   * Generates a "mount image" for each of the supplied children. In the case -   * of `ReactDOMComponent`, a mount image is a string of markup. -   * -   * @param {?object} nestedChildNodes Nested child maps. -   * @return {?object} A set of child instances. -   * @internal -   */ -  instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots -  { -    if (nestedChildNodes == null) { -      return null; -    } -    var childInstances = {}; - -    if (process.env.NODE_ENV !== 'production') { -      traverseAllChildren(nestedChildNodes, function (childInsts, child, name) { -        return instantiateChild(childInsts, child, name, selfDebugID); -      }, childInstances); -    } else { -      traverseAllChildren(nestedChildNodes, instantiateChild, childInstances); -    } -    return childInstances; -  }, - -  /** -   * Updates the rendered children and returns a new set of children. -   * -   * @param {?object} prevChildren Previously initialized set of children. -   * @param {?object} nextChildren Flat child element maps. -   * @param {ReactReconcileTransaction} transaction -   * @param {object} context -   * @return {?object} A new set of child instances. -   * @internal -   */ -  updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots -  { -    // We currently don't have a way to track moves here but if we use iterators -    // instead of for..in we can zip the iterators and check if an item has -    // moved. -    // TODO: If nothing has changed, return the prevChildren object so that we -    // can quickly bailout if nothing has changed. -    if (!nextChildren && !prevChildren) { -      return; -    } -    var name; -    var prevChild; -    for (name in nextChildren) { -      if (!nextChildren.hasOwnProperty(name)) { -        continue; -      } -      prevChild = prevChildren && prevChildren[name]; -      var prevElement = prevChild && prevChild._currentElement; -      var nextElement = nextChildren[name]; -      if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) { -        ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context); -        nextChildren[name] = prevChild; -      } else { -        if (prevChild) { -          removedNodes[name] = ReactReconciler.getHostNode(prevChild); -          ReactReconciler.unmountComponent(prevChild, false); -        } -        // The child must be instantiated before it's mounted. -        var nextChildInstance = instantiateReactComponent(nextElement, true); -        nextChildren[name] = nextChildInstance; -        // Creating mount image now ensures refs are resolved in right order -        // (see https://github.com/facebook/react/pull/7101 for explanation). -        var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID); -        mountImages.push(nextChildMountImage); -      } -    } -    // Unmount children that are no longer present. -    for (name in prevChildren) { -      if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) { -        prevChild = prevChildren[name]; -        removedNodes[name] = ReactReconciler.getHostNode(prevChild); -        ReactReconciler.unmountComponent(prevChild, false); -      } -    } -  }, - -  /** -   * Unmounts all rendered children. This should be used to clean up children -   * when this component is unmounted. -   * -   * @param {?object} renderedChildren Previously initialized set of children. -   * @internal -   */ -  unmountChildren: function (renderedChildren, safely) { -    for (var name in renderedChildren) { -      if (renderedChildren.hasOwnProperty(name)) { -        var renderedChild = renderedChildren[name]; -        ReactReconciler.unmountComponent(renderedChild, safely); -      } -    } -  } -}; - -module.exports = ReactChildReconciler;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js b/node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js deleted file mode 100644 index e35d5a869..000000000 --- a/node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMChildrenOperations = require('./DOMChildrenOperations'); -var ReactDOMIDOperations = require('./ReactDOMIDOperations'); - -/** - * Abstracts away all functionality of the reconciler that requires knowledge of - * the browser context. TODO: These callers should be refactored to avoid the - * need for this injection. - */ -var ReactComponentBrowserEnvironment = { -  processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates, - -  replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup -}; - -module.exports = ReactComponentBrowserEnvironment;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactComponentEnvironment.js b/node_modules/react-dom/lib/ReactComponentEnvironment.js deleted file mode 100644 index e3a1abd4d..000000000 --- a/node_modules/react-dom/lib/ReactComponentEnvironment.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -var injected = false; - -var ReactComponentEnvironment = { -  /** -   * Optionally injectable hook for swapping out mount images in the middle of -   * the tree. -   */ -  replaceNodeWithMarkup: null, - -  /** -   * Optionally injectable hook for processing a queue of child updates. Will -   * later move into MultiChildComponents. -   */ -  processChildrenUpdates: null, - -  injection: { -    injectEnvironment: function (environment) { -      !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0; -      ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup; -      ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates; -      injected = true; -    } -  } -}; - -module.exports = ReactComponentEnvironment;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactComponentTreeTestUtils.js b/node_modules/react-dom/lib/ReactComponentTreeTestUtils.js deleted file mode 100644 index 340811029..000000000 --- a/node_modules/react-dom/lib/ReactComponentTreeTestUtils.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); - -function getRootDisplayNames() { -  return ReactComponentTreeHook.getRootIDs().map(ReactComponentTreeHook.getDisplayName); -} - -function getRegisteredDisplayNames() { -  return ReactComponentTreeHook.getRegisteredIDs().map(ReactComponentTreeHook.getDisplayName); -} - -function expectTree(rootID, expectedTree, parentPath) { -  var displayName = ReactComponentTreeHook.getDisplayName(rootID); -  var ownerID = ReactComponentTreeHook.getOwnerID(rootID); -  var parentID = ReactComponentTreeHook.getParentID(rootID); -  var childIDs = ReactComponentTreeHook.getChildIDs(rootID); -  var text = ReactComponentTreeHook.getText(rootID); -  var element = ReactComponentTreeHook.getElement(rootID); -  var path = parentPath ? parentPath + ' > ' + displayName : displayName; - -  function expectEqual(actual, expected, name) { -    // Get Jasmine to print descriptive error messages. -    // We pass path so that we know where the mismatch occurred. -    expect(_defineProperty({ -      path: path -    }, name, actual)).toEqual(_defineProperty({ -      path: path -    }, name, expected)); -  } - -  if (expectedTree.parentDisplayName !== undefined) { -    expectEqual(ReactComponentTreeHook.getDisplayName(parentID), expectedTree.parentDisplayName, 'parentDisplayName'); -  } -  if (expectedTree.ownerDisplayName !== undefined) { -    expectEqual(ReactComponentTreeHook.getDisplayName(ownerID), expectedTree.ownerDisplayName, 'ownerDisplayName'); -  } -  if (expectedTree.parentID !== undefined) { -    expectEqual(parentID, expectedTree.parentID, 'parentID'); -  } -  if (expectedTree.text !== undefined) { -    expectEqual(text, expectedTree.text, 'text'); -    expectEqual('' + element, expectedTree.text, 'element.toString()'); -  } else { -    expectEqual(text, null, 'text'); -  } -  if (expectedTree.element !== undefined) { -    // TODO: Comparing elements makes tests run out of memory on errors. -    // For now, compare just types. -    expectEqual(element && element.type, expectedTree.element && expectedTree.element.type, 'element.type'); -  } else if (text == null) { -    expectEqual(typeof element, 'object', 'typeof element'); -  } -  if (expectedTree.children !== undefined) { -    expectEqual(childIDs.length, expectedTree.children.length, 'children.length'); -    for (var i = 0; i < childIDs.length; i++) { -      expectTree(childIDs[i], _extends({ parentID: rootID }, expectedTree.children[i]), path); -    } -  } else { -    expectEqual(childIDs, [], 'childIDs'); -  } -} - -var ReactComponentTreeTestUtils = { -  expectTree: expectTree, -  getRootDisplayNames: getRootDisplayNames, -  getRegisteredDisplayNames: getRegisteredDisplayNames -}; - -module.exports = ReactComponentTreeTestUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactCompositeComponent.js b/node_modules/react-dom/lib/ReactCompositeComponent.js deleted file mode 100644 index c80d8f561..000000000 --- a/node_modules/react-dom/lib/ReactCompositeComponent.js +++ /dev/null @@ -1,899 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var React = require('react/lib/React'); -var ReactComponentEnvironment = require('./ReactComponentEnvironment'); -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var ReactErrorUtils = require('./ReactErrorUtils'); -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactNodeTypes = require('./ReactNodeTypes'); -var ReactReconciler = require('./ReactReconciler'); - -if (process.env.NODE_ENV !== 'production') { -  var checkReactTypeSpec = require('./checkReactTypeSpec'); -} - -var emptyObject = require('fbjs/lib/emptyObject'); -var invariant = require('fbjs/lib/invariant'); -var shallowEqual = require('fbjs/lib/shallowEqual'); -var shouldUpdateReactComponent = require('./shouldUpdateReactComponent'); -var warning = require('fbjs/lib/warning'); - -var CompositeTypes = { -  ImpureClass: 0, -  PureClass: 1, -  StatelessFunctional: 2 -}; - -function StatelessComponent(Component) {} -StatelessComponent.prototype.render = function () { -  var Component = ReactInstanceMap.get(this)._currentElement.type; -  var element = Component(this.props, this.context, this.updater); -  warnIfInvalidElement(Component, element); -  return element; -}; - -function warnIfInvalidElement(Component, element) { -  if (process.env.NODE_ENV !== 'production') { -    process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0; -    process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0; -  } -} - -function shouldConstruct(Component) { -  return !!(Component.prototype && Component.prototype.isReactComponent); -} - -function isPureComponent(Component) { -  return !!(Component.prototype && Component.prototype.isPureReactComponent); -} - -// Separated into a function to contain deoptimizations caused by try/finally. -function measureLifeCyclePerf(fn, debugID, timerType) { -  if (debugID === 0) { -    // Top-level wrappers (see ReactMount) and empty components (see -    // ReactDOMEmptyComponent) are invisible to hooks and devtools. -    // Both are implementation details that should go away in the future. -    return fn(); -  } - -  ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType); -  try { -    return fn(); -  } finally { -    ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType); -  } -} - -/** - * ------------------ The Life-Cycle of a Composite Component ------------------ - * - * - constructor: Initialization of state. The instance is now retained. - *   - componentWillMount - *   - render - *   - [children's constructors] - *     - [children's componentWillMount and render] - *     - [children's componentDidMount] - *     - componentDidMount - * - *       Update Phases: - *       - componentWillReceiveProps (only called if parent updated) - *       - shouldComponentUpdate - *         - componentWillUpdate - *           - render - *           - [children's constructors or receive props phases] - *         - componentDidUpdate - * - *     - componentWillUnmount - *     - [children's componentWillUnmount] - *   - [children destroyed] - * - (destroyed): The instance is now blank, released by React and ready for GC. - * - * ----------------------------------------------------------------------------- - */ - -/** - * An incrementing ID assigned to each component when it is mounted. This is - * used to enforce the order in which `ReactUpdates` updates dirty components. - * - * @private - */ -var nextMountID = 1; - -/** - * @lends {ReactCompositeComponent.prototype} - */ -var ReactCompositeComponent = { -  /** -   * Base constructor for all composite component. -   * -   * @param {ReactElement} element -   * @final -   * @internal -   */ -  construct: function (element) { -    this._currentElement = element; -    this._rootNodeID = 0; -    this._compositeType = null; -    this._instance = null; -    this._hostParent = null; -    this._hostContainerInfo = null; - -    // See ReactUpdateQueue -    this._updateBatchNumber = null; -    this._pendingElement = null; -    this._pendingStateQueue = null; -    this._pendingReplaceState = false; -    this._pendingForceUpdate = false; - -    this._renderedNodeType = null; -    this._renderedComponent = null; -    this._context = null; -    this._mountOrder = 0; -    this._topLevelWrapper = null; - -    // See ReactUpdates and ReactUpdateQueue. -    this._pendingCallbacks = null; - -    // ComponentWillUnmount shall only be called once -    this._calledComponentWillUnmount = false; - -    if (process.env.NODE_ENV !== 'production') { -      this._warnedAboutRefsInRender = false; -    } -  }, - -  /** -   * Initializes the component, renders markup, and registers event listeners. -   * -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {?object} hostParent -   * @param {?object} hostContainerInfo -   * @param {?object} context -   * @return {?string} Rendered markup to be inserted into the DOM. -   * @final -   * @internal -   */ -  mountComponent: function (transaction, hostParent, hostContainerInfo, context) { -    var _this = this; - -    this._context = context; -    this._mountOrder = nextMountID++; -    this._hostParent = hostParent; -    this._hostContainerInfo = hostContainerInfo; - -    var publicProps = this._currentElement.props; -    var publicContext = this._processContext(context); - -    var Component = this._currentElement.type; - -    var updateQueue = transaction.getUpdateQueue(); - -    // Initialize the public class -    var doConstruct = shouldConstruct(Component); -    var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue); -    var renderedElement; - -    // Support functional components -    if (!doConstruct && (inst == null || inst.render == null)) { -      renderedElement = inst; -      warnIfInvalidElement(Component, renderedElement); -      !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0; -      inst = new StatelessComponent(Component); -      this._compositeType = CompositeTypes.StatelessFunctional; -    } else { -      if (isPureComponent(Component)) { -        this._compositeType = CompositeTypes.PureClass; -      } else { -        this._compositeType = CompositeTypes.ImpureClass; -      } -    } - -    if (process.env.NODE_ENV !== 'production') { -      // This will throw later in _renderValidatedComponent, but add an early -      // warning now to help debugging -      if (inst.render == null) { -        process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0; -      } - -      var propsMutated = inst.props !== publicProps; -      var componentName = Component.displayName || Component.name || 'Component'; - -      process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", componentName, componentName) : void 0; -    } - -    // These should be set up in the constructor, but as a convenience for -    // simpler class abstractions, we set them up after the fact. -    inst.props = publicProps; -    inst.context = publicContext; -    inst.refs = emptyObject; -    inst.updater = updateQueue; - -    this._instance = inst; - -    // Store a reference from the instance back to the internal representation -    ReactInstanceMap.set(inst, this); - -    if (process.env.NODE_ENV !== 'production') { -      // Since plain JS classes are defined without any special initialization -      // logic, we can not catch common errors early. Therefore, we have to -      // catch them here, at initialization time, instead. -      process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0; -      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0; -    } - -    var initialState = inst.state; -    if (initialState === undefined) { -      inst.state = initialState = null; -    } -    !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0; - -    this._pendingStateQueue = null; -    this._pendingReplaceState = false; -    this._pendingForceUpdate = false; - -    var markup; -    if (inst.unstable_handleError) { -      markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context); -    } else { -      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); -    } - -    if (inst.componentDidMount) { -      if (process.env.NODE_ENV !== 'production') { -        transaction.getReactMountReady().enqueue(function () { -          measureLifeCyclePerf(function () { -            return inst.componentDidMount(); -          }, _this._debugID, 'componentDidMount'); -        }); -      } else { -        transaction.getReactMountReady().enqueue(inst.componentDidMount, inst); -      } -    } - -    return markup; -  }, - -  _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) { -    if (process.env.NODE_ENV !== 'production') { -      ReactCurrentOwner.current = this; -      try { -        return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); -      } finally { -        ReactCurrentOwner.current = null; -      } -    } else { -      return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); -    } -  }, - -  _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) { -    var Component = this._currentElement.type; - -    if (doConstruct) { -      if (process.env.NODE_ENV !== 'production') { -        return measureLifeCyclePerf(function () { -          return new Component(publicProps, publicContext, updateQueue); -        }, this._debugID, 'ctor'); -      } else { -        return new Component(publicProps, publicContext, updateQueue); -      } -    } - -    // This can still be an instance in case of factory components -    // but we'll count this as time spent rendering as the more common case. -    if (process.env.NODE_ENV !== 'production') { -      return measureLifeCyclePerf(function () { -        return Component(publicProps, publicContext, updateQueue); -      }, this._debugID, 'render'); -    } else { -      return Component(publicProps, publicContext, updateQueue); -    } -  }, - -  performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { -    var markup; -    var checkpoint = transaction.checkpoint(); -    try { -      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); -    } catch (e) { -      // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint -      transaction.rollback(checkpoint); -      this._instance.unstable_handleError(e); -      if (this._pendingStateQueue) { -        this._instance.state = this._processPendingState(this._instance.props, this._instance.context); -      } -      checkpoint = transaction.checkpoint(); - -      this._renderedComponent.unmountComponent(true); -      transaction.rollback(checkpoint); - -      // Try again - we've informed the component about the error, so they can render an error message this time. -      // If this throws again, the error will bubble up (and can be caught by a higher error boundary). -      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); -    } -    return markup; -  }, - -  performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { -    var inst = this._instance; - -    var debugID = 0; -    if (process.env.NODE_ENV !== 'production') { -      debugID = this._debugID; -    } - -    if (inst.componentWillMount) { -      if (process.env.NODE_ENV !== 'production') { -        measureLifeCyclePerf(function () { -          return inst.componentWillMount(); -        }, debugID, 'componentWillMount'); -      } else { -        inst.componentWillMount(); -      } -      // When mounting, calls to `setState` by `componentWillMount` will set -      // `this._pendingStateQueue` without triggering a re-render. -      if (this._pendingStateQueue) { -        inst.state = this._processPendingState(inst.props, inst.context); -      } -    } - -    // If not a stateless component, we now render -    if (renderedElement === undefined) { -      renderedElement = this._renderValidatedComponent(); -    } - -    var nodeType = ReactNodeTypes.getType(renderedElement); -    this._renderedNodeType = nodeType; -    var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ -    ); -    this._renderedComponent = child; - -    var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID); - -    if (process.env.NODE_ENV !== 'production') { -      if (debugID !== 0) { -        var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; -        ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); -      } -    } - -    return markup; -  }, - -  getHostNode: function () { -    return ReactReconciler.getHostNode(this._renderedComponent); -  }, - -  /** -   * Releases any resources allocated by `mountComponent`. -   * -   * @final -   * @internal -   */ -  unmountComponent: function (safely) { -    if (!this._renderedComponent) { -      return; -    } - -    var inst = this._instance; - -    if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) { -      inst._calledComponentWillUnmount = true; - -      if (safely) { -        var name = this.getName() + '.componentWillUnmount()'; -        ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst)); -      } else { -        if (process.env.NODE_ENV !== 'production') { -          measureLifeCyclePerf(function () { -            return inst.componentWillUnmount(); -          }, this._debugID, 'componentWillUnmount'); -        } else { -          inst.componentWillUnmount(); -        } -      } -    } - -    if (this._renderedComponent) { -      ReactReconciler.unmountComponent(this._renderedComponent, safely); -      this._renderedNodeType = null; -      this._renderedComponent = null; -      this._instance = null; -    } - -    // Reset pending fields -    // Even if this component is scheduled for another update in ReactUpdates, -    // it would still be ignored because these fields are reset. -    this._pendingStateQueue = null; -    this._pendingReplaceState = false; -    this._pendingForceUpdate = false; -    this._pendingCallbacks = null; -    this._pendingElement = null; - -    // These fields do not really need to be reset since this object is no -    // longer accessible. -    this._context = null; -    this._rootNodeID = 0; -    this._topLevelWrapper = null; - -    // Delete the reference from the instance to this internal representation -    // which allow the internals to be properly cleaned up even if the user -    // leaks a reference to the public instance. -    ReactInstanceMap.remove(inst); - -    // Some existing components rely on inst.props even after they've been -    // destroyed (in event handlers). -    // TODO: inst.props = null; -    // TODO: inst.state = null; -    // TODO: inst.context = null; -  }, - -  /** -   * Filters the context object to only contain keys specified in -   * `contextTypes` -   * -   * @param {object} context -   * @return {?object} -   * @private -   */ -  _maskContext: function (context) { -    var Component = this._currentElement.type; -    var contextTypes = Component.contextTypes; -    if (!contextTypes) { -      return emptyObject; -    } -    var maskedContext = {}; -    for (var contextName in contextTypes) { -      maskedContext[contextName] = context[contextName]; -    } -    return maskedContext; -  }, - -  /** -   * Filters the context object to only contain keys specified in -   * `contextTypes`, and asserts that they are valid. -   * -   * @param {object} context -   * @return {?object} -   * @private -   */ -  _processContext: function (context) { -    var maskedContext = this._maskContext(context); -    if (process.env.NODE_ENV !== 'production') { -      var Component = this._currentElement.type; -      if (Component.contextTypes) { -        this._checkContextTypes(Component.contextTypes, maskedContext, 'context'); -      } -    } -    return maskedContext; -  }, - -  /** -   * @param {object} currentContext -   * @return {object} -   * @private -   */ -  _processChildContext: function (currentContext) { -    var Component = this._currentElement.type; -    var inst = this._instance; -    var childContext; - -    if (inst.getChildContext) { -      if (process.env.NODE_ENV !== 'production') { -        ReactInstrumentation.debugTool.onBeginProcessingChildContext(); -        try { -          childContext = inst.getChildContext(); -        } finally { -          ReactInstrumentation.debugTool.onEndProcessingChildContext(); -        } -      } else { -        childContext = inst.getChildContext(); -      } -    } - -    if (childContext) { -      !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0; -      if (process.env.NODE_ENV !== 'production') { -        this._checkContextTypes(Component.childContextTypes, childContext, 'child context'); -      } -      for (var name in childContext) { -        !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0; -      } -      return _assign({}, currentContext, childContext); -    } -    return currentContext; -  }, - -  /** -   * Assert that the context types are valid -   * -   * @param {object} typeSpecs Map of context field to a ReactPropType -   * @param {object} values Runtime values that need to be type-checked -   * @param {string} location e.g. "prop", "context", "child context" -   * @private -   */ -  _checkContextTypes: function (typeSpecs, values, location) { -    if (process.env.NODE_ENV !== 'production') { -      checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID); -    } -  }, - -  receiveComponent: function (nextElement, transaction, nextContext) { -    var prevElement = this._currentElement; -    var prevContext = this._context; - -    this._pendingElement = null; - -    this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext); -  }, - -  /** -   * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate` -   * is set, update the component. -   * -   * @param {ReactReconcileTransaction} transaction -   * @internal -   */ -  performUpdateIfNecessary: function (transaction) { -    if (this._pendingElement != null) { -      ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context); -    } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) { -      this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context); -    } else { -      this._updateBatchNumber = null; -    } -  }, - -  /** -   * Perform an update to a mounted component. The componentWillReceiveProps and -   * shouldComponentUpdate methods are called, then (assuming the update isn't -   * skipped) the remaining update lifecycle methods are called and the DOM -   * representation is updated. -   * -   * By default, this implements React's rendering and reconciliation algorithm. -   * Sophisticated clients may wish to override this. -   * -   * @param {ReactReconcileTransaction} transaction -   * @param {ReactElement} prevParentElement -   * @param {ReactElement} nextParentElement -   * @internal -   * @overridable -   */ -  updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) { -    var inst = this._instance; -    !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0; - -    var willReceive = false; -    var nextContext; - -    // Determine if the context has changed or not -    if (this._context === nextUnmaskedContext) { -      nextContext = inst.context; -    } else { -      nextContext = this._processContext(nextUnmaskedContext); -      willReceive = true; -    } - -    var prevProps = prevParentElement.props; -    var nextProps = nextParentElement.props; - -    // Not a simple state update but a props update -    if (prevParentElement !== nextParentElement) { -      willReceive = true; -    } - -    // An update here will schedule an update but immediately set -    // _pendingStateQueue which will ensure that any state updates gets -    // immediately reconciled instead of waiting for the next batch. -    if (willReceive && inst.componentWillReceiveProps) { -      if (process.env.NODE_ENV !== 'production') { -        measureLifeCyclePerf(function () { -          return inst.componentWillReceiveProps(nextProps, nextContext); -        }, this._debugID, 'componentWillReceiveProps'); -      } else { -        inst.componentWillReceiveProps(nextProps, nextContext); -      } -    } - -    var nextState = this._processPendingState(nextProps, nextContext); -    var shouldUpdate = true; - -    if (!this._pendingForceUpdate) { -      if (inst.shouldComponentUpdate) { -        if (process.env.NODE_ENV !== 'production') { -          shouldUpdate = measureLifeCyclePerf(function () { -            return inst.shouldComponentUpdate(nextProps, nextState, nextContext); -          }, this._debugID, 'shouldComponentUpdate'); -        } else { -          shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext); -        } -      } else { -        if (this._compositeType === CompositeTypes.PureClass) { -          shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState); -        } -      } -    } - -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0; -    } - -    this._updateBatchNumber = null; -    if (shouldUpdate) { -      this._pendingForceUpdate = false; -      // Will set `this.props`, `this.state` and `this.context`. -      this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext); -    } else { -      // If it's determined that a component should not update, we still want -      // to set props and state but we shortcut the rest of the update. -      this._currentElement = nextParentElement; -      this._context = nextUnmaskedContext; -      inst.props = nextProps; -      inst.state = nextState; -      inst.context = nextContext; -    } -  }, - -  _processPendingState: function (props, context) { -    var inst = this._instance; -    var queue = this._pendingStateQueue; -    var replace = this._pendingReplaceState; -    this._pendingReplaceState = false; -    this._pendingStateQueue = null; - -    if (!queue) { -      return inst.state; -    } - -    if (replace && queue.length === 1) { -      return queue[0]; -    } - -    var nextState = _assign({}, replace ? queue[0] : inst.state); -    for (var i = replace ? 1 : 0; i < queue.length; i++) { -      var partial = queue[i]; -      _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial); -    } - -    return nextState; -  }, - -  /** -   * Merges new props and state, notifies delegate methods of update and -   * performs update. -   * -   * @param {ReactElement} nextElement Next element -   * @param {object} nextProps Next public object to set as properties. -   * @param {?object} nextState Next object to set as state. -   * @param {?object} nextContext Next public object to set as context. -   * @param {ReactReconcileTransaction} transaction -   * @param {?object} unmaskedContext -   * @private -   */ -  _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) { -    var _this2 = this; - -    var inst = this._instance; - -    var hasComponentDidUpdate = Boolean(inst.componentDidUpdate); -    var prevProps; -    var prevState; -    var prevContext; -    if (hasComponentDidUpdate) { -      prevProps = inst.props; -      prevState = inst.state; -      prevContext = inst.context; -    } - -    if (inst.componentWillUpdate) { -      if (process.env.NODE_ENV !== 'production') { -        measureLifeCyclePerf(function () { -          return inst.componentWillUpdate(nextProps, nextState, nextContext); -        }, this._debugID, 'componentWillUpdate'); -      } else { -        inst.componentWillUpdate(nextProps, nextState, nextContext); -      } -    } - -    this._currentElement = nextElement; -    this._context = unmaskedContext; -    inst.props = nextProps; -    inst.state = nextState; -    inst.context = nextContext; - -    this._updateRenderedComponent(transaction, unmaskedContext); - -    if (hasComponentDidUpdate) { -      if (process.env.NODE_ENV !== 'production') { -        transaction.getReactMountReady().enqueue(function () { -          measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate'); -        }); -      } else { -        transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst); -      } -    } -  }, - -  /** -   * Call the component's `render` method and update the DOM accordingly. -   * -   * @param {ReactReconcileTransaction} transaction -   * @internal -   */ -  _updateRenderedComponent: function (transaction, context) { -    var prevComponentInstance = this._renderedComponent; -    var prevRenderedElement = prevComponentInstance._currentElement; -    var nextRenderedElement = this._renderValidatedComponent(); - -    var debugID = 0; -    if (process.env.NODE_ENV !== 'production') { -      debugID = this._debugID; -    } - -    if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) { -      ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context)); -    } else { -      var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance); -      ReactReconciler.unmountComponent(prevComponentInstance, false); - -      var nodeType = ReactNodeTypes.getType(nextRenderedElement); -      this._renderedNodeType = nodeType; -      var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ -      ); -      this._renderedComponent = child; - -      var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID); - -      if (process.env.NODE_ENV !== 'production') { -        if (debugID !== 0) { -          var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; -          ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); -        } -      } - -      this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance); -    } -  }, - -  /** -   * Overridden in shallow rendering. -   * -   * @protected -   */ -  _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) { -    ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance); -  }, - -  /** -   * @protected -   */ -  _renderValidatedComponentWithoutOwnerOrContext: function () { -    var inst = this._instance; -    var renderedElement; - -    if (process.env.NODE_ENV !== 'production') { -      renderedElement = measureLifeCyclePerf(function () { -        return inst.render(); -      }, this._debugID, 'render'); -    } else { -      renderedElement = inst.render(); -    } - -    if (process.env.NODE_ENV !== 'production') { -      // We allow auto-mocks to proceed as if they're returning null. -      if (renderedElement === undefined && inst.render._isMockFunction) { -        // This is probably bad practice. Consider warning here and -        // deprecating this convenience. -        renderedElement = null; -      } -    } - -    return renderedElement; -  }, - -  /** -   * @private -   */ -  _renderValidatedComponent: function () { -    var renderedElement; -    if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) { -      ReactCurrentOwner.current = this; -      try { -        renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); -      } finally { -        ReactCurrentOwner.current = null; -      } -    } else { -      renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); -    } -    !( -    // TODO: An `isValidNode` function would probably be more appropriate -    renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0; - -    return renderedElement; -  }, - -  /** -   * Lazily allocates the refs object and stores `component` as `ref`. -   * -   * @param {string} ref Reference name. -   * @param {component} component Component to store as `ref`. -   * @final -   * @private -   */ -  attachRef: function (ref, component) { -    var inst = this.getPublicInstance(); -    !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0; -    var publicComponentInstance = component.getPublicInstance(); -    if (process.env.NODE_ENV !== 'production') { -      var componentName = component && component.getName ? component.getName() : 'a component'; -      process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0; -    } -    var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; -    refs[ref] = publicComponentInstance; -  }, - -  /** -   * Detaches a reference name. -   * -   * @param {string} ref Name to dereference. -   * @final -   * @private -   */ -  detachRef: function (ref) { -    var refs = this.getPublicInstance().refs; -    delete refs[ref]; -  }, - -  /** -   * Get a text description of the component that can be used to identify it -   * in error messages. -   * @return {string} The name or null. -   * @internal -   */ -  getName: function () { -    var type = this._currentElement.type; -    var constructor = this._instance && this._instance.constructor; -    return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null; -  }, - -  /** -   * Get the publicly accessible representation of this component - i.e. what -   * is exposed by refs and returned by render. Can be null for stateless -   * components. -   * -   * @return {ReactComponent} the public component instance. -   * @internal -   */ -  getPublicInstance: function () { -    var inst = this._instance; -    if (this._compositeType === CompositeTypes.StatelessFunctional) { -      return null; -    } -    return inst; -  }, - -  // Stub -  _instantiateReactComponent: null -}; - -module.exports = ReactCompositeComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactCoroutine.js b/node_modules/react-dom/lib/ReactCoroutine.js deleted file mode 100644 index 728112633..000000000 --- a/node_modules/react-dom/lib/ReactCoroutine.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -// The Symbol used to tag the special React types. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. -var REACT_COROUTINE_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.coroutine') || 0xeac8; - -var REACT_YIELD_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.yield') || 0xeac9; - -exports.createCoroutine = function (children, handler, props) { -  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - -  var coroutine = { -    // This tag allow us to uniquely identify this as a React Coroutine -    $$typeof: REACT_COROUTINE_TYPE, -    key: key == null ? null : '' + key, -    children: children, -    handler: handler, -    props: props -  }; - -  if (process.env.NODE_ENV !== 'production') { -    // TODO: Add _store property for marking this as validated. -    if (Object.freeze) { -      Object.freeze(coroutine.props); -      Object.freeze(coroutine); -    } -  } - -  return coroutine; -}; - -exports.createYield = function (props, continuation) { -  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - -  var yieldNode = { -    // This tag allow us to uniquely identify this as a React Yield -    $$typeof: REACT_YIELD_TYPE, -    key: key == null ? null : '' + key, -    props: props, -    continuation: continuation -  }; - -  if (process.env.NODE_ENV !== 'production') { -    // TODO: Add _store property for marking this as validated. -    if (Object.freeze) { -      Object.freeze(yieldNode.props); -      Object.freeze(yieldNode); -    } -  } - -  return yieldNode; -}; - -/** - * Verifies the object is a coroutine object. - */ -exports.isCoroutine = function (object) { -  return typeof object === 'object' && object !== null && object.$$typeof === REACT_COROUTINE_TYPE; -}; - -/** - * Verifies the object is a yield object. - */ -exports.isYield = function (object) { -  return typeof object === 'object' && object !== null && object.$$typeof === REACT_YIELD_TYPE; -}; - -exports.REACT_YIELD_TYPE = REACT_YIELD_TYPE; -exports.REACT_COROUTINE_TYPE = REACT_COROUTINE_TYPE;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOM.js b/node_modules/react-dom/lib/ReactDOM.js deleted file mode 100644 index 22384bbb0..000000000 --- a/node_modules/react-dom/lib/ReactDOM.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ - -'use strict'; - -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactDefaultInjection = require('./ReactDefaultInjection'); -var ReactMount = require('./ReactMount'); -var ReactReconciler = require('./ReactReconciler'); -var ReactUpdates = require('./ReactUpdates'); -var ReactVersion = require('./ReactVersion'); - -var findDOMNode = require('./findDOMNode'); -var getHostComponentFromComposite = require('./getHostComponentFromComposite'); -var renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer'); -var warning = require('fbjs/lib/warning'); - -ReactDefaultInjection.inject(); - -var ReactDOM = { -  findDOMNode: findDOMNode, -  render: ReactMount.render, -  unmountComponentAtNode: ReactMount.unmountComponentAtNode, -  version: ReactVersion, - -  /* eslint-disable camelcase */ -  unstable_batchedUpdates: ReactUpdates.batchedUpdates, -  unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer -  /* eslint-enable camelcase */ -}; - -// Inject the runtime into a devtools global hook regardless of browser. -// Allows for debugging when the hook is injected on the page. -if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { -  __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ -    ComponentTree: { -      getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode, -      getNodeFromInstance: function (inst) { -        // inst is an internal instance (but could be a composite) -        if (inst._renderedComponent) { -          inst = getHostComponentFromComposite(inst); -        } -        if (inst) { -          return ReactDOMComponentTree.getNodeFromInstance(inst); -        } else { -          return null; -        } -      } -    }, -    Mount: ReactMount, -    Reconciler: ReactReconciler -  }); -} - -if (process.env.NODE_ENV !== 'production') { -  var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -  if (ExecutionEnvironment.canUseDOM && window.top === window.self) { -    // First check if devtools is not installed -    if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { -      // If we're in Chrome or Firefox, provide a download link if not installed. -      if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { -        // Firefox does not have the issue with devtools loaded over file:// -        var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1; -        console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools'); -      } -    } - -    var testFunc = function testFn() {}; -    process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, "It looks like you're using a minified copy of the development build " + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0; - -    // If we're in IE8, check to see if we are in compatibility mode and provide -    // information on preventing compatibility mode -    var ieCompatibilityMode = document.documentMode && document.documentMode < 8; - -    process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv="X-UA-Compatible" content="IE=edge" />') : void 0; - -    var expectedFeatures = [ -    // shims -    Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim]; - -    for (var i = 0; i < expectedFeatures.length; i++) { -      if (!expectedFeatures[i]) { -        process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0; -        break; -      } -    } -  } -} - -if (process.env.NODE_ENV !== 'production') { -  var ReactInstrumentation = require('./ReactInstrumentation'); -  var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook'); -  var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook'); -  var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook'); - -  ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); -  ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); -  ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook); -} - -module.exports = ReactDOM;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMComponent.js b/node_modules/react-dom/lib/ReactDOMComponent.js deleted file mode 100644 index 7306071f6..000000000 --- a/node_modules/react-dom/lib/ReactDOMComponent.js +++ /dev/null @@ -1,1009 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -/* global hasOwnProperty:true */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var AutoFocusUtils = require('./AutoFocusUtils'); -var CSSPropertyOperations = require('./CSSPropertyOperations'); -var DOMLazyTree = require('./DOMLazyTree'); -var DOMNamespaces = require('./DOMNamespaces'); -var DOMProperty = require('./DOMProperty'); -var DOMPropertyOperations = require('./DOMPropertyOperations'); -var EventPluginHub = require('./EventPluginHub'); -var EventPluginRegistry = require('./EventPluginRegistry'); -var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter'); -var ReactDOMComponentFlags = require('./ReactDOMComponentFlags'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactDOMInput = require('./ReactDOMInput'); -var ReactDOMOption = require('./ReactDOMOption'); -var ReactDOMSelect = require('./ReactDOMSelect'); -var ReactDOMTextarea = require('./ReactDOMTextarea'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactMultiChild = require('./ReactMultiChild'); -var ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); -var escapeTextContentForBrowser = require('./escapeTextContentForBrowser'); -var invariant = require('fbjs/lib/invariant'); -var isEventSupported = require('./isEventSupported'); -var shallowEqual = require('fbjs/lib/shallowEqual'); -var inputValueTracking = require('./inputValueTracking'); -var validateDOMNesting = require('./validateDOMNesting'); -var warning = require('fbjs/lib/warning'); - -var Flags = ReactDOMComponentFlags; -var deleteListener = EventPluginHub.deleteListener; -var getNode = ReactDOMComponentTree.getNodeFromInstance; -var listenTo = ReactBrowserEventEmitter.listenTo; -var registrationNameModules = EventPluginRegistry.registrationNameModules; - -// For quickly matching children type, to test if can be treated as content. -var CONTENT_TYPES = { string: true, number: true }; - -var STYLE = 'style'; -var HTML = '__html'; -var RESERVED_PROPS = { -  children: null, -  dangerouslySetInnerHTML: null, -  suppressContentEditableWarning: null -}; - -// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE). -var DOC_FRAGMENT_TYPE = 11; - -function getDeclarationErrorAddendum(internalInstance) { -  if (internalInstance) { -    var owner = internalInstance._currentElement._owner || null; -    if (owner) { -      var name = owner.getName(); -      if (name) { -        return ' This DOM node was rendered by `' + name + '`.'; -      } -    } -  } -  return ''; -} - -function friendlyStringify(obj) { -  if (typeof obj === 'object') { -    if (Array.isArray(obj)) { -      return '[' + obj.map(friendlyStringify).join(', ') + ']'; -    } else { -      var pairs = []; -      for (var key in obj) { -        if (Object.prototype.hasOwnProperty.call(obj, key)) { -          var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key); -          pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key])); -        } -      } -      return '{' + pairs.join(', ') + '}'; -    } -  } else if (typeof obj === 'string') { -    return JSON.stringify(obj); -  } else if (typeof obj === 'function') { -    return '[function object]'; -  } -  // Differs from JSON.stringify in that undefined because undefined and that -  // inf and nan don't become null -  return String(obj); -} - -var styleMutationWarning = {}; - -function checkAndWarnForMutatedStyle(style1, style2, component) { -  if (style1 == null || style2 == null) { -    return; -  } -  if (shallowEqual(style1, style2)) { -    return; -  } - -  var componentName = component._tag; -  var owner = component._currentElement._owner; -  var ownerName; -  if (owner) { -    ownerName = owner.getName(); -  } - -  var hash = ownerName + '|' + componentName; - -  if (styleMutationWarning.hasOwnProperty(hash)) { -    return; -  } - -  styleMutationWarning[hash] = true; - -  process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0; -} - -/** - * @param {object} component - * @param {?object} props - */ -function assertValidProps(component, props) { -  if (!props) { -    return; -  } -  // Note the use of `==` which checks for null or undefined. -  if (voidElementTags[component._tag]) { -    !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0; -  } -  if (props.dangerouslySetInnerHTML != null) { -    !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0; -    !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0; -  } -  if (process.env.NODE_ENV !== 'production') { -    process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0; -    process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0; -    process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0; -  } -  !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0; -} - -function enqueuePutListener(inst, registrationName, listener, transaction) { -  if (transaction instanceof ReactServerRenderingTransaction) { -    return; -  } -  if (process.env.NODE_ENV !== 'production') { -    // IE8 has no API for event capturing and the `onScroll` event doesn't -    // bubble. -    process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), "This browser doesn't support the `onScroll` event") : void 0; -  } -  var containerInfo = inst._hostContainerInfo; -  var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE; -  var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument; -  listenTo(registrationName, doc); -  transaction.getReactMountReady().enqueue(putListener, { -    inst: inst, -    registrationName: registrationName, -    listener: listener -  }); -} - -function putListener() { -  var listenerToPut = this; -  EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener); -} - -function inputPostMount() { -  var inst = this; -  ReactDOMInput.postMountWrapper(inst); -} - -function textareaPostMount() { -  var inst = this; -  ReactDOMTextarea.postMountWrapper(inst); -} - -function optionPostMount() { -  var inst = this; -  ReactDOMOption.postMountWrapper(inst); -} - -var setAndValidateContentChildDev = emptyFunction; -if (process.env.NODE_ENV !== 'production') { -  setAndValidateContentChildDev = function (content) { -    var hasExistingContent = this._contentDebugID != null; -    var debugID = this._debugID; -    // This ID represents the inlined child that has no backing instance: -    var contentDebugID = -debugID; - -    if (content == null) { -      if (hasExistingContent) { -        ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID); -      } -      this._contentDebugID = null; -      return; -    } - -    validateDOMNesting(null, String(content), this, this._ancestorInfo); -    this._contentDebugID = contentDebugID; -    if (hasExistingContent) { -      ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content); -      ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID); -    } else { -      ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID); -      ReactInstrumentation.debugTool.onMountComponent(contentDebugID); -      ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]); -    } -  }; -} - -// There are so many media events, it makes sense to just -// maintain a list rather than create a `trapBubbledEvent` for each -var mediaEvents = { -  topAbort: 'abort', -  topCanPlay: 'canplay', -  topCanPlayThrough: 'canplaythrough', -  topDurationChange: 'durationchange', -  topEmptied: 'emptied', -  topEncrypted: 'encrypted', -  topEnded: 'ended', -  topError: 'error', -  topLoadedData: 'loadeddata', -  topLoadedMetadata: 'loadedmetadata', -  topLoadStart: 'loadstart', -  topPause: 'pause', -  topPlay: 'play', -  topPlaying: 'playing', -  topProgress: 'progress', -  topRateChange: 'ratechange', -  topSeeked: 'seeked', -  topSeeking: 'seeking', -  topStalled: 'stalled', -  topSuspend: 'suspend', -  topTimeUpdate: 'timeupdate', -  topVolumeChange: 'volumechange', -  topWaiting: 'waiting' -}; - -function trackInputValue() { -  inputValueTracking.track(this); -} - -function trapBubbledEventsLocal() { -  var inst = this; -  // If a component renders to null or if another component fatals and causes -  // the state of the tree to be corrupted, `node` here can be null. -  !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0; -  var node = getNode(inst); -  !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0; - -  switch (inst._tag) { -    case 'iframe': -    case 'object': -      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; -      break; -    case 'video': -    case 'audio': -      inst._wrapperState.listeners = []; -      // Create listener for each media event -      for (var event in mediaEvents) { -        if (mediaEvents.hasOwnProperty(event)) { -          inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node)); -        } -      } -      break; -    case 'source': -      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)]; -      break; -    case 'img': -      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; -      break; -    case 'form': -      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)]; -      break; -    case 'input': -    case 'select': -    case 'textarea': -      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)]; -      break; -  } -} - -function postUpdateSelectWrapper() { -  ReactDOMSelect.postUpdateWrapper(this); -} - -// For HTML, certain tags should omit their close tag. We keep a whitelist for -// those special-case tags. - -var omittedCloseTags = { -  area: true, -  base: true, -  br: true, -  col: true, -  embed: true, -  hr: true, -  img: true, -  input: true, -  keygen: true, -  link: true, -  meta: true, -  param: true, -  source: true, -  track: true, -  wbr: true -  // NOTE: menuitem's close tag should be omitted, but that causes problems. -}; - -var newlineEatingTags = { -  listing: true, -  pre: true, -  textarea: true -}; - -// For HTML, certain tags cannot have children. This has the same purpose as -// `omittedCloseTags` except that `menuitem` should still have its closing tag. - -var voidElementTags = _assign({ -  menuitem: true -}, omittedCloseTags); - -// We accept any tag to be rendered but since this gets injected into arbitrary -// HTML, we want to make sure that it's a safe tag. -// http://www.w3.org/TR/REC-xml/#NT-Name - -var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset -var validatedTagCache = {}; -var hasOwnProperty = {}.hasOwnProperty; - -function validateDangerousTag(tag) { -  if (!hasOwnProperty.call(validatedTagCache, tag)) { -    !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0; -    validatedTagCache[tag] = true; -  } -} - -function isCustomComponent(tagName, props) { -  return tagName.indexOf('-') >= 0 || props.is != null; -} - -var globalIdCounter = 1; - -/** - * Creates a new React class that is idempotent and capable of containing other - * React components. It accepts event listeners and DOM properties that are - * valid according to `DOMProperty`. - * - *  - Event listeners: `onClick`, `onMouseDown`, etc. - *  - DOM properties: `className`, `name`, `title`, etc. - * - * The `style` property functions differently from the DOM API. It accepts an - * object mapping of style properties to values. - * - * @constructor ReactDOMComponent - * @extends ReactMultiChild - */ -function ReactDOMComponent(element) { -  var tag = element.type; -  validateDangerousTag(tag); -  this._currentElement = element; -  this._tag = tag.toLowerCase(); -  this._namespaceURI = null; -  this._renderedChildren = null; -  this._previousStyle = null; -  this._previousStyleCopy = null; -  this._hostNode = null; -  this._hostParent = null; -  this._rootNodeID = 0; -  this._domID = 0; -  this._hostContainerInfo = null; -  this._wrapperState = null; -  this._topLevelWrapper = null; -  this._flags = 0; -  if (process.env.NODE_ENV !== 'production') { -    this._ancestorInfo = null; -    setAndValidateContentChildDev.call(this, null); -  } -} - -ReactDOMComponent.displayName = 'ReactDOMComponent'; - -ReactDOMComponent.Mixin = { -  /** -   * Generates root tag markup then recurses. This method has side effects and -   * is not idempotent. -   * -   * @internal -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {?ReactDOMComponent} the parent component instance -   * @param {?object} info about the host container -   * @param {object} context -   * @return {string} The computed markup. -   */ -  mountComponent: function (transaction, hostParent, hostContainerInfo, context) { -    this._rootNodeID = globalIdCounter++; -    this._domID = hostContainerInfo._idCounter++; -    this._hostParent = hostParent; -    this._hostContainerInfo = hostContainerInfo; - -    var props = this._currentElement.props; - -    switch (this._tag) { -      case 'audio': -      case 'form': -      case 'iframe': -      case 'img': -      case 'link': -      case 'object': -      case 'source': -      case 'video': -        this._wrapperState = { -          listeners: null -        }; -        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); -        break; -      case 'input': -        ReactDOMInput.mountWrapper(this, props, hostParent); -        props = ReactDOMInput.getHostProps(this, props); -        transaction.getReactMountReady().enqueue(trackInputValue, this); -        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); -        break; -      case 'option': -        ReactDOMOption.mountWrapper(this, props, hostParent); -        props = ReactDOMOption.getHostProps(this, props); -        break; -      case 'select': -        ReactDOMSelect.mountWrapper(this, props, hostParent); -        props = ReactDOMSelect.getHostProps(this, props); -        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); -        break; -      case 'textarea': -        ReactDOMTextarea.mountWrapper(this, props, hostParent); -        props = ReactDOMTextarea.getHostProps(this, props); -        transaction.getReactMountReady().enqueue(trackInputValue, this); -        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); -        break; -    } - -    assertValidProps(this, props); - -    // We create tags in the namespace of their parent container, except HTML -    // tags get no namespace. -    var namespaceURI; -    var parentTag; -    if (hostParent != null) { -      namespaceURI = hostParent._namespaceURI; -      parentTag = hostParent._tag; -    } else if (hostContainerInfo._tag) { -      namespaceURI = hostContainerInfo._namespaceURI; -      parentTag = hostContainerInfo._tag; -    } -    if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') { -      namespaceURI = DOMNamespaces.html; -    } -    if (namespaceURI === DOMNamespaces.html) { -      if (this._tag === 'svg') { -        namespaceURI = DOMNamespaces.svg; -      } else if (this._tag === 'math') { -        namespaceURI = DOMNamespaces.mathml; -      } -    } -    this._namespaceURI = namespaceURI; - -    if (process.env.NODE_ENV !== 'production') { -      var parentInfo; -      if (hostParent != null) { -        parentInfo = hostParent._ancestorInfo; -      } else if (hostContainerInfo._tag) { -        parentInfo = hostContainerInfo._ancestorInfo; -      } -      if (parentInfo) { -        // parentInfo should always be present except for the top-level -        // component when server rendering -        validateDOMNesting(this._tag, null, this, parentInfo); -      } -      this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this); -    } - -    var mountImage; -    if (transaction.useCreateElement) { -      var ownerDocument = hostContainerInfo._ownerDocument; -      var el; -      if (namespaceURI === DOMNamespaces.html) { -        if (this._tag === 'script') { -          // Create the script via .innerHTML so its "parser-inserted" flag is -          // set to true and it does not execute -          var div = ownerDocument.createElement('div'); -          var type = this._currentElement.type; -          div.innerHTML = '<' + type + '></' + type + '>'; -          el = div.removeChild(div.firstChild); -        } else if (props.is) { -          el = ownerDocument.createElement(this._currentElement.type, props.is); -        } else { -          // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug. -          // See discussion in https://github.com/facebook/react/pull/6896 -          // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240 -          el = ownerDocument.createElement(this._currentElement.type); -        } -      } else { -        el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type); -      } -      ReactDOMComponentTree.precacheNode(this, el); -      this._flags |= Flags.hasCachedChildNodes; -      if (!this._hostParent) { -        DOMPropertyOperations.setAttributeForRoot(el); -      } -      this._updateDOMProperties(null, props, transaction); -      var lazyTree = DOMLazyTree(el); -      this._createInitialChildren(transaction, props, context, lazyTree); -      mountImage = lazyTree; -    } else { -      var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props); -      var tagContent = this._createContentMarkup(transaction, props, context); -      if (!tagContent && omittedCloseTags[this._tag]) { -        mountImage = tagOpen + '/>'; -      } else { -        mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>'; -      } -    } - -    switch (this._tag) { -      case 'input': -        transaction.getReactMountReady().enqueue(inputPostMount, this); -        if (props.autoFocus) { -          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); -        } -        break; -      case 'textarea': -        transaction.getReactMountReady().enqueue(textareaPostMount, this); -        if (props.autoFocus) { -          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); -        } -        break; -      case 'select': -        if (props.autoFocus) { -          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); -        } -        break; -      case 'button': -        if (props.autoFocus) { -          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); -        } -        break; -      case 'option': -        transaction.getReactMountReady().enqueue(optionPostMount, this); -        break; -    } - -    return mountImage; -  }, - -  /** -   * Creates markup for the open tag and all attributes. -   * -   * This method has side effects because events get registered. -   * -   * Iterating over object properties is faster than iterating over arrays. -   * @see http://jsperf.com/obj-vs-arr-iteration -   * -   * @private -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {object} props -   * @return {string} Markup of opening tag. -   */ -  _createOpenTagMarkupAndPutListeners: function (transaction, props) { -    var ret = '<' + this._currentElement.type; - -    for (var propKey in props) { -      if (!props.hasOwnProperty(propKey)) { -        continue; -      } -      var propValue = props[propKey]; -      if (propValue == null) { -        continue; -      } -      if (registrationNameModules.hasOwnProperty(propKey)) { -        if (propValue) { -          enqueuePutListener(this, propKey, propValue, transaction); -        } -      } else { -        if (propKey === STYLE) { -          if (propValue) { -            if (process.env.NODE_ENV !== 'production') { -              // See `_updateDOMProperties`. style block -              this._previousStyle = propValue; -            } -            propValue = this._previousStyleCopy = _assign({}, props.style); -          } -          propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this); -        } -        var markup = null; -        if (this._tag != null && isCustomComponent(this._tag, props)) { -          if (!RESERVED_PROPS.hasOwnProperty(propKey)) { -            markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue); -          } -        } else { -          markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue); -        } -        if (markup) { -          ret += ' ' + markup; -        } -      } -    } - -    // For static pages, no need to put React ID and checksum. Saves lots of -    // bytes. -    if (transaction.renderToStaticMarkup) { -      return ret; -    } - -    if (!this._hostParent) { -      ret += ' ' + DOMPropertyOperations.createMarkupForRoot(); -    } -    ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID); -    return ret; -  }, - -  /** -   * Creates markup for the content between the tags. -   * -   * @private -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {object} props -   * @param {object} context -   * @return {string} Content markup. -   */ -  _createContentMarkup: function (transaction, props, context) { -    var ret = ''; - -    // Intentional use of != to avoid catching zero/false. -    var innerHTML = props.dangerouslySetInnerHTML; -    if (innerHTML != null) { -      if (innerHTML.__html != null) { -        ret = innerHTML.__html; -      } -    } else { -      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; -      var childrenToUse = contentToUse != null ? null : props.children; -      if (contentToUse != null) { -        // TODO: Validate that text is allowed as a child of this node -        ret = escapeTextContentForBrowser(contentToUse); -        if (process.env.NODE_ENV !== 'production') { -          setAndValidateContentChildDev.call(this, contentToUse); -        } -      } else if (childrenToUse != null) { -        var mountImages = this.mountChildren(childrenToUse, transaction, context); -        ret = mountImages.join(''); -      } -    } -    if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') { -      // text/html ignores the first character in these tags if it's a newline -      // Prefer to break application/xml over text/html (for now) by adding -      // a newline specifically to get eaten by the parser. (Alternately for -      // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first -      // \r is normalized out by HTMLTextAreaElement#value.) -      // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre> -      // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions> -      // See: <http://www.w3.org/TR/html5/syntax.html#newlines> -      // See: Parsing of "textarea" "listing" and "pre" elements -      //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody> -      return '\n' + ret; -    } else { -      return ret; -    } -  }, - -  _createInitialChildren: function (transaction, props, context, lazyTree) { -    // Intentional use of != to avoid catching zero/false. -    var innerHTML = props.dangerouslySetInnerHTML; -    if (innerHTML != null) { -      if (innerHTML.__html != null) { -        DOMLazyTree.queueHTML(lazyTree, innerHTML.__html); -      } -    } else { -      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; -      var childrenToUse = contentToUse != null ? null : props.children; -      // TODO: Validate that text is allowed as a child of this node -      if (contentToUse != null) { -        // Avoid setting textContent when the text is empty. In IE11 setting -        // textContent on a text area will cause the placeholder to not -        // show within the textarea until it has been focused and blurred again. -        // https://github.com/facebook/react/issues/6731#issuecomment-254874553 -        if (contentToUse !== '') { -          if (process.env.NODE_ENV !== 'production') { -            setAndValidateContentChildDev.call(this, contentToUse); -          } -          DOMLazyTree.queueText(lazyTree, contentToUse); -        } -      } else if (childrenToUse != null) { -        var mountImages = this.mountChildren(childrenToUse, transaction, context); -        for (var i = 0; i < mountImages.length; i++) { -          DOMLazyTree.queueChild(lazyTree, mountImages[i]); -        } -      } -    } -  }, - -  /** -   * Receives a next element and updates the component. -   * -   * @internal -   * @param {ReactElement} nextElement -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {object} context -   */ -  receiveComponent: function (nextElement, transaction, context) { -    var prevElement = this._currentElement; -    this._currentElement = nextElement; -    this.updateComponent(transaction, prevElement, nextElement, context); -  }, - -  /** -   * Updates a DOM component after it has already been allocated and -   * attached to the DOM. Reconciles the root DOM node, then recurses. -   * -   * @param {ReactReconcileTransaction} transaction -   * @param {ReactElement} prevElement -   * @param {ReactElement} nextElement -   * @internal -   * @overridable -   */ -  updateComponent: function (transaction, prevElement, nextElement, context) { -    var lastProps = prevElement.props; -    var nextProps = this._currentElement.props; - -    switch (this._tag) { -      case 'input': -        lastProps = ReactDOMInput.getHostProps(this, lastProps); -        nextProps = ReactDOMInput.getHostProps(this, nextProps); -        break; -      case 'option': -        lastProps = ReactDOMOption.getHostProps(this, lastProps); -        nextProps = ReactDOMOption.getHostProps(this, nextProps); -        break; -      case 'select': -        lastProps = ReactDOMSelect.getHostProps(this, lastProps); -        nextProps = ReactDOMSelect.getHostProps(this, nextProps); -        break; -      case 'textarea': -        lastProps = ReactDOMTextarea.getHostProps(this, lastProps); -        nextProps = ReactDOMTextarea.getHostProps(this, nextProps); -        break; -    } - -    assertValidProps(this, nextProps); -    this._updateDOMProperties(lastProps, nextProps, transaction); -    this._updateDOMChildren(lastProps, nextProps, transaction, context); - -    switch (this._tag) { -      case 'input': -        // Update the wrapper around inputs *after* updating props. This has to -        // happen after `_updateDOMProperties`. Otherwise HTML5 input validations -        // raise warnings and prevent the new value from being assigned. -        ReactDOMInput.updateWrapper(this); -        break; -      case 'textarea': -        ReactDOMTextarea.updateWrapper(this); -        break; -      case 'select': -        // <select> value update needs to occur after <option> children -        // reconciliation -        transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this); -        break; -    } -  }, - -  /** -   * Reconciles the properties by detecting differences in property values and -   * updating the DOM as necessary. This function is probably the single most -   * critical path for performance optimization. -   * -   * TODO: Benchmark whether checking for changed values in memory actually -   *       improves performance (especially statically positioned elements). -   * TODO: Benchmark the effects of putting this at the top since 99% of props -   *       do not change for a given reconciliation. -   * TODO: Benchmark areas that can be improved with caching. -   * -   * @private -   * @param {object} lastProps -   * @param {object} nextProps -   * @param {?DOMElement} node -   */ -  _updateDOMProperties: function (lastProps, nextProps, transaction) { -    var propKey; -    var styleName; -    var styleUpdates; -    for (propKey in lastProps) { -      if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) { -        continue; -      } -      if (propKey === STYLE) { -        var lastStyle = this._previousStyleCopy; -        for (styleName in lastStyle) { -          if (lastStyle.hasOwnProperty(styleName)) { -            styleUpdates = styleUpdates || {}; -            styleUpdates[styleName] = ''; -          } -        } -        this._previousStyleCopy = null; -      } else if (registrationNameModules.hasOwnProperty(propKey)) { -        if (lastProps[propKey]) { -          // Only call deleteListener if there was a listener previously or -          // else willDeleteListener gets called when there wasn't actually a -          // listener (e.g., onClick={null}) -          deleteListener(this, propKey); -        } -      } else if (isCustomComponent(this._tag, lastProps)) { -        if (!RESERVED_PROPS.hasOwnProperty(propKey)) { -          DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey); -        } -      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { -        DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey); -      } -    } -    for (propKey in nextProps) { -      var nextProp = nextProps[propKey]; -      var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined; -      if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) { -        continue; -      } -      if (propKey === STYLE) { -        if (nextProp) { -          if (process.env.NODE_ENV !== 'production') { -            checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this); -            this._previousStyle = nextProp; -          } -          nextProp = this._previousStyleCopy = _assign({}, nextProp); -        } else { -          this._previousStyleCopy = null; -        } -        if (lastProp) { -          // Unset styles on `lastProp` but not on `nextProp`. -          for (styleName in lastProp) { -            if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) { -              styleUpdates = styleUpdates || {}; -              styleUpdates[styleName] = ''; -            } -          } -          // Update styles that changed since `lastProp`. -          for (styleName in nextProp) { -            if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) { -              styleUpdates = styleUpdates || {}; -              styleUpdates[styleName] = nextProp[styleName]; -            } -          } -        } else { -          // Relies on `updateStylesByID` not mutating `styleUpdates`. -          styleUpdates = nextProp; -        } -      } else if (registrationNameModules.hasOwnProperty(propKey)) { -        if (nextProp) { -          enqueuePutListener(this, propKey, nextProp, transaction); -        } else if (lastProp) { -          deleteListener(this, propKey); -        } -      } else if (isCustomComponent(this._tag, nextProps)) { -        if (!RESERVED_PROPS.hasOwnProperty(propKey)) { -          DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp); -        } -      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { -        var node = getNode(this); -        // If we're updating to null or undefined, we should remove the property -        // from the DOM node instead of inadvertently setting to a string. This -        // brings us in line with the same behavior we have on initial render. -        if (nextProp != null) { -          DOMPropertyOperations.setValueForProperty(node, propKey, nextProp); -        } else { -          DOMPropertyOperations.deleteValueForProperty(node, propKey); -        } -      } -    } -    if (styleUpdates) { -      CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this); -    } -  }, - -  /** -   * Reconciles the children with the various properties that affect the -   * children content. -   * -   * @param {object} lastProps -   * @param {object} nextProps -   * @param {ReactReconcileTransaction} transaction -   * @param {object} context -   */ -  _updateDOMChildren: function (lastProps, nextProps, transaction, context) { -    var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null; -    var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null; - -    var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html; -    var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html; - -    // Note the use of `!=` which checks for null or undefined. -    var lastChildren = lastContent != null ? null : lastProps.children; -    var nextChildren = nextContent != null ? null : nextProps.children; - -    // If we're switching from children to content/html or vice versa, remove -    // the old content -    var lastHasContentOrHtml = lastContent != null || lastHtml != null; -    var nextHasContentOrHtml = nextContent != null || nextHtml != null; -    if (lastChildren != null && nextChildren == null) { -      this.updateChildren(null, transaction, context); -    } else if (lastHasContentOrHtml && !nextHasContentOrHtml) { -      this.updateTextContent(''); -      if (process.env.NODE_ENV !== 'production') { -        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); -      } -    } - -    if (nextContent != null) { -      if (lastContent !== nextContent) { -        this.updateTextContent('' + nextContent); -        if (process.env.NODE_ENV !== 'production') { -          setAndValidateContentChildDev.call(this, nextContent); -        } -      } -    } else if (nextHtml != null) { -      if (lastHtml !== nextHtml) { -        this.updateMarkup('' + nextHtml); -      } -      if (process.env.NODE_ENV !== 'production') { -        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); -      } -    } else if (nextChildren != null) { -      if (process.env.NODE_ENV !== 'production') { -        setAndValidateContentChildDev.call(this, null); -      } - -      this.updateChildren(nextChildren, transaction, context); -    } -  }, - -  getHostNode: function () { -    return getNode(this); -  }, - -  /** -   * Destroys all event registrations for this instance. Does not remove from -   * the DOM. That must be done by the parent. -   * -   * @internal -   */ -  unmountComponent: function (safely) { -    switch (this._tag) { -      case 'audio': -      case 'form': -      case 'iframe': -      case 'img': -      case 'link': -      case 'object': -      case 'source': -      case 'video': -        var listeners = this._wrapperState.listeners; -        if (listeners) { -          for (var i = 0; i < listeners.length; i++) { -            listeners[i].remove(); -          } -        } -        break; -      case 'input': -      case 'textarea': -        inputValueTracking.stopTracking(this); -        break; -      case 'html': -      case 'head': -      case 'body': -        /** -         * Components like <html> <head> and <body> can't be removed or added -         * easily in a cross-browser way, however it's valuable to be able to -         * take advantage of React's reconciliation for styling and <title> -         * management. So we just document it and throw in dangerous cases. -         */ -        !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0; -        break; -    } - -    this.unmountChildren(safely); -    ReactDOMComponentTree.uncacheNode(this); -    EventPluginHub.deleteAllListeners(this); -    this._rootNodeID = 0; -    this._domID = 0; -    this._wrapperState = null; - -    if (process.env.NODE_ENV !== 'production') { -      setAndValidateContentChildDev.call(this, null); -    } -  }, - -  getPublicInstance: function () { -    return getNode(this); -  } -}; - -_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin); - -module.exports = ReactDOMComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMComponentFlags.js b/node_modules/react-dom/lib/ReactDOMComponentFlags.js deleted file mode 100644 index 84f2d1994..000000000 --- a/node_modules/react-dom/lib/ReactDOMComponentFlags.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMComponentFlags = { -  hasCachedChildNodes: 1 << 0 -}; - -module.exports = ReactDOMComponentFlags;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMComponentTree.js b/node_modules/react-dom/lib/ReactDOMComponentTree.js deleted file mode 100644 index 2b34ddf73..000000000 --- a/node_modules/react-dom/lib/ReactDOMComponentTree.js +++ /dev/null @@ -1,194 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var DOMProperty = require('./DOMProperty'); -var ReactDOMComponentFlags = require('./ReactDOMComponentFlags'); - -var invariant = require('fbjs/lib/invariant'); - -var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; -var Flags = ReactDOMComponentFlags; - -var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2); - -/** - * Check if a given node should be cached. - */ -function shouldPrecacheNode(node, nodeID) { -  return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' '; -} - -/** - * Drill down (through composites and empty components) until we get a host or - * host text component. - * - * This is pretty polymorphic but unavoidable with the current structure we have - * for `_renderedChildren`. - */ -function getRenderedHostOrTextFromComponent(component) { -  var rendered; -  while (rendered = component._renderedComponent) { -    component = rendered; -  } -  return component; -} - -/** - * Populate `_hostNode` on the rendered host/text component with the given - * DOM node. The passed `inst` can be a composite. - */ -function precacheNode(inst, node) { -  var hostInst = getRenderedHostOrTextFromComponent(inst); -  hostInst._hostNode = node; -  node[internalInstanceKey] = hostInst; -} - -function uncacheNode(inst) { -  var node = inst._hostNode; -  if (node) { -    delete node[internalInstanceKey]; -    inst._hostNode = null; -  } -} - -/** - * Populate `_hostNode` on each child of `inst`, assuming that the children - * match up with the DOM (element) children of `node`. - * - * We cache entire levels at once to avoid an n^2 problem where we access the - * children of a node sequentially and have to walk from the start to our target - * node every time. - * - * Since we update `_renderedChildren` and the actual DOM at (slightly) - * different times, we could race here and see a newer `_renderedChildren` than - * the DOM nodes we see. To avoid this, ReactMultiChild calls - * `prepareToManageChildren` before we change `_renderedChildren`, at which - * time the container's child nodes are always cached (until it unmounts). - */ -function precacheChildNodes(inst, node) { -  if (inst._flags & Flags.hasCachedChildNodes) { -    return; -  } -  var children = inst._renderedChildren; -  var childNode = node.firstChild; -  outer: for (var name in children) { -    if (!children.hasOwnProperty(name)) { -      continue; -    } -    var childInst = children[name]; -    var childID = getRenderedHostOrTextFromComponent(childInst)._domID; -    if (childID === 0) { -      // We're currently unmounting this child in ReactMultiChild; skip it. -      continue; -    } -    // We assume the child nodes are in the same order as the child instances. -    for (; childNode !== null; childNode = childNode.nextSibling) { -      if (shouldPrecacheNode(childNode, childID)) { -        precacheNode(childInst, childNode); -        continue outer; -      } -    } -    // We reached the end of the DOM children without finding an ID match. -    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0; -  } -  inst._flags |= Flags.hasCachedChildNodes; -} - -/** - * Given a DOM node, return the closest ReactDOMComponent or - * ReactDOMTextComponent instance ancestor. - */ -function getClosestInstanceFromNode(node) { -  if (node[internalInstanceKey]) { -    return node[internalInstanceKey]; -  } - -  // Walk up the tree until we find an ancestor whose instance we have cached. -  var parents = []; -  while (!node[internalInstanceKey]) { -    parents.push(node); -    if (node.parentNode) { -      node = node.parentNode; -    } else { -      // Top of the tree. This node must not be part of a React tree (or is -      // unmounted, potentially). -      return null; -    } -  } - -  var closest; -  var inst; -  for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) { -    closest = inst; -    if (parents.length) { -      precacheChildNodes(inst, node); -    } -  } - -  return closest; -} - -/** - * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent - * instance, or null if the node was not rendered by this React. - */ -function getInstanceFromNode(node) { -  var inst = getClosestInstanceFromNode(node); -  if (inst != null && inst._hostNode === node) { -    return inst; -  } else { -    return null; -  } -} - -/** - * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding - * DOM node. - */ -function getNodeFromInstance(inst) { -  // Without this first invariant, passing a non-DOM-component triggers the next -  // invariant for a missing parent, which is super confusing. -  !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; - -  if (inst._hostNode) { -    return inst._hostNode; -  } - -  // Walk up the tree until we find an ancestor whose DOM node we have cached. -  var parents = []; -  while (!inst._hostNode) { -    parents.push(inst); -    !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0; -    inst = inst._hostParent; -  } - -  // Now parents contains each ancestor that does *not* have a cached native -  // node, and `inst` is the deepest ancestor that does. -  for (; parents.length; inst = parents.pop()) { -    precacheChildNodes(inst, inst._hostNode); -  } - -  return inst._hostNode; -} - -var ReactDOMComponentTree = { -  getClosestInstanceFromNode: getClosestInstanceFromNode, -  getInstanceFromNode: getInstanceFromNode, -  getNodeFromInstance: getNodeFromInstance, -  precacheChildNodes: precacheChildNodes, -  precacheNode: precacheNode, -  uncacheNode: uncacheNode -}; - -module.exports = ReactDOMComponentTree;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMContainerInfo.js b/node_modules/react-dom/lib/ReactDOMContainerInfo.js deleted file mode 100644 index 01528a4a4..000000000 --- a/node_modules/react-dom/lib/ReactDOMContainerInfo.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var validateDOMNesting = require('./validateDOMNesting'); - -var DOC_NODE_TYPE = 9; - -function ReactDOMContainerInfo(topLevelWrapper, node) { -  var info = { -    _topLevelWrapper: topLevelWrapper, -    _idCounter: 1, -    _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null, -    _node: node, -    _tag: node ? node.nodeName.toLowerCase() : null, -    _namespaceURI: node ? node.namespaceURI : null -  }; -  if (process.env.NODE_ENV !== 'production') { -    info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null; -  } -  return info; -} - -module.exports = ReactDOMContainerInfo;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMEmptyComponent.js b/node_modules/react-dom/lib/ReactDOMEmptyComponent.js deleted file mode 100644 index 89eecc566..000000000 --- a/node_modules/react-dom/lib/ReactDOMEmptyComponent.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var DOMLazyTree = require('./DOMLazyTree'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - -var ReactDOMEmptyComponent = function (instantiate) { -  // ReactCompositeComponent uses this: -  this._currentElement = null; -  // ReactDOMComponentTree uses these: -  this._hostNode = null; -  this._hostParent = null; -  this._hostContainerInfo = null; -  this._domID = 0; -}; -_assign(ReactDOMEmptyComponent.prototype, { -  mountComponent: function (transaction, hostParent, hostContainerInfo, context) { -    var domID = hostContainerInfo._idCounter++; -    this._domID = domID; -    this._hostParent = hostParent; -    this._hostContainerInfo = hostContainerInfo; - -    var nodeValue = ' react-empty: ' + this._domID + ' '; -    if (transaction.useCreateElement) { -      var ownerDocument = hostContainerInfo._ownerDocument; -      var node = ownerDocument.createComment(nodeValue); -      ReactDOMComponentTree.precacheNode(this, node); -      return DOMLazyTree(node); -    } else { -      if (transaction.renderToStaticMarkup) { -        // Normally we'd insert a comment node, but since this is a situation -        // where React won't take over (static pages), we can simply return -        // nothing. -        return ''; -      } -      return '<!--' + nodeValue + '-->'; -    } -  }, -  receiveComponent: function () {}, -  getHostNode: function () { -    return ReactDOMComponentTree.getNodeFromInstance(this); -  }, -  unmountComponent: function () { -    ReactDOMComponentTree.uncacheNode(this); -  } -}); - -module.exports = ReactDOMEmptyComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMFeatureFlags.js b/node_modules/react-dom/lib/ReactDOMFeatureFlags.js deleted file mode 100644 index 73b33019f..000000000 --- a/node_modules/react-dom/lib/ReactDOMFeatureFlags.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMFeatureFlags = { -  useCreateElement: true, -  useFiber: false -}; - -module.exports = ReactDOMFeatureFlags;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMFiber.js b/node_modules/react-dom/lib/ReactDOMFiber.js deleted file mode 100644 index 8188b18c8..000000000 --- a/node_modules/react-dom/lib/ReactDOMFiber.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactFiberReconciler = require('./ReactFiberReconciler'); - -var warning = require('fbjs/lib/warning'); - -function recursivelyAppendChildren(parent, child) { -  if (!child) { -    return; -  } -  /* $FlowFixMe: Element should have this property. */ -  if (child.nodeType === 1) { -    /* $FlowFixMe: Refinement issue. I don't know how to express different. */ -    parent.appendChild(child); -  } else { -    /* As a result of the refinement issue this type isn't known. */ -    var node = child; -    do { -      recursivelyAppendChildren(parent, node.output); -    } while (node = node.sibling); -  } -} - -var DOMRenderer = ReactFiberReconciler({ -  updateContainer: function (container, children) { -    container.innerHTML = ''; -    recursivelyAppendChildren(container, children); -  }, -  createInstance: function (type, props, children) { -    var domElement = document.createElement(type); -    recursivelyAppendChildren(domElement, children); -    if (typeof props.children === 'string') { -      domElement.textContent = props.children; -    } -    return domElement; -  }, -  prepareUpdate: function (domElement, oldProps, newProps, children) { -    return true; -  }, -  commitUpdate: function (domElement, oldProps, newProps, children) { -    domElement.innerHTML = ''; -    recursivelyAppendChildren(domElement, children); -    if (typeof newProps.children === 'string') { -      domElement.textContent = newProps.children; -    } -  }, -  deleteInstance: function (instance) { -    // Noop -  }, - - -  scheduleAnimationCallback: window.requestAnimationFrame, - -  scheduleDeferredCallback: window.requestIdleCallback -}); - -var warned = false; - -function warnAboutUnstableUse() { -  process.env.NODE_ENV !== 'production' ? warning(warned, 'You are using React DOM Fiber which is an experimental renderer. ' + 'It is likely to have bugs, breaking changes and is unsupported.') : void 0; -  warned = true; -} - -var ReactDOM = { -  render: function (element, container) { -    warnAboutUnstableUse(); -    if (!container._reactRootContainer) { -      container._reactRootContainer = DOMRenderer.mountContainer(element, container); -    } else { -      DOMRenderer.updateContainer(element, container._reactRootContainer); -    } -  }, -  unmountComponentAtNode: function (container) { -    warnAboutUnstableUse(); -    var root = container._reactRootContainer; -    if (root) { -      // TODO: Is it safe to reset this now or should I wait since this -      // unmount could be deferred? -      container._reactRootContainer = null; -      DOMRenderer.unmountContainer(root); -    } -  } -}; - -module.exports = ReactDOM;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMIDOperations.js b/node_modules/react-dom/lib/ReactDOMIDOperations.js deleted file mode 100644 index f30f1bbc4..000000000 --- a/node_modules/react-dom/lib/ReactDOMIDOperations.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMChildrenOperations = require('./DOMChildrenOperations'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - -/** - * Operations used to process updates to DOM nodes. - */ -var ReactDOMIDOperations = { -  /** -   * Updates a component's children by processing a series of updates. -   * -   * @param {array<object>} updates List of update configurations. -   * @internal -   */ -  dangerouslyProcessChildrenUpdates: function (parentInst, updates) { -    var node = ReactDOMComponentTree.getNodeFromInstance(parentInst); -    DOMChildrenOperations.processUpdates(node, updates); -  } -}; - -module.exports = ReactDOMIDOperations;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMInput.js b/node_modules/react-dom/lib/ReactDOMInput.js deleted file mode 100644 index 40a9a4259..000000000 --- a/node_modules/react-dom/lib/ReactDOMInput.js +++ /dev/null @@ -1,286 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var DOMPropertyOperations = require('./DOMPropertyOperations'); -var LinkedValueUtils = require('./LinkedValueUtils'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactUpdates = require('./ReactUpdates'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var didWarnValueLink = false; -var didWarnCheckedLink = false; -var didWarnValueDefaultValue = false; -var didWarnCheckedDefaultChecked = false; -var didWarnControlledToUncontrolled = false; -var didWarnUncontrolledToControlled = false; - -function forceUpdateIfMounted() { -  if (this._rootNodeID) { -    // DOM component is still mounted; update -    ReactDOMInput.updateWrapper(this); -  } -} - -function isControlled(props) { -  var usesChecked = props.type === 'checkbox' || props.type === 'radio'; -  return usesChecked ? props.checked != null : props.value != null; -} - -/** - * Implements an <input> host component that allows setting these optional - * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. - * - * If `checked` or `value` are not supplied (or null/undefined), user actions - * that affect the checked state or value will trigger updates to the element. - * - * If they are supplied (and not null/undefined), the rendered element will not - * trigger updates to the element. Instead, the props must change in order for - * the rendered element to be updated. - * - * The rendered element will be initialized as unchecked (or `defaultChecked`) - * with an empty value (or `defaultValue`). - * - * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html - */ -var ReactDOMInput = { -  getHostProps: function (inst, props) { -    var value = LinkedValueUtils.getValue(props); -    var checked = LinkedValueUtils.getChecked(props); - -    var hostProps = _assign({ -      // Make sure we set .type before any other properties (setting .value -      // before .type means .value is lost in IE11 and below) -      type: undefined, -      // Make sure we set .step before .value (setting .value before .step -      // means .value is rounded on mount, based upon step precision) -      step: undefined, -      // Make sure we set .min & .max before .value (to ensure proper order -      // in corner cases such as min or max deriving from value, e.g. Issue #7170) -      min: undefined, -      max: undefined -    }, props, { -      defaultChecked: undefined, -      defaultValue: undefined, -      value: value != null ? value : inst._wrapperState.initialValue, -      checked: checked != null ? checked : inst._wrapperState.initialChecked, -      onChange: inst._wrapperState.onChange -    }); - -    return hostProps; -  }, - -  mountWrapper: function (inst, props) { -    if (process.env.NODE_ENV !== 'production') { -      LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner); - -      var owner = inst._currentElement._owner; - -      if (props.valueLink !== undefined && !didWarnValueLink) { -        process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; -        didWarnValueLink = true; -      } -      if (props.checkedLink !== undefined && !didWarnCheckedLink) { -        process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; -        didWarnCheckedLink = true; -      } -      if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) { -        process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; -        didWarnCheckedDefaultChecked = true; -      } -      if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { -        process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; -        didWarnValueDefaultValue = true; -      } -    } - -    var defaultValue = props.defaultValue; -    inst._wrapperState = { -      initialChecked: props.checked != null ? props.checked : props.defaultChecked, -      initialValue: props.value != null ? props.value : defaultValue, -      listeners: null, -      onChange: _handleChange.bind(inst), -      controlled: isControlled(props) -    }; -  }, - -  updateWrapper: function (inst) { -    var props = inst._currentElement.props; - -    if (process.env.NODE_ENV !== 'production') { -      var controlled = isControlled(props); -      var owner = inst._currentElement._owner; - -      if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) { -        process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; -        didWarnUncontrolledToControlled = true; -      } -      if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) { -        process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; -        didWarnControlledToUncontrolled = true; -      } -    } - -    // TODO: Shouldn't this be getChecked(props)? -    var checked = props.checked; -    if (checked != null) { -      DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false); -    } - -    var node = ReactDOMComponentTree.getNodeFromInstance(inst); -    var value = LinkedValueUtils.getValue(props); -    if (value != null) { -      if (value === 0 && node.value === '') { -        node.value = '0'; -        // Note: IE9 reports a number inputs as 'text', so check props instead. -      } else if (props.type === 'number') { -        // Simulate `input.valueAsNumber`. IE9 does not support it -        var valueAsNumber = parseFloat(node.value, 10) || 0; - -        if ( -        // eslint-disable-next-line -        value != valueAsNumber || -        // eslint-disable-next-line -        value == valueAsNumber && node.value != value) { -          // Cast `value` to a string to ensure the value is set correctly. While -          // browsers typically do this as necessary, jsdom doesn't. -          node.value = '' + value; -        } -      } else if (node.value !== '' + value) { -        // Cast `value` to a string to ensure the value is set correctly. While -        // browsers typically do this as necessary, jsdom doesn't. -        node.value = '' + value; -      } -    } else { -      if (props.value == null && props.defaultValue != null) { -        // In Chrome, assigning defaultValue to certain input types triggers input validation. -        // For number inputs, the display value loses trailing decimal points. For email inputs, -        // Chrome raises "The specified value <x> is not a valid email address". -        // -        // Here we check to see if the defaultValue has actually changed, avoiding these problems -        // when the user is inputting text -        // -        // https://github.com/facebook/react/issues/7253 -        if (node.defaultValue !== '' + props.defaultValue) { -          node.defaultValue = '' + props.defaultValue; -        } -      } -      if (props.checked == null && props.defaultChecked != null) { -        node.defaultChecked = !!props.defaultChecked; -      } -    } -  }, - -  postMountWrapper: function (inst) { -    var props = inst._currentElement.props; - -    // This is in postMount because we need access to the DOM node, which is not -    // available until after the component has mounted. -    var node = ReactDOMComponentTree.getNodeFromInstance(inst); - -    // Detach value from defaultValue. We won't do anything if we're working on -    // submit or reset inputs as those values & defaultValues are linked. They -    // are not resetable nodes so this operation doesn't matter and actually -    // removes browser-default values (eg "Submit Query") when no value is -    // provided. - -    switch (props.type) { -      case 'submit': -      case 'reset': -        break; -      case 'color': -      case 'date': -      case 'datetime': -      case 'datetime-local': -      case 'month': -      case 'time': -      case 'week': -        // This fixes the no-show issue on iOS Safari and Android Chrome: -        // https://github.com/facebook/react/issues/7233 -        node.value = ''; -        node.value = node.defaultValue; -        break; -      default: -        node.value = node.value; -        break; -    } - -    // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug -    // this is needed to work around a chrome bug where setting defaultChecked -    // will sometimes influence the value of checked (even after detachment). -    // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 -    // We need to temporarily unset name to avoid disrupting radio button groups. -    var name = node.name; -    if (name !== '') { -      node.name = ''; -    } -    node.defaultChecked = !node.defaultChecked; -    node.defaultChecked = !node.defaultChecked; -    if (name !== '') { -      node.name = name; -    } -  } -}; - -function _handleChange(event) { -  var props = this._currentElement.props; - -  var returnValue = LinkedValueUtils.executeOnChange(props, event); - -  // Here we use asap to wait until all updates have propagated, which -  // is important when using controlled components within layers: -  // https://github.com/facebook/react/issues/1698 -  ReactUpdates.asap(forceUpdateIfMounted, this); - -  var name = props.name; -  if (props.type === 'radio' && name != null) { -    var rootNode = ReactDOMComponentTree.getNodeFromInstance(this); -    var queryRoot = rootNode; - -    while (queryRoot.parentNode) { -      queryRoot = queryRoot.parentNode; -    } - -    // If `rootNode.form` was non-null, then we could try `form.elements`, -    // but that sometimes behaves strangely in IE8. We could also try using -    // `form.getElementsByName`, but that will only return direct children -    // and won't include inputs that use the HTML5 `form=` attribute. Since -    // the input might not even be in a form, let's just use the global -    // `querySelectorAll` to ensure we don't miss anything. -    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]'); - -    for (var i = 0; i < group.length; i++) { -      var otherNode = group[i]; -      if (otherNode === rootNode || otherNode.form !== rootNode.form) { -        continue; -      } -      // This will throw if radio buttons rendered by different copies of React -      // and the same name are rendered into the same form (same as #1939). -      // That's probably okay; we don't support it just as we don't support -      // mixing React radio buttons with non-React ones. -      var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode); -      !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0; -      // If this is a controlled radio button group, forcing the input that -      // was previously checked to update will cause it to be come re-checked -      // as appropriate. -      ReactUpdates.asap(forceUpdateIfMounted, otherInstance); -    } -  } - -  return returnValue; -} - -module.exports = ReactDOMInput;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMInvalidARIAHook.js b/node_modules/react-dom/lib/ReactDOMInvalidARIAHook.js deleted file mode 100644 index aa8ba75d2..000000000 --- a/node_modules/react-dom/lib/ReactDOMInvalidARIAHook.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMProperty = require('./DOMProperty'); -var ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); - -var warning = require('fbjs/lib/warning'); - -var warnedProperties = {}; -var rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); - -function validateProperty(tagName, name, debugID) { -  if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { -    return true; -  } - -  if (rARIA.test(name)) { -    var lowerCasedName = name.toLowerCase(); -    var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; - -    // If this is an aria-* attribute, but is not listed in the known DOM -    // DOM properties, then it is an invalid aria-* attribute. -    if (standardName == null) { -      warnedProperties[name] = true; -      return false; -    } -    // aria-* attributes should be lowercase; suggest the lowercase version. -    if (name !== standardName) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -      warnedProperties[name] = true; -      return true; -    } -  } - -  return true; -} - -function warnInvalidARIAProps(debugID, element) { -  var invalidProps = []; - -  for (var key in element.props) { -    var isValid = validateProperty(element.type, key, debugID); -    if (!isValid) { -      invalidProps.push(key); -    } -  } - -  var unknownPropString = invalidProps.map(function (prop) { -    return '`' + prop + '`'; -  }).join(', '); - -  if (invalidProps.length === 1) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -  } else if (invalidProps.length > 1) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -  } -} - -function handleElement(debugID, element) { -  if (element == null || typeof element.type !== 'string') { -    return; -  } -  if (element.type.indexOf('-') >= 0 || element.props.is) { -    return; -  } - -  warnInvalidARIAProps(debugID, element); -} - -var ReactDOMInvalidARIAHook = { -  onBeforeMountComponent: function (debugID, element) { -    if (process.env.NODE_ENV !== 'production') { -      handleElement(debugID, element); -    } -  }, -  onBeforeUpdateComponent: function (debugID, element) { -    if (process.env.NODE_ENV !== 'production') { -      handleElement(debugID, element); -    } -  } -}; - -module.exports = ReactDOMInvalidARIAHook;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMNullInputValuePropHook.js b/node_modules/react-dom/lib/ReactDOMNullInputValuePropHook.js deleted file mode 100644 index e5c5f22e0..000000000 --- a/node_modules/react-dom/lib/ReactDOMNullInputValuePropHook.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); - -var warning = require('fbjs/lib/warning'); - -var didWarnValueNull = false; - -function handleElement(debugID, element) { -  if (element == null) { -    return; -  } -  if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') { -    return; -  } -  if (element.props != null && element.props.value === null && !didWarnValueNull) { -    process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; - -    didWarnValueNull = true; -  } -} - -var ReactDOMNullInputValuePropHook = { -  onBeforeMountComponent: function (debugID, element) { -    handleElement(debugID, element); -  }, -  onBeforeUpdateComponent: function (debugID, element) { -    handleElement(debugID, element); -  } -}; - -module.exports = ReactDOMNullInputValuePropHook;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMOption.js b/node_modules/react-dom/lib/ReactDOMOption.js deleted file mode 100644 index 44777d6b7..000000000 --- a/node_modules/react-dom/lib/ReactDOMOption.js +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var React = require('react/lib/React'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactDOMSelect = require('./ReactDOMSelect'); - -var warning = require('fbjs/lib/warning'); -var didWarnInvalidOptionChildren = false; - -function flattenChildren(children) { -  var content = ''; - -  // Flatten children and warn if they aren't strings or numbers; -  // invalid types are ignored. -  React.Children.forEach(children, function (child) { -    if (child == null) { -      return; -    } -    if (typeof child === 'string' || typeof child === 'number') { -      content += child; -    } else if (!didWarnInvalidOptionChildren) { -      didWarnInvalidOptionChildren = true; -      process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0; -    } -  }); - -  return content; -} - -/** - * Implements an <option> host component that warns when `selected` is set. - */ -var ReactDOMOption = { -  mountWrapper: function (inst, props, hostParent) { -    // TODO (yungsters): Remove support for `selected` in <option>. -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0; -    } - -    // Look up whether this option is 'selected' -    var selectValue = null; -    if (hostParent != null) { -      var selectParent = hostParent; - -      if (selectParent._tag === 'optgroup') { -        selectParent = selectParent._hostParent; -      } - -      if (selectParent != null && selectParent._tag === 'select') { -        selectValue = ReactDOMSelect.getSelectValueContext(selectParent); -      } -    } - -    // If the value is null (e.g., no specified value or after initial mount) -    // or missing (e.g., for <datalist>), we don't change props.selected -    var selected = null; -    if (selectValue != null) { -      var value; -      if (props.value != null) { -        value = props.value + ''; -      } else { -        value = flattenChildren(props.children); -      } -      selected = false; -      if (Array.isArray(selectValue)) { -        // multiple -        for (var i = 0; i < selectValue.length; i++) { -          if ('' + selectValue[i] === value) { -            selected = true; -            break; -          } -        } -      } else { -        selected = '' + selectValue === value; -      } -    } - -    inst._wrapperState = { selected: selected }; -  }, - -  postMountWrapper: function (inst) { -    // value="" should make a value attribute (#6219) -    var props = inst._currentElement.props; -    if (props.value != null) { -      var node = ReactDOMComponentTree.getNodeFromInstance(inst); -      node.setAttribute('value', props.value); -    } -  }, - -  getHostProps: function (inst, props) { -    var hostProps = _assign({ selected: undefined, children: undefined }, props); - -    // Read state only from initial mount because <select> updates value -    // manually; we need the initial state only for server rendering -    if (inst._wrapperState.selected != null) { -      hostProps.selected = inst._wrapperState.selected; -    } - -    var content = flattenChildren(props.children); - -    if (content) { -      hostProps.children = content; -    } - -    return hostProps; -  } -}; - -module.exports = ReactDOMOption;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMSelect.js b/node_modules/react-dom/lib/ReactDOMSelect.js deleted file mode 100644 index 57180ad75..000000000 --- a/node_modules/react-dom/lib/ReactDOMSelect.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var LinkedValueUtils = require('./LinkedValueUtils'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactUpdates = require('./ReactUpdates'); - -var warning = require('fbjs/lib/warning'); - -var didWarnValueLink = false; -var didWarnValueDefaultValue = false; - -function updateOptionsIfPendingUpdateAndMounted() { -  if (this._rootNodeID && this._wrapperState.pendingUpdate) { -    this._wrapperState.pendingUpdate = false; - -    var props = this._currentElement.props; -    var value = LinkedValueUtils.getValue(props); - -    if (value != null) { -      updateOptions(this, Boolean(props.multiple), value); -    } -  } -} - -function getDeclarationErrorAddendum(owner) { -  if (owner) { -    var name = owner.getName(); -    if (name) { -      return ' Check the render method of `' + name + '`.'; -    } -  } -  return ''; -} - -var valuePropNames = ['value', 'defaultValue']; - -/** - * Validation function for `value` and `defaultValue`. - * @private - */ -function checkSelectPropTypes(inst, props) { -  var owner = inst._currentElement._owner; -  LinkedValueUtils.checkPropTypes('select', props, owner); - -  if (props.valueLink !== undefined && !didWarnValueLink) { -    process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0; -    didWarnValueLink = true; -  } - -  for (var i = 0; i < valuePropNames.length; i++) { -    var propName = valuePropNames[i]; -    if (props[propName] == null) { -      continue; -    } -    var isArray = Array.isArray(props[propName]); -    if (props.multiple && !isArray) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; -    } else if (!props.multiple && isArray) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; -    } -  } -} - -/** - * @param {ReactDOMComponent} inst - * @param {boolean} multiple - * @param {*} propValue A stringable (with `multiple`, a list of stringables). - * @private - */ -function updateOptions(inst, multiple, propValue) { -  var selectedValue, i; -  var options = ReactDOMComponentTree.getNodeFromInstance(inst).options; - -  if (multiple) { -    selectedValue = {}; -    for (i = 0; i < propValue.length; i++) { -      selectedValue['' + propValue[i]] = true; -    } -    for (i = 0; i < options.length; i++) { -      var selected = selectedValue.hasOwnProperty(options[i].value); -      if (options[i].selected !== selected) { -        options[i].selected = selected; -      } -    } -  } else { -    // Do not set `select.value` as exact behavior isn't consistent across all -    // browsers for all cases. -    selectedValue = '' + propValue; -    for (i = 0; i < options.length; i++) { -      if (options[i].value === selectedValue) { -        options[i].selected = true; -        return; -      } -    } -    if (options.length) { -      options[0].selected = true; -    } -  } -} - -/** - * Implements a <select> host component that allows optionally setting the - * props `value` and `defaultValue`. If `multiple` is false, the prop must be a - * stringable. If `multiple` is true, the prop must be an array of stringables. - * - * If `value` is not supplied (or null/undefined), user actions that change the - * selected option will trigger updates to the rendered options. - * - * If it is supplied (and not null/undefined), the rendered options will not - * update in response to user actions. Instead, the `value` prop must change in - * order for the rendered options to update. - * - * If `defaultValue` is provided, any options with the supplied values will be - * selected. - */ -var ReactDOMSelect = { -  getHostProps: function (inst, props) { -    return _assign({}, props, { -      onChange: inst._wrapperState.onChange, -      value: undefined -    }); -  }, - -  mountWrapper: function (inst, props) { -    if (process.env.NODE_ENV !== 'production') { -      checkSelectPropTypes(inst, props); -    } - -    var value = LinkedValueUtils.getValue(props); -    inst._wrapperState = { -      pendingUpdate: false, -      initialValue: value != null ? value : props.defaultValue, -      listeners: null, -      onChange: _handleChange.bind(inst), -      wasMultiple: Boolean(props.multiple) -    }; - -    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; -      didWarnValueDefaultValue = true; -    } -  }, - -  getSelectValueContext: function (inst) { -    // ReactDOMOption looks at this initial value so the initial generated -    // markup has correct `selected` attributes -    return inst._wrapperState.initialValue; -  }, - -  postUpdateWrapper: function (inst) { -    var props = inst._currentElement.props; - -    // After the initial mount, we control selected-ness manually so don't pass -    // this value down -    inst._wrapperState.initialValue = undefined; - -    var wasMultiple = inst._wrapperState.wasMultiple; -    inst._wrapperState.wasMultiple = Boolean(props.multiple); - -    var value = LinkedValueUtils.getValue(props); -    if (value != null) { -      inst._wrapperState.pendingUpdate = false; -      updateOptions(inst, Boolean(props.multiple), value); -    } else if (wasMultiple !== Boolean(props.multiple)) { -      // For simplicity, reapply `defaultValue` if `multiple` is toggled. -      if (props.defaultValue != null) { -        updateOptions(inst, Boolean(props.multiple), props.defaultValue); -      } else { -        // Revert the select back to its default unselected state. -        updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : ''); -      } -    } -  } -}; - -function _handleChange(event) { -  var props = this._currentElement.props; -  var returnValue = LinkedValueUtils.executeOnChange(props, event); - -  if (this._rootNodeID) { -    this._wrapperState.pendingUpdate = true; -  } -  ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this); -  return returnValue; -} - -module.exports = ReactDOMSelect;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMSelection.js b/node_modules/react-dom/lib/ReactDOMSelection.js deleted file mode 100644 index c2404ef09..000000000 --- a/node_modules/react-dom/lib/ReactDOMSelection.js +++ /dev/null @@ -1,211 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -var getNodeForCharacterOffset = require('./getNodeForCharacterOffset'); -var getTextContentAccessor = require('./getTextContentAccessor'); - -/** - * While `isCollapsed` is available on the Selection object and `collapsed` - * is available on the Range object, IE11 sometimes gets them wrong. - * If the anchor/focus nodes and offsets are the same, the range is collapsed. - */ -function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) { -  return anchorNode === focusNode && anchorOffset === focusOffset; -} - -/** - * Get the appropriate anchor and focus node/offset pairs for IE. - * - * The catch here is that IE's selection API doesn't provide information - * about whether the selection is forward or backward, so we have to - * behave as though it's always forward. - * - * IE text differs from modern selection in that it behaves as though - * block elements end with a new line. This means character offsets will - * differ between the two APIs. - * - * @param {DOMElement} node - * @return {object} - */ -function getIEOffsets(node) { -  var selection = document.selection; -  var selectedRange = selection.createRange(); -  var selectedLength = selectedRange.text.length; - -  // Duplicate selection so we can move range without breaking user selection. -  var fromStart = selectedRange.duplicate(); -  fromStart.moveToElementText(node); -  fromStart.setEndPoint('EndToStart', selectedRange); - -  var startOffset = fromStart.text.length; -  var endOffset = startOffset + selectedLength; - -  return { -    start: startOffset, -    end: endOffset -  }; -} - -/** - * @param {DOMElement} node - * @return {?object} - */ -function getModernOffsets(node) { -  var selection = window.getSelection && window.getSelection(); - -  if (!selection || selection.rangeCount === 0) { -    return null; -  } - -  var anchorNode = selection.anchorNode; -  var anchorOffset = selection.anchorOffset; -  var focusNode = selection.focusNode; -  var focusOffset = selection.focusOffset; - -  var currentRange = selection.getRangeAt(0); - -  // In Firefox, range.startContainer and range.endContainer can be "anonymous -  // divs", e.g. the up/down buttons on an <input type="number">. Anonymous -  // divs do not seem to expose properties, triggering a "Permission denied -  // error" if any of its properties are accessed. The only seemingly possible -  // way to avoid erroring is to access a property that typically works for -  // non-anonymous divs and catch any error that may otherwise arise. See -  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427 -  try { -    /* eslint-disable no-unused-expressions */ -    currentRange.startContainer.nodeType; -    currentRange.endContainer.nodeType; -    /* eslint-enable no-unused-expressions */ -  } catch (e) { -    return null; -  } - -  // If the node and offset values are the same, the selection is collapsed. -  // `Selection.isCollapsed` is available natively, but IE sometimes gets -  // this value wrong. -  var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset); - -  var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length; - -  var tempRange = currentRange.cloneRange(); -  tempRange.selectNodeContents(node); -  tempRange.setEnd(currentRange.startContainer, currentRange.startOffset); - -  var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset); - -  var start = isTempRangeCollapsed ? 0 : tempRange.toString().length; -  var end = start + rangeLength; - -  // Detect whether the selection is backward. -  var detectionRange = document.createRange(); -  detectionRange.setStart(anchorNode, anchorOffset); -  detectionRange.setEnd(focusNode, focusOffset); -  var isBackward = detectionRange.collapsed; - -  return { -    start: isBackward ? end : start, -    end: isBackward ? start : end -  }; -} - -/** - * @param {DOMElement|DOMTextNode} node - * @param {object} offsets - */ -function setIEOffsets(node, offsets) { -  var range = document.selection.createRange().duplicate(); -  var start, end; - -  if (offsets.end === undefined) { -    start = offsets.start; -    end = start; -  } else if (offsets.start > offsets.end) { -    start = offsets.end; -    end = offsets.start; -  } else { -    start = offsets.start; -    end = offsets.end; -  } - -  range.moveToElementText(node); -  range.moveStart('character', start); -  range.setEndPoint('EndToStart', range); -  range.moveEnd('character', end - start); -  range.select(); -} - -/** - * In modern non-IE browsers, we can support both forward and backward - * selections. - * - * Note: IE10+ supports the Selection object, but it does not support - * the `extend` method, which means that even in modern IE, it's not possible - * to programmatically create a backward selection. Thus, for all IE - * versions, we use the old IE API to create our selections. - * - * @param {DOMElement|DOMTextNode} node - * @param {object} offsets - */ -function setModernOffsets(node, offsets) { -  if (!window.getSelection) { -    return; -  } - -  var selection = window.getSelection(); -  var length = node[getTextContentAccessor()].length; -  var start = Math.min(offsets.start, length); -  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); - -  // IE 11 uses modern selection, but doesn't support the extend method. -  // Flip backward selections, so we can set with a single range. -  if (!selection.extend && start > end) { -    var temp = end; -    end = start; -    start = temp; -  } - -  var startMarker = getNodeForCharacterOffset(node, start); -  var endMarker = getNodeForCharacterOffset(node, end); - -  if (startMarker && endMarker) { -    var range = document.createRange(); -    range.setStart(startMarker.node, startMarker.offset); -    selection.removeAllRanges(); - -    if (start > end) { -      selection.addRange(range); -      selection.extend(endMarker.node, endMarker.offset); -    } else { -      range.setEnd(endMarker.node, endMarker.offset); -      selection.addRange(range); -    } -  } -} - -var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window); - -var ReactDOMSelection = { -  /** -   * @param {DOMElement} node -   */ -  getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets, - -  /** -   * @param {DOMElement|DOMTextNode} node -   * @param {object} offsets -   */ -  setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets -}; - -module.exports = ReactDOMSelection;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMServer.js b/node_modules/react-dom/lib/ReactDOMServer.js deleted file mode 100644 index 49dc029a3..000000000 --- a/node_modules/react-dom/lib/ReactDOMServer.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDefaultInjection = require('./ReactDefaultInjection'); -var ReactServerRendering = require('./ReactServerRendering'); -var ReactVersion = require('./ReactVersion'); - -ReactDefaultInjection.inject(); - -var ReactDOMServer = { -  renderToString: ReactServerRendering.renderToString, -  renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup, -  version: ReactVersion -}; - -module.exports = ReactDOMServer;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMServerUMDEntry.js b/node_modules/react-dom/lib/ReactDOMServerUMDEntry.js deleted file mode 100644 index 80a8eae09..000000000 --- a/node_modules/react-dom/lib/ReactDOMServerUMDEntry.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMServer = require('./ReactDOMServer'); - -module.exports = ReactDOMServer;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMTextComponent.js b/node_modules/react-dom/lib/ReactDOMTextComponent.js deleted file mode 100644 index c1f149240..000000000 --- a/node_modules/react-dom/lib/ReactDOMTextComponent.js +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var DOMChildrenOperations = require('./DOMChildrenOperations'); -var DOMLazyTree = require('./DOMLazyTree'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - -var escapeTextContentForBrowser = require('./escapeTextContentForBrowser'); -var invariant = require('fbjs/lib/invariant'); -var validateDOMNesting = require('./validateDOMNesting'); - -/** - * Text nodes violate a couple assumptions that React makes about components: - * - *  - When mounting text into the DOM, adjacent text nodes are merged. - *  - Text nodes cannot be assigned a React root ID. - * - * This component is used to wrap strings between comment nodes so that they - * can undergo the same reconciliation that is applied to elements. - * - * TODO: Investigate representing React components in the DOM with text nodes. - * - * @class ReactDOMTextComponent - * @extends ReactComponent - * @internal - */ -var ReactDOMTextComponent = function (text) { -  // TODO: This is really a ReactText (ReactNode), not a ReactElement -  this._currentElement = text; -  this._stringText = '' + text; -  // ReactDOMComponentTree uses these: -  this._hostNode = null; -  this._hostParent = null; - -  // Properties -  this._domID = 0; -  this._mountIndex = 0; -  this._closingComment = null; -  this._commentNodes = null; -}; - -_assign(ReactDOMTextComponent.prototype, { -  /** -   * Creates the markup for this text node. This node is not intended to have -   * any features besides containing text content. -   * -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @return {string} Markup for this text node. -   * @internal -   */ -  mountComponent: function (transaction, hostParent, hostContainerInfo, context) { -    if (process.env.NODE_ENV !== 'production') { -      var parentInfo; -      if (hostParent != null) { -        parentInfo = hostParent._ancestorInfo; -      } else if (hostContainerInfo != null) { -        parentInfo = hostContainerInfo._ancestorInfo; -      } -      if (parentInfo) { -        // parentInfo should always be present except for the top-level -        // component when server rendering -        validateDOMNesting(null, this._stringText, this, parentInfo); -      } -    } - -    var domID = hostContainerInfo._idCounter++; -    var openingValue = ' react-text: ' + domID + ' '; -    var closingValue = ' /react-text '; -    this._domID = domID; -    this._hostParent = hostParent; -    if (transaction.useCreateElement) { -      var ownerDocument = hostContainerInfo._ownerDocument; -      var openingComment = ownerDocument.createComment(openingValue); -      var closingComment = ownerDocument.createComment(closingValue); -      var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment()); -      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment)); -      if (this._stringText) { -        DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText))); -      } -      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment)); -      ReactDOMComponentTree.precacheNode(this, openingComment); -      this._closingComment = closingComment; -      return lazyTree; -    } else { -      var escapedText = escapeTextContentForBrowser(this._stringText); - -      if (transaction.renderToStaticMarkup) { -        // Normally we'd wrap this between comment nodes for the reasons stated -        // above, but since this is a situation where React won't take over -        // (static pages), we can simply return the text as it is. -        return escapedText; -      } - -      return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->'; -    } -  }, - -  /** -   * Updates this component by updating the text content. -   * -   * @param {ReactText} nextText The next text content -   * @param {ReactReconcileTransaction} transaction -   * @internal -   */ -  receiveComponent: function (nextText, transaction) { -    if (nextText !== this._currentElement) { -      this._currentElement = nextText; -      var nextStringText = '' + nextText; -      if (nextStringText !== this._stringText) { -        // TODO: Save this as pending props and use performUpdateIfNecessary -        // and/or updateComponent to do the actual update for consistency with -        // other component types? -        this._stringText = nextStringText; -        var commentNodes = this.getHostNode(); -        DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText); -      } -    } -  }, - -  getHostNode: function () { -    var hostNode = this._commentNodes; -    if (hostNode) { -      return hostNode; -    } -    if (!this._closingComment) { -      var openingComment = ReactDOMComponentTree.getNodeFromInstance(this); -      var node = openingComment.nextSibling; -      while (true) { -        !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0; -        if (node.nodeType === 8 && node.nodeValue === ' /react-text ') { -          this._closingComment = node; -          break; -        } -        node = node.nextSibling; -      } -    } -    hostNode = [this._hostNode, this._closingComment]; -    this._commentNodes = hostNode; -    return hostNode; -  }, - -  unmountComponent: function () { -    this._closingComment = null; -    this._commentNodes = null; -    ReactDOMComponentTree.uncacheNode(this); -  } -}); - -module.exports = ReactDOMTextComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMTextarea.js b/node_modules/react-dom/lib/ReactDOMTextarea.js deleted file mode 100644 index d8442723a..000000000 --- a/node_modules/react-dom/lib/ReactDOMTextarea.js +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var LinkedValueUtils = require('./LinkedValueUtils'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactUpdates = require('./ReactUpdates'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var didWarnValueLink = false; -var didWarnValDefaultVal = false; - -function forceUpdateIfMounted() { -  if (this._rootNodeID) { -    // DOM component is still mounted; update -    ReactDOMTextarea.updateWrapper(this); -  } -} - -/** - * Implements a <textarea> host component that allows setting `value`, and - * `defaultValue`. This differs from the traditional DOM API because value is - * usually set as PCDATA children. - * - * If `value` is not supplied (or null/undefined), user actions that affect the - * value will trigger updates to the element. - * - * If `value` is supplied (and not null/undefined), the rendered element will - * not trigger updates to the element. Instead, the `value` prop must change in - * order for the rendered element to be updated. - * - * The rendered element will be initialized with an empty value, the prop - * `defaultValue` if specified, or the children content (deprecated). - */ -var ReactDOMTextarea = { -  getHostProps: function (inst, props) { -    !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0; - -    // Always set children to the same thing. In IE9, the selection range will -    // get reset if `textContent` is mutated.  We could add a check in setTextContent -    // to only set the value if/when the value differs from the node value (which would -    // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution. -    // The value can be a boolean or object so that's why it's forced to be a string. -    var hostProps = _assign({}, props, { -      value: undefined, -      defaultValue: undefined, -      children: '' + inst._wrapperState.initialValue, -      onChange: inst._wrapperState.onChange -    }); - -    return hostProps; -  }, - -  mountWrapper: function (inst, props) { -    if (process.env.NODE_ENV !== 'production') { -      LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner); -      if (props.valueLink !== undefined && !didWarnValueLink) { -        process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0; -        didWarnValueLink = true; -      } -      if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) { -        process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; -        didWarnValDefaultVal = true; -      } -    } - -    var value = LinkedValueUtils.getValue(props); -    var initialValue = value; - -    // Only bother fetching default value if we're going to use it -    if (value == null) { -      var defaultValue = props.defaultValue; -      // TODO (yungsters): Remove support for children content in <textarea>. -      var children = props.children; -      if (children != null) { -        if (process.env.NODE_ENV !== 'production') { -          process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0; -        } -        !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0; -        if (Array.isArray(children)) { -          !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0; -          children = children[0]; -        } - -        defaultValue = '' + children; -      } -      if (defaultValue == null) { -        defaultValue = ''; -      } -      initialValue = defaultValue; -    } - -    inst._wrapperState = { -      initialValue: '' + initialValue, -      listeners: null, -      onChange: _handleChange.bind(inst) -    }; -  }, - -  updateWrapper: function (inst) { -    var props = inst._currentElement.props; - -    var node = ReactDOMComponentTree.getNodeFromInstance(inst); -    var value = LinkedValueUtils.getValue(props); -    if (value != null) { -      // Cast `value` to a string to ensure the value is set correctly. While -      // browsers typically do this as necessary, jsdom doesn't. -      var newValue = '' + value; - -      // To avoid side effects (such as losing text selection), only set value if changed -      if (newValue !== node.value) { -        node.value = newValue; -      } -      if (props.defaultValue == null) { -        node.defaultValue = newValue; -      } -    } -    if (props.defaultValue != null) { -      node.defaultValue = props.defaultValue; -    } -  }, - -  postMountWrapper: function (inst) { -    // This is in postMount because we need access to the DOM node, which is not -    // available until after the component has mounted. -    var node = ReactDOMComponentTree.getNodeFromInstance(inst); -    var textContent = node.textContent; - -    // Only set node.value if textContent is equal to the expected -    // initial value. In IE10/IE11 there is a bug where the placeholder attribute -    // will populate textContent as well. -    // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/ -    if (textContent === inst._wrapperState.initialValue) { -      node.value = textContent; -    } -  } -}; - -function _handleChange(event) { -  var props = this._currentElement.props; -  var returnValue = LinkedValueUtils.executeOnChange(props, event); -  ReactUpdates.asap(forceUpdateIfMounted, this); -  return returnValue; -} - -module.exports = ReactDOMTextarea;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMTreeTraversal.js b/node_modules/react-dom/lib/ReactDOMTreeTraversal.js deleted file mode 100644 index d9bdef3f6..000000000 --- a/node_modules/react-dom/lib/ReactDOMTreeTraversal.js +++ /dev/null @@ -1,135 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * Return the lowest common ancestor of A and B, or null if they are in - * different trees. - */ -function getLowestCommonAncestor(instA, instB) { -  !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; -  !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; - -  var depthA = 0; -  for (var tempA = instA; tempA; tempA = tempA._hostParent) { -    depthA++; -  } -  var depthB = 0; -  for (var tempB = instB; tempB; tempB = tempB._hostParent) { -    depthB++; -  } - -  // If A is deeper, crawl up. -  while (depthA - depthB > 0) { -    instA = instA._hostParent; -    depthA--; -  } - -  // If B is deeper, crawl up. -  while (depthB - depthA > 0) { -    instB = instB._hostParent; -    depthB--; -  } - -  // Walk in lockstep until we find a match. -  var depth = depthA; -  while (depth--) { -    if (instA === instB) { -      return instA; -    } -    instA = instA._hostParent; -    instB = instB._hostParent; -  } -  return null; -} - -/** - * Return if A is an ancestor of B. - */ -function isAncestor(instA, instB) { -  !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; -  !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; - -  while (instB) { -    if (instB === instA) { -      return true; -    } -    instB = instB._hostParent; -  } -  return false; -} - -/** - * Return the parent instance of the passed-in instance. - */ -function getParentInstance(inst) { -  !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0; - -  return inst._hostParent; -} - -/** - * Simulates the traversal of a two-phase, capture/bubble event dispatch. - */ -function traverseTwoPhase(inst, fn, arg) { -  var path = []; -  while (inst) { -    path.push(inst); -    inst = inst._hostParent; -  } -  var i; -  for (i = path.length; i-- > 0;) { -    fn(path[i], 'captured', arg); -  } -  for (i = 0; i < path.length; i++) { -    fn(path[i], 'bubbled', arg); -  } -} - -/** - * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that - * should would receive a `mouseEnter` or `mouseLeave` event. - * - * Does not invoke the callback on the nearest common ancestor because nothing - * "entered" or "left" that element. - */ -function traverseEnterLeave(from, to, fn, argFrom, argTo) { -  var common = from && to ? getLowestCommonAncestor(from, to) : null; -  var pathFrom = []; -  while (from && from !== common) { -    pathFrom.push(from); -    from = from._hostParent; -  } -  var pathTo = []; -  while (to && to !== common) { -    pathTo.push(to); -    to = to._hostParent; -  } -  var i; -  for (i = 0; i < pathFrom.length; i++) { -    fn(pathFrom[i], 'bubbled', argFrom); -  } -  for (i = pathTo.length; i-- > 0;) { -    fn(pathTo[i], 'captured', argTo); -  } -} - -module.exports = { -  isAncestor: isAncestor, -  getLowestCommonAncestor: getLowestCommonAncestor, -  getParentInstance: getParentInstance, -  traverseTwoPhase: traverseTwoPhase, -  traverseEnterLeave: traverseEnterLeave -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMUMDEntry.js b/node_modules/react-dom/lib/ReactDOMUMDEntry.js deleted file mode 100644 index ba3a107e2..000000000 --- a/node_modules/react-dom/lib/ReactDOMUMDEntry.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var React = require('react/lib/React'); -var ReactDOM = require('./ReactDOM'); - -var ReactDOMUMDEntry = ReactDOM; - -if (process.env.NODE_ENV !== 'production') { -  ReactDOMUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = { -    // ReactPerf and ReactTestUtils currently only work with the DOM renderer -    // so we expose them from here, but only in DEV mode. -    ReactPerf: require('./ReactPerf'), -    ReactTestUtils: require('./ReactTestUtils') -  }; -} - -// Inject ReactDOM into React for the addons UMD build that depends on ReactDOM (TransitionGroup). -// We can remove this after we deprecate and remove the addons UMD build. -if (React.addons) { -  React.__SECRET_INJECTED_REACT_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactDOMUMDEntry; -} - -module.exports = ReactDOMUMDEntry;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDOMUnknownPropertyHook.js b/node_modules/react-dom/lib/ReactDOMUnknownPropertyHook.js deleted file mode 100644 index ab6a914fc..000000000 --- a/node_modules/react-dom/lib/ReactDOMUnknownPropertyHook.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMProperty = require('./DOMProperty'); -var EventPluginRegistry = require('./EventPluginRegistry'); -var ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); - -var warning = require('fbjs/lib/warning'); - -if (process.env.NODE_ENV !== 'production') { -  var reactProps = { -    children: true, -    dangerouslySetInnerHTML: true, -    key: true, -    ref: true, - -    autoFocus: true, -    defaultValue: true, -    valueLink: true, -    defaultChecked: true, -    checkedLink: true, -    innerHTML: true, -    suppressContentEditableWarning: true, -    onFocusIn: true, -    onFocusOut: true -  }; -  var warnedProperties = {}; - -  var validateProperty = function (tagName, name, debugID) { -    if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) { -      return true; -    } -    if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { -      return true; -    } -    if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) { -      return true; -    } -    warnedProperties[name] = true; -    var lowerCasedName = name.toLowerCase(); - -    // data-* attributes should be lowercase; suggest the lowercase version -    var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; - -    var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null; - -    if (standardName != null) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -      return true; -    } else if (registrationName != null) { -      process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -      return true; -    } else { -      // We were unable to guess which prop the user intended. -      // It is likely that the user was just blindly spreading/forwarding props -      // Components should be careful to only render valid props/attributes. -      // Warning will be invoked in warnUnknownProperties to allow grouping. -      return false; -    } -  }; -} - -var warnUnknownProperties = function (debugID, element) { -  var unknownProps = []; -  for (var key in element.props) { -    var isValid = validateProperty(element.type, key, debugID); -    if (!isValid) { -      unknownProps.push(key); -    } -  } - -  var unknownPropString = unknownProps.map(function (prop) { -    return '`' + prop + '`'; -  }).join(', '); - -  if (unknownProps.length === 1) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -  } else if (unknownProps.length > 1) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; -  } -}; - -function handleElement(debugID, element) { -  if (element == null || typeof element.type !== 'string') { -    return; -  } -  if (element.type.indexOf('-') >= 0 || element.props.is) { -    return; -  } -  warnUnknownProperties(debugID, element); -} - -var ReactDOMUnknownPropertyHook = { -  onBeforeMountComponent: function (debugID, element) { -    handleElement(debugID, element); -  }, -  onBeforeUpdateComponent: function (debugID, element) { -    handleElement(debugID, element); -  } -}; - -module.exports = ReactDOMUnknownPropertyHook;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDebugTool.js b/node_modules/react-dom/lib/ReactDebugTool.js deleted file mode 100644 index 4df393017..000000000 --- a/node_modules/react-dom/lib/ReactDebugTool.js +++ /dev/null @@ -1,360 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactInvalidSetStateWarningHook = require('./ReactInvalidSetStateWarningHook'); -var ReactHostOperationHistoryHook = require('./ReactHostOperationHistoryHook'); -var ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -var performanceNow = require('fbjs/lib/performanceNow'); -var warning = require('fbjs/lib/warning'); - -var hooks = []; -var didHookThrowForEvent = {}; - -function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) { -  try { -    fn.call(context, arg1, arg2, arg3, arg4, arg5); -  } catch (e) { -    process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0; -    didHookThrowForEvent[event] = true; -  } -} - -function emitEvent(event, arg1, arg2, arg3, arg4, arg5) { -  for (var i = 0; i < hooks.length; i++) { -    var hook = hooks[i]; -    var fn = hook[event]; -    if (fn) { -      callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5); -    } -  } -} - -var isProfiling = false; -var flushHistory = []; -var lifeCycleTimerStack = []; -var currentFlushNesting = 0; -var currentFlushMeasurements = []; -var currentFlushStartTime = 0; -var currentTimerDebugID = null; -var currentTimerStartTime = 0; -var currentTimerNestedFlushDuration = 0; -var currentTimerType = null; - -var lifeCycleTimerHasWarned = false; - -function clearHistory() { -  ReactComponentTreeHook.purgeUnmountedComponents(); -  ReactHostOperationHistoryHook.clearHistory(); -} - -function getTreeSnapshot(registeredIDs) { -  return registeredIDs.reduce(function (tree, id) { -    var ownerID = ReactComponentTreeHook.getOwnerID(id); -    var parentID = ReactComponentTreeHook.getParentID(id); -    tree[id] = { -      displayName: ReactComponentTreeHook.getDisplayName(id), -      text: ReactComponentTreeHook.getText(id), -      updateCount: ReactComponentTreeHook.getUpdateCount(id), -      childIDs: ReactComponentTreeHook.getChildIDs(id), -      // Text nodes don't have owners but this is close enough. -      ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0, -      parentID: parentID -    }; -    return tree; -  }, {}); -} - -function resetMeasurements() { -  var previousStartTime = currentFlushStartTime; -  var previousMeasurements = currentFlushMeasurements; -  var previousOperations = ReactHostOperationHistoryHook.getHistory(); - -  if (currentFlushNesting === 0) { -    currentFlushStartTime = 0; -    currentFlushMeasurements = []; -    clearHistory(); -    return; -  } - -  if (previousMeasurements.length || previousOperations.length) { -    var registeredIDs = ReactComponentTreeHook.getRegisteredIDs(); -    flushHistory.push({ -      duration: performanceNow() - previousStartTime, -      measurements: previousMeasurements || [], -      operations: previousOperations || [], -      treeSnapshot: getTreeSnapshot(registeredIDs) -    }); -  } - -  clearHistory(); -  currentFlushStartTime = performanceNow(); -  currentFlushMeasurements = []; -} - -function checkDebugID(debugID) { -  var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - -  if (allowRoot && debugID === 0) { -    return; -  } -  if (!debugID) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0; -  } -} - -function beginLifeCycleTimer(debugID, timerType) { -  if (currentFlushNesting === 0) { -    return; -  } -  if (currentTimerType && !lifeCycleTimerHasWarned) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; -    lifeCycleTimerHasWarned = true; -  } -  currentTimerStartTime = performanceNow(); -  currentTimerNestedFlushDuration = 0; -  currentTimerDebugID = debugID; -  currentTimerType = timerType; -} - -function endLifeCycleTimer(debugID, timerType) { -  if (currentFlushNesting === 0) { -    return; -  } -  if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) { -    process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; -    lifeCycleTimerHasWarned = true; -  } -  if (isProfiling) { -    currentFlushMeasurements.push({ -      timerType: timerType, -      instanceID: debugID, -      duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration -    }); -  } -  currentTimerStartTime = 0; -  currentTimerNestedFlushDuration = 0; -  currentTimerDebugID = null; -  currentTimerType = null; -} - -function pauseCurrentLifeCycleTimer() { -  var currentTimer = { -    startTime: currentTimerStartTime, -    nestedFlushStartTime: performanceNow(), -    debugID: currentTimerDebugID, -    timerType: currentTimerType -  }; -  lifeCycleTimerStack.push(currentTimer); -  currentTimerStartTime = 0; -  currentTimerNestedFlushDuration = 0; -  currentTimerDebugID = null; -  currentTimerType = null; -} - -function resumeCurrentLifeCycleTimer() { -  var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(), -      startTime = _lifeCycleTimerStack$.startTime, -      nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime, -      debugID = _lifeCycleTimerStack$.debugID, -      timerType = _lifeCycleTimerStack$.timerType; - -  var nestedFlushDuration = performanceNow() - nestedFlushStartTime; -  currentTimerStartTime = startTime; -  currentTimerNestedFlushDuration += nestedFlushDuration; -  currentTimerDebugID = debugID; -  currentTimerType = timerType; -} - -var lastMarkTimeStamp = 0; -var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function'; - -function shouldMark(debugID) { -  if (!isProfiling || !canUsePerformanceMeasure) { -    return false; -  } -  var element = ReactComponentTreeHook.getElement(debugID); -  if (element == null || typeof element !== 'object') { -    return false; -  } -  var isHostElement = typeof element.type === 'string'; -  if (isHostElement) { -    return false; -  } -  return true; -} - -function markBegin(debugID, markType) { -  if (!shouldMark(debugID)) { -    return; -  } - -  var markName = debugID + '::' + markType; -  lastMarkTimeStamp = performanceNow(); -  performance.mark(markName); -} - -function markEnd(debugID, markType) { -  if (!shouldMark(debugID)) { -    return; -  } - -  var markName = debugID + '::' + markType; -  var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown'; - -  // Chrome has an issue of dropping markers recorded too fast: -  // https://bugs.chromium.org/p/chromium/issues/detail?id=640652 -  // To work around this, we will not report very small measurements. -  // I determined the magic number by tweaking it back and forth. -  // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe. -  // When the bug is fixed, we can `measure()` unconditionally if we want to. -  var timeStamp = performanceNow(); -  if (timeStamp - lastMarkTimeStamp > 0.1) { -    var measurementName = displayName + ' [' + markType + ']'; -    performance.measure(measurementName, markName); -  } - -  performance.clearMarks(markName); -  if (measurementName) { -    performance.clearMeasures(measurementName); -  } -} - -var ReactDebugTool = { -  addHook: function (hook) { -    hooks.push(hook); -  }, -  removeHook: function (hook) { -    for (var i = 0; i < hooks.length; i++) { -      if (hooks[i] === hook) { -        hooks.splice(i, 1); -        i--; -      } -    } -  }, -  isProfiling: function () { -    return isProfiling; -  }, -  beginProfiling: function () { -    if (isProfiling) { -      return; -    } - -    isProfiling = true; -    flushHistory.length = 0; -    resetMeasurements(); -    ReactDebugTool.addHook(ReactHostOperationHistoryHook); -  }, -  endProfiling: function () { -    if (!isProfiling) { -      return; -    } - -    isProfiling = false; -    resetMeasurements(); -    ReactDebugTool.removeHook(ReactHostOperationHistoryHook); -  }, -  getFlushHistory: function () { -    return flushHistory; -  }, -  onBeginFlush: function () { -    currentFlushNesting++; -    resetMeasurements(); -    pauseCurrentLifeCycleTimer(); -    emitEvent('onBeginFlush'); -  }, -  onEndFlush: function () { -    resetMeasurements(); -    currentFlushNesting--; -    resumeCurrentLifeCycleTimer(); -    emitEvent('onEndFlush'); -  }, -  onBeginLifeCycleTimer: function (debugID, timerType) { -    checkDebugID(debugID); -    emitEvent('onBeginLifeCycleTimer', debugID, timerType); -    markBegin(debugID, timerType); -    beginLifeCycleTimer(debugID, timerType); -  }, -  onEndLifeCycleTimer: function (debugID, timerType) { -    checkDebugID(debugID); -    endLifeCycleTimer(debugID, timerType); -    markEnd(debugID, timerType); -    emitEvent('onEndLifeCycleTimer', debugID, timerType); -  }, -  onBeginProcessingChildContext: function () { -    emitEvent('onBeginProcessingChildContext'); -  }, -  onEndProcessingChildContext: function () { -    emitEvent('onEndProcessingChildContext'); -  }, -  onHostOperation: function (operation) { -    checkDebugID(operation.instanceID); -    emitEvent('onHostOperation', operation); -  }, -  onSetState: function () { -    emitEvent('onSetState'); -  }, -  onSetChildren: function (debugID, childDebugIDs) { -    checkDebugID(debugID); -    childDebugIDs.forEach(checkDebugID); -    emitEvent('onSetChildren', debugID, childDebugIDs); -  }, -  onBeforeMountComponent: function (debugID, element, parentDebugID) { -    checkDebugID(debugID); -    checkDebugID(parentDebugID, true); -    emitEvent('onBeforeMountComponent', debugID, element, parentDebugID); -    markBegin(debugID, 'mount'); -  }, -  onMountComponent: function (debugID) { -    checkDebugID(debugID); -    markEnd(debugID, 'mount'); -    emitEvent('onMountComponent', debugID); -  }, -  onBeforeUpdateComponent: function (debugID, element) { -    checkDebugID(debugID); -    emitEvent('onBeforeUpdateComponent', debugID, element); -    markBegin(debugID, 'update'); -  }, -  onUpdateComponent: function (debugID) { -    checkDebugID(debugID); -    markEnd(debugID, 'update'); -    emitEvent('onUpdateComponent', debugID); -  }, -  onBeforeUnmountComponent: function (debugID) { -    checkDebugID(debugID); -    emitEvent('onBeforeUnmountComponent', debugID); -    markBegin(debugID, 'unmount'); -  }, -  onUnmountComponent: function (debugID) { -    checkDebugID(debugID); -    markEnd(debugID, 'unmount'); -    emitEvent('onUnmountComponent', debugID); -  }, -  onTestEvent: function () { -    emitEvent('onTestEvent'); -  } -}; - -// TODO remove these when RN/www gets updated -ReactDebugTool.addDevtool = ReactDebugTool.addHook; -ReactDebugTool.removeDevtool = ReactDebugTool.removeHook; - -ReactDebugTool.addHook(ReactInvalidSetStateWarningHook); -ReactDebugTool.addHook(ReactComponentTreeHook); -var url = ExecutionEnvironment.canUseDOM && window.location.href || ''; -if (/[?&]react_perf\b/.test(url)) { -  ReactDebugTool.beginProfiling(); -} - -module.exports = ReactDebugTool;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js b/node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js deleted file mode 100644 index 5e149f06e..000000000 --- a/node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var ReactUpdates = require('./ReactUpdates'); -var Transaction = require('./Transaction'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); - -var RESET_BATCHED_UPDATES = { -  initialize: emptyFunction, -  close: function () { -    ReactDefaultBatchingStrategy.isBatchingUpdates = false; -  } -}; - -var FLUSH_BATCHED_UPDATES = { -  initialize: emptyFunction, -  close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates) -}; - -var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES]; - -function ReactDefaultBatchingStrategyTransaction() { -  this.reinitializeTransaction(); -} - -_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, { -  getTransactionWrappers: function () { -    return TRANSACTION_WRAPPERS; -  } -}); - -var transaction = new ReactDefaultBatchingStrategyTransaction(); - -var ReactDefaultBatchingStrategy = { -  isBatchingUpdates: false, - -  /** -   * Call the provided function in a context within which calls to `setState` -   * and friends are batched such that components aren't updated unnecessarily. -   */ -  batchedUpdates: function (callback, a, b, c, d, e) { -    var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates; - -    ReactDefaultBatchingStrategy.isBatchingUpdates = true; - -    // The code is written this way to avoid extra allocations -    if (alreadyBatchingUpdates) { -      return callback(a, b, c, d, e); -    } else { -      return transaction.perform(callback, null, a, b, c, d, e); -    } -  } -}; - -module.exports = ReactDefaultBatchingStrategy;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactDefaultInjection.js b/node_modules/react-dom/lib/ReactDefaultInjection.js deleted file mode 100644 index bfed0f150..000000000 --- a/node_modules/react-dom/lib/ReactDefaultInjection.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig'); -var BeforeInputEventPlugin = require('./BeforeInputEventPlugin'); -var ChangeEventPlugin = require('./ChangeEventPlugin'); -var DefaultEventPluginOrder = require('./DefaultEventPluginOrder'); -var EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin'); -var HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig'); -var ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment'); -var ReactDOMComponent = require('./ReactDOMComponent'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent'); -var ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal'); -var ReactDOMTextComponent = require('./ReactDOMTextComponent'); -var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy'); -var ReactEventListener = require('./ReactEventListener'); -var ReactInjection = require('./ReactInjection'); -var ReactReconcileTransaction = require('./ReactReconcileTransaction'); -var SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig'); -var SelectEventPlugin = require('./SelectEventPlugin'); -var SimpleEventPlugin = require('./SimpleEventPlugin'); - -var alreadyInjected = false; - -function inject() { -  if (alreadyInjected) { -    // TODO: This is currently true because these injections are shared between -    // the client and the server package. They should be built independently -    // and not share any injection state. Then this problem will be solved. -    return; -  } -  alreadyInjected = true; - -  ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener); - -  /** -   * Inject modules for resolving DOM hierarchy and plugin ordering. -   */ -  ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder); -  ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree); -  ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal); - -  /** -   * Some important event plugins included by default (without having to require -   * them). -   */ -  ReactInjection.EventPluginHub.injectEventPluginsByName({ -    SimpleEventPlugin: SimpleEventPlugin, -    EnterLeaveEventPlugin: EnterLeaveEventPlugin, -    ChangeEventPlugin: ChangeEventPlugin, -    SelectEventPlugin: SelectEventPlugin, -    BeforeInputEventPlugin: BeforeInputEventPlugin -  }); - -  ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent); - -  ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent); - -  ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig); -  ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig); -  ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig); - -  ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) { -    return new ReactDOMEmptyComponent(instantiate); -  }); - -  ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction); -  ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy); - -  ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment); -} - -module.exports = { -  inject: inject -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactElementSymbol.js b/node_modules/react-dom/lib/ReactElementSymbol.js deleted file mode 100644 index c13765b9d..000000000 --- a/node_modules/react-dom/lib/ReactElementSymbol.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -// The Symbol used to tag the ReactElement type. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. - -var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; - -module.exports = REACT_ELEMENT_TYPE;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactEmptyComponent.js b/node_modules/react-dom/lib/ReactEmptyComponent.js deleted file mode 100644 index fbea94096..000000000 --- a/node_modules/react-dom/lib/ReactEmptyComponent.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var emptyComponentFactory; - -var ReactEmptyComponentInjection = { -  injectEmptyComponentFactory: function (factory) { -    emptyComponentFactory = factory; -  } -}; - -var ReactEmptyComponent = { -  create: function (instantiate) { -    return emptyComponentFactory(instantiate); -  } -}; - -ReactEmptyComponent.injection = ReactEmptyComponentInjection; - -module.exports = ReactEmptyComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactErrorUtils.js b/node_modules/react-dom/lib/ReactErrorUtils.js deleted file mode 100644 index d8b59dbd7..000000000 --- a/node_modules/react-dom/lib/ReactErrorUtils.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var caughtError = null; - -/** - * Call a function while guarding against errors that happens within it. - * - * @param {String} name of the guard to use for logging or debugging - * @param {Function} func The function to invoke - * @param {*} a First argument - * @param {*} b Second argument - */ -function invokeGuardedCallback(name, func, a) { -  try { -    func(a); -  } catch (x) { -    if (caughtError === null) { -      caughtError = x; -    } -  } -} - -var ReactErrorUtils = { -  invokeGuardedCallback: invokeGuardedCallback, - -  /** -   * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event -   * handler are sure to be rethrown by rethrowCaughtError. -   */ -  invokeGuardedCallbackWithCatch: invokeGuardedCallback, - -  /** -   * During execution of guarded functions we will capture the first error which -   * we will rethrow to be handled by the top level error handler. -   */ -  rethrowCaughtError: function () { -    if (caughtError) { -      var error = caughtError; -      caughtError = null; -      throw error; -    } -  } -}; - -if (process.env.NODE_ENV !== 'production') { -  /** -   * To help development we can get better devtools integration by simulating a -   * real browser event. -   */ -  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') { -    var fakeNode = document.createElement('react'); -    ReactErrorUtils.invokeGuardedCallback = function (name, func, a) { -      var boundFunc = func.bind(null, a); -      var evtType = 'react-' + name; -      fakeNode.addEventListener(evtType, boundFunc, false); -      var evt = document.createEvent('Event'); -      evt.initEvent(evtType, false, false); -      fakeNode.dispatchEvent(evt); -      fakeNode.removeEventListener(evtType, boundFunc, false); -    }; -  } -} - -module.exports = ReactErrorUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactEventEmitterMixin.js b/node_modules/react-dom/lib/ReactEventEmitterMixin.js deleted file mode 100644 index 74d5b8a13..000000000 --- a/node_modules/react-dom/lib/ReactEventEmitterMixin.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPluginHub = require('./EventPluginHub'); - -function runEventQueueInBatch(events) { -  EventPluginHub.enqueueEvents(events); -  EventPluginHub.processEventQueue(false); -} - -var ReactEventEmitterMixin = { -  /** -   * Streams a fired top-level event to `EventPluginHub` where plugins have the -   * opportunity to create `ReactEvent`s to be dispatched. -   */ -  handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); -    runEventQueueInBatch(events); -  } -}; - -module.exports = ReactEventEmitterMixin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactEventListener.js b/node_modules/react-dom/lib/ReactEventListener.js deleted file mode 100644 index e81b14d26..000000000 --- a/node_modules/react-dom/lib/ReactEventListener.js +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var EventListener = require('fbjs/lib/EventListener'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var PooledClass = require('./PooledClass'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactUpdates = require('./ReactUpdates'); - -var getEventTarget = require('./getEventTarget'); -var getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition'); - -/** - * Find the deepest React component completely containing the root of the - * passed-in instance (for use when entire React trees are nested within each - * other). If React trees are not nested, returns null. - */ -function findParent(inst) { -  // TODO: It may be a good idea to cache this to prevent unnecessary DOM -  // traversal, but caching is difficult to do correctly without using a -  // mutation observer to listen for all DOM changes. -  while (inst._hostParent) { -    inst = inst._hostParent; -  } -  var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst); -  var container = rootNode.parentNode; -  return ReactDOMComponentTree.getClosestInstanceFromNode(container); -} - -// Used to store ancestor hierarchy in top level callback -function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) { -  this.topLevelType = topLevelType; -  this.nativeEvent = nativeEvent; -  this.ancestors = []; -} -_assign(TopLevelCallbackBookKeeping.prototype, { -  destructor: function () { -    this.topLevelType = null; -    this.nativeEvent = null; -    this.ancestors.length = 0; -  } -}); -PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler); - -function handleTopLevelImpl(bookKeeping) { -  var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent); -  var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget); - -  // Loop through the hierarchy, in case there's any nested components. -  // It's important that we build the array of ancestors before calling any -  // event handlers, because event handlers can modify the DOM, leading to -  // inconsistencies with ReactMount's node cache. See #1105. -  var ancestor = targetInst; -  do { -    bookKeeping.ancestors.push(ancestor); -    ancestor = ancestor && findParent(ancestor); -  } while (ancestor); - -  for (var i = 0; i < bookKeeping.ancestors.length; i++) { -    targetInst = bookKeeping.ancestors[i]; -    ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent)); -  } -} - -function scrollValueMonitor(cb) { -  var scrollPosition = getUnboundedScrollPosition(window); -  cb(scrollPosition); -} - -var ReactEventListener = { -  _enabled: true, -  _handleTopLevel: null, - -  WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null, - -  setHandleTopLevel: function (handleTopLevel) { -    ReactEventListener._handleTopLevel = handleTopLevel; -  }, - -  setEnabled: function (enabled) { -    ReactEventListener._enabled = !!enabled; -  }, - -  isEnabled: function () { -    return ReactEventListener._enabled; -  }, - -  /** -   * Traps top-level events by using event bubbling. -   * -   * @param {string} topLevelType Record from `EventConstants`. -   * @param {string} handlerBaseName Event name (e.g. "click"). -   * @param {object} element Element on which to attach listener. -   * @return {?object} An object with a remove function which will forcefully -   *                  remove the listener. -   * @internal -   */ -  trapBubbledEvent: function (topLevelType, handlerBaseName, element) { -    if (!element) { -      return null; -    } -    return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); -  }, - -  /** -   * Traps a top-level event by using event capturing. -   * -   * @param {string} topLevelType Record from `EventConstants`. -   * @param {string} handlerBaseName Event name (e.g. "click"). -   * @param {object} element Element on which to attach listener. -   * @return {?object} An object with a remove function which will forcefully -   *                  remove the listener. -   * @internal -   */ -  trapCapturedEvent: function (topLevelType, handlerBaseName, element) { -    if (!element) { -      return null; -    } -    return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); -  }, - -  monitorScrollValue: function (refresh) { -    var callback = scrollValueMonitor.bind(null, refresh); -    EventListener.listen(window, 'scroll', callback); -  }, - -  dispatchEvent: function (topLevelType, nativeEvent) { -    if (!ReactEventListener._enabled) { -      return; -    } - -    var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent); -    try { -      // Event queue being processed in the same cycle allows -      // `preventDefault`. -      ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping); -    } finally { -      TopLevelCallbackBookKeeping.release(bookKeeping); -    } -  } -}; - -module.exports = ReactEventListener;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFeatureFlags.js b/node_modules/react-dom/lib/ReactFeatureFlags.js deleted file mode 100644 index 27b8caf52..000000000 --- a/node_modules/react-dom/lib/ReactFeatureFlags.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactFeatureFlags = { -  // When true, call console.time() before and .timeEnd() after each top-level -  // render (both initial renders and updates). Useful when looking at prod-mode -  // timeline profiles in Chrome, for example. -  logTopLevelRenders: false -}; - -module.exports = ReactFeatureFlags;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiber.js b/node_modules/react-dom/lib/ReactFiber.js deleted file mode 100644 index 2774a2dc4..000000000 --- a/node_modules/react-dom/lib/ReactFiber.js +++ /dev/null @@ -1,188 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactTypeOfWork = require('./ReactTypeOfWork'); -var IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, -    ClassComponent = ReactTypeOfWork.ClassComponent, -    HostContainer = ReactTypeOfWork.HostContainer, -    HostComponent = ReactTypeOfWork.HostComponent, -    CoroutineComponent = ReactTypeOfWork.CoroutineComponent, -    YieldComponent = ReactTypeOfWork.YieldComponent; - -var _require = require('./ReactPriorityLevel'), -    NoWork = _require.NoWork; - -// An Instance is shared between all versions of a component. We can easily -// break this out into a separate object to avoid copying so much to the -// alternate versions of the tree. We put this on a single object for now to -// minimize the number of objects created during the initial render. - - -// A Fiber is work on a Component that needs to be done or was done. There can -// be more than one per component. - - -// This is a constructor of a POJO instead of a constructor function for a few -// reasons: -// 1) Nobody should add any instance methods on this. Instance methods can be -//    more difficult to predict when they get optimized and they are almost -//    never inlined properly in static compilers. -// 2) Nobody should rely on `instanceof Fiber` for type testing. We should -//    always know when it is a fiber. -// 3) We can easily go from a createFiber call to calling a constructor if that -//    is faster. The opposite is not true. -// 4) We might want to experiment with using numeric keys since they are easier -//    to optimize in a non-JIT environment. -// 5) It should be easy to port this to a C struct and keep a C implementation -//    compatible. -var createFiber = function (tag, key) { -  return { -    // Instance - -    tag: tag, - -    key: key, - -    type: null, - -    stateNode: null, - -    // Fiber - -    'return': null, - -    child: null, -    sibling: null, - -    ref: null, - -    pendingProps: null, -    memoizedProps: null, -    updateQueue: null, -    memoizedState: null, -    callbackList: null, -    output: null, - -    nextEffect: null, -    firstEffect: null, -    lastEffect: null, - -    pendingWorkPriority: NoWork, -    progressedPriority: NoWork, -    progressedChild: null, - -    alternate: null -  }; -}; - -function shouldConstruct(Component) { -  return !!(Component.prototype && Component.prototype.isReactComponent); -} - -// This is used to create an alternate fiber to do work on. -// TODO: Rename to createWorkInProgressFiber or something like that. -exports.cloneFiber = function (fiber, priorityLevel) { -  // We clone to get a work in progress. That means that this fiber is the -  // current. To make it safe to reuse that fiber later on as work in progress -  // we need to reset its work in progress flag now. We don't have an -  // opportunity to do this earlier since we don't traverse the tree when -  // the work in progress tree becomes the current tree. -  // fiber.progressedPriority = NoWork; -  // fiber.progressedChild = null; - -  // We use a double buffering pooling technique because we know that we'll only -  // ever need at most two versions of a tree. We pool the "other" unused node -  // that we're free to reuse. This is lazily created to avoid allocating extra -  // objects for things that are never updated. It also allow us to reclaim the -  // extra memory if needed. -  var alt = fiber.alternate; -  if (alt) { -    // Whenever we clone, we do so to get a new work in progress. -    // This ensures that we've reset these in the new tree. -    alt.nextEffect = null; -    alt.firstEffect = null; -    alt.lastEffect = null; -  } else { -    // This should not have an alternate already -    alt = createFiber(fiber.tag, fiber.key); -    alt.type = fiber.type; - -    alt.progressedChild = fiber.progressedChild; -    alt.progressedPriority = fiber.progressedPriority; - -    alt.alternate = fiber; -    fiber.alternate = alt; -  } - -  alt.stateNode = fiber.stateNode; -  alt.child = fiber.child; -  alt.sibling = fiber.sibling; // This should always be overridden. TODO: null -  alt.ref = fiber.ref; -  // pendingProps is here for symmetry but is unnecessary in practice for now. -  // TODO: Pass in the new pendingProps as an argument maybe? -  alt.pendingProps = fiber.pendingProps; -  alt.updateQueue = fiber.updateQueue; -  alt.callbackList = fiber.callbackList; -  alt.pendingWorkPriority = priorityLevel; - -  alt.memoizedProps = fiber.memoizedProps; -  alt.output = fiber.output; - -  return alt; -}; - -exports.createHostContainerFiber = function () { -  var fiber = createFiber(HostContainer, null); -  return fiber; -}; - -exports.createFiberFromElement = function (element, priorityLevel) { -  // $FlowFixMe: ReactElement.key is currently defined as ?string but should be defined as null | string in Flow. -  var fiber = createFiberFromElementType(element.type, element.key); -  fiber.pendingProps = element.props; -  fiber.pendingWorkPriority = priorityLevel; -  return fiber; -}; - -function createFiberFromElementType(type, key) { -  var fiber = void 0; -  if (typeof type === 'function') { -    fiber = shouldConstruct(type) ? createFiber(ClassComponent, key) : createFiber(IndeterminateComponent, key); -    fiber.type = type; -  } else if (typeof type === 'string') { -    fiber = createFiber(HostComponent, key); -    fiber.type = type; -  } else if (typeof type === 'object' && type !== null) { -    // Currently assumed to be a continuation and therefore is a fiber already. -    fiber = type; -  } else { -    throw new Error('Unknown component type: ' + typeof type); -  } -  return fiber; -} - -exports.createFiberFromElementType = createFiberFromElementType; - -exports.createFiberFromCoroutine = function (coroutine, priorityLevel) { -  var fiber = createFiber(CoroutineComponent, coroutine.key); -  fiber.type = coroutine.handler; -  fiber.pendingProps = coroutine; -  fiber.pendingWorkPriority = priorityLevel; -  return fiber; -}; - -exports.createFiberFromYield = function (yieldNode, priorityLevel) { -  var fiber = createFiber(YieldComponent, yieldNode.key); -  fiber.pendingProps = {}; -  return fiber; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberBeginWork.js b/node_modules/react-dom/lib/ReactFiberBeginWork.js deleted file mode 100644 index d87b6f0a7..000000000 --- a/node_modules/react-dom/lib/ReactFiberBeginWork.js +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _require = require('./ReactChildFiber'), -    reconcileChildFibers = _require.reconcileChildFibers, -    reconcileChildFibersInPlace = _require.reconcileChildFibersInPlace, -    cloneChildFibers = _require.cloneChildFibers; - -var _require2 = require('./ReactPriorityLevel'), -    LowPriority = _require2.LowPriority; - -var ReactTypeOfWork = require('./ReactTypeOfWork'); -var IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, -    FunctionalComponent = ReactTypeOfWork.FunctionalComponent, -    ClassComponent = ReactTypeOfWork.ClassComponent, -    HostContainer = ReactTypeOfWork.HostContainer, -    HostComponent = ReactTypeOfWork.HostComponent, -    CoroutineComponent = ReactTypeOfWork.CoroutineComponent, -    CoroutineHandlerPhase = ReactTypeOfWork.CoroutineHandlerPhase, -    YieldComponent = ReactTypeOfWork.YieldComponent; - -var _require3 = require('./ReactPriorityLevel'), -    NoWork = _require3.NoWork, -    OffscreenPriority = _require3.OffscreenPriority; - -var _require4 = require('./ReactFiberUpdateQueue'), -    createUpdateQueue = _require4.createUpdateQueue, -    addToQueue = _require4.addToQueue, -    addCallbackToQueue = _require4.addCallbackToQueue, -    mergeUpdateQueue = _require4.mergeUpdateQueue; - -var ReactInstanceMap = require('./ReactInstanceMap'); - -module.exports = function (config, getScheduler) { -  function markChildAsProgressed(current, workInProgress, priorityLevel) { -    // We now have clones. Let's store them as the currently progressed work. -    workInProgress.progressedChild = workInProgress.child; -    workInProgress.progressedPriority = priorityLevel; -    if (current) { -      // We also store it on the current. When the alternate swaps in we can -      // continue from this point. -      current.progressedChild = workInProgress.progressedChild; -      current.progressedPriority = workInProgress.progressedPriority; -    } -  } - -  function reconcileChildren(current, workInProgress, nextChildren) { -    var priorityLevel = workInProgress.pendingWorkPriority; -    reconcileChildrenAtPriority(current, workInProgress, nextChildren, priorityLevel); -  } - -  function reconcileChildrenAtPriority(current, workInProgress, nextChildren, priorityLevel) { -    // At this point any memoization is no longer valid since we'll have changed -    // the children. -    workInProgress.memoizedProps = null; -    if (current && current.child === workInProgress.child) { -      // If the current child is the same as the work in progress, it means that -      // we haven't yet started any work on these children. Therefore, we use -      // the clone algorithm to create a copy of all the current children. -      workInProgress.child = reconcileChildFibers(workInProgress, workInProgress.child, nextChildren, priorityLevel); -    } else { -      // If, on the other hand, we don't have a current fiber or if it is -      // already using a clone, that means we've already begun some work on this -      // tree and we can continue where we left off by reconciling against the -      // existing children. -      workInProgress.child = reconcileChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, priorityLevel); -    } -    markChildAsProgressed(current, workInProgress, priorityLevel); -  } - -  function updateFunctionalComponent(current, workInProgress) { -    var fn = workInProgress.type; -    var props = workInProgress.pendingProps; - -    // TODO: Disable this before release, since it is not part of the public API -    // I use this for testing to compare the relative overhead of classes. -    if (typeof fn.shouldComponentUpdate === 'function') { -      if (workInProgress.memoizedProps !== null) { -        if (!fn.shouldComponentUpdate(workInProgress.memoizedProps, props)) { -          return bailoutOnAlreadyFinishedWork(current, workInProgress); -        } -      } -    } - -    var nextChildren = fn(props); -    reconcileChildren(current, workInProgress, nextChildren); -    return workInProgress.child; -  } - -  function scheduleUpdate(fiber, updateQueue, priorityLevel) { -    var _getScheduler = getScheduler(), -        scheduleDeferredWork = _getScheduler.scheduleDeferredWork; - -    fiber.updateQueue = updateQueue; -    // Schedule update on the alternate as well, since we don't know which tree -    // is current. -    if (fiber.alternate) { -      fiber.alternate.updateQueue = updateQueue; -    } -    while (true) { -      if (fiber.pendingWorkPriority === NoWork || fiber.pendingWorkPriority >= priorityLevel) { -        fiber.pendingWorkPriority = priorityLevel; -      } -      if (fiber.alternate) { -        if (fiber.alternate.pendingWorkPriority === NoWork || fiber.alternate.pendingWorkPriority >= priorityLevel) { -          fiber.alternate.pendingWorkPriority = priorityLevel; -        } -      } -      // Duck type root -      if (fiber.stateNode && fiber.stateNode.containerInfo) { -        var root = fiber.stateNode; -        scheduleDeferredWork(root, priorityLevel); -        return; -      } -      if (!fiber['return']) { -        throw new Error('No root!'); -      } -      fiber = fiber['return']; -    } -  } - -  // Class component state updater -  var updater = { -    enqueueSetState: function (instance, partialState) { -      var fiber = ReactInstanceMap.get(instance); -      var updateQueue = fiber.updateQueue ? addToQueue(fiber.updateQueue, partialState) : createUpdateQueue(partialState); -      scheduleUpdate(fiber, updateQueue, LowPriority); -    }, -    enqueueReplaceState: function (instance, state) { -      var fiber = ReactInstanceMap.get(instance); -      var updateQueue = createUpdateQueue(state); -      updateQueue.isReplace = true; -      scheduleUpdate(fiber, updateQueue, LowPriority); -    }, -    enqueueForceUpdate: function (instance) { -      var fiber = ReactInstanceMap.get(instance); -      var updateQueue = fiber.updateQueue || createUpdateQueue(null); -      updateQueue.isForced = true; -      scheduleUpdate(fiber, updateQueue, LowPriority); -    }, -    enqueueCallback: function (instance, callback) { -      var fiber = ReactInstanceMap.get(instance); -      var updateQueue = fiber.updateQueue ? fiber.updateQueue : createUpdateQueue(null); -      addCallbackToQueue(updateQueue, callback); -      fiber.updateQueue = updateQueue; -      if (fiber.alternate) { -        fiber.alternate.updateQueue = updateQueue; -      } -    } -  }; - -  function updateClassComponent(current, workInProgress) { -    // A class component update is the result of either new props or new state. -    // Account for the possibly of missing pending props by falling back to the -    // memoized props. -    var props = workInProgress.pendingProps; -    if (!props && current) { -      props = current.memoizedProps; -    } -    // Compute the state using the memoized state and the update queue. -    var updateQueue = workInProgress.updateQueue; -    var previousState = current ? current.memoizedState : null; -    var state = updateQueue ? mergeUpdateQueue(updateQueue, previousState, props) : previousState; - -    var instance = workInProgress.stateNode; -    if (!instance) { -      var ctor = workInProgress.type; -      workInProgress.stateNode = instance = new ctor(props); -      state = instance.state || null; -      // The initial state must be added to the update queue in case -      // setState is called before the initial render. -      if (state !== null) { -        workInProgress.updateQueue = createUpdateQueue(state); -      } -      // The instance needs access to the fiber so that it can schedule updates -      ReactInstanceMap.set(instance, workInProgress); -      instance.updater = updater; -    } else if (typeof instance.shouldComponentUpdate === 'function' && !(updateQueue && updateQueue.isForced)) { -      if (workInProgress.memoizedProps !== null) { -        // Reset the props, in case this is a ping-pong case rather than a -        // completed update case. For the completed update case, the instance -        // props will already be the memoizedProps. -        instance.props = workInProgress.memoizedProps; -        instance.state = workInProgress.memoizedState; -        if (!instance.shouldComponentUpdate(props, state)) { -          return bailoutOnAlreadyFinishedWork(current, workInProgress); -        } -      } -    } - -    instance.props = props; -    instance.state = state; -    var nextChildren = instance.render(); -    reconcileChildren(current, workInProgress, nextChildren); - -    return workInProgress.child; -  } - -  function updateHostComponent(current, workInProgress) { -    var nextChildren = workInProgress.pendingProps.children; -    if (workInProgress.pendingProps.hidden && workInProgress.pendingWorkPriority !== OffscreenPriority) { -      // If this host component is hidden, we can bail out on the children. -      // We'll rerender the children later at the lower priority. - -      // It is unfortunate that we have to do the reconciliation of these -      // children already since that will add them to the tree even though -      // they are not actually done yet. If this is a large set it is also -      // confusing that this takes time to do right now instead of later. - -      if (workInProgress.progressedPriority === OffscreenPriority) { -        // If we already made some progress on the offscreen priority before, -        // then we should continue from where we left off. -        workInProgress.child = workInProgress.progressedChild; -      } - -      // Reconcile the children and stash them for later work. -      reconcileChildrenAtPriority(current, workInProgress, nextChildren, OffscreenPriority); -      workInProgress.child = current ? current.child : null; -      // Abort and don't process children yet. -      return null; -    } else { -      reconcileChildren(current, workInProgress, nextChildren); -      return workInProgress.child; -    } -  } - -  function mountIndeterminateComponent(current, workInProgress) { -    var fn = workInProgress.type; -    var props = workInProgress.pendingProps; -    var value = fn(props); -    if (typeof value === 'object' && value && typeof value.render === 'function') { -      // Proceed under the assumption that this is a class instance -      workInProgress.tag = ClassComponent; -      if (current) { -        current.tag = ClassComponent; -      } -      value = value.render(); -    } else { -      // Proceed under the assumption that this is a functional component -      workInProgress.tag = FunctionalComponent; -      if (current) { -        current.tag = FunctionalComponent; -      } -    } -    reconcileChildren(current, workInProgress, value); -    return workInProgress.child; -  } - -  function updateCoroutineComponent(current, workInProgress) { -    var coroutine = workInProgress.pendingProps; -    if (!coroutine) { -      throw new Error('Should be resolved by now'); -    } -    reconcileChildren(current, workInProgress, coroutine.children); -  } - -  /* -  function reuseChildrenEffects(returnFiber : Fiber, firstChild : Fiber) { -    let child = firstChild; -    do { -      // Ensure that the first and last effect of the parent corresponds -      // to the children's first and last effect. -      if (!returnFiber.firstEffect) { -        returnFiber.firstEffect = child.firstEffect; -      } -      if (child.lastEffect) { -        if (returnFiber.lastEffect) { -          returnFiber.lastEffect.nextEffect = child.firstEffect; -        } -        returnFiber.lastEffect = child.lastEffect; -      } -    } while (child = child.sibling); -  } -  */ - -  function bailoutOnAlreadyFinishedWork(current, workInProgress) { -    var priorityLevel = workInProgress.pendingWorkPriority; - -    // TODO: We should ideally be able to bail out early if the children have no -    // more work to do. However, since we don't have a separation of this -    // Fiber's priority and its children yet - we don't know without doing lots -    // of the same work we do anyway. Once we have that separation we can just -    // bail out here if the children has no more work at this priority level. -    // if (workInProgress.priorityOfChildren <= priorityLevel) { -    //   // If there are side-effects in these children that have not yet been -    //   // committed we need to ensure that they get properly transferred up. -    //   if (current && current.child !== workInProgress.child) { -    //     reuseChildrenEffects(workInProgress, child); -    //   } -    //   return null; -    // } - -    cloneChildFibers(current, workInProgress); -    markChildAsProgressed(current, workInProgress, priorityLevel); -    return workInProgress.child; -  } - -  function bailoutOnLowPriority(current, workInProgress) { -    if (current) { -      workInProgress.child = current.child; -      workInProgress.memoizedProps = current.memoizedProps; -      workInProgress.output = current.output; -    } -    return null; -  } - -  function beginWork(current, workInProgress, priorityLevel) { -    if (workInProgress.pendingWorkPriority === NoWork || workInProgress.pendingWorkPriority > priorityLevel) { -      return bailoutOnLowPriority(current, workInProgress); -    } - -    if (workInProgress.progressedPriority === priorityLevel) { -      // If we have progressed work on this priority level already, we can -      // proceed this that as the child. -      workInProgress.child = workInProgress.progressedChild; -    } - -    if ((workInProgress.pendingProps === null || workInProgress.memoizedProps !== null && workInProgress.pendingProps === workInProgress.memoizedProps) && workInProgress.updateQueue === null) { -      return bailoutOnAlreadyFinishedWork(current, workInProgress); -    } - -    switch (workInProgress.tag) { -      case IndeterminateComponent: -        return mountIndeterminateComponent(current, workInProgress); -      case FunctionalComponent: -        return updateFunctionalComponent(current, workInProgress); -      case ClassComponent: -        return updateClassComponent(current, workInProgress); -      case HostContainer: -        reconcileChildren(current, workInProgress, workInProgress.pendingProps); -        // A yield component is just a placeholder, we can just run through the -        // next one immediately. -        if (workInProgress.child) { -          return beginWork(workInProgress.child.alternate, workInProgress.child, priorityLevel); -        } -        return null; -      case HostComponent: -        if (workInProgress.stateNode && typeof config.beginUpdate === 'function') { -          config.beginUpdate(workInProgress.stateNode); -        } -        return updateHostComponent(current, workInProgress); -      case CoroutineHandlerPhase: -        // This is a restart. Reset the tag to the initial phase. -        workInProgress.tag = CoroutineComponent; -      // Intentionally fall through since this is now the same. -      case CoroutineComponent: -        updateCoroutineComponent(current, workInProgress); -        // This doesn't take arbitrary time so we could synchronously just begin -        // eagerly do the work of workInProgress.child as an optimization. -        if (workInProgress.child) { -          return beginWork(workInProgress.child.alternate, workInProgress.child, priorityLevel); -        } -        return workInProgress.child; -      case YieldComponent: -        // A yield component is just a placeholder, we can just run through the -        // next one immediately. -        if (workInProgress.sibling) { -          return beginWork(workInProgress.sibling.alternate, workInProgress.sibling, priorityLevel); -        } -        return null; -      default: -        throw new Error('Unknown unit of work tag'); -    } -  } - -  return { -    beginWork: beginWork -  }; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberCommitWork.js b/node_modules/react-dom/lib/ReactFiberCommitWork.js deleted file mode 100644 index bdf063c8f..000000000 --- a/node_modules/react-dom/lib/ReactFiberCommitWork.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactTypeOfWork = require('./ReactTypeOfWork'); -var ClassComponent = ReactTypeOfWork.ClassComponent, -    HostContainer = ReactTypeOfWork.HostContainer, -    HostComponent = ReactTypeOfWork.HostComponent; - -var _require = require('./ReactFiberUpdateQueue'), -    callCallbacks = _require.callCallbacks; - -module.exports = function (config) { -  var updateContainer = config.updateContainer; -  var commitUpdate = config.commitUpdate; - -  function commitWork(current, finishedWork) { -    switch (finishedWork.tag) { -      case ClassComponent: -        { -          // Clear updates from current fiber. This must go before the callbacks -          // are reset, in case an update is triggered from inside a callback. Is -          // this safe? Relies on the assumption that work is only committed if -          // the update queue is empty. -          if (finishedWork.alternate) { -            finishedWork.alternate.updateQueue = null; -          } -          if (finishedWork.callbackList) { -            var callbackList = finishedWork.callbackList; - -            finishedWork.callbackList = null; -            callCallbacks(callbackList, finishedWork.stateNode); -          } -          // TODO: Fire componentDidMount/componentDidUpdate, update refs -          return; -        } -      case HostContainer: -        { -          // TODO: Attach children to root container. -          var children = finishedWork.output; -          var root = finishedWork.stateNode; -          var containerInfo = root.containerInfo; -          updateContainer(containerInfo, children); -          return; -        } -      case HostComponent: -        { -          if (finishedWork.stateNode == null || !current) { -            throw new Error('This should only be done during updates.'); -          } -          // Commit the work prepared earlier. -          var child = finishedWork.child; -          var _children = child && !child.sibling ? child.output : child; -          var newProps = finishedWork.memoizedProps; -          var oldProps = current.memoizedProps; -          var instance = finishedWork.stateNode; -          commitUpdate(instance, oldProps, newProps, _children); -          return; -        } -      default: -        throw new Error('This unit of work tag should not have side-effects.'); -    } -  } - -  return { -    commitWork: commitWork -  }; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberCompleteWork.js b/node_modules/react-dom/lib/ReactFiberCompleteWork.js deleted file mode 100644 index 74f7fc764..000000000 --- a/node_modules/react-dom/lib/ReactFiberCompleteWork.js +++ /dev/null @@ -1,206 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _require = require('./ReactChildFiber'), -    reconcileChildFibers = _require.reconcileChildFibers; - -var ReactTypeOfWork = require('./ReactTypeOfWork'); -var IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, -    FunctionalComponent = ReactTypeOfWork.FunctionalComponent, -    ClassComponent = ReactTypeOfWork.ClassComponent, -    HostContainer = ReactTypeOfWork.HostContainer, -    HostComponent = ReactTypeOfWork.HostComponent, -    CoroutineComponent = ReactTypeOfWork.CoroutineComponent, -    CoroutineHandlerPhase = ReactTypeOfWork.CoroutineHandlerPhase, -    YieldComponent = ReactTypeOfWork.YieldComponent; - - -module.exports = function (config) { -  var createInstance = config.createInstance; -  var prepareUpdate = config.prepareUpdate; - -  function markForPreEffect(workInProgress) { -    // Schedule a side-effect on this fiber, BEFORE the children's side-effects. -    if (workInProgress.firstEffect) { -      workInProgress.nextEffect = workInProgress.firstEffect; -      workInProgress.firstEffect = workInProgress; -    } else { -      workInProgress.firstEffect = workInProgress; -      workInProgress.lastEffect = workInProgress; -    } -  } - -  // TODO: It's possible this will create layout thrash issues because mutations -  // of the DOM and life-cycles are interleaved. E.g. if a componentDidMount -  // of a sibling reads, then the next sibling updates and reads etc. -  function markForPostEffect(workInProgress) { -    // Schedule a side-effect on this fiber, AFTER the children's side-effects. -    if (workInProgress.lastEffect) { -      workInProgress.lastEffect.nextEffect = workInProgress; -    } else { -      workInProgress.firstEffect = workInProgress; -    } -    workInProgress.lastEffect = workInProgress; -  } - -  function transferOutput(child, returnFiber) { -    // If we have a single result, we just pass that through as the output to -    // avoid unnecessary traversal. When we have multiple output, we just pass -    // the linked list of fibers that has the individual output values. -    returnFiber.output = child && !child.sibling ? child.output : child; -    returnFiber.memoizedProps = returnFiber.pendingProps; -  } - -  function recursivelyFillYields(yields, output) { -    if (!output) { -      // Ignore nulls etc. -    } else if (output.tag !== undefined) { -      // TODO: Fix this fragile duck test. -      // Detect if this is a fiber, if so it is a fragment result. -      // $FlowFixMe: Refinement issue. -      var item = output; -      do { -        recursivelyFillYields(yields, item.output); -        item = item.sibling; -      } while (item); -    } else { -      // $FlowFixMe: Refinement issue. If it is not a Fiber or null, it is a yield -      yields.push(output); -    } -  } - -  function moveCoroutineToHandlerPhase(current, workInProgress) { -    var coroutine = workInProgress.pendingProps; -    if (!coroutine) { -      throw new Error('Should be resolved by now'); -    } - -    // First step of the coroutine has completed. Now we need to do the second. -    // TODO: It would be nice to have a multi stage coroutine represented by a -    // single component, or at least tail call optimize nested ones. Currently -    // that requires additional fields that we don't want to add to the fiber. -    // So this requires nested handlers. -    // Note: This doesn't mutate the alternate node. I don't think it needs to -    // since this stage is reset for every pass. -    workInProgress.tag = CoroutineHandlerPhase; - -    // Build up the yields. -    // TODO: Compare this to a generator or opaque helpers like Children. -    var yields = []; -    var child = workInProgress.child; -    while (child) { -      recursivelyFillYields(yields, child.output); -      child = child.sibling; -    } -    var fn = coroutine.handler; -    var props = coroutine.props; -    var nextChildren = fn(props, yields); - -    var currentFirstChild = current ? current.stateNode : null; -    // Inherit the priority of the returnFiber. -    var priority = workInProgress.pendingWorkPriority; -    workInProgress.stateNode = reconcileChildFibers(workInProgress, currentFirstChild, nextChildren, priority); -    return workInProgress.stateNode; -  } - -  function completeWork(current, workInProgress) { -    switch (workInProgress.tag) { -      case FunctionalComponent: -        transferOutput(workInProgress.child, workInProgress); -        return null; -      case ClassComponent: -        transferOutput(workInProgress.child, workInProgress); -        // Don't use the state queue to compute the memoized state. We already -        // merged it and assigned it to the instance. Transfer it from there. -        // Also need to transfer the props, because pendingProps will be null -        // in the case of an update -        var _workInProgress$state = workInProgress.stateNode, -            state = _workInProgress$state.state, -            props = _workInProgress$state.props; - -        workInProgress.memoizedState = state; -        workInProgress.memoizedProps = props; -        // Transfer update queue to callbackList field so callbacks can be -        // called during commit phase. -        workInProgress.callbackList = workInProgress.updateQueue; -        markForPostEffect(workInProgress); -        return null; -      case HostContainer: -        transferOutput(workInProgress.child, workInProgress); -        // We don't know if a container has updated any children so we always -        // need to update it right now. We schedule this side-effect before -        // all the other side-effects in the subtree. We need to schedule it -        // before so that the entire tree is up-to-date before the life-cycles -        // are invoked. -        markForPreEffect(workInProgress); -        return null; -      case HostComponent: -        var newProps = workInProgress.pendingProps; -        var child = workInProgress.child; -        var children = child && !child.sibling ? child.output : child; -        if (current && workInProgress.stateNode != null) { -          // If we have an alternate, that means this is an update and we need to -          // schedule a side-effect to do the updates. -          var oldProps = current.memoizedProps; -          // If we get updated because one of our children updated, we don't -          // have newProps so we'll have to reuse them. -          // TODO: Split the update API as separate for the props vs. children. -          // Even better would be if children weren't special cased at all tho. -          if (!newProps) { -            newProps = oldProps; -          } -          var instance = workInProgress.stateNode; -          if (prepareUpdate(instance, oldProps, newProps, children)) { -            // This returns true if there was something to update. -            markForPreEffect(workInProgress); -          } -          // TODO: Is this actually ever going to change? Why set it every time? -          workInProgress.output = instance; -        } else { -          if (!newProps) { -            if (workInProgress.stateNode === null) { -              throw new Error('We must have new props for new mounts.'); -            } else { -              // This can happen when we abort work. -              return null; -            } -          } -          var _instance = createInstance(workInProgress.type, newProps, children); -          // TODO: This seems like unnecessary duplication. -          workInProgress.stateNode = _instance; -          workInProgress.output = _instance; -        } -        workInProgress.memoizedProps = newProps; -        return null; -      case CoroutineComponent: -        return moveCoroutineToHandlerPhase(current, workInProgress); -      case CoroutineHandlerPhase: -        transferOutput(workInProgress.stateNode, workInProgress); -        // Reset the tag to now be a first phase coroutine. -        workInProgress.tag = CoroutineComponent; -        return null; -      case YieldComponent: -        // Does nothing. -        return null; -      // Error cases -      case IndeterminateComponent: -        throw new Error('An indeterminate component should have become determinate before completing.'); -      default: -        throw new Error('Unknown unit of work tag'); -    } -  } - -  return { -    completeWork: completeWork -  }; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberReconciler.js b/node_modules/react-dom/lib/ReactFiberReconciler.js deleted file mode 100644 index 3a655d91a..000000000 --- a/node_modules/react-dom/lib/ReactFiberReconciler.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _require = require('./ReactFiberRoot'), -    createFiberRoot = _require.createFiberRoot; - -var ReactFiberScheduler = require('./ReactFiberScheduler'); - -module.exports = function (config) { -  var _ReactFiberScheduler = ReactFiberScheduler(config), -      scheduleWork = _ReactFiberScheduler.scheduleWork, -      performWithPriority = _ReactFiberScheduler.performWithPriority; - -  return { -    mountContainer: function (element, containerInfo) { -      var root = createFiberRoot(containerInfo); -      var container = root.current; -      // TODO: Use pending work/state instead of props. -      // TODO: This should not override the pendingWorkPriority if there is -      // higher priority work in the subtree. -      container.pendingProps = element; - -      scheduleWork(root); - -      // It may seem strange that we don't return the root here, but that will -      // allow us to have containers that are in the middle of the tree instead -      // of being roots. -      return container; -    }, -    updateContainer: function (element, container) { -      // TODO: If this is a nested container, this won't be the root. -      var root = container.stateNode; -      // TODO: Use pending work/state instead of props. -      root.current.pendingProps = element; - -      scheduleWork(root); -    }, -    unmountContainer: function (container) { -      // TODO: If this is a nested container, this won't be the root. -      var root = container.stateNode; -      // TODO: Use pending work/state instead of props. -      root.current.pendingProps = []; - -      scheduleWork(root); -    }, - - -    performWithPriority: performWithPriority, - -    getPublicRootInstance: function (container) { -      return null; -    } -  }; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberRoot.js b/node_modules/react-dom/lib/ReactFiberRoot.js deleted file mode 100644 index f2bed864d..000000000 --- a/node_modules/react-dom/lib/ReactFiberRoot.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _require = require('./ReactFiber'), -    createHostContainerFiber = _require.createHostContainerFiber; - -exports.createFiberRoot = function (containerInfo) { -  // Cyclic construction. This cheats the type system right now because -  // stateNode is any. -  var uninitializedFiber = createHostContainerFiber(); -  var root = { -    current: uninitializedFiber, -    containerInfo: containerInfo, -    isScheduled: false, -    nextScheduledRoot: null -  }; -  uninitializedFiber.stateNode = root; -  return root; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberScheduler.js b/node_modules/react-dom/lib/ReactFiberScheduler.js deleted file mode 100644 index 0b1490608..000000000 --- a/node_modules/react-dom/lib/ReactFiberScheduler.js +++ /dev/null @@ -1,331 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactFiberBeginWork = require('./ReactFiberBeginWork'); -var ReactFiberCompleteWork = require('./ReactFiberCompleteWork'); -var ReactFiberCommitWork = require('./ReactFiberCommitWork'); - -var _require = require('./ReactFiber'), -    cloneFiber = _require.cloneFiber; - -var _require2 = require('./ReactPriorityLevel'), -    NoWork = _require2.NoWork, -    LowPriority = _require2.LowPriority, -    AnimationPriority = _require2.AnimationPriority, -    SynchronousPriority = _require2.SynchronousPriority; - -var timeHeuristicForUnitOfWork = 1; - -module.exports = function (config) { -  // Use a closure to circumvent the circular dependency between the scheduler -  // and ReactFiberBeginWork. Don't know if there's a better way to do this. -  var scheduler = void 0; -  function getScheduler() { -    return scheduler; -  } - -  var _ReactFiberBeginWork = ReactFiberBeginWork(config, getScheduler), -      beginWork = _ReactFiberBeginWork.beginWork; - -  var _ReactFiberCompleteWo = ReactFiberCompleteWork(config), -      completeWork = _ReactFiberCompleteWo.completeWork; - -  var _ReactFiberCommitWork = ReactFiberCommitWork(config), -      commitWork = _ReactFiberCommitWork.commitWork; - -  var scheduleAnimationCallback = config.scheduleAnimationCallback; -  var scheduleDeferredCallback = config.scheduleDeferredCallback; - -  // The default priority to use for updates. -  var defaultPriority = LowPriority; - -  // The next work in progress fiber that we're currently working on. -  var nextUnitOfWork = null; -  var nextPriorityLevel = NoWork; - -  // Linked list of roots with scheduled work on them. -  var nextScheduledRoot = null; -  var lastScheduledRoot = null; - -  function findNextUnitOfWork() { -    // Clear out roots with no more work on them. -    while (nextScheduledRoot && nextScheduledRoot.current.pendingWorkPriority === NoWork) { -      nextScheduledRoot.isScheduled = false; -      if (nextScheduledRoot === lastScheduledRoot) { -        nextScheduledRoot = null; -        lastScheduledRoot = null; -        nextPriorityLevel = NoWork; -        return null; -      } -      nextScheduledRoot = nextScheduledRoot.nextScheduledRoot; -    } -    // TODO: This is scanning one root at a time. It should be scanning all -    // roots for high priority work before moving on to lower priorities. -    var root = nextScheduledRoot; -    var highestPriorityRoot = null; -    var highestPriorityLevel = NoWork; -    while (root) { -      if (highestPriorityLevel === NoWork || highestPriorityLevel > root.current.pendingWorkPriority) { -        highestPriorityLevel = root.current.pendingWorkPriority; -        highestPriorityRoot = root; -      } -      // We didn't find anything to do in this root, so let's try the next one. -      root = root.nextScheduledRoot; -    } -    if (highestPriorityRoot) { -      nextPriorityLevel = highestPriorityLevel; -      return cloneFiber(highestPriorityRoot.current, highestPriorityLevel); -    } - -    nextPriorityLevel = NoWork; -    return null; -  } - -  function commitAllWork(finishedWork) { -    // Commit all the side-effects within a tree. -    // TODO: Error handling. -    var effectfulFiber = finishedWork.firstEffect; -    while (effectfulFiber) { -      var current = effectfulFiber.alternate; -      commitWork(current, effectfulFiber); -      var next = effectfulFiber.nextEffect; -      // Ensure that we clean these up so that we don't accidentally keep them. -      // I'm not actually sure this matters because we can't reset firstEffect -      // and lastEffect since they're on every node, not just the effectful -      // ones. So we have to clean everything as we reuse nodes anyway. -      effectfulFiber.nextEffect = null; -      effectfulFiber = next; -    } -  } - -  function resetWorkPriority(workInProgress) { -    var newPriority = NoWork; -    // progressedChild is going to be the child set with the highest priority. -    // Either it is the same as child, or it just bailed out because it choose -    // not to do the work. -    var child = workInProgress.progressedChild; -    while (child) { -      // Ensure that remaining work priority bubbles up. -      if (child.pendingWorkPriority !== NoWork && (newPriority === NoWork || newPriority > child.pendingWorkPriority)) { -        newPriority = child.pendingWorkPriority; -      } -      child = child.sibling; -    } -    workInProgress.pendingWorkPriority = newPriority; -  } - -  function completeUnitOfWork(workInProgress) { -    while (true) { -      // The current, flushed, state of this fiber is the alternate. -      // Ideally nothing should rely on this, but relying on it here -      // means that we don't need an additional field on the work in -      // progress. -      var current = workInProgress.alternate; -      var next = completeWork(current, workInProgress); - -      resetWorkPriority(workInProgress); - -      // The work is now done. We don't need this anymore. This flags -      // to the system not to redo any work here. -      workInProgress.pendingProps = null; -      workInProgress.updateQueue = null; - -      var returnFiber = workInProgress['return']; - -      if (returnFiber) { -        // Ensure that the first and last effect of the parent corresponds -        // to the children's first and last effect. This probably relies on -        // children completing in order. -        if (!returnFiber.firstEffect) { -          returnFiber.firstEffect = workInProgress.firstEffect; -        } -        if (workInProgress.lastEffect) { -          if (returnFiber.lastEffect) { -            returnFiber.lastEffect.nextEffect = workInProgress.firstEffect; -          } -          returnFiber.lastEffect = workInProgress.lastEffect; -        } -      } - -      if (next) { -        // If completing this work spawned new work, do that next. -        return next; -      } else if (workInProgress.sibling) { -        // If there is more work to do in this returnFiber, do that next. -        return workInProgress.sibling; -      } else if (returnFiber) { -        // If there's no more work in this returnFiber. Complete the returnFiber. -        workInProgress = returnFiber; -        continue; -      } else { -        // If we're at the root, there's no more work to do. We can flush it. -        var _root = workInProgress.stateNode; -        if (_root.current === workInProgress) { -          throw new Error('Cannot commit the same tree as before. This is probably a bug ' + 'related to the return field.'); -        } -        _root.current = workInProgress; -        // TODO: We can be smarter here and only look for more work in the -        // "next" scheduled work since we've already scanned passed. That -        // also ensures that work scheduled during reconciliation gets deferred. -        // const hasMoreWork = workInProgress.pendingWorkPriority !== NoWork; -        commitAllWork(workInProgress); -        var nextWork = findNextUnitOfWork(); -        // if (!nextWork && hasMoreWork) { -        // TODO: This can happen when some deep work completes and we don't -        // know if this was the last one. We should be able to keep track of -        // the highest priority still in the tree for one pass. But if we -        // terminate an update we don't know. -        // throw new Error('FiberRoots should not have flagged more work if there is none.'); -        // } -        return nextWork; -      } -    } -  } - -  function performUnitOfWork(workInProgress) { -    // The current, flushed, state of this fiber is the alternate. -    // Ideally nothing should rely on this, but relying on it here -    // means that we don't need an additional field on the work in -    // progress. -    var current = workInProgress.alternate; -    var next = beginWork(current, workInProgress, nextPriorityLevel); - -    if (next) { -      // If this spawns new work, do that next. -      return next; -    } else { -      // Otherwise, complete the current work. -      return completeUnitOfWork(workInProgress); -    } -  } - -  function performDeferredWork(deadline) { -    if (!nextUnitOfWork) { -      nextUnitOfWork = findNextUnitOfWork(); -    } -    while (nextUnitOfWork) { -      if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) { -        nextUnitOfWork = performUnitOfWork(nextUnitOfWork); -        if (!nextUnitOfWork) { -          // Find more work. We might have time to complete some more. -          nextUnitOfWork = findNextUnitOfWork(); -        } -      } else { -        scheduleDeferredCallback(performDeferredWork); -        return; -      } -    } -  } - -  function scheduleDeferredWork(root, priority) { -    // We must reset the current unit of work pointer so that we restart the -    // search from the root during the next tick, in case there is now higher -    // priority work somewhere earlier than before. -    if (priority <= nextPriorityLevel) { -      nextUnitOfWork = null; -    } - -    // Set the priority on the root, without deprioritizing -    if (root.current.pendingWorkPriority === NoWork || priority <= root.current.pendingWorkPriority) { -      root.current.pendingWorkPriority = priority; -    } - -    if (root.isScheduled) { -      // If we're already scheduled, we can bail out. -      return; -    } -    root.isScheduled = true; -    if (lastScheduledRoot) { -      // Schedule ourselves to the end. -      lastScheduledRoot.nextScheduledRoot = root; -      lastScheduledRoot = root; -    } else { -      // We're the only work scheduled. -      nextScheduledRoot = root; -      lastScheduledRoot = root; -      scheduleDeferredCallback(performDeferredWork); -    } -  } - -  function performAnimationWork() { -    // Always start from the root -    nextUnitOfWork = findNextUnitOfWork(); -    while (nextUnitOfWork && nextPriorityLevel !== NoWork) { -      nextUnitOfWork = performUnitOfWork(nextUnitOfWork); -      if (!nextUnitOfWork) { -        // Keep searching for animation work until there's no more left -        nextUnitOfWork = findNextUnitOfWork(); -      } -      // Stop if the next unit of work is low priority -      if (nextPriorityLevel > AnimationPriority) { -        scheduleDeferredCallback(performDeferredWork); -        return; -      } -    } -  } - -  function scheduleAnimationWork(root, priorityLevel) { -    // Set the priority on the root, without deprioritizing -    if (root.current.pendingWorkPriority === NoWork || priorityLevel <= root.current.pendingWorkPriority) { -      root.current.pendingWorkPriority = priorityLevel; -    } - -    if (root.isScheduled) { -      // If we're already scheduled, we can bail out. -      return; -    } -    root.isScheduled = true; -    if (lastScheduledRoot) { -      // Schedule ourselves to the end. -      lastScheduledRoot.nextScheduledRoot = root; -      lastScheduledRoot = root; -    } else { -      // We're the only work scheduled. -      nextScheduledRoot = root; -      lastScheduledRoot = root; -      scheduleAnimationCallback(performAnimationWork); -    } -  } - -  function scheduleWork(root) { -    if (defaultPriority === SynchronousPriority) { -      throw new Error('Not implemented yet'); -    } - -    if (defaultPriority === NoWork) { -      return; -    } -    if (defaultPriority > AnimationPriority) { -      scheduleDeferredWork(root, defaultPriority); -      return; -    } -    scheduleAnimationWork(root, defaultPriority); -  } - -  function performWithPriority(priorityLevel, fn) { -    var previousDefaultPriority = defaultPriority; -    defaultPriority = priorityLevel; -    try { -      fn(); -    } finally { -      defaultPriority = previousDefaultPriority; -    } -  } - -  scheduler = { -    scheduleWork: scheduleWork, -    scheduleDeferredWork: scheduleDeferredWork, -    performWithPriority: performWithPriority -  }; -  return scheduler; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactFiberUpdateQueue.js b/node_modules/react-dom/lib/ReactFiberUpdateQueue.js deleted file mode 100644 index f104a5a36..000000000 --- a/node_modules/react-dom/lib/ReactFiberUpdateQueue.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _assign = require('object-assign'); - -exports.createUpdateQueue = function (partialState) { -  var queue = { -    partialState: partialState, -    callback: null, -    callbackWasCalled: false, -    next: null, -    isReplace: false, -    isForced: false, -    tail: null -  }; -  queue.tail = queue; -  return queue; -}; - -exports.addToQueue = function (queue, partialState) { -  var node = { -    partialState: partialState, -    callback: null, -    callbackWasCalled: false, -    next: null -  }; -  queue.tail.next = node; -  queue.tail = node; -  return queue; -}; - -exports.addCallbackToQueue = function (queue, callback) { -  if (queue.tail.callback) { -    // If the tail already as a callback, add an empty node to queue -    exports.addToQueue(queue, null); -  } -  queue.tail.callback = callback; -  return queue; -}; - -exports.callCallbacks = function (queue, context) { -  var node = queue; -  while (node) { -    if (node.callback && !node.callbackWasCalled) { -      node.callbackWasCalled = true; -      node.callback.call(context); -    } -    node = node.next; -  } -}; - -exports.mergeUpdateQueue = function (queue, prevState, props) { -  var node = queue; -  var state = queue.isReplace ? null : _assign({}, prevState); -  while (node) { -    var _partialState = void 0; -    if (typeof node.partialState === 'function') { -      var updateFn = node.partialState; -      _partialState = updateFn(state, props); -    } else { -      _partialState = node.partialState; -    } -    state = _assign(state || {}, _partialState); -    node = node.next; -  } -  return state; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactHostComponent.js b/node_modules/react-dom/lib/ReactHostComponent.js deleted file mode 100644 index 4bb6c0055..000000000 --- a/node_modules/react-dom/lib/ReactHostComponent.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -var genericComponentClass = null; -var textComponentClass = null; - -var ReactHostComponentInjection = { -  // This accepts a class that receives the tag string. This is a catch all -  // that can render any kind of tag. -  injectGenericComponentClass: function (componentClass) { -    genericComponentClass = componentClass; -  }, -  // This accepts a text component class that takes the text string to be -  // rendered as props. -  injectTextComponentClass: function (componentClass) { -    textComponentClass = componentClass; -  } -}; - -/** - * Get a host internal component class for a specific tag. - * - * @param {ReactElement} element The element to create. - * @return {function} The internal class constructor function. - */ -function createInternalComponent(element) { -  !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0; -  return new genericComponentClass(element); -} - -/** - * @param {ReactText} text - * @return {ReactComponent} - */ -function createInstanceForText(text) { -  return new textComponentClass(text); -} - -/** - * @param {ReactComponent} component - * @return {boolean} - */ -function isTextComponent(component) { -  return component instanceof textComponentClass; -} - -var ReactHostComponent = { -  createInternalComponent: createInternalComponent, -  createInstanceForText: createInstanceForText, -  isTextComponent: isTextComponent, -  injection: ReactHostComponentInjection -}; - -module.exports = ReactHostComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactHostOperationHistoryHook.js b/node_modules/react-dom/lib/ReactHostOperationHistoryHook.js deleted file mode 100644 index 27d3f9340..000000000 --- a/node_modules/react-dom/lib/ReactHostOperationHistoryHook.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var history = []; - -var ReactHostOperationHistoryHook = { -  onHostOperation: function (operation) { -    history.push(operation); -  }, -  clearHistory: function () { -    if (ReactHostOperationHistoryHook._preventClearing) { -      // Should only be used for tests. -      return; -    } - -    history = []; -  }, -  getHistory: function () { -    return history; -  } -}; - -module.exports = ReactHostOperationHistoryHook;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInjection.js b/node_modules/react-dom/lib/ReactInjection.js deleted file mode 100644 index 6a2bbd10a..000000000 --- a/node_modules/react-dom/lib/ReactInjection.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var DOMProperty = require('./DOMProperty'); -var EventPluginHub = require('./EventPluginHub'); -var EventPluginUtils = require('./EventPluginUtils'); -var ReactComponentEnvironment = require('./ReactComponentEnvironment'); -var ReactEmptyComponent = require('./ReactEmptyComponent'); -var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter'); -var ReactHostComponent = require('./ReactHostComponent'); -var ReactUpdates = require('./ReactUpdates'); - -var ReactInjection = { -  Component: ReactComponentEnvironment.injection, -  DOMProperty: DOMProperty.injection, -  EmptyComponent: ReactEmptyComponent.injection, -  EventPluginHub: EventPluginHub.injection, -  EventPluginUtils: EventPluginUtils.injection, -  EventEmitter: ReactBrowserEventEmitter.injection, -  HostComponent: ReactHostComponent.injection, -  Updates: ReactUpdates.injection -}; - -module.exports = ReactInjection;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInputSelection.js b/node_modules/react-dom/lib/ReactInputSelection.js deleted file mode 100644 index fec1c74fc..000000000 --- a/node_modules/react-dom/lib/ReactInputSelection.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMSelection = require('./ReactDOMSelection'); - -var containsNode = require('fbjs/lib/containsNode'); -var focusNode = require('fbjs/lib/focusNode'); -var getActiveElement = require('fbjs/lib/getActiveElement'); - -function isInDocument(node) { -  return containsNode(document.documentElement, node); -} - -/** - * @ReactInputSelection: React input selection module. Based on Selection.js, - * but modified to be suitable for react and has a couple of bug fixes (doesn't - * assume buttons have range selections allowed). - * Input selection module for React. - */ -var ReactInputSelection = { -  hasSelectionCapabilities: function (elem) { -    var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); -    return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true'); -  }, - -  getSelectionInformation: function () { -    var focusedElem = getActiveElement(); -    return { -      focusedElem: focusedElem, -      selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null -    }; -  }, - -  /** -   * @restoreSelection: If any selection information was potentially lost, -   * restore it. This is useful when performing operations that could remove dom -   * nodes and place them back in, resulting in focus being lost. -   */ -  restoreSelection: function (priorSelectionInformation) { -    var curFocusedElem = getActiveElement(); -    var priorFocusedElem = priorSelectionInformation.focusedElem; -    var priorSelectionRange = priorSelectionInformation.selectionRange; -    if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) { -      if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) { -        ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange); -      } -      focusNode(priorFocusedElem); -    } -  }, - -  /** -   * @getSelection: Gets the selection bounds of a focused textarea, input or -   * contentEditable node. -   * -@input: Look up selection bounds of this input -   * -@return {start: selectionStart, end: selectionEnd} -   */ -  getSelection: function (input) { -    var selection; - -    if ('selectionStart' in input) { -      // Modern browser with input or textarea. -      selection = { -        start: input.selectionStart, -        end: input.selectionEnd -      }; -    } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { -      // IE8 input. -      var range = document.selection.createRange(); -      // There can only be one selection per document in IE, so it must -      // be in our element. -      if (range.parentElement() === input) { -        selection = { -          start: -range.moveStart('character', -input.value.length), -          end: -range.moveEnd('character', -input.value.length) -        }; -      } -    } else { -      // Content editable or old IE textarea. -      selection = ReactDOMSelection.getOffsets(input); -    } - -    return selection || { start: 0, end: 0 }; -  }, - -  /** -   * @setSelection: Sets the selection bounds of a textarea or input and focuses -   * the input. -   * -@input     Set selection bounds of this input or textarea -   * -@offsets   Object of same form that is returned from get* -   */ -  setSelection: function (input, offsets) { -    var start = offsets.start; -    var end = offsets.end; -    if (end === undefined) { -      end = start; -    } - -    if ('selectionStart' in input) { -      input.selectionStart = start; -      input.selectionEnd = Math.min(end, input.value.length); -    } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { -      var range = input.createTextRange(); -      range.collapse(true); -      range.moveStart('character', start); -      range.moveEnd('character', end - start); -      range.select(); -    } else { -      ReactDOMSelection.setOffsets(input, offsets); -    } -  } -}; - -module.exports = ReactInputSelection;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInstanceMap.js b/node_modules/react-dom/lib/ReactInstanceMap.js deleted file mode 100644 index ae0a7f6a8..000000000 --- a/node_modules/react-dom/lib/ReactInstanceMap.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * `ReactInstanceMap` maintains a mapping from a public facing stateful - * instance (key) and the internal representation (value). This allows public - * methods to accept the user facing instance as an argument and map them back - * to internal methods. - */ - -// TODO: Replace this with ES6: var ReactInstanceMap = new Map(); - -var ReactInstanceMap = { -  /** -   * This API should be called `delete` but we'd have to make sure to always -   * transform these to strings for IE support. When this transform is fully -   * supported we can rename it. -   */ -  remove: function (key) { -    key._reactInternalInstance = undefined; -  }, - -  get: function (key) { -    return key._reactInternalInstance; -  }, - -  has: function (key) { -    return key._reactInternalInstance !== undefined; -  }, - -  set: function (key, value) { -    key._reactInternalInstance = value; -  } -}; - -module.exports = ReactInstanceMap;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInstanceType.js b/node_modules/react-dom/lib/ReactInstanceType.js deleted file mode 100644 index 2b2e7bbc9..000000000 --- a/node_modules/react-dom/lib/ReactInstanceType.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInstrumentation.js b/node_modules/react-dom/lib/ReactInstrumentation.js deleted file mode 100644 index 632a263a3..000000000 --- a/node_modules/react-dom/lib/ReactInstrumentation.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -// Trust the developer to only use ReactInstrumentation with a __DEV__ check - -var debugTool = null; - -if (process.env.NODE_ENV !== 'production') { -  var ReactDebugTool = require('./ReactDebugTool'); -  debugTool = ReactDebugTool; -} - -module.exports = { debugTool: debugTool };
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactInvalidSetStateWarningHook.js b/node_modules/react-dom/lib/ReactInvalidSetStateWarningHook.js deleted file mode 100644 index 1b17a38ce..000000000 --- a/node_modules/react-dom/lib/ReactInvalidSetStateWarningHook.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var warning = require('fbjs/lib/warning'); - -if (process.env.NODE_ENV !== 'production') { -  var processingChildContext = false; - -  var warnInvalidSetState = function () { -    process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0; -  }; -} - -var ReactInvalidSetStateWarningHook = { -  onBeginProcessingChildContext: function () { -    processingChildContext = true; -  }, -  onEndProcessingChildContext: function () { -    processingChildContext = false; -  }, -  onSetState: function () { -    warnInvalidSetState(); -  } -}; - -module.exports = ReactInvalidSetStateWarningHook;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactMarkupChecksum.js b/node_modules/react-dom/lib/ReactMarkupChecksum.js deleted file mode 100644 index fda495bdf..000000000 --- a/node_modules/react-dom/lib/ReactMarkupChecksum.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var adler32 = require('./adler32'); - -var TAG_END = /\/?>/; -var COMMENT_START = /^<\!\-\-/; - -var ReactMarkupChecksum = { -  CHECKSUM_ATTR_NAME: 'data-react-checksum', - -  /** -   * @param {string} markup Markup string -   * @return {string} Markup string with checksum attribute attached -   */ -  addChecksumToMarkup: function (markup) { -    var checksum = adler32(markup); - -    // Add checksum (handle both parent tags, comments and self-closing tags) -    if (COMMENT_START.test(markup)) { -      return markup; -    } else { -      return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&'); -    } -  }, - -  /** -   * @param {string} markup to use -   * @param {DOMElement} element root React element -   * @returns {boolean} whether or not the markup is the same -   */ -  canReuseMarkup: function (markup, element) { -    var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); -    existingChecksum = existingChecksum && parseInt(existingChecksum, 10); -    var markupChecksum = adler32(markup); -    return markupChecksum === existingChecksum; -  } -}; - -module.exports = ReactMarkupChecksum;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactMount.js b/node_modules/react-dom/lib/ReactMount.js deleted file mode 100644 index b0f7ceb99..000000000 --- a/node_modules/react-dom/lib/ReactMount.js +++ /dev/null @@ -1,537 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var DOMLazyTree = require('./DOMLazyTree'); -var DOMProperty = require('./DOMProperty'); -var React = require('react/lib/React'); -var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter'); -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactDOMContainerInfo = require('./ReactDOMContainerInfo'); -var ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags'); -var ReactFeatureFlags = require('./ReactFeatureFlags'); -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactMarkupChecksum = require('./ReactMarkupChecksum'); -var ReactReconciler = require('./ReactReconciler'); -var ReactUpdateQueue = require('./ReactUpdateQueue'); -var ReactUpdates = require('./ReactUpdates'); - -var emptyObject = require('fbjs/lib/emptyObject'); -var instantiateReactComponent = require('./instantiateReactComponent'); -var invariant = require('fbjs/lib/invariant'); -var setInnerHTML = require('./setInnerHTML'); -var shouldUpdateReactComponent = require('./shouldUpdateReactComponent'); -var warning = require('fbjs/lib/warning'); - -var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; -var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME; - -var ELEMENT_NODE_TYPE = 1; -var DOC_NODE_TYPE = 9; -var DOCUMENT_FRAGMENT_NODE_TYPE = 11; - -var instancesByReactRootID = {}; - -/** - * Finds the index of the first character - * that's not common between the two given strings. - * - * @return {number} the index of the character where the strings diverge - */ -function firstDifferenceIndex(string1, string2) { -  var minLen = Math.min(string1.length, string2.length); -  for (var i = 0; i < minLen; i++) { -    if (string1.charAt(i) !== string2.charAt(i)) { -      return i; -    } -  } -  return string1.length === string2.length ? -1 : minLen; -} - -/** - * @param {DOMElement|DOMDocument} container DOM element that may contain - * a React component - * @return {?*} DOM element that may have the reactRoot ID, or null. - */ -function getReactRootElementInContainer(container) { -  if (!container) { -    return null; -  } - -  if (container.nodeType === DOC_NODE_TYPE) { -    return container.documentElement; -  } else { -    return container.firstChild; -  } -} - -function internalGetID(node) { -  // If node is something like a window, document, or text node, none of -  // which support attributes or a .getAttribute method, gracefully return -  // the empty string, as if the attribute were missing. -  return node.getAttribute && node.getAttribute(ATTR_NAME) || ''; -} - -/** - * Mounts this component and inserts it into the DOM. - * - * @param {ReactComponent} componentInstance The instance to mount. - * @param {DOMElement} container DOM element to mount into. - * @param {ReactReconcileTransaction} transaction - * @param {boolean} shouldReuseMarkup If true, do not insert markup - */ -function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) { -  var markerName; -  if (ReactFeatureFlags.logTopLevelRenders) { -    var wrappedElement = wrapperInstance._currentElement.props.child; -    var type = wrappedElement.type; -    markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name); -    console.time(markerName); -  } - -  var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */ -  ); - -  if (markerName) { -    console.timeEnd(markerName); -  } - -  wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance; -  ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction); -} - -/** - * Batched mount. - * - * @param {ReactComponent} componentInstance The instance to mount. - * @param {DOMElement} container DOM element to mount into. - * @param {boolean} shouldReuseMarkup If true, do not insert markup - */ -function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) { -  var transaction = ReactUpdates.ReactReconcileTransaction.getPooled( -  /* useCreateElement */ -  !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement); -  transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context); -  ReactUpdates.ReactReconcileTransaction.release(transaction); -} - -/** - * Unmounts a component and removes it from the DOM. - * - * @param {ReactComponent} instance React component instance. - * @param {DOMElement} container DOM element to unmount from. - * @final - * @internal - * @see {ReactMount.unmountComponentAtNode} - */ -function unmountComponentFromNode(instance, container, safely) { -  if (process.env.NODE_ENV !== 'production') { -    ReactInstrumentation.debugTool.onBeginFlush(); -  } -  ReactReconciler.unmountComponent(instance, safely); -  if (process.env.NODE_ENV !== 'production') { -    ReactInstrumentation.debugTool.onEndFlush(); -  } - -  if (container.nodeType === DOC_NODE_TYPE) { -    container = container.documentElement; -  } - -  // http://jsperf.com/emptying-a-node -  while (container.lastChild) { -    container.removeChild(container.lastChild); -  } -} - -/** - * True if the supplied DOM node has a direct React-rendered child that is - * not a React root element. Useful for warning in `render`, - * `unmountComponentAtNode`, etc. - * - * @param {?DOMElement} node The candidate DOM node. - * @return {boolean} True if the DOM element contains a direct child that was - * rendered by React but is not a root element. - * @internal - */ -function hasNonRootReactChild(container) { -  var rootEl = getReactRootElementInContainer(container); -  if (rootEl) { -    var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl); -    return !!(inst && inst._hostParent); -  } -} - -/** - * True if the supplied DOM node is a React DOM element and - * it has been rendered by another copy of React. - * - * @param {?DOMElement} node The candidate DOM node. - * @return {boolean} True if the DOM has been rendered by another copy of React - * @internal - */ -function nodeIsRenderedByOtherInstance(container) { -  var rootEl = getReactRootElementInContainer(container); -  return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl)); -} - -/** - * True if the supplied DOM node is a valid node element. - * - * @param {?DOMElement} node The candidate DOM node. - * @return {boolean} True if the DOM is a valid DOM node. - * @internal - */ -function isValidContainer(node) { -  return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)); -} - -/** - * True if the supplied DOM node is a valid React node element. - * - * @param {?DOMElement} node The candidate DOM node. - * @return {boolean} True if the DOM is a valid React DOM node. - * @internal - */ -function isReactNode(node) { -  return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME)); -} - -function getHostRootInstanceInContainer(container) { -  var rootEl = getReactRootElementInContainer(container); -  var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl); -  return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null; -} - -function getTopLevelWrapperInContainer(container) { -  var root = getHostRootInstanceInContainer(container); -  return root ? root._hostContainerInfo._topLevelWrapper : null; -} - -/** - * Temporary (?) hack so that we can store all top-level pending updates on - * composites instead of having to worry about different types of components - * here. - */ -var topLevelRootCounter = 1; -var TopLevelWrapper = function () { -  this.rootID = topLevelRootCounter++; -}; -TopLevelWrapper.prototype.isReactComponent = {}; -if (process.env.NODE_ENV !== 'production') { -  TopLevelWrapper.displayName = 'TopLevelWrapper'; -} -TopLevelWrapper.prototype.render = function () { -  return this.props.child; -}; -TopLevelWrapper.isReactTopLevelWrapper = true; - -/** - * Mounting is the process of initializing a React component by creating its - * representative DOM elements and inserting them into a supplied `container`. - * Any prior content inside `container` is destroyed in the process. - * - *   ReactMount.render( - *     component, - *     document.getElementById('container') - *   ); - * - *   <div id="container">                   <-- Supplied `container`. - *     <div data-reactid=".3">              <-- Rendered reactRoot of React - *       // ...                                 component. - *     </div> - *   </div> - * - * Inside of `container`, the first element rendered is the "reactRoot". - */ -var ReactMount = { -  TopLevelWrapper: TopLevelWrapper, - -  /** -   * Used by devtools. The keys are not important. -   */ -  _instancesByReactRootID: instancesByReactRootID, - -  /** -   * This is a hook provided to support rendering React components while -   * ensuring that the apparent scroll position of its `container` does not -   * change. -   * -   * @param {DOMElement} container The `container` being rendered into. -   * @param {function} renderCallback This must be called once to do the render. -   */ -  scrollMonitor: function (container, renderCallback) { -    renderCallback(); -  }, - -  /** -   * Take a component that's already mounted into the DOM and replace its props -   * @param {ReactComponent} prevComponent component instance already in the DOM -   * @param {ReactElement} nextElement component instance to render -   * @param {DOMElement} container container to render into -   * @param {?function} callback function triggered on completion -   */ -  _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) { -    ReactMount.scrollMonitor(container, function () { -      ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext); -      if (callback) { -        ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback); -      } -    }); - -    return prevComponent; -  }, - -  /** -   * Render a new component into the DOM. Hooked by hooks! -   * -   * @param {ReactElement} nextElement element to render -   * @param {DOMElement} container container to render into -   * @param {boolean} shouldReuseMarkup if we should skip the markup insertion -   * @return {ReactComponent} nextComponent -   */ -  _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) { -    // Various parts of our code (such as ReactCompositeComponent's -    // _renderValidatedComponent) assume that calls to render aren't nested; -    // verify that that's the case. -    process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; - -    !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0; - -    ReactBrowserEventEmitter.ensureScrollValueMonitoring(); -    var componentInstance = instantiateReactComponent(nextElement, false); - -    // The initial render is synchronous but any updates that happen during -    // rendering, in componentWillMount or componentDidMount, will be batched -    // according to the current batching strategy. - -    ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context); - -    var wrapperID = componentInstance._instance.rootID; -    instancesByReactRootID[wrapperID] = componentInstance; - -    return componentInstance; -  }, - -  /** -   * Renders a React component into the DOM in the supplied `container`. -   * -   * If the React component was previously rendered into `container`, this will -   * perform an update on it and only mutate the DOM as necessary to reflect the -   * latest React component. -   * -   * @param {ReactComponent} parentComponent The conceptual parent of this render tree. -   * @param {ReactElement} nextElement Component element to render. -   * @param {DOMElement} container DOM element to render into. -   * @param {?function} callback function triggered on completion -   * @return {ReactComponent} Component instance rendered in `container`. -   */ -  renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { -    !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0; -    return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback); -  }, - -  _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { -    ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render'); -    !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? " Instead of passing a string like 'div', pass " + "React.createElement('div') or <div />." : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element -    nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? " Instead of passing a string like 'div', pass " + "React.createElement('div') or <div />." : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0; - -    process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0; - -    var nextWrappedElement = React.createElement(TopLevelWrapper, { -      child: nextElement -    }); - -    var nextContext; -    if (parentComponent) { -      var parentInst = ReactInstanceMap.get(parentComponent); -      nextContext = parentInst._processChildContext(parentInst._context); -    } else { -      nextContext = emptyObject; -    } - -    var prevComponent = getTopLevelWrapperInContainer(container); - -    if (prevComponent) { -      var prevWrappedElement = prevComponent._currentElement; -      var prevElement = prevWrappedElement.props.child; -      if (shouldUpdateReactComponent(prevElement, nextElement)) { -        var publicInst = prevComponent._renderedComponent.getPublicInstance(); -        var updatedCallback = callback && function () { -          callback.call(publicInst); -        }; -        ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback); -        return publicInst; -      } else { -        ReactMount.unmountComponentAtNode(container); -      } -    } - -    var reactRootElement = getReactRootElementInContainer(container); -    var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement); -    var containerHasNonRootReactChild = hasNonRootReactChild(container); - -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0; - -      if (!containerHasReactMarkup || reactRootElement.nextSibling) { -        var rootElementSibling = reactRootElement; -        while (rootElementSibling) { -          if (internalGetID(rootElementSibling)) { -            process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0; -            break; -          } -          rootElementSibling = rootElementSibling.nextSibling; -        } -      } -    } - -    var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild; -    var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance(); -    if (callback) { -      callback.call(component); -    } -    return component; -  }, - -  /** -   * Renders a React component into the DOM in the supplied `container`. -   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render -   * -   * If the React component was previously rendered into `container`, this will -   * perform an update on it and only mutate the DOM as necessary to reflect the -   * latest React component. -   * -   * @param {ReactElement} nextElement Component element to render. -   * @param {DOMElement} container DOM element to render into. -   * @param {?function} callback function triggered on completion -   * @return {ReactComponent} Component instance rendered in `container`. -   */ -  render: function (nextElement, container, callback) { -    return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback); -  }, - -  /** -   * Unmounts and destroys the React component rendered in the `container`. -   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode -   * -   * @param {DOMElement} container DOM element containing a React component. -   * @return {boolean} True if a component was found in and unmounted from -   *                   `container` -   */ -  unmountComponentAtNode: function (container) { -    // Various parts of our code (such as ReactCompositeComponent's -    // _renderValidatedComponent) assume that calls to render aren't nested; -    // verify that that's the case. (Strictly speaking, unmounting won't cause a -    // render but we still don't expect to be in a render call here.) -    process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; - -    !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0; - -    if (process.env.NODE_ENV !== 'production') { -      process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.') : void 0; -    } - -    var prevComponent = getTopLevelWrapperInContainer(container); -    if (!prevComponent) { -      // Check if the node being unmounted was rendered by React, but isn't a -      // root node. -      var containerHasNonRootReactChild = hasNonRootReactChild(container); - -      // Check if the container itself is a React root node. -      var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME); - -      if (process.env.NODE_ENV !== 'production') { -        process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0; -      } - -      return false; -    } -    delete instancesByReactRootID[prevComponent._instance.rootID]; -    ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false); -    return true; -  }, - -  _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) { -    !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0; - -    if (shouldReuseMarkup) { -      var rootElement = getReactRootElementInContainer(container); -      if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) { -        ReactDOMComponentTree.precacheNode(instance, rootElement); -        return; -      } else { -        var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); -        rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); - -        var rootMarkup = rootElement.outerHTML; -        rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum); - -        var normalizedMarkup = markup; -        if (process.env.NODE_ENV !== 'production') { -          // because rootMarkup is retrieved from the DOM, various normalizations -          // will have occurred which will not be present in `markup`. Here, -          // insert markup into a <div> or <iframe> depending on the container -          // type to perform the same normalizations before comparing. -          var normalizer; -          if (container.nodeType === ELEMENT_NODE_TYPE) { -            normalizer = document.createElement('div'); -            normalizer.innerHTML = markup; -            normalizedMarkup = normalizer.innerHTML; -          } else { -            normalizer = document.createElement('iframe'); -            document.body.appendChild(normalizer); -            normalizer.contentDocument.write(markup); -            normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML; -            document.body.removeChild(normalizer); -          } -        } - -        var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup); -        var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20); - -        !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s', difference) : _prodInvariant('42', difference) : void 0; - -        if (process.env.NODE_ENV !== 'production') { -          process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\n%s', difference) : void 0; -        } -      } -    } - -    !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document but you didn\'t use server rendering. We can\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0; - -    if (transaction.useCreateElement) { -      while (container.lastChild) { -        container.removeChild(container.lastChild); -      } -      DOMLazyTree.insertTreeBefore(container, markup, null); -    } else { -      setInnerHTML(container, markup); -      ReactDOMComponentTree.precacheNode(instance, container.firstChild); -    } - -    if (process.env.NODE_ENV !== 'production') { -      var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild); -      if (hostNode._debugID !== 0) { -        ReactInstrumentation.debugTool.onHostOperation({ -          instanceID: hostNode._debugID, -          type: 'mount', -          payload: markup.toString() -        }); -      } -    } -  } -}; - -module.exports = ReactMount;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactMultiChild.js b/node_modules/react-dom/lib/ReactMultiChild.js deleted file mode 100644 index 66b07e388..000000000 --- a/node_modules/react-dom/lib/ReactMultiChild.js +++ /dev/null @@ -1,445 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactComponentEnvironment = require('./ReactComponentEnvironment'); -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactInstrumentation = require('./ReactInstrumentation'); - -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var ReactReconciler = require('./ReactReconciler'); -var ReactChildReconciler = require('./ReactChildReconciler'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); -var flattenChildren = require('./flattenChildren'); -var invariant = require('fbjs/lib/invariant'); - -/** - * Make an update for markup to be rendered and inserted at a supplied index. - * - * @param {string} markup Markup that renders into an element. - * @param {number} toIndex Destination index. - * @private - */ -function makeInsertMarkup(markup, afterNode, toIndex) { -  // NOTE: Null values reduce hidden classes. -  return { -    type: 'INSERT_MARKUP', -    content: markup, -    fromIndex: null, -    fromNode: null, -    toIndex: toIndex, -    afterNode: afterNode -  }; -} - -/** - * Make an update for moving an existing element to another index. - * - * @param {number} fromIndex Source index of the existing element. - * @param {number} toIndex Destination index of the element. - * @private - */ -function makeMove(child, afterNode, toIndex) { -  // NOTE: Null values reduce hidden classes. -  return { -    type: 'MOVE_EXISTING', -    content: null, -    fromIndex: child._mountIndex, -    fromNode: ReactReconciler.getHostNode(child), -    toIndex: toIndex, -    afterNode: afterNode -  }; -} - -/** - * Make an update for removing an element at an index. - * - * @param {number} fromIndex Index of the element to remove. - * @private - */ -function makeRemove(child, node) { -  // NOTE: Null values reduce hidden classes. -  return { -    type: 'REMOVE_NODE', -    content: null, -    fromIndex: child._mountIndex, -    fromNode: node, -    toIndex: null, -    afterNode: null -  }; -} - -/** - * Make an update for setting the markup of a node. - * - * @param {string} markup Markup that renders into an element. - * @private - */ -function makeSetMarkup(markup) { -  // NOTE: Null values reduce hidden classes. -  return { -    type: 'SET_MARKUP', -    content: markup, -    fromIndex: null, -    fromNode: null, -    toIndex: null, -    afterNode: null -  }; -} - -/** - * Make an update for setting the text content. - * - * @param {string} textContent Text content to set. - * @private - */ -function makeTextContent(textContent) { -  // NOTE: Null values reduce hidden classes. -  return { -    type: 'TEXT_CONTENT', -    content: textContent, -    fromIndex: null, -    fromNode: null, -    toIndex: null, -    afterNode: null -  }; -} - -/** - * Push an update, if any, onto the queue. Creates a new queue if none is - * passed and always returns the queue. Mutative. - */ -function enqueue(queue, update) { -  if (update) { -    queue = queue || []; -    queue.push(update); -  } -  return queue; -} - -/** - * Processes any enqueued updates. - * - * @private - */ -function processQueue(inst, updateQueue) { -  ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue); -} - -var setChildrenForInstrumentation = emptyFunction; -if (process.env.NODE_ENV !== 'production') { -  var getDebugID = function (inst) { -    if (!inst._debugID) { -      // Check for ART-like instances. TODO: This is silly/gross. -      var internal; -      if (internal = ReactInstanceMap.get(inst)) { -        inst = internal; -      } -    } -    return inst._debugID; -  }; -  setChildrenForInstrumentation = function (children) { -    var debugID = getDebugID(this); -    // TODO: React Native empty components are also multichild. -    // This means they still get into this method but don't have _debugID. -    if (debugID !== 0) { -      ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) { -        return children[key]._debugID; -      }) : []); -    } -  }; -} - -/** - * ReactMultiChild are capable of reconciling multiple children. - * - * @class ReactMultiChild - * @internal - */ -var ReactMultiChild = { -  /** -   * Provides common functionality for components that must reconcile multiple -   * children. This is used by `ReactDOMComponent` to mount, update, and -   * unmount child components. -   * -   * @lends {ReactMultiChild.prototype} -   */ -  Mixin: { -    _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) { -      if (process.env.NODE_ENV !== 'production') { -        var selfDebugID = getDebugID(this); -        if (this._currentElement) { -          try { -            ReactCurrentOwner.current = this._currentElement._owner; -            return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID); -          } finally { -            ReactCurrentOwner.current = null; -          } -        } -      } -      return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context); -    }, - -    _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) { -      var nextChildren; -      var selfDebugID = 0; -      if (process.env.NODE_ENV !== 'production') { -        selfDebugID = getDebugID(this); -        if (this._currentElement) { -          try { -            ReactCurrentOwner.current = this._currentElement._owner; -            nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); -          } finally { -            ReactCurrentOwner.current = null; -          } -          ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); -          return nextChildren; -        } -      } -      nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); -      ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); -      return nextChildren; -    }, - -    /** -     * Generates a "mount image" for each of the supplied children. In the case -     * of `ReactDOMComponent`, a mount image is a string of markup. -     * -     * @param {?object} nestedChildren Nested child maps. -     * @return {array} An array of mounted representations. -     * @internal -     */ -    mountChildren: function (nestedChildren, transaction, context) { -      var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context); -      this._renderedChildren = children; - -      var mountImages = []; -      var index = 0; -      for (var name in children) { -        if (children.hasOwnProperty(name)) { -          var child = children[name]; -          var selfDebugID = 0; -          if (process.env.NODE_ENV !== 'production') { -            selfDebugID = getDebugID(this); -          } -          var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID); -          child._mountIndex = index++; -          mountImages.push(mountImage); -        } -      } - -      if (process.env.NODE_ENV !== 'production') { -        setChildrenForInstrumentation.call(this, children); -      } - -      return mountImages; -    }, - -    /** -     * Replaces any rendered children with a text content string. -     * -     * @param {string} nextContent String of content. -     * @internal -     */ -    updateTextContent: function (nextContent) { -      var prevChildren = this._renderedChildren; -      // Remove any rendered children. -      ReactChildReconciler.unmountChildren(prevChildren, false); -      for (var name in prevChildren) { -        if (prevChildren.hasOwnProperty(name)) { -          !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; -        } -      } -      // Set new text content. -      var updates = [makeTextContent(nextContent)]; -      processQueue(this, updates); -    }, - -    /** -     * Replaces any rendered children with a markup string. -     * -     * @param {string} nextMarkup String of markup. -     * @internal -     */ -    updateMarkup: function (nextMarkup) { -      var prevChildren = this._renderedChildren; -      // Remove any rendered children. -      ReactChildReconciler.unmountChildren(prevChildren, false); -      for (var name in prevChildren) { -        if (prevChildren.hasOwnProperty(name)) { -          !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; -        } -      } -      var updates = [makeSetMarkup(nextMarkup)]; -      processQueue(this, updates); -    }, - -    /** -     * Updates the rendered children with new children. -     * -     * @param {?object} nextNestedChildrenElements Nested child element maps. -     * @param {ReactReconcileTransaction} transaction -     * @internal -     */ -    updateChildren: function (nextNestedChildrenElements, transaction, context) { -      // Hook used by React ART -      this._updateChildren(nextNestedChildrenElements, transaction, context); -    }, - -    /** -     * @param {?object} nextNestedChildrenElements Nested child element maps. -     * @param {ReactReconcileTransaction} transaction -     * @final -     * @protected -     */ -    _updateChildren: function (nextNestedChildrenElements, transaction, context) { -      var prevChildren = this._renderedChildren; -      var removedNodes = {}; -      var mountImages = []; -      var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context); -      if (!nextChildren && !prevChildren) { -        return; -      } -      var updates = null; -      var name; -      // `nextIndex` will increment for each child in `nextChildren`, but -      // `lastIndex` will be the last index visited in `prevChildren`. -      var nextIndex = 0; -      var lastIndex = 0; -      // `nextMountIndex` will increment for each newly mounted child. -      var nextMountIndex = 0; -      var lastPlacedNode = null; -      for (name in nextChildren) { -        if (!nextChildren.hasOwnProperty(name)) { -          continue; -        } -        var prevChild = prevChildren && prevChildren[name]; -        var nextChild = nextChildren[name]; -        if (prevChild === nextChild) { -          updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex)); -          lastIndex = Math.max(prevChild._mountIndex, lastIndex); -          prevChild._mountIndex = nextIndex; -        } else { -          if (prevChild) { -            // Update `lastIndex` before `_mountIndex` gets unset by unmounting. -            lastIndex = Math.max(prevChild._mountIndex, lastIndex); -            // The `removedNodes` loop below will actually remove the child. -          } -          // The child must be instantiated before it's mounted. -          updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context)); -          nextMountIndex++; -        } -        nextIndex++; -        lastPlacedNode = ReactReconciler.getHostNode(nextChild); -      } -      // Remove children that are no longer present. -      for (name in removedNodes) { -        if (removedNodes.hasOwnProperty(name)) { -          updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name])); -        } -      } -      if (updates) { -        processQueue(this, updates); -      } -      this._renderedChildren = nextChildren; - -      if (process.env.NODE_ENV !== 'production') { -        setChildrenForInstrumentation.call(this, nextChildren); -      } -    }, - -    /** -     * Unmounts all rendered children. This should be used to clean up children -     * when this component is unmounted. It does not actually perform any -     * backend operations. -     * -     * @internal -     */ -    unmountChildren: function (safely) { -      var renderedChildren = this._renderedChildren; -      ReactChildReconciler.unmountChildren(renderedChildren, safely); -      this._renderedChildren = null; -    }, - -    /** -     * Moves a child component to the supplied index. -     * -     * @param {ReactComponent} child Component to move. -     * @param {number} toIndex Destination index of the element. -     * @param {number} lastIndex Last index visited of the siblings of `child`. -     * @protected -     */ -    moveChild: function (child, afterNode, toIndex, lastIndex) { -      // If the index of `child` is less than `lastIndex`, then it needs to -      // be moved. Otherwise, we do not need to move it because a child will be -      // inserted or moved before `child`. -      if (child._mountIndex < lastIndex) { -        return makeMove(child, afterNode, toIndex); -      } -    }, - -    /** -     * Creates a child component. -     * -     * @param {ReactComponent} child Component to create. -     * @param {string} mountImage Markup to insert. -     * @protected -     */ -    createChild: function (child, afterNode, mountImage) { -      return makeInsertMarkup(mountImage, afterNode, child._mountIndex); -    }, - -    /** -     * Removes a child component. -     * -     * @param {ReactComponent} child Child to remove. -     * @protected -     */ -    removeChild: function (child, node) { -      return makeRemove(child, node); -    }, - -    /** -     * Mounts a child with the supplied name. -     * -     * NOTE: This is part of `updateChildren` and is here for readability. -     * -     * @param {ReactComponent} child Component to mount. -     * @param {string} name Name of the child. -     * @param {number} index Index at which to insert the child. -     * @param {ReactReconcileTransaction} transaction -     * @private -     */ -    _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) { -      child._mountIndex = index; -      return this.createChild(child, afterNode, mountImage); -    }, - -    /** -     * Unmounts a rendered child. -     * -     * NOTE: This is part of `updateChildren` and is here for readability. -     * -     * @param {ReactComponent} child Component to unmount. -     * @private -     */ -    _unmountChild: function (child, node) { -      var update = this.removeChild(child, node); -      child._mountIndex = null; -      return update; -    } -  } -}; - -module.exports = ReactMultiChild;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactMultiChildUpdateTypes.js b/node_modules/react-dom/lib/ReactMultiChildUpdateTypes.js deleted file mode 100644 index 07c235322..000000000 --- a/node_modules/react-dom/lib/ReactMultiChildUpdateTypes.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * When a component's children are updated, a series of update configuration - * objects are created in order to batch and serialize the required changes. - * - * Enumerates all the possible types of update configurations. - */
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactNodeTypes.js b/node_modules/react-dom/lib/ReactNodeTypes.js deleted file mode 100644 index 18aa75019..000000000 --- a/node_modules/react-dom/lib/ReactNodeTypes.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var React = require('react/lib/React'); - -var invariant = require('fbjs/lib/invariant'); - -var ReactNodeTypes = { -  HOST: 0, -  COMPOSITE: 1, -  EMPTY: 2, - -  getType: function (node) { -    if (node === null || node === false) { -      return ReactNodeTypes.EMPTY; -    } else if (React.isValidElement(node)) { -      if (typeof node.type === 'function') { -        return ReactNodeTypes.COMPOSITE; -      } else { -        return ReactNodeTypes.HOST; -      } -    } -    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0; -  } -}; - -module.exports = ReactNodeTypes;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactOwner.js b/node_modules/react-dom/lib/ReactOwner.js deleted file mode 100644 index 4c81d3898..000000000 --- a/node_modules/react-dom/lib/ReactOwner.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * @param {?object} object - * @return {boolean} True if `object` is a valid owner. - * @final - */ -function isValidOwner(object) { -  return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function'); -} - -/** - * ReactOwners are capable of storing references to owned components. - * - * All components are capable of //being// referenced by owner components, but - * only ReactOwner components are capable of //referencing// owned components. - * The named reference is known as a "ref". - * - * Refs are available when mounted and updated during reconciliation. - * - *   var MyComponent = React.createClass({ - *     render: function() { - *       return ( - *         <div onClick={this.handleClick}> - *           <CustomComponent ref="custom" /> - *         </div> - *       ); - *     }, - *     handleClick: function() { - *       this.refs.custom.handleClick(); - *     }, - *     componentDidMount: function() { - *       this.refs.custom.initialize(); - *     } - *   }); - * - * Refs should rarely be used. When refs are used, they should only be done to - * control data that is not handled by React's data flow. - * - * @class ReactOwner - */ -var ReactOwner = { -  /** -   * Adds a component by ref to an owner component. -   * -   * @param {ReactComponent} component Component to reference. -   * @param {string} ref Name by which to refer to the component. -   * @param {ReactOwner} owner Component on which to record the ref. -   * @final -   * @internal -   */ -  addComponentAsRefTo: function (component, ref, owner) { -    !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0; -    owner.attachRef(ref, component); -  }, - -  /** -   * Removes a component by ref from an owner component. -   * -   * @param {ReactComponent} component Component to dereference. -   * @param {string} ref Name of the ref to remove. -   * @param {ReactOwner} owner Component on which the ref is recorded. -   * @final -   * @internal -   */ -  removeComponentAsRefFrom: function (component, ref, owner) { -    !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0; -    var ownerPublicInstance = owner.getPublicInstance(); -    // Check that `component`'s owner is still alive and that `component` is still the current ref -    // because we do not want to detach the ref if another component stole it. -    if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) { -      owner.detachRef(ref); -    } -  } -}; - -module.exports = ReactOwner;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactPerf.js b/node_modules/react-dom/lib/ReactPerf.js deleted file mode 100644 index 891b9dc81..000000000 --- a/node_modules/react-dom/lib/ReactPerf.js +++ /dev/null @@ -1,500 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _assign = require('object-assign'); - -var _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var ReactDebugTool = require('./ReactDebugTool'); -var lowPriorityWarning = require('./lowPriorityWarning'); -var alreadyWarned = false; - -function roundFloat(val) { -  var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; - -  var n = Math.pow(10, base); -  return Math.floor(val * n) / n; -} - -// Flow type definition of console.table is too strict right now, see -// https://github.com/facebook/flow/pull/2353 for updates -function consoleTable(table) { -  console.table(table); -} - -function warnInProduction() { -  if (alreadyWarned) { -    return; -  } -  alreadyWarned = true; -  if (typeof console !== 'undefined') { -    console.error('ReactPerf is not supported in the production builds of React. ' + 'To collect measurements, please use the development build of React instead.'); -  } -} - -function getLastMeasurements() { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return []; -  } - -  return ReactDebugTool.getFlushHistory(); -} - -function getExclusive() { -  var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements(); - -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return []; -  } - -  var aggregatedStats = {}; -  var affectedIDs = {}; - -  function updateAggregatedStats(treeSnapshot, instanceID, timerType, applyUpdate) { -    var displayName = treeSnapshot[instanceID].displayName; - -    var key = displayName; -    var stats = aggregatedStats[key]; -    if (!stats) { -      affectedIDs[key] = {}; -      stats = aggregatedStats[key] = { -        key: key, -        instanceCount: 0, -        counts: {}, -        durations: {}, -        totalDuration: 0 -      }; -    } -    if (!stats.durations[timerType]) { -      stats.durations[timerType] = 0; -    } -    if (!stats.counts[timerType]) { -      stats.counts[timerType] = 0; -    } -    affectedIDs[key][instanceID] = true; -    applyUpdate(stats); -  } - -  flushHistory.forEach(function (flush) { -    var measurements = flush.measurements, -        treeSnapshot = flush.treeSnapshot; - -    measurements.forEach(function (measurement) { -      var duration = measurement.duration, -          instanceID = measurement.instanceID, -          timerType = measurement.timerType; - -      updateAggregatedStats(treeSnapshot, instanceID, timerType, function (stats) { -        stats.totalDuration += duration; -        stats.durations[timerType] += duration; -        stats.counts[timerType]++; -      }); -    }); -  }); - -  return Object.keys(aggregatedStats).map(function (key) { -    return _extends({}, aggregatedStats[key], { -      instanceCount: Object.keys(affectedIDs[key]).length -    }); -  }).sort(function (a, b) { -    return b.totalDuration - a.totalDuration; -  }); -} - -function getInclusive() { -  var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements(); - -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return []; -  } - -  var aggregatedStats = {}; -  var affectedIDs = {}; - -  function updateAggregatedStats(treeSnapshot, instanceID, applyUpdate) { -    var _treeSnapshot$instanc = treeSnapshot[instanceID], -        displayName = _treeSnapshot$instanc.displayName, -        ownerID = _treeSnapshot$instanc.ownerID; - -    var owner = treeSnapshot[ownerID]; -    var key = (owner ? owner.displayName + ' > ' : '') + displayName; -    var stats = aggregatedStats[key]; -    if (!stats) { -      affectedIDs[key] = {}; -      stats = aggregatedStats[key] = { -        key: key, -        instanceCount: 0, -        inclusiveRenderDuration: 0, -        renderCount: 0 -      }; -    } -    affectedIDs[key][instanceID] = true; -    applyUpdate(stats); -  } - -  var isCompositeByID = {}; -  flushHistory.forEach(function (flush) { -    var measurements = flush.measurements; - -    measurements.forEach(function (measurement) { -      var instanceID = measurement.instanceID, -          timerType = measurement.timerType; - -      if (timerType !== 'render') { -        return; -      } -      isCompositeByID[instanceID] = true; -    }); -  }); - -  flushHistory.forEach(function (flush) { -    var measurements = flush.measurements, -        treeSnapshot = flush.treeSnapshot; - -    measurements.forEach(function (measurement) { -      var duration = measurement.duration, -          instanceID = measurement.instanceID, -          timerType = measurement.timerType; - -      if (timerType !== 'render') { -        return; -      } -      updateAggregatedStats(treeSnapshot, instanceID, function (stats) { -        stats.renderCount++; -      }); -      var nextParentID = instanceID; -      while (nextParentID) { -        // As we traverse parents, only count inclusive time towards composites. -        // We know something is a composite if its render() was called. -        if (isCompositeByID[nextParentID]) { -          updateAggregatedStats(treeSnapshot, nextParentID, function (stats) { -            stats.inclusiveRenderDuration += duration; -          }); -        } -        nextParentID = treeSnapshot[nextParentID].parentID; -      } -    }); -  }); - -  return Object.keys(aggregatedStats).map(function (key) { -    return _extends({}, aggregatedStats[key], { -      instanceCount: Object.keys(affectedIDs[key]).length -    }); -  }).sort(function (a, b) { -    return b.inclusiveRenderDuration - a.inclusiveRenderDuration; -  }); -} - -function getWasted() { -  var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements(); - -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return []; -  } - -  var aggregatedStats = {}; -  var affectedIDs = {}; - -  function updateAggregatedStats(treeSnapshot, instanceID, applyUpdate) { -    var _treeSnapshot$instanc2 = treeSnapshot[instanceID], -        displayName = _treeSnapshot$instanc2.displayName, -        ownerID = _treeSnapshot$instanc2.ownerID; - -    var owner = treeSnapshot[ownerID]; -    var key = (owner ? owner.displayName + ' > ' : '') + displayName; -    var stats = aggregatedStats[key]; -    if (!stats) { -      affectedIDs[key] = {}; -      stats = aggregatedStats[key] = { -        key: key, -        instanceCount: 0, -        inclusiveRenderDuration: 0, -        renderCount: 0 -      }; -    } -    affectedIDs[key][instanceID] = true; -    applyUpdate(stats); -  } - -  flushHistory.forEach(function (flush) { -    var measurements = flush.measurements, -        treeSnapshot = flush.treeSnapshot, -        operations = flush.operations; - -    var isDefinitelyNotWastedByID = {}; - -    // Find host components associated with an operation in this batch. -    // Mark all components in their parent tree as definitely not wasted. -    operations.forEach(function (operation) { -      var instanceID = operation.instanceID; - -      var nextParentID = instanceID; -      while (nextParentID) { -        isDefinitelyNotWastedByID[nextParentID] = true; -        nextParentID = treeSnapshot[nextParentID].parentID; -      } -    }); - -    // Find composite components that rendered in this batch. -    // These are potential candidates for being wasted renders. -    var renderedCompositeIDs = {}; -    measurements.forEach(function (measurement) { -      var instanceID = measurement.instanceID, -          timerType = measurement.timerType; - -      if (timerType !== 'render') { -        return; -      } -      renderedCompositeIDs[instanceID] = true; -    }); - -    measurements.forEach(function (measurement) { -      var duration = measurement.duration, -          instanceID = measurement.instanceID, -          timerType = measurement.timerType; - -      if (timerType !== 'render') { -        return; -      } - -      // If there was a DOM update below this component, or it has just been -      // mounted, its render() is not considered wasted. -      var updateCount = treeSnapshot[instanceID].updateCount; - -      if (isDefinitelyNotWastedByID[instanceID] || updateCount === 0) { -        return; -      } - -      // We consider this render() wasted. -      updateAggregatedStats(treeSnapshot, instanceID, function (stats) { -        stats.renderCount++; -      }); - -      var nextParentID = instanceID; -      while (nextParentID) { -        // Any parents rendered during this batch are considered wasted -        // unless we previously marked them as dirty. -        var isWasted = renderedCompositeIDs[nextParentID] && !isDefinitelyNotWastedByID[nextParentID]; -        if (isWasted) { -          updateAggregatedStats(treeSnapshot, nextParentID, function (stats) { -            stats.inclusiveRenderDuration += duration; -          }); -        } -        nextParentID = treeSnapshot[nextParentID].parentID; -      } -    }); -  }); - -  return Object.keys(aggregatedStats).map(function (key) { -    return _extends({}, aggregatedStats[key], { -      instanceCount: Object.keys(affectedIDs[key]).length -    }); -  }).sort(function (a, b) { -    return b.inclusiveRenderDuration - a.inclusiveRenderDuration; -  }); -} - -function getOperations() { -  var flushHistory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getLastMeasurements(); - -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return []; -  } - -  var stats = []; -  flushHistory.forEach(function (flush, flushIndex) { -    var operations = flush.operations, -        treeSnapshot = flush.treeSnapshot; - -    operations.forEach(function (operation) { -      var instanceID = operation.instanceID, -          type = operation.type, -          payload = operation.payload; -      var _treeSnapshot$instanc3 = treeSnapshot[instanceID], -          displayName = _treeSnapshot$instanc3.displayName, -          ownerID = _treeSnapshot$instanc3.ownerID; - -      var owner = treeSnapshot[ownerID]; -      var key = (owner ? owner.displayName + ' > ' : '') + displayName; - -      stats.push({ -        flushIndex: flushIndex, -        instanceID: instanceID, -        key: key, -        type: type, -        ownerID: ownerID, -        payload: payload -      }); -    }); -  }); -  return stats; -} - -function printExclusive(flushHistory) { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  var stats = getExclusive(flushHistory); -  var table = stats.map(function (item) { -    var key = item.key, -        instanceCount = item.instanceCount, -        totalDuration = item.totalDuration; - -    var renderCount = item.counts.render || 0; -    var renderDuration = item.durations.render || 0; -    return { -      Component: key, -      'Total time (ms)': roundFloat(totalDuration), -      'Instance count': instanceCount, -      'Total render time (ms)': roundFloat(renderDuration), -      'Average render time (ms)': renderCount ? roundFloat(renderDuration / renderCount) : undefined, -      'Render count': renderCount, -      'Total lifecycle time (ms)': roundFloat(totalDuration - renderDuration) -    }; -  }); -  consoleTable(table); -} - -function printInclusive(flushHistory) { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  var stats = getInclusive(flushHistory); -  var table = stats.map(function (item) { -    var key = item.key, -        instanceCount = item.instanceCount, -        inclusiveRenderDuration = item.inclusiveRenderDuration, -        renderCount = item.renderCount; - -    return { -      'Owner > Component': key, -      'Inclusive render time (ms)': roundFloat(inclusiveRenderDuration), -      'Instance count': instanceCount, -      'Render count': renderCount -    }; -  }); -  consoleTable(table); -} - -function printWasted(flushHistory) { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  var stats = getWasted(flushHistory); -  var table = stats.map(function (item) { -    var key = item.key, -        instanceCount = item.instanceCount, -        inclusiveRenderDuration = item.inclusiveRenderDuration, -        renderCount = item.renderCount; - -    return { -      'Owner > Component': key, -      'Inclusive wasted time (ms)': roundFloat(inclusiveRenderDuration), -      'Instance count': instanceCount, -      'Render count': renderCount -    }; -  }); -  consoleTable(table); -} - -function printOperations(flushHistory) { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  var stats = getOperations(flushHistory); -  var table = stats.map(function (stat) { -    return { -      'Owner > Node': stat.key, -      Operation: stat.type, -      Payload: typeof stat.payload === 'object' ? JSON.stringify(stat.payload) : stat.payload, -      'Flush index': stat.flushIndex, -      'Owner Component ID': stat.ownerID, -      'DOM Component ID': stat.instanceID -    }; -  }); -  consoleTable(table); -} - -var warnedAboutPrintDOM = false; -function printDOM(measurements) { -  lowPriorityWarning(warnedAboutPrintDOM, '`ReactPerf.printDOM(...)` is deprecated. Use ' + '`ReactPerf.printOperations(...)` instead.'); -  warnedAboutPrintDOM = true; -  return printOperations(measurements); -} - -var warnedAboutGetMeasurementsSummaryMap = false; -function getMeasurementsSummaryMap(measurements) { -  lowPriorityWarning(warnedAboutGetMeasurementsSummaryMap, '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' + '`ReactPerf.getWasted(...)` instead.'); -  warnedAboutGetMeasurementsSummaryMap = true; -  return getWasted(measurements); -} - -function start() { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  ReactDebugTool.beginProfiling(); -} - -function stop() { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return; -  } - -  ReactDebugTool.endProfiling(); -} - -function isRunning() { -  if (!(process.env.NODE_ENV !== 'production')) { -    warnInProduction(); -    return false; -  } - -  return ReactDebugTool.isProfiling(); -} - -var ReactPerfAnalysis = { -  getLastMeasurements: getLastMeasurements, -  getExclusive: getExclusive, -  getInclusive: getInclusive, -  getWasted: getWasted, -  getOperations: getOperations, -  printExclusive: printExclusive, -  printInclusive: printInclusive, -  printWasted: printWasted, -  printOperations: printOperations, -  start: start, -  stop: stop, -  isRunning: isRunning, -  // Deprecated: -  printDOM: printDOM, -  getMeasurementsSummaryMap: getMeasurementsSummaryMap -}; - -module.exports = ReactPerfAnalysis;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactPriorityLevel.js b/node_modules/react-dom/lib/ReactPriorityLevel.js deleted file mode 100644 index fc524e65a..000000000 --- a/node_modules/react-dom/lib/ReactPriorityLevel.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -module.exports = { -  NoWork: 0, // No work is pending. -  SynchronousPriority: 1, // For controlled text inputs. Synchronous side-effects. -  AnimationPriority: 2, // Needs to complete before the next frame. -  HighPriority: 3, // Interaction that needs to complete pretty soon to feel responsive. -  LowPriority: 4, // Data fetching, or result from updating stores. -  OffscreenPriority: 5 // Won't be visible but do the work in case it becomes visible. -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactPropTypeLocationNames.js b/node_modules/react-dom/lib/ReactPropTypeLocationNames.js deleted file mode 100644 index db033cda8..000000000 --- a/node_modules/react-dom/lib/ReactPropTypeLocationNames.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactPropTypeLocationNames = {}; - -if (process.env.NODE_ENV !== 'production') { -  ReactPropTypeLocationNames = { -    prop: 'prop', -    context: 'context', -    childContext: 'child context' -  }; -} - -module.exports = ReactPropTypeLocationNames;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactPropTypeLocations.js b/node_modules/react-dom/lib/ReactPropTypeLocations.js deleted file mode 100644 index 6d94ca81e..000000000 --- a/node_modules/react-dom/lib/ReactPropTypeLocations.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactPropTypesSecret.js b/node_modules/react-dom/lib/ReactPropTypesSecret.js deleted file mode 100644 index 33d3fac02..000000000 --- a/node_modules/react-dom/lib/ReactPropTypesSecret.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -module.exports = ReactPropTypesSecret;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactReconcileTransaction.js b/node_modules/react-dom/lib/ReactReconcileTransaction.js deleted file mode 100644 index fb1abaf9c..000000000 --- a/node_modules/react-dom/lib/ReactReconcileTransaction.js +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var CallbackQueue = require('./CallbackQueue'); -var PooledClass = require('./PooledClass'); -var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter'); -var ReactInputSelection = require('./ReactInputSelection'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var Transaction = require('./Transaction'); -var ReactUpdateQueue = require('./ReactUpdateQueue'); - -/** - * Ensures that, when possible, the selection range (currently selected text - * input) is not disturbed by performing the transaction. - */ -var SELECTION_RESTORATION = { -  /** -   * @return {Selection} Selection information. -   */ -  initialize: ReactInputSelection.getSelectionInformation, -  /** -   * @param {Selection} sel Selection information returned from `initialize`. -   */ -  close: ReactInputSelection.restoreSelection -}; - -/** - * Suppresses events (blur/focus) that could be inadvertently dispatched due to - * high level DOM manipulations (like temporarily removing a text input from the - * DOM). - */ -var EVENT_SUPPRESSION = { -  /** -   * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before -   * the reconciliation. -   */ -  initialize: function () { -    var currentlyEnabled = ReactBrowserEventEmitter.isEnabled(); -    ReactBrowserEventEmitter.setEnabled(false); -    return currentlyEnabled; -  }, - -  /** -   * @param {boolean} previouslyEnabled Enabled status of -   *   `ReactBrowserEventEmitter` before the reconciliation occurred. `close` -   *   restores the previous value. -   */ -  close: function (previouslyEnabled) { -    ReactBrowserEventEmitter.setEnabled(previouslyEnabled); -  } -}; - -/** - * Provides a queue for collecting `componentDidMount` and - * `componentDidUpdate` callbacks during the transaction. - */ -var ON_DOM_READY_QUEUEING = { -  /** -   * Initializes the internal `onDOMReady` queue. -   */ -  initialize: function () { -    this.reactMountReady.reset(); -  }, - -  /** -   * After DOM is flushed, invoke all registered `onDOMReady` callbacks. -   */ -  close: function () { -    this.reactMountReady.notifyAll(); -  } -}; - -/** - * Executed within the scope of the `Transaction` instance. Consider these as - * being member methods, but with an implied ordering while being isolated from - * each other. - */ -var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING]; - -if (process.env.NODE_ENV !== 'production') { -  TRANSACTION_WRAPPERS.push({ -    initialize: ReactInstrumentation.debugTool.onBeginFlush, -    close: ReactInstrumentation.debugTool.onEndFlush -  }); -} - -/** - * Currently: - * - The order that these are listed in the transaction is critical: - * - Suppresses events. - * - Restores selection range. - * - * Future: - * - Restore document/overflow scroll positions that were unintentionally - *   modified via DOM insertions above the top viewport boundary. - * - Implement/integrate with customized constraint based layout system and keep - *   track of which dimensions must be remeasured. - * - * @class ReactReconcileTransaction - */ -function ReactReconcileTransaction(useCreateElement) { -  this.reinitializeTransaction(); -  // Only server-side rendering really needs this option (see -  // `ReactServerRendering`), but server-side uses -  // `ReactServerRenderingTransaction` instead. This option is here so that it's -  // accessible and defaults to false when `ReactDOMComponent` and -  // `ReactDOMTextComponent` checks it in `mountComponent`.` -  this.renderToStaticMarkup = false; -  this.reactMountReady = CallbackQueue.getPooled(null); -  this.useCreateElement = useCreateElement; -} - -var Mixin = { -  /** -   * @see Transaction -   * @abstract -   * @final -   * @return {array<object>} List of operation wrap procedures. -   *   TODO: convert to array<TransactionWrapper> -   */ -  getTransactionWrappers: function () { -    return TRANSACTION_WRAPPERS; -  }, - -  /** -   * @return {object} The queue to collect `onDOMReady` callbacks with. -   */ -  getReactMountReady: function () { -    return this.reactMountReady; -  }, - -  /** -   * @return {object} The queue to collect React async events. -   */ -  getUpdateQueue: function () { -    return ReactUpdateQueue; -  }, - -  /** -   * Save current transaction state -- if the return value from this method is -   * passed to `rollback`, the transaction will be reset to that state. -   */ -  checkpoint: function () { -    // reactMountReady is the our only stateful wrapper -    return this.reactMountReady.checkpoint(); -  }, - -  rollback: function (checkpoint) { -    this.reactMountReady.rollback(checkpoint); -  }, - -  /** -   * `PooledClass` looks for this, and will invoke this before allowing this -   * instance to be reused. -   */ -  destructor: function () { -    CallbackQueue.release(this.reactMountReady); -    this.reactMountReady = null; -  } -}; - -_assign(ReactReconcileTransaction.prototype, Transaction, Mixin); - -PooledClass.addPoolingTo(ReactReconcileTransaction); - -module.exports = ReactReconcileTransaction;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactReconciler.js b/node_modules/react-dom/lib/ReactReconciler.js deleted file mode 100644 index 23e54a020..000000000 --- a/node_modules/react-dom/lib/ReactReconciler.js +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactRef = require('./ReactRef'); -var ReactInstrumentation = require('./ReactInstrumentation'); - -var warning = require('fbjs/lib/warning'); - -/** - * Helper to call ReactRef.attachRefs with this composite component, split out - * to avoid allocations in the transaction mount-ready queue. - */ -function attachRefs() { -  ReactRef.attachRefs(this, this._currentElement); -} - -var ReactReconciler = { -  /** -   * Initializes the component, renders markup, and registers event listeners. -   * -   * @param {ReactComponent} internalInstance -   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction -   * @param {?object} the containing host component instance -   * @param {?object} info about the host container -   * @return {?string} Rendered markup to be inserted into the DOM. -   * @final -   * @internal -   */ -  mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots -  { -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID); -      } -    } -    var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID); -    if (internalInstance._currentElement && internalInstance._currentElement.ref != null) { -      transaction.getReactMountReady().enqueue(attachRefs, internalInstance); -    } -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID); -      } -    } -    return markup; -  }, - -  /** -   * Returns a value that can be passed to -   * ReactComponentEnvironment.replaceNodeWithMarkup. -   */ -  getHostNode: function (internalInstance) { -    return internalInstance.getHostNode(); -  }, - -  /** -   * Releases any resources allocated by `mountComponent`. -   * -   * @final -   * @internal -   */ -  unmountComponent: function (internalInstance, safely) { -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID); -      } -    } -    ReactRef.detachRefs(internalInstance, internalInstance._currentElement); -    internalInstance.unmountComponent(safely); -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID); -      } -    } -  }, - -  /** -   * Update a component using a new element. -   * -   * @param {ReactComponent} internalInstance -   * @param {ReactElement} nextElement -   * @param {ReactReconcileTransaction} transaction -   * @param {object} context -   * @internal -   */ -  receiveComponent: function (internalInstance, nextElement, transaction, context) { -    var prevElement = internalInstance._currentElement; - -    if (nextElement === prevElement && context === internalInstance._context) { -      // Since elements are immutable after the owner is rendered, -      // we can do a cheap identity compare here to determine if this is a -      // superfluous reconcile. It's possible for state to be mutable but such -      // change should trigger an update of the owner which would recreate -      // the element. We explicitly check for the existence of an owner since -      // it's possible for an element created outside a composite to be -      // deeply mutated and reused. - -      // TODO: Bailing out early is just a perf optimization right? -      // TODO: Removing the return statement should affect correctness? -      return; -    } - -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement); -      } -    } - -    var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement); - -    if (refsChanged) { -      ReactRef.detachRefs(internalInstance, prevElement); -    } - -    internalInstance.receiveComponent(nextElement, transaction, context); - -    if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) { -      transaction.getReactMountReady().enqueue(attachRefs, internalInstance); -    } - -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); -      } -    } -  }, - -  /** -   * Flush any dirty changes in a component. -   * -   * @param {ReactComponent} internalInstance -   * @param {ReactReconcileTransaction} transaction -   * @internal -   */ -  performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) { -    if (internalInstance._updateBatchNumber !== updateBatchNumber) { -      // The component's enqueued batch number should always be the current -      // batch or the following one. -      process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0; -      return; -    } -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement); -      } -    } -    internalInstance.performUpdateIfNecessary(transaction); -    if (process.env.NODE_ENV !== 'production') { -      if (internalInstance._debugID !== 0) { -        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); -      } -    } -  } -}; - -module.exports = ReactReconciler;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactRef.js b/node_modules/react-dom/lib/ReactRef.js deleted file mode 100644 index 055e632c7..000000000 --- a/node_modules/react-dom/lib/ReactRef.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var ReactOwner = require('./ReactOwner'); - -var ReactRef = {}; - -function attachRef(ref, component, owner) { -  if (typeof ref === 'function') { -    ref(component.getPublicInstance()); -  } else { -    // Legacy ref -    ReactOwner.addComponentAsRefTo(component, ref, owner); -  } -} - -function detachRef(ref, component, owner) { -  if (typeof ref === 'function') { -    ref(null); -  } else { -    // Legacy ref -    ReactOwner.removeComponentAsRefFrom(component, ref, owner); -  } -} - -ReactRef.attachRefs = function (instance, element) { -  if (element === null || typeof element !== 'object') { -    return; -  } -  var ref = element.ref; -  if (ref != null) { -    attachRef(ref, instance, element._owner); -  } -}; - -ReactRef.shouldUpdateRefs = function (prevElement, nextElement) { -  // If either the owner or a `ref` has changed, make sure the newest owner -  // has stored a reference to `this`, and the previous owner (if different) -  // has forgotten the reference to `this`. We use the element instead -  // of the public this.props because the post processing cannot determine -  // a ref. The ref conceptually lives on the element. - -  // TODO: Should this even be possible? The owner cannot change because -  // it's forbidden by shouldUpdateReactComponent. The ref can change -  // if you swap the keys of but not the refs. Reconsider where this check -  // is made. It probably belongs where the key checking and -  // instantiateReactComponent is done. - -  var prevRef = null; -  var prevOwner = null; -  if (prevElement !== null && typeof prevElement === 'object') { -    prevRef = prevElement.ref; -    prevOwner = prevElement._owner; -  } - -  var nextRef = null; -  var nextOwner = null; -  if (nextElement !== null && typeof nextElement === 'object') { -    nextRef = nextElement.ref; -    nextOwner = nextElement._owner; -  } - -  return prevRef !== nextRef || -  // If owner changes but we have an unchanged function ref, don't update refs -  typeof nextRef === 'string' && nextOwner !== prevOwner; -}; - -ReactRef.detachRefs = function (instance, element) { -  if (element === null || typeof element !== 'object') { -    return; -  } -  var ref = element.ref; -  if (ref != null) { -    detachRef(ref, instance, element._owner); -  } -}; - -module.exports = ReactRef;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactReifiedYield.js b/node_modules/react-dom/lib/ReactReifiedYield.js deleted file mode 100644 index 7c992a584..000000000 --- a/node_modules/react-dom/lib/ReactReifiedYield.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _require = require('./ReactFiber'), -    createFiberFromElementType = _require.createFiberFromElementType; - -exports.createReifiedYield = function (yieldNode) { -  var fiber = createFiberFromElementType(yieldNode.continuation, yieldNode.key); -  return { -    continuation: fiber, -    props: yieldNode.props -  }; -}; - -exports.createUpdatedReifiedYield = function (previousYield, yieldNode) { -  return { -    continuation: previousYield.continuation, -    props: yieldNode.props -  }; -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactServerBatchingStrategy.js b/node_modules/react-dom/lib/ReactServerBatchingStrategy.js deleted file mode 100644 index 0f082a42d..000000000 --- a/node_modules/react-dom/lib/ReactServerBatchingStrategy.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactServerBatchingStrategy = { -  isBatchingUpdates: false, -  batchedUpdates: function (callback) { -    // Don't do anything here. During the server rendering we don't want to -    // schedule any updates. We will simply ignore them. -  } -}; - -module.exports = ReactServerBatchingStrategy;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactServerRendering.js b/node_modules/react-dom/lib/ReactServerRendering.js deleted file mode 100644 index 1f8e30e56..000000000 --- a/node_modules/react-dom/lib/ReactServerRendering.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var React = require('react/lib/React'); -var ReactDOMContainerInfo = require('./ReactDOMContainerInfo'); -var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactMarkupChecksum = require('./ReactMarkupChecksum'); -var ReactReconciler = require('./ReactReconciler'); -var ReactServerBatchingStrategy = require('./ReactServerBatchingStrategy'); -var ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction'); -var ReactUpdates = require('./ReactUpdates'); - -var emptyObject = require('fbjs/lib/emptyObject'); -var instantiateReactComponent = require('./instantiateReactComponent'); -var invariant = require('fbjs/lib/invariant'); - -var pendingTransactions = 0; - -/** - * @param {ReactElement} element - * @return {string} the HTML markup - */ -function renderToStringImpl(element, makeStaticMarkup) { -  var transaction; -  try { -    ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy); - -    transaction = ReactServerRenderingTransaction.getPooled(makeStaticMarkup); - -    pendingTransactions++; - -    return transaction.perform(function () { -      var componentInstance = instantiateReactComponent(element, true); -      var markup = ReactReconciler.mountComponent(componentInstance, transaction, null, ReactDOMContainerInfo(), emptyObject, 0 /* parentDebugID */ -      ); -      if (process.env.NODE_ENV !== 'production') { -        ReactInstrumentation.debugTool.onUnmountComponent(componentInstance._debugID); -      } -      if (!makeStaticMarkup) { -        markup = ReactMarkupChecksum.addChecksumToMarkup(markup); -      } -      return markup; -    }, null); -  } finally { -    pendingTransactions--; -    ReactServerRenderingTransaction.release(transaction); -    // Revert to the DOM batching strategy since these two renderers -    // currently share these stateful modules. -    if (!pendingTransactions) { -      ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy); -    } -  } -} - -/** - * Render a ReactElement to its initial HTML. This should only be used on the - * server. - * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring - */ -function renderToString(element) { -  !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToString(): You must pass a valid ReactElement.') : _prodInvariant('46') : void 0; -  return renderToStringImpl(element, false); -} - -/** - * Similar to renderToString, except this doesn't create extra DOM attributes - * such as data-react-id that React uses internally. - * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup - */ -function renderToStaticMarkup(element) { -  !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToStaticMarkup(): You must pass a valid ReactElement.') : _prodInvariant('47') : void 0; -  return renderToStringImpl(element, true); -} - -module.exports = { -  renderToString: renderToString, -  renderToStaticMarkup: renderToStaticMarkup -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactServerRenderingTransaction.js b/node_modules/react-dom/lib/ReactServerRenderingTransaction.js deleted file mode 100644 index 155449918..000000000 --- a/node_modules/react-dom/lib/ReactServerRenderingTransaction.js +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var PooledClass = require('./PooledClass'); -var Transaction = require('./Transaction'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactServerUpdateQueue = require('./ReactServerUpdateQueue'); - -/** - * Executed within the scope of the `Transaction` instance. Consider these as - * being member methods, but with an implied ordering while being isolated from - * each other. - */ -var TRANSACTION_WRAPPERS = []; - -if (process.env.NODE_ENV !== 'production') { -  TRANSACTION_WRAPPERS.push({ -    initialize: ReactInstrumentation.debugTool.onBeginFlush, -    close: ReactInstrumentation.debugTool.onEndFlush -  }); -} - -var noopCallbackQueue = { -  enqueue: function () {} -}; - -/** - * @class ReactServerRenderingTransaction - * @param {boolean} renderToStaticMarkup - */ -function ReactServerRenderingTransaction(renderToStaticMarkup) { -  this.reinitializeTransaction(); -  this.renderToStaticMarkup = renderToStaticMarkup; -  this.useCreateElement = false; -  this.updateQueue = new ReactServerUpdateQueue(this); -} - -var Mixin = { -  /** -   * @see Transaction -   * @abstract -   * @final -   * @return {array} Empty list of operation wrap procedures. -   */ -  getTransactionWrappers: function () { -    return TRANSACTION_WRAPPERS; -  }, - -  /** -   * @return {object} The queue to collect `onDOMReady` callbacks with. -   */ -  getReactMountReady: function () { -    return noopCallbackQueue; -  }, - -  /** -   * @return {object} The queue to collect React async events. -   */ -  getUpdateQueue: function () { -    return this.updateQueue; -  }, - -  /** -   * `PooledClass` looks for this, and will invoke this before allowing this -   * instance to be reused. -   */ -  destructor: function () {}, - -  checkpoint: function () {}, - -  rollback: function () {} -}; - -_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin); - -PooledClass.addPoolingTo(ReactServerRenderingTransaction); - -module.exports = ReactServerRenderingTransaction;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactServerUpdateQueue.js b/node_modules/react-dom/lib/ReactServerUpdateQueue.js deleted file mode 100644 index cab66992c..000000000 --- a/node_modules/react-dom/lib/ReactServerUpdateQueue.js +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var ReactUpdateQueue = require('./ReactUpdateQueue'); - -var warning = require('fbjs/lib/warning'); - -function warnNoop(publicInstance, callerName) { -  if (process.env.NODE_ENV !== 'production') { -    var constructor = publicInstance.constructor; -    process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; -  } -} - -/** - * This is the update queue used for server rendering. - * It delegates to ReactUpdateQueue while server rendering is in progress and - * switches to ReactNoopUpdateQueue after the transaction has completed. - * @class ReactServerUpdateQueue - * @param {Transaction} transaction - */ - -var ReactServerUpdateQueue = function () { -  function ReactServerUpdateQueue(transaction) { -    _classCallCheck(this, ReactServerUpdateQueue); - -    this.transaction = transaction; -  } - -  /** -   * Checks whether or not this composite component is mounted. -   * @param {ReactClass} publicInstance The instance we want to test. -   * @return {boolean} True if mounted, false otherwise. -   * @protected -   * @final -   */ - - -  ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) { -    return false; -  }; - -  /** -   * Enqueue a callback that will be executed after all the pending updates -   * have processed. -   * -   * @param {ReactClass} publicInstance The instance to use as `this` context. -   * @param {?function} callback Called after state is updated. -   * @internal -   */ - - -  ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) { -    if (this.transaction.isInTransaction()) { -      ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName); -    } -  }; - -  /** -   * Forces an update. This should only be invoked when it is known with -   * certainty that we are **not** in a DOM transaction. -   * -   * You may want to call this when you know that some deeper aspect of the -   * component's state has changed but `setState` was not called. -   * -   * This will not invoke `shouldComponentUpdate`, but it will invoke -   * `componentWillUpdate` and `componentDidUpdate`. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @internal -   */ - - -  ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) { -    if (this.transaction.isInTransaction()) { -      ReactUpdateQueue.enqueueForceUpdate(publicInstance); -    } else { -      warnNoop(publicInstance, 'forceUpdate'); -    } -  }; - -  /** -   * Replaces all of the state. Always use this or `setState` to mutate state. -   * You should treat `this.state` as immutable. -   * -   * There is no guarantee that `this.state` will be immediately updated, so -   * accessing `this.state` after calling this method may return the old value. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @param {object|function} completeState Next state. -   * @internal -   */ - - -  ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) { -    if (this.transaction.isInTransaction()) { -      ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState); -    } else { -      warnNoop(publicInstance, 'replaceState'); -    } -  }; - -  /** -   * Sets a subset of the state. This only exists because _pendingState is -   * internal. This provides a merging strategy that is not available to deep -   * properties which is confusing. TODO: Expose pendingState or don't use it -   * during the merge. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @param {object|function} partialState Next partial state to be merged with state. -   * @internal -   */ - - -  ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) { -    if (this.transaction.isInTransaction()) { -      ReactUpdateQueue.enqueueSetState(publicInstance, partialState); -    } else { -      warnNoop(publicInstance, 'setState'); -    } -  }; - -  return ReactServerUpdateQueue; -}(); - -module.exports = ReactServerUpdateQueue;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactShallowRenderer.js b/node_modules/react-dom/lib/ReactShallowRenderer.js deleted file mode 100644 index a2454a040..000000000 --- a/node_modules/react-dom/lib/ReactShallowRenderer.js +++ /dev/null @@ -1,150 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var React = require('react/lib/React'); -var ReactCompositeComponent = require('./ReactCompositeComponent'); -var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy'); -var ReactReconciler = require('./ReactReconciler'); -var ReactReconcileTransaction = require('./ReactReconcileTransaction'); -var ReactUpdates = require('./ReactUpdates'); - -var emptyObject = require('fbjs/lib/emptyObject'); -var getNextDebugID = require('react/lib/getNextDebugID'); -var invariant = require('fbjs/lib/invariant'); - -function injectDefaults() { -  ReactUpdates.injection.injectReconcileTransaction(ReactReconcileTransaction); -  ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy); -} - -var NoopInternalComponent = function () { -  function NoopInternalComponent(element) { -    _classCallCheck(this, NoopInternalComponent); - -    this._renderedOutput = element; -    this._currentElement = element; - -    if (process.env.NODE_ENV !== 'production') { -      this._debugID = getNextDebugID(); -    } -  } - -  NoopInternalComponent.prototype.mountComponent = function mountComponent() {}; - -  NoopInternalComponent.prototype.receiveComponent = function receiveComponent(element) { -    this._renderedOutput = element; -    this._currentElement = element; -  }; - -  NoopInternalComponent.prototype.unmountComponent = function unmountComponent() {}; - -  NoopInternalComponent.prototype.getHostNode = function getHostNode() { -    return undefined; -  }; - -  NoopInternalComponent.prototype.getPublicInstance = function getPublicInstance() { -    return null; -  }; - -  return NoopInternalComponent; -}(); - -var ShallowComponentWrapper = function (element) { -  // TODO: Consolidate with instantiateReactComponent -  if (process.env.NODE_ENV !== 'production') { -    this._debugID = getNextDebugID(); -  } - -  this.construct(element); -}; -_assign(ShallowComponentWrapper.prototype, ReactCompositeComponent, { -  _constructComponent: ReactCompositeComponent._constructComponentWithoutOwner, -  _instantiateReactComponent: function (element) { -    return new NoopInternalComponent(element); -  }, -  _replaceNodeWithMarkup: function () {}, -  _renderValidatedComponent: ReactCompositeComponent._renderValidatedComponentWithoutOwnerOrContext -}); - -function _batchedRender(renderer, element, context) { -  var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(true); -  renderer._render(element, transaction, context); -  ReactUpdates.ReactReconcileTransaction.release(transaction); -} - -var ReactShallowRenderer = function () { -  function ReactShallowRenderer() { -    _classCallCheck(this, ReactShallowRenderer); - -    this._instance = null; -  } - -  ReactShallowRenderer.prototype.getMountedInstance = function getMountedInstance() { -    return this._instance ? this._instance._instance : null; -  }; - -  ReactShallowRenderer.prototype.render = function render(element, context) { -    // Ensure we've done the default injections. This might not be true in the -    // case of a simple test that only requires React and the TestUtils in -    // conjunction with an inline-requires transform. -    injectDefaults(); - -    !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactShallowRenderer render(): Invalid component element.%s', typeof element === 'function' ? ' Instead of passing a component class, make sure to instantiate ' + 'it by passing it to React.createElement.' : '') : _prodInvariant('12', typeof element === 'function' ? ' Instead of passing a component class, make sure to instantiate ' + 'it by passing it to React.createElement.' : '') : void 0; -    !(typeof element.type !== 'string') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactShallowRenderer render(): Shallow rendering works only with custom components, not primitives (%s). Instead of calling `.render(el)` and inspecting the rendered output, look at `el.props` directly instead.', element.type) : _prodInvariant('13', element.type) : void 0; - -    if (!context) { -      context = emptyObject; -    } -    ReactUpdates.batchedUpdates(_batchedRender, this, element, context); - -    return this.getRenderOutput(); -  }; - -  ReactShallowRenderer.prototype.getRenderOutput = function getRenderOutput() { -    return this._instance && this._instance._renderedComponent && this._instance._renderedComponent._renderedOutput || null; -  }; - -  ReactShallowRenderer.prototype.unmount = function unmount() { -    if (this._instance) { -      ReactReconciler.unmountComponent(this._instance, false); -    } -  }; - -  ReactShallowRenderer.prototype.unstable_batchedUpdates = function unstable_batchedUpdates(callback, bookkeeping) { -    // This is used by Enzyme for fake-simulating events in shallow mode. -    injectDefaults(); -    return ReactUpdates.batchedUpdates(callback, bookkeeping); -  }; - -  ReactShallowRenderer.prototype._render = function _render(element, transaction, context) { -    if (this._instance) { -      ReactReconciler.receiveComponent(this._instance, element, transaction, context); -    } else { -      var instance = new ShallowComponentWrapper(element); -      ReactReconciler.mountComponent(instance, transaction, null, null, context, 0); -      this._instance = instance; -    } -  }; - -  return ReactShallowRenderer; -}(); - -ReactShallowRenderer.createRenderer = function () { -  return new ReactShallowRenderer(); -}; - -module.exports = ReactShallowRenderer;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactSimpleEmptyComponent.js b/node_modules/react-dom/lib/ReactSimpleEmptyComponent.js deleted file mode 100644 index 74f293320..000000000 --- a/node_modules/react-dom/lib/ReactSimpleEmptyComponent.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var ReactReconciler = require('./ReactReconciler'); - -var ReactSimpleEmptyComponent = function (placeholderElement, instantiate) { -  this._currentElement = null; -  this._renderedComponent = instantiate(placeholderElement); -}; -_assign(ReactSimpleEmptyComponent.prototype, { -  mountComponent: function (transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots -  { -    return ReactReconciler.mountComponent(this._renderedComponent, transaction, hostParent, hostContainerInfo, context, parentDebugID); -  }, -  receiveComponent: function () {}, -  getHostNode: function () { -    return ReactReconciler.getHostNode(this._renderedComponent); -  }, -  unmountComponent: function () { -    ReactReconciler.unmountComponent(this._renderedComponent); -    this._renderedComponent = null; -  } -}); - -module.exports = ReactSimpleEmptyComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactSyntheticEventType.js b/node_modules/react-dom/lib/ReactSyntheticEventType.js deleted file mode 100644 index a5aca1c48..000000000 --- a/node_modules/react-dom/lib/ReactSyntheticEventType.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * Flow type for SyntheticEvent class that includes private properties - * - *  - */ - -'use strict';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactTestReconcileTransaction.js b/node_modules/react-dom/lib/ReactTestReconcileTransaction.js deleted file mode 100644 index ecc1818d1..000000000 --- a/node_modules/react-dom/lib/ReactTestReconcileTransaction.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ -'use strict'; - -var _assign = require('object-assign'); - -var CallbackQueue = require('./CallbackQueue'); -var PooledClass = require('./PooledClass'); -var Transaction = require('./Transaction'); -var ReactUpdateQueue = require('./ReactUpdateQueue'); - -/** - * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks during - * the performing of the transaction. - */ -var ON_DOM_READY_QUEUEING = { -  /** -   * Initializes the internal `onDOMReady` queue. -   */ -  initialize: function () { -    this.reactMountReady.reset(); -  }, - -  /** -   * After DOM is flushed, invoke all registered `onDOMReady` callbacks. -   */ -  close: function () { -    this.reactMountReady.notifyAll(); -  } -}; - -/** - * Executed within the scope of the `Transaction` instance. Consider these as - * being member methods, but with an implied ordering while being isolated from - * each other. - */ -var TRANSACTION_WRAPPERS = [ON_DOM_READY_QUEUEING]; - -/** - * Currently: - * - The order that these are listed in the transaction is critical: - * - Suppresses events. - * - Restores selection range. - * - * Future: - * - Restore document/overflow scroll positions that were unintentionally - *   modified via DOM insertions above the top viewport boundary. - * - Implement/integrate with customized constraint based layout system and keep - *   track of which dimensions must be remeasured. - * - * @class ReactTestReconcileTransaction - */ -function ReactTestReconcileTransaction(testOptions) { -  this.reinitializeTransaction(); -  this.testOptions = testOptions; -  this.reactMountReady = CallbackQueue.getPooled(this); -} - -var Mixin = { -  /** -   * @see Transaction -   * @abstract -   * @final -   * @return {array<object>} List of operation wrap procedures. -   *   TODO: convert to array<TransactionWrapper> -   */ -  getTransactionWrappers: function () { -    return TRANSACTION_WRAPPERS; -  }, - -  /** -   * @return {object} The queue to collect `onDOMReady` callbacks with. -   *   TODO: convert to ReactMountReady -   */ -  getReactMountReady: function () { -    return this.reactMountReady; -  }, - -  /** -   * @return {object} the options passed to ReactTestRenderer -   */ -  getTestOptions: function () { -    return this.testOptions; -  }, - -  /** -   * @return {object} The queue to collect React async events. -   */ -  getUpdateQueue: function () { -    return ReactUpdateQueue; -  }, - -  /** -   * Save current transaction state -- if the return value from this method is -   * passed to `rollback`, the transaction will be reset to that state. -   */ -  checkpoint: function () { -    // reactMountReady is the our only stateful wrapper -    return this.reactMountReady.checkpoint(); -  }, - -  rollback: function (checkpoint) { -    this.reactMountReady.rollback(checkpoint); -  }, - -  /** -   * `PooledClass` looks for this, and will invoke this before allowing this -   * instance to be reused. -   */ -  destructor: function () { -    CallbackQueue.release(this.reactMountReady); -    this.reactMountReady = null; -  } -}; - -_assign(ReactTestReconcileTransaction.prototype, Transaction, ReactTestReconcileTransaction, Mixin); - -PooledClass.addPoolingTo(ReactTestReconcileTransaction); - -module.exports = ReactTestReconcileTransaction;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactTestUtils.js b/node_modules/react-dom/lib/ReactTestUtils.js deleted file mode 100644 index 79fb36444..000000000 --- a/node_modules/react-dom/lib/ReactTestUtils.js +++ /dev/null @@ -1,422 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var EventConstants = require('./EventConstants'); -var EventPluginHub = require('./EventPluginHub'); -var EventPluginRegistry = require('./EventPluginRegistry'); -var EventPropagators = require('./EventPropagators'); -var React = require('react/lib/React'); -var ReactDOM = require('./ReactDOM'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter'); -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactUpdates = require('./ReactUpdates'); -var SyntheticEvent = require('./SyntheticEvent'); -var ReactShallowRenderer = require('./ReactShallowRenderer'); - -var findDOMNode = require('./findDOMNode'); -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var topLevelTypes = EventConstants.topLevelTypes; - -function Event(suffix) {} - -// In react 16+ shallowRenderer will not be accessible via ReactTestUtils.createRenderer() -// Instead it will be available via react-test-renderer/shallow -// Maintain backwards compat for 15.5.0 release, but warn about using the deprecated method -var hasWarnedAboutCreateRenderer = false; -function createRendererWithWarning() { -  process.env.NODE_ENV !== 'production' ? warning(hasWarnedAboutCreateRenderer, 'Shallow renderer has been moved to react-test-renderer/shallow. ' + 'Update references to remove this warning.') : void 0; -  hasWarnedAboutCreateRenderer = true; - -  return new ReactShallowRenderer(); -} - -/** - * @class ReactTestUtils - */ - -function findAllInRenderedTreeInternal(inst, test) { -  if (!inst || !inst.getPublicInstance) { -    return []; -  } -  var publicInst = inst.getPublicInstance(); -  var ret = test(publicInst) ? [publicInst] : []; -  var currentElement = inst._currentElement; -  if (ReactTestUtils.isDOMComponent(publicInst)) { -    var renderedChildren = inst._renderedChildren; -    var key; -    for (key in renderedChildren) { -      if (!renderedChildren.hasOwnProperty(key)) { -        continue; -      } -      ret = ret.concat(findAllInRenderedTreeInternal(renderedChildren[key], test)); -    } -  } else if (React.isValidElement(currentElement) && typeof currentElement.type === 'function') { -    ret = ret.concat(findAllInRenderedTreeInternal(inst._renderedComponent, test)); -  } -  return ret; -} - -/** - * Utilities for making it easy to test React components. - * - * See https://facebook.github.io/react/docs/test-utils.html - * - * Todo: Support the entire DOM.scry query syntax. For now, these simple - * utilities will suffice for testing purposes. - * @lends ReactTestUtils - */ -var ReactTestUtils = { -  renderIntoDocument: function (element) { -    var div = document.createElement('div'); -    // None of our tests actually require attaching the container to the -    // DOM, and doing so creates a mess that we rely on test isolation to -    // clean up, so we're going to stop honoring the name of this method -    // (and probably rename it eventually) if no problems arise. -    // document.documentElement.appendChild(div); -    return ReactDOM.render(element, div); -  }, - -  isElement: function (element) { -    return React.isValidElement(element); -  }, - -  isElementOfType: function (inst, convenienceConstructor) { -    return React.isValidElement(inst) && inst.type === convenienceConstructor; -  }, - -  isDOMComponent: function (inst) { -    return !!(inst && inst.nodeType === 1 && inst.tagName); -  }, - -  isDOMComponentElement: function (inst) { -    return !!(inst && React.isValidElement(inst) && !!inst.tagName); -  }, - -  isCompositeComponent: function (inst) { -    if (ReactTestUtils.isDOMComponent(inst)) { -      // Accessing inst.setState warns; just return false as that'll be what -      // this returns when we have DOM nodes as refs directly -      return false; -    } -    return inst != null && typeof inst.render === 'function' && typeof inst.setState === 'function'; -  }, - -  isCompositeComponentWithType: function (inst, type) { -    if (!ReactTestUtils.isCompositeComponent(inst)) { -      return false; -    } -    var internalInstance = ReactInstanceMap.get(inst); -    var constructor = internalInstance._currentElement.type; - -    return constructor === type; -  }, - -  isCompositeComponentElement: function (inst) { -    if (!React.isValidElement(inst)) { -      return false; -    } -    // We check the prototype of the type that will get mounted, not the -    // instance itself. This is a future proof way of duck typing. -    var prototype = inst.type.prototype; -    return typeof prototype.render === 'function' && typeof prototype.setState === 'function'; -  }, - -  isCompositeComponentElementWithType: function (inst, type) { -    var internalInstance = ReactInstanceMap.get(inst); -    var constructor = internalInstance._currentElement.type; - -    return !!(ReactTestUtils.isCompositeComponentElement(inst) && constructor === type); -  }, - -  getRenderedChildOfCompositeComponent: function (inst) { -    if (!ReactTestUtils.isCompositeComponent(inst)) { -      return null; -    } -    var internalInstance = ReactInstanceMap.get(inst); -    return internalInstance._renderedComponent.getPublicInstance(); -  }, - -  findAllInRenderedTree: function (inst, test) { -    if (!inst) { -      return []; -    } -    !ReactTestUtils.isCompositeComponent(inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findAllInRenderedTree(...): instance must be a composite component') : _prodInvariant('10') : void 0; -    return findAllInRenderedTreeInternal(ReactInstanceMap.get(inst), test); -  }, - -  /** -   * Finds all instance of components in the rendered tree that are DOM -   * components with the class name matching `className`. -   * @return {array} an array of all the matches. -   */ -  scryRenderedDOMComponentsWithClass: function (root, classNames) { -    return ReactTestUtils.findAllInRenderedTree(root, function (inst) { -      if (ReactTestUtils.isDOMComponent(inst)) { -        var className = inst.className; -        if (typeof className !== 'string') { -          // SVG, probably. -          className = inst.getAttribute('class') || ''; -        } -        var classList = className.split(/\s+/); - -        if (!Array.isArray(classNames)) { -          !(classNames !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'TestUtils.scryRenderedDOMComponentsWithClass expects a className as a second argument.') : _prodInvariant('11') : void 0; -          classNames = classNames.split(/\s+/); -        } -        return classNames.every(function (name) { -          return classList.indexOf(name) !== -1; -        }); -      } -      return false; -    }); -  }, - -  /** -   * Like scryRenderedDOMComponentsWithClass but expects there to be one result, -   * and returns that one result, or throws exception if there is any other -   * number of matches besides one. -   * @return {!ReactDOMComponent} The one match. -   */ -  findRenderedDOMComponentWithClass: function (root, className) { -    var all = ReactTestUtils.scryRenderedDOMComponentsWithClass(root, className); -    if (all.length !== 1) { -      throw new Error('Did not find exactly one match (found: ' + all.length + ') ' + 'for class:' + className); -    } -    return all[0]; -  }, - -  /** -   * Finds all instance of components in the rendered tree that are DOM -   * components with the tag name matching `tagName`. -   * @return {array} an array of all the matches. -   */ -  scryRenderedDOMComponentsWithTag: function (root, tagName) { -    return ReactTestUtils.findAllInRenderedTree(root, function (inst) { -      return ReactTestUtils.isDOMComponent(inst) && inst.tagName.toUpperCase() === tagName.toUpperCase(); -    }); -  }, - -  /** -   * Like scryRenderedDOMComponentsWithTag but expects there to be one result, -   * and returns that one result, or throws exception if there is any other -   * number of matches besides one. -   * @return {!ReactDOMComponent} The one match. -   */ -  findRenderedDOMComponentWithTag: function (root, tagName) { -    var all = ReactTestUtils.scryRenderedDOMComponentsWithTag(root, tagName); -    if (all.length !== 1) { -      throw new Error('Did not find exactly one match (found: ' + all.length + ') ' + 'for tag:' + tagName); -    } -    return all[0]; -  }, - -  /** -   * Finds all instances of components with type equal to `componentType`. -   * @return {array} an array of all the matches. -   */ -  scryRenderedComponentsWithType: function (root, componentType) { -    return ReactTestUtils.findAllInRenderedTree(root, function (inst) { -      return ReactTestUtils.isCompositeComponentWithType(inst, componentType); -    }); -  }, - -  /** -   * Same as `scryRenderedComponentsWithType` but expects there to be one result -   * and returns that one result, or throws exception if there is any other -   * number of matches besides one. -   * @return {!ReactComponent} The one match. -   */ -  findRenderedComponentWithType: function (root, componentType) { -    var all = ReactTestUtils.scryRenderedComponentsWithType(root, componentType); -    if (all.length !== 1) { -      throw new Error('Did not find exactly one match (found: ' + all.length + ') ' + 'for componentType:' + componentType); -    } -    return all[0]; -  }, - -  /** -   * Pass a mocked component module to this method to augment it with -   * useful methods that allow it to be used as a dummy React component. -   * Instead of rendering as usual, the component will become a simple -   * <div> containing any provided children. -   * -   * @param {object} module the mock function object exported from a -   *                        module that defines the component to be mocked -   * @param {?string} mockTagName optional dummy root tag name to return -   *                              from render method (overrides -   *                              module.mockTagName if provided) -   * @return {object} the ReactTestUtils object (for chaining) -   */ -  mockComponent: function (module, mockTagName) { -    mockTagName = mockTagName || module.mockTagName || 'div'; - -    module.prototype.render.mockImplementation(function () { -      return React.createElement(mockTagName, null, this.props.children); -    }); - -    return this; -  }, - -  /** -   * Simulates a top level event being dispatched from a raw event that occurred -   * on an `Element` node. -   * @param {Object} topLevelType A type from `EventConstants.topLevelTypes` -   * @param {!Element} node The dom to simulate an event occurring on. -   * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent. -   */ -  simulateNativeEventOnNode: function (topLevelType, node, fakeNativeEvent) { -    fakeNativeEvent.target = node; -    fakeNativeEvent.simulated = true; -    ReactBrowserEventEmitter.ReactEventListener.dispatchEvent(topLevelType, fakeNativeEvent); -  }, - -  /** -   * Simulates a top level event being dispatched from a raw event that occurred -   * on the `ReactDOMComponent` `comp`. -   * @param {Object} topLevelType A type from `EventConstants.topLevelTypes`. -   * @param {!ReactDOMComponent} comp -   * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent. -   */ -  simulateNativeEventOnDOMComponent: function (topLevelType, comp, fakeNativeEvent) { -    ReactTestUtils.simulateNativeEventOnNode(topLevelType, findDOMNode(comp), fakeNativeEvent); -  }, - -  nativeTouchData: function (x, y) { -    return { -      touches: [{ pageX: x, pageY: y }] -    }; -  }, - -  createRenderer: createRendererWithWarning, - -  Simulate: null, -  SimulateNative: {} -}; - -/** - * Exports: - * - * - `ReactTestUtils.Simulate.click(Element/ReactDOMComponent)` - * - `ReactTestUtils.Simulate.mouseMove(Element/ReactDOMComponent)` - * - `ReactTestUtils.Simulate.change(Element/ReactDOMComponent)` - * - ... (All keys from event plugin `eventTypes` objects) - */ -function makeSimulator(eventType) { -  return function (domComponentOrNode, eventData) { -    var node; -    !!React.isValidElement(domComponentOrNode) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'TestUtils.Simulate expects a component instance and not a ReactElement.TestUtils.Simulate will not work if you are using shallow rendering.') : _prodInvariant('14') : void 0; -    if (ReactTestUtils.isDOMComponent(domComponentOrNode)) { -      node = findDOMNode(domComponentOrNode); -    } else if (domComponentOrNode.tagName) { -      node = domComponentOrNode; -    } - -    var dispatchConfig = EventPluginRegistry.eventNameDispatchConfigs[eventType]; - -    var fakeNativeEvent = new Event(); -    fakeNativeEvent.target = node; -    fakeNativeEvent.type = eventType.toLowerCase(); - -    // We don't use SyntheticEvent.getPooled in order to not have to worry about -    // properly destroying any properties assigned from `eventData` upon release -    var event = new SyntheticEvent(dispatchConfig, ReactDOMComponentTree.getInstanceFromNode(node), fakeNativeEvent, node); -    // Since we aren't using pooling, always persist the event. This will make -    // sure it's marked and won't warn when setting additional properties. -    event.persist(); -    _assign(event, eventData); - -    if (dispatchConfig.phasedRegistrationNames) { -      EventPropagators.accumulateTwoPhaseDispatches(event); -    } else { -      EventPropagators.accumulateDirectDispatches(event); -    } - -    ReactUpdates.batchedUpdates(function () { -      EventPluginHub.enqueueEvents(event); -      EventPluginHub.processEventQueue(true); -    }); -  }; -} - -function buildSimulators() { -  ReactTestUtils.Simulate = {}; - -  var eventType; -  for (eventType in EventPluginRegistry.eventNameDispatchConfigs) { -    /** -     * @param {!Element|ReactDOMComponent} domComponentOrNode -     * @param {?object} eventData Fake event data to use in SyntheticEvent. -     */ -    ReactTestUtils.Simulate[eventType] = makeSimulator(eventType); -  } -} - -// Rebuild ReactTestUtils.Simulate whenever event plugins are injected -var oldInjectEventPluginOrder = EventPluginHub.injection.injectEventPluginOrder; -EventPluginHub.injection.injectEventPluginOrder = function () { -  oldInjectEventPluginOrder.apply(this, arguments); -  buildSimulators(); -}; -var oldInjectEventPlugins = EventPluginHub.injection.injectEventPluginsByName; -EventPluginHub.injection.injectEventPluginsByName = function () { -  oldInjectEventPlugins.apply(this, arguments); -  buildSimulators(); -}; - -buildSimulators(); - -/** - * Exports: - * - * - `ReactTestUtils.SimulateNative.click(Element/ReactDOMComponent)` - * - `ReactTestUtils.SimulateNative.mouseMove(Element/ReactDOMComponent)` - * - `ReactTestUtils.SimulateNative.mouseIn/ReactDOMComponent)` - * - `ReactTestUtils.SimulateNative.mouseOut(Element/ReactDOMComponent)` - * - ... (All keys from `EventConstants.topLevelTypes`) - * - * Note: Top level event types are a subset of the entire set of handler types - * (which include a broader set of "synthetic" events). For example, onDragDone - * is a synthetic event. Except when testing an event plugin or React's event - * handling code specifically, you probably want to use ReactTestUtils.Simulate - * to dispatch synthetic events. - */ - -function makeNativeSimulator(eventType) { -  return function (domComponentOrNode, nativeEventData) { -    var fakeNativeEvent = new Event(eventType); -    _assign(fakeNativeEvent, nativeEventData); -    if (ReactTestUtils.isDOMComponent(domComponentOrNode)) { -      ReactTestUtils.simulateNativeEventOnDOMComponent(eventType, domComponentOrNode, fakeNativeEvent); -    } else if (domComponentOrNode.tagName) { -      // Will allow on actual dom nodes. -      ReactTestUtils.simulateNativeEventOnNode(eventType, domComponentOrNode, fakeNativeEvent); -    } -  }; -} - -Object.keys(topLevelTypes).forEach(function (eventType) { -  // Event type is stored as 'topClick' - we transform that to 'click' -  var convenienceName = eventType.indexOf('top') === 0 ? eventType.charAt(3).toLowerCase() + eventType.substr(4) : eventType; -  /** -   * @param {!Element|ReactDOMComponent} domComponentOrNode -   * @param {?Event} nativeEventData Fake native event to use in SyntheticEvent. -   */ -  ReactTestUtils.SimulateNative[convenienceName] = makeNativeSimulator(eventType); -}); - -module.exports = ReactTestUtils;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactTypeOfWork.js b/node_modules/react-dom/lib/ReactTypeOfWork.js deleted file mode 100644 index 79415d9d2..000000000 --- a/node_modules/react-dom/lib/ReactTypeOfWork.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -module.exports = { -  IndeterminateComponent: 0, // Before we know whether it is functional or class -  FunctionalComponent: 1, -  ClassComponent: 2, -  HostContainer: 3, // Root of a host tree. Could be nested inside another node. -  HostComponent: 4, -  CoroutineComponent: 5, -  CoroutineHandlerPhase: 6, -  YieldComponent: 7 -};
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactTypes.js b/node_modules/react-dom/lib/ReactTypes.js deleted file mode 100644 index 9b013dfbf..000000000 --- a/node_modules/react-dom/lib/ReactTypes.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactUpdateQueue.js b/node_modules/react-dom/lib/ReactUpdateQueue.js deleted file mode 100644 index f1fda7c8d..000000000 --- a/node_modules/react-dom/lib/ReactUpdateQueue.js +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactInstrumentation = require('./ReactInstrumentation'); -var ReactUpdates = require('./ReactUpdates'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -function enqueueUpdate(internalInstance) { -  ReactUpdates.enqueueUpdate(internalInstance); -} - -function formatUnexpectedArgument(arg) { -  var type = typeof arg; -  if (type !== 'object') { -    return type; -  } -  var displayName = arg.constructor && arg.constructor.name || type; -  var keys = Object.keys(arg); -  if (keys.length > 0 && keys.length < 20) { -    return displayName + ' (keys: ' + keys.join(', ') + ')'; -  } -  return displayName; -} - -function getInternalInstanceReadyForUpdate(publicInstance, callerName) { -  var internalInstance = ReactInstanceMap.get(publicInstance); -  if (!internalInstance) { -    if (process.env.NODE_ENV !== 'production') { -      var ctor = publicInstance.constructor; -      // Only warn when we have a callerName. Otherwise we should be silent. -      // We're probably calling from enqueueCallback. We don't want to warn -      // there because we already warned for the corresponding lifecycle method. -      process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0; -    } -    return null; -  } - -  if (process.env.NODE_ENV !== 'production') { -    process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + "within `render` or another component's constructor). Render methods " + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0; -  } - -  return internalInstance; -} - -/** - * ReactUpdateQueue allows for state updates to be scheduled into a later - * reconciliation step. - */ -var ReactUpdateQueue = { -  /** -   * Checks whether or not this composite component is mounted. -   * @param {ReactClass} publicInstance The instance we want to test. -   * @return {boolean} True if mounted, false otherwise. -   * @protected -   * @final -   */ -  isMounted: function (publicInstance) { -    if (process.env.NODE_ENV !== 'production') { -      var owner = ReactCurrentOwner.current; -      if (owner !== null) { -        process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + '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; -        owner._warnedAboutRefsInRender = true; -      } -    } -    var internalInstance = ReactInstanceMap.get(publicInstance); -    if (internalInstance) { -      // During componentWillMount and render this will still be null but after -      // that will always render to something. At least for now. So we can use -      // this hack. -      return !!internalInstance._renderedComponent; -    } else { -      return false; -    } -  }, - -  /** -   * Enqueue a callback that will be executed after all the pending updates -   * have processed. -   * -   * @param {ReactClass} publicInstance The instance to use as `this` context. -   * @param {?function} callback Called after state is updated. -   * @param {string} callerName Name of the calling function in the public API. -   * @internal -   */ -  enqueueCallback: function (publicInstance, callback, callerName) { -    ReactUpdateQueue.validateCallback(callback, callerName); -    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance); - -    // Previously we would throw an error if we didn't have an internal -    // instance. Since we want to make it a no-op instead, we mirror the same -    // behavior we have in other enqueue* methods. -    // We also need to ignore callbacks in componentWillMount. See -    // enqueueUpdates. -    if (!internalInstance) { -      return null; -    } - -    if (internalInstance._pendingCallbacks) { -      internalInstance._pendingCallbacks.push(callback); -    } else { -      internalInstance._pendingCallbacks = [callback]; -    } -    // TODO: The callback here is ignored when setState is called from -    // componentWillMount. Either fix it or disallow doing so completely in -    // favor of getInitialState. Alternatively, we can disallow -    // componentWillMount during server-side rendering. -    enqueueUpdate(internalInstance); -  }, - -  enqueueCallbackInternal: function (internalInstance, callback) { -    if (internalInstance._pendingCallbacks) { -      internalInstance._pendingCallbacks.push(callback); -    } else { -      internalInstance._pendingCallbacks = [callback]; -    } -    enqueueUpdate(internalInstance); -  }, - -  /** -   * Forces an update. This should only be invoked when it is known with -   * certainty that we are **not** in a DOM transaction. -   * -   * You may want to call this when you know that some deeper aspect of the -   * component's state has changed but `setState` was not called. -   * -   * This will not invoke `shouldComponentUpdate`, but it will invoke -   * `componentWillUpdate` and `componentDidUpdate`. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @internal -   */ -  enqueueForceUpdate: function (publicInstance) { -    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate'); - -    if (!internalInstance) { -      return; -    } - -    internalInstance._pendingForceUpdate = true; - -    enqueueUpdate(internalInstance); -  }, - -  /** -   * Replaces all of the state. Always use this or `setState` to mutate state. -   * You should treat `this.state` as immutable. -   * -   * There is no guarantee that `this.state` will be immediately updated, so -   * accessing `this.state` after calling this method may return the old value. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @param {object} completeState Next state. -   * @internal -   */ -  enqueueReplaceState: function (publicInstance, completeState, callback) { -    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState'); - -    if (!internalInstance) { -      return; -    } - -    internalInstance._pendingStateQueue = [completeState]; -    internalInstance._pendingReplaceState = true; - -    // Future-proof 15.5 -    if (callback !== undefined && callback !== null) { -      ReactUpdateQueue.validateCallback(callback, 'replaceState'); -      if (internalInstance._pendingCallbacks) { -        internalInstance._pendingCallbacks.push(callback); -      } else { -        internalInstance._pendingCallbacks = [callback]; -      } -    } - -    enqueueUpdate(internalInstance); -  }, - -  /** -   * Sets a subset of the state. This only exists because _pendingState is -   * internal. This provides a merging strategy that is not available to deep -   * properties which is confusing. TODO: Expose pendingState or don't use it -   * during the merge. -   * -   * @param {ReactClass} publicInstance The instance that should rerender. -   * @param {object} partialState Next partial state to be merged with state. -   * @internal -   */ -  enqueueSetState: function (publicInstance, partialState) { -    if (process.env.NODE_ENV !== 'production') { -      ReactInstrumentation.debugTool.onSetState(); -      process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0; -    } - -    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState'); - -    if (!internalInstance) { -      return; -    } - -    var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []); -    queue.push(partialState); - -    enqueueUpdate(internalInstance); -  }, - -  enqueueElementInternal: function (internalInstance, nextElement, nextContext) { -    internalInstance._pendingElement = nextElement; -    // TODO: introduce _pendingContext instead of setting it directly. -    internalInstance._context = nextContext; -    enqueueUpdate(internalInstance); -  }, - -  validateCallback: function (callback, callerName) { -    !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0; -  } -}; - -module.exports = ReactUpdateQueue;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactUpdates.js b/node_modules/react-dom/lib/ReactUpdates.js deleted file mode 100644 index 42f4a7038..000000000 --- a/node_modules/react-dom/lib/ReactUpdates.js +++ /dev/null @@ -1,250 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var CallbackQueue = require('./CallbackQueue'); -var PooledClass = require('./PooledClass'); -var ReactFeatureFlags = require('./ReactFeatureFlags'); -var ReactReconciler = require('./ReactReconciler'); -var Transaction = require('./Transaction'); - -var invariant = require('fbjs/lib/invariant'); - -var dirtyComponents = []; -var updateBatchNumber = 0; -var asapCallbackQueue = CallbackQueue.getPooled(); -var asapEnqueued = false; - -var batchingStrategy = null; - -function ensureInjected() { -  !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0; -} - -var NESTED_UPDATES = { -  initialize: function () { -    this.dirtyComponentsLength = dirtyComponents.length; -  }, -  close: function () { -    if (this.dirtyComponentsLength !== dirtyComponents.length) { -      // Additional updates were enqueued by componentDidUpdate handlers or -      // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run -      // these new updates so that if A's componentDidUpdate calls setState on -      // B, B will update before the callback A's updater provided when calling -      // setState. -      dirtyComponents.splice(0, this.dirtyComponentsLength); -      flushBatchedUpdates(); -    } else { -      dirtyComponents.length = 0; -    } -  } -}; - -var UPDATE_QUEUEING = { -  initialize: function () { -    this.callbackQueue.reset(); -  }, -  close: function () { -    this.callbackQueue.notifyAll(); -  } -}; - -var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING]; - -function ReactUpdatesFlushTransaction() { -  this.reinitializeTransaction(); -  this.dirtyComponentsLength = null; -  this.callbackQueue = CallbackQueue.getPooled(); -  this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled( -  /* useCreateElement */true); -} - -_assign(ReactUpdatesFlushTransaction.prototype, Transaction, { -  getTransactionWrappers: function () { -    return TRANSACTION_WRAPPERS; -  }, - -  destructor: function () { -    this.dirtyComponentsLength = null; -    CallbackQueue.release(this.callbackQueue); -    this.callbackQueue = null; -    ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); -    this.reconcileTransaction = null; -  }, - -  perform: function (method, scope, a) { -    // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` -    // with this transaction's wrappers around it. -    return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); -  } -}); - -PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); - -function batchedUpdates(callback, a, b, c, d, e) { -  ensureInjected(); -  return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); -} - -/** - * Array comparator for ReactComponents by mount ordering. - * - * @param {ReactComponent} c1 first component you're comparing - * @param {ReactComponent} c2 second component you're comparing - * @return {number} Return value usable by Array.prototype.sort(). - */ -function mountOrderComparator(c1, c2) { -  return c1._mountOrder - c2._mountOrder; -} - -function runBatchedUpdates(transaction) { -  var len = transaction.dirtyComponentsLength; -  !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0; - -  // Since reconciling a component higher in the owner hierarchy usually (not -  // always -- see shouldComponentUpdate()) will reconcile children, reconcile -  // them before their children by sorting the array. -  dirtyComponents.sort(mountOrderComparator); - -  // Any updates enqueued while reconciling must be performed after this entire -  // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and -  // C, B could update twice in a single batch if C's render enqueues an update -  // to B (since B would have already updated, we should skip it, and the only -  // way we can know to do so is by checking the batch counter). -  updateBatchNumber++; - -  for (var i = 0; i < len; i++) { -    // If a component is unmounted before pending changes apply, it will still -    // be here, but we assume that it has cleared its _pendingCallbacks and -    // that performUpdateIfNecessary is a noop. -    var component = dirtyComponents[i]; - -    // If performUpdateIfNecessary happens to enqueue any new updates, we -    // shouldn't execute the callbacks until the next render happens, so -    // stash the callbacks first -    var callbacks = component._pendingCallbacks; -    component._pendingCallbacks = null; - -    var markerName; -    if (ReactFeatureFlags.logTopLevelRenders) { -      var namedComponent = component; -      // Duck type TopLevelWrapper. This is probably always true. -      if (component._currentElement.type.isReactTopLevelWrapper) { -        namedComponent = component._renderedComponent; -      } -      markerName = 'React update: ' + namedComponent.getName(); -      console.time(markerName); -    } - -    ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber); - -    if (markerName) { -      console.timeEnd(markerName); -    } - -    if (callbacks) { -      for (var j = 0; j < callbacks.length; j++) { -        transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance()); -      } -    } -  } -} - -var flushBatchedUpdates = function () { -  // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents -  // array and perform any updates enqueued by mount-ready handlers (i.e., -  // componentDidUpdate) but we need to check here too in order to catch -  // updates enqueued by setState callbacks and asap calls. -  while (dirtyComponents.length || asapEnqueued) { -    if (dirtyComponents.length) { -      var transaction = ReactUpdatesFlushTransaction.getPooled(); -      transaction.perform(runBatchedUpdates, null, transaction); -      ReactUpdatesFlushTransaction.release(transaction); -    } - -    if (asapEnqueued) { -      asapEnqueued = false; -      var queue = asapCallbackQueue; -      asapCallbackQueue = CallbackQueue.getPooled(); -      queue.notifyAll(); -      CallbackQueue.release(queue); -    } -  } -}; - -/** - * Mark a component as needing a rerender, adding an optional callback to a - * list of functions which will be executed once the rerender occurs. - */ -function enqueueUpdate(component) { -  ensureInjected(); - -  // Various parts of our code (such as ReactCompositeComponent's -  // _renderValidatedComponent) assume that calls to render aren't nested; -  // verify that that's the case. (This is called by each top-level update -  // function, like setState, forceUpdate, etc.; creation and -  // destruction of top-level components is guarded in ReactMount.) - -  if (!batchingStrategy.isBatchingUpdates) { -    batchingStrategy.batchedUpdates(enqueueUpdate, component); -    return; -  } - -  dirtyComponents.push(component); -  if (component._updateBatchNumber == null) { -    component._updateBatchNumber = updateBatchNumber + 1; -  } -} - -/** - * Enqueue a callback to be run at the end of the current batching cycle. Throws - * if no updates are currently being performed. - */ -function asap(callback, context) { -  !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0; -  asapCallbackQueue.enqueue(callback, context); -  asapEnqueued = true; -} - -var ReactUpdatesInjection = { -  injectReconcileTransaction: function (ReconcileTransaction) { -    !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0; -    ReactUpdates.ReactReconcileTransaction = ReconcileTransaction; -  }, - -  injectBatchingStrategy: function (_batchingStrategy) { -    !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0; -    !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0; -    !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0; -    batchingStrategy = _batchingStrategy; -  } -}; - -var ReactUpdates = { -  /** -   * React references `ReactReconcileTransaction` using this property in order -   * to allow dependency injection. -   * -   * @internal -   */ -  ReactReconcileTransaction: null, - -  batchedUpdates: batchedUpdates, -  enqueueUpdate: enqueueUpdate, -  flushBatchedUpdates: flushBatchedUpdates, -  injection: ReactUpdatesInjection, -  asap: asap -}; - -module.exports = ReactUpdates;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ReactVersion.js b/node_modules/react-dom/lib/ReactVersion.js deleted file mode 100644 index 3ea2eb058..000000000 --- a/node_modules/react-dom/lib/ReactVersion.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -module.exports = '15.6.1';
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ResponderEventPlugin.js b/node_modules/react-dom/lib/ResponderEventPlugin.js deleted file mode 100644 index dc35ded47..000000000 --- a/node_modules/react-dom/lib/ResponderEventPlugin.js +++ /dev/null @@ -1,505 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPluginUtils = require('./EventPluginUtils'); -var EventPropagators = require('./EventPropagators'); -var ResponderSyntheticEvent = require('./ResponderSyntheticEvent'); -var ResponderTouchHistoryStore = require('./ResponderTouchHistoryStore'); - -var accumulate = require('./accumulate'); - -var isStartish = EventPluginUtils.isStartish; -var isMoveish = EventPluginUtils.isMoveish; -var isEndish = EventPluginUtils.isEndish; -var executeDirectDispatch = EventPluginUtils.executeDirectDispatch; -var hasDispatches = EventPluginUtils.hasDispatches; -var executeDispatchesInOrderStopAtTrue = EventPluginUtils.executeDispatchesInOrderStopAtTrue; - -/** - * Instance of element that should respond to touch/move types of interactions, - * as indicated explicitly by relevant callbacks. - */ -var responderInst = null; - -/** - * Count of current touches. A textInput should become responder iff the - * selection changes while there is a touch on the screen. - */ -var trackedTouchCount = 0; - -/** - * Last reported number of active touches. - */ -var previousActiveTouches = 0; - -var changeResponder = function (nextResponderInst, blockHostResponder) { -  var oldResponderInst = responderInst; -  responderInst = nextResponderInst; -  if (ResponderEventPlugin.GlobalResponderHandler !== null) { -    ResponderEventPlugin.GlobalResponderHandler.onChange(oldResponderInst, nextResponderInst, blockHostResponder); -  } -}; - -var eventTypes = { -  /** -   * On a `touchStart`/`mouseDown`, is it desired that this element become the -   * responder? -   */ -  startShouldSetResponder: { -    phasedRegistrationNames: { -      bubbled: 'onStartShouldSetResponder', -      captured: 'onStartShouldSetResponderCapture' -    } -  }, - -  /** -   * On a `scroll`, is it desired that this element become the responder? This -   * is usually not needed, but should be used to retroactively infer that a -   * `touchStart` had occurred during momentum scroll. During a momentum scroll, -   * a touch start will be immediately followed by a scroll event if the view is -   * currently scrolling. -   * -   * TODO: This shouldn't bubble. -   */ -  scrollShouldSetResponder: { -    phasedRegistrationNames: { -      bubbled: 'onScrollShouldSetResponder', -      captured: 'onScrollShouldSetResponderCapture' -    } -  }, - -  /** -   * On text selection change, should this element become the responder? This -   * is needed for text inputs or other views with native selection, so the -   * JS view can claim the responder. -   * -   * TODO: This shouldn't bubble. -   */ -  selectionChangeShouldSetResponder: { -    phasedRegistrationNames: { -      bubbled: 'onSelectionChangeShouldSetResponder', -      captured: 'onSelectionChangeShouldSetResponderCapture' -    } -  }, - -  /** -   * On a `touchMove`/`mouseMove`, is it desired that this element become the -   * responder? -   */ -  moveShouldSetResponder: { -    phasedRegistrationNames: { -      bubbled: 'onMoveShouldSetResponder', -      captured: 'onMoveShouldSetResponderCapture' -    } -  }, - -  /** -   * Direct responder events dispatched directly to responder. Do not bubble. -   */ -  responderStart: { registrationName: 'onResponderStart' }, -  responderMove: { registrationName: 'onResponderMove' }, -  responderEnd: { registrationName: 'onResponderEnd' }, -  responderRelease: { registrationName: 'onResponderRelease' }, -  responderTerminationRequest: { -    registrationName: 'onResponderTerminationRequest' -  }, -  responderGrant: { registrationName: 'onResponderGrant' }, -  responderReject: { registrationName: 'onResponderReject' }, -  responderTerminate: { registrationName: 'onResponderTerminate' } -}; - -/** - * - * Responder System: - * ---------------- - * - * - A global, solitary "interaction lock" on a view. - * - If a node becomes the responder, it should convey visual feedback - *   immediately to indicate so, either by highlighting or moving accordingly. - * - To be the responder means, that touches are exclusively important to that - *   responder view, and no other view. - * - While touches are still occurring, the responder lock can be transferred to - *   a new view, but only to increasingly "higher" views (meaning ancestors of - *   the current responder). - * - * Responder being granted: - * ------------------------ - * - * - Touch starts, moves, and scrolls can cause an ID to become the responder. - * - We capture/bubble `startShouldSetResponder`/`moveShouldSetResponder` to - *   the "appropriate place". - * - If nothing is currently the responder, the "appropriate place" is the - *   initiating event's `targetID`. - * - If something *is* already the responder, the "appropriate place" is the - *   first common ancestor of the event target and the current `responderInst`. - * - Some negotiation happens: See the timing diagram below. - * - Scrolled views automatically become responder. The reasoning is that a - *   platform scroll view that isn't built on top of the responder system has - *   began scrolling, and the active responder must now be notified that the - *   interaction is no longer locked to it - the system has taken over. - * - * - Responder being released: - *   As soon as no more touches that *started* inside of descendants of the - *   *current* responderInst, an `onResponderRelease` event is dispatched to the - *   current responder, and the responder lock is released. - * - * TODO: - * - on "end", a callback hook for `onResponderEndShouldRemainResponder` that - *   determines if the responder lock should remain. - * - If a view shouldn't "remain" the responder, any active touches should by - *   default be considered "dead" and do not influence future negotiations or - *   bubble paths. It should be as if those touches do not exist. - * -- For multitouch: Usually a translate-z will choose to "remain" responder - *  after one out of many touches ended. For translate-y, usually the view - *  doesn't wish to "remain" responder after one of many touches end. - * - Consider building this on top of a `stopPropagation` model similar to - *   `W3C` events. - * - Ensure that `onResponderTerminate` is called on touch cancels, whether or - *   not `onResponderTerminationRequest` returns `true` or `false`. - * - */ - -/*                                             Negotiation Performed -                                             +-----------------------+ -                                            /                         \ -Process low level events to    +     Current Responder      +   wantsResponderID -determine who to perform negot-|   (if any exists at all)   | -iation/transition              | Otherwise just pass through| --------------------------------+----------------------------+------------------+ -Bubble to find first ID        |                            | -to return true:wantsResponderID|                            | -                               |                            | -     +-------------+           |                            | -     | onTouchStart|           |                            | -     +------+------+     none  |                            | -            |            return|                            | -+-----------v-------------+true| +------------------------+ | -|onStartShouldSetResponder|----->|onResponderStart (cur)  |<-----------+ -+-----------+-------------+    | +------------------------+ |          | -            |                  |                            | +--------+-------+ -            | returned true for|       false:REJECT +-------->|onResponderReject -            | wantsResponderID |                    |       | +----------------+ -            | (now attempt     | +------------------+-----+ | -            |  handoff)        | |   onResponder          | | -            +------------------->|      TerminationRequest| | -                               | +------------------+-----+ | -                               |                    |       | +----------------+ -                               |         true:GRANT +-------->|onResponderGrant| -                               |                            | +--------+-------+ -                               | +------------------------+ |          | -                               | |   onResponderTerminate |<-----------+ -                               | +------------------+-----+ | -                               |                    |       | +----------------+ -                               |                    +-------->|onResponderStart| -                               |                            | +----------------+ -Bubble to find first ID        |                            | -to return true:wantsResponderID|                            | -                               |                            | -     +-------------+           |                            | -     | onTouchMove |           |                            | -     +------+------+     none  |                            | -            |            return|                            | -+-----------v-------------+true| +------------------------+ | -|onMoveShouldSetResponder |----->|onResponderMove (cur)   |<-----------+ -+-----------+-------------+    | +------------------------+ |          | -            |                  |                            | +--------+-------+ -            | returned true for|       false:REJECT +-------->|onResponderRejec| -            | wantsResponderID |                    |       | +----------------+ -            | (now attempt     | +------------------+-----+ | -            |  handoff)        | |   onResponder          | | -            +------------------->|      TerminationRequest| | -                               | +------------------+-----+ | -                               |                    |       | +----------------+ -                               |         true:GRANT +-------->|onResponderGrant| -                               |                            | +--------+-------+ -                               | +------------------------+ |          | -                               | |   onResponderTerminate |<-----------+ -                               | +------------------+-----+ | -                               |                    |       | +----------------+ -                               |                    +-------->|onResponderMove | -                               |                            | +----------------+ -                               |                            | -                               |                            | -      Some active touch started|                            | -      inside current responder | +------------------------+ | -      +------------------------->|      onResponderEnd    | | -      |                        | +------------------------+ | -  +---+---------+              |                            | -  | onTouchEnd  |              |                            | -  +---+---------+              |                            | -      |                        | +------------------------+ | -      +------------------------->|     onResponderEnd     | | -      No active touches started| +-----------+------------+ | -      inside current responder |             |              | -                               |             v              | -                               | +------------------------+ | -                               | |    onResponderRelease  | | -                               | +------------------------+ | -                               |                            | -                               +                            + */ - -/** - * A note about event ordering in the `EventPluginHub`. - * - * Suppose plugins are injected in the following order: - * - * `[R, S, C]` - * - * To help illustrate the example, assume `S` is `SimpleEventPlugin` (for - * `onClick` etc) and `R` is `ResponderEventPlugin`. - * - * "Deferred-Dispatched Events": - * - * - The current event plugin system will traverse the list of injected plugins, - *   in order, and extract events by collecting the plugin's return value of - *   `extractEvents()`. - * - These events that are returned from `extractEvents` are "deferred - *   dispatched events". - * - When returned from `extractEvents`, deferred-dispatched events contain an - *   "accumulation" of deferred dispatches. - * - These deferred dispatches are accumulated/collected before they are - *   returned, but processed at a later time by the `EventPluginHub` (hence the - *   name deferred). - * - * In the process of returning their deferred-dispatched events, event plugins - * themselves can dispatch events on-demand without returning them from - * `extractEvents`. Plugins might want to do this, so that they can use event - * dispatching as a tool that helps them decide which events should be extracted - * in the first place. - * - * "On-Demand-Dispatched Events": - * - * - On-demand-dispatched events are not returned from `extractEvents`. - * - On-demand-dispatched events are dispatched during the process of returning - *   the deferred-dispatched events. - * - They should not have side effects. - * - They should be avoided, and/or eventually be replaced with another - *   abstraction that allows event plugins to perform multiple "rounds" of event - *   extraction. - * - * Therefore, the sequence of event dispatches becomes: - * - * - `R`s on-demand events (if any)   (dispatched by `R` on-demand) - * - `S`s on-demand events (if any)   (dispatched by `S` on-demand) - * - `C`s on-demand events (if any)   (dispatched by `C` on-demand) - * - `R`s extracted events (if any)   (dispatched by `EventPluginHub`) - * - `S`s extracted events (if any)   (dispatched by `EventPluginHub`) - * - `C`s extracted events (if any)   (dispatched by `EventPluginHub`) - * - * In the case of `ResponderEventPlugin`: If the `startShouldSetResponder` - * on-demand dispatch returns `true` (and some other details are satisfied) the - * `onResponderGrant` deferred dispatched event is returned from - * `extractEvents`. The sequence of dispatch executions in this case - * will appear as follows: - * - * - `startShouldSetResponder` (`ResponderEventPlugin` dispatches on-demand) - * - `touchStartCapture`       (`EventPluginHub` dispatches as usual) - * - `touchStart`              (`EventPluginHub` dispatches as usual) - * - `responderGrant/Reject`   (`EventPluginHub` dispatches as usual) - */ - -function setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) { -  var shouldSetEventType = isStartish(topLevelType) ? eventTypes.startShouldSetResponder : isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder : topLevelType === 'topSelectionChange' ? eventTypes.selectionChangeShouldSetResponder : eventTypes.scrollShouldSetResponder; - -  // TODO: stop one short of the current responder. -  var bubbleShouldSetFrom = !responderInst ? targetInst : EventPluginUtils.getLowestCommonAncestor(responderInst, targetInst); - -  // When capturing/bubbling the "shouldSet" event, we want to skip the target -  // (deepest ID) if it happens to be the current responder. The reasoning: -  // It's strange to get an `onMoveShouldSetResponder` when you're *already* -  // the responder. -  var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderInst; -  var shouldSetEvent = ResponderSyntheticEvent.getPooled(shouldSetEventType, bubbleShouldSetFrom, nativeEvent, nativeEventTarget); -  shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; -  if (skipOverBubbleShouldSetFrom) { -    EventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent); -  } else { -    EventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent); -  } -  var wantsResponderInst = executeDispatchesInOrderStopAtTrue(shouldSetEvent); -  if (!shouldSetEvent.isPersistent()) { -    shouldSetEvent.constructor.release(shouldSetEvent); -  } - -  if (!wantsResponderInst || wantsResponderInst === responderInst) { -    return null; -  } -  var extracted; -  var grantEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderGrant, wantsResponderInst, nativeEvent, nativeEventTarget); -  grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; - -  EventPropagators.accumulateDirectDispatches(grantEvent); -  var blockHostResponder = executeDirectDispatch(grantEvent) === true; -  if (responderInst) { -    var terminationRequestEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminationRequest, responderInst, nativeEvent, nativeEventTarget); -    terminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; -    EventPropagators.accumulateDirectDispatches(terminationRequestEvent); -    var shouldSwitch = !hasDispatches(terminationRequestEvent) || executeDirectDispatch(terminationRequestEvent); -    if (!terminationRequestEvent.isPersistent()) { -      terminationRequestEvent.constructor.release(terminationRequestEvent); -    } - -    if (shouldSwitch) { -      var terminateEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderTerminate, responderInst, nativeEvent, nativeEventTarget); -      terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; -      EventPropagators.accumulateDirectDispatches(terminateEvent); -      extracted = accumulate(extracted, [grantEvent, terminateEvent]); -      changeResponder(wantsResponderInst, blockHostResponder); -    } else { -      var rejectEvent = ResponderSyntheticEvent.getPooled(eventTypes.responderReject, wantsResponderInst, nativeEvent, nativeEventTarget); -      rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; -      EventPropagators.accumulateDirectDispatches(rejectEvent); -      extracted = accumulate(extracted, rejectEvent); -    } -  } else { -    extracted = accumulate(extracted, grantEvent); -    changeResponder(wantsResponderInst, blockHostResponder); -  } -  return extracted; -} - -/** - * A transfer is a negotiation between a currently set responder and the next - * element to claim responder status. Any start event could trigger a transfer - * of responderInst. Any move event could trigger a transfer. - * - * @param {string} topLevelType Record from `EventConstants`. - * @return {boolean} True if a transfer of responder could possibly occur. - */ -function canTriggerTransfer(topLevelType, topLevelInst, nativeEvent) { -  return topLevelInst && ( -  // responderIgnoreScroll: We are trying to migrate away from specifically -  // tracking native scroll events here and responderIgnoreScroll indicates we -  // will send topTouchCancel to handle canceling touch events instead -  topLevelType === 'topScroll' && !nativeEvent.responderIgnoreScroll || trackedTouchCount > 0 && topLevelType === 'topSelectionChange' || isStartish(topLevelType) || isMoveish(topLevelType)); -} - -/** - * Returns whether or not this touch end event makes it such that there are no - * longer any touches that started inside of the current `responderInst`. - * - * @param {NativeEvent} nativeEvent Native touch end event. - * @return {boolean} Whether or not this touch end event ends the responder. - */ -function noResponderTouches(nativeEvent) { -  var touches = nativeEvent.touches; -  if (!touches || touches.length === 0) { -    return true; -  } -  for (var i = 0; i < touches.length; i++) { -    var activeTouch = touches[i]; -    var target = activeTouch.target; -    if (target !== null && target !== undefined && target !== 0) { -      // Is the original touch location inside of the current responder? -      var targetInst = EventPluginUtils.getInstanceFromNode(target); -      if (EventPluginUtils.isAncestor(responderInst, targetInst)) { -        return false; -      } -    } -  } -  return true; -} - -var ResponderEventPlugin = { -  /* For unit testing only */ -  _getResponderID: function () { -    return responderInst ? responderInst._rootNodeID : null; -  }, - -  eventTypes: eventTypes, - -  /** -   * We must be resilient to `targetInst` being `null` on `touchMove` or -   * `touchEnd`. On certain platforms, this means that a native scroll has -   * assumed control and the original touch targets are destroyed. -   */ -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    if (isStartish(topLevelType)) { -      trackedTouchCount += 1; -    } else if (isEndish(topLevelType)) { -      if (trackedTouchCount >= 0) { -        trackedTouchCount -= 1; -      } else { -        console.error('Ended a touch event which was not counted in `trackedTouchCount`.'); -        return null; -      } -    } - -    ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent); - -    var extracted = canTriggerTransfer(topLevelType, targetInst, nativeEvent) ? setResponderAndExtractTransfer(topLevelType, targetInst, nativeEvent, nativeEventTarget) : null; -    // Responder may or may not have transferred on a new touch start/move. -    // Regardless, whoever is the responder after any potential transfer, we -    // direct all touch start/move/ends to them in the form of -    // `onResponderMove/Start/End`. These will be called for *every* additional -    // finger that move/start/end, dispatched directly to whoever is the -    // current responder at that moment, until the responder is "released". -    // -    // These multiple individual change touch events are are always bookended -    // by `onResponderGrant`, and one of -    // (`onResponderRelease/onResponderTerminate`). -    var isResponderTouchStart = responderInst && isStartish(topLevelType); -    var isResponderTouchMove = responderInst && isMoveish(topLevelType); -    var isResponderTouchEnd = responderInst && isEndish(topLevelType); -    var incrementalTouch = isResponderTouchStart ? eventTypes.responderStart : isResponderTouchMove ? eventTypes.responderMove : isResponderTouchEnd ? eventTypes.responderEnd : null; - -    if (incrementalTouch) { -      var gesture = ResponderSyntheticEvent.getPooled(incrementalTouch, responderInst, nativeEvent, nativeEventTarget); -      gesture.touchHistory = ResponderTouchHistoryStore.touchHistory; -      EventPropagators.accumulateDirectDispatches(gesture); -      extracted = accumulate(extracted, gesture); -    } - -    var isResponderTerminate = responderInst && topLevelType === 'topTouchCancel'; -    var isResponderRelease = responderInst && !isResponderTerminate && isEndish(topLevelType) && noResponderTouches(nativeEvent); -    var finalTouch = isResponderTerminate ? eventTypes.responderTerminate : isResponderRelease ? eventTypes.responderRelease : null; -    if (finalTouch) { -      var finalEvent = ResponderSyntheticEvent.getPooled(finalTouch, responderInst, nativeEvent, nativeEventTarget); -      finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory; -      EventPropagators.accumulateDirectDispatches(finalEvent); -      extracted = accumulate(extracted, finalEvent); -      changeResponder(null); -    } - -    var numberActiveTouches = ResponderTouchHistoryStore.touchHistory.numberActiveTouches; -    if (ResponderEventPlugin.GlobalInteractionHandler && numberActiveTouches !== previousActiveTouches) { -      ResponderEventPlugin.GlobalInteractionHandler.onChange(numberActiveTouches); -    } -    previousActiveTouches = numberActiveTouches; - -    return extracted; -  }, - -  GlobalResponderHandler: null, -  GlobalInteractionHandler: null, - -  injection: { -    /** -     * @param {{onChange: (ReactID, ReactID) => void} GlobalResponderHandler -     * Object that handles any change in responder. Use this to inject -     * integration with an existing touch handling system etc. -     */ -    injectGlobalResponderHandler: function (GlobalResponderHandler) { -      ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler; -    }, - -    /** -     * @param {{onChange: (numberActiveTouches) => void} GlobalInteractionHandler -     * Object that handles any change in the number of active touches. -     */ -    injectGlobalInteractionHandler: function (GlobalInteractionHandler) { -      ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler; -    } -  } -}; - -module.exports = ResponderEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ResponderSyntheticEvent.js b/node_modules/react-dom/lib/ResponderSyntheticEvent.js deleted file mode 100644 index 0164d6f38..000000000 --- a/node_modules/react-dom/lib/ResponderSyntheticEvent.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * `touchHistory` isn't actually on the native event, but putting it in the - * interface will ensure that it is cleaned up when pooled/destroyed. The - * `ResponderEventPlugin` will populate it appropriately. - */ -var ResponderEventInterface = { -  touchHistory: function (nativeEvent) { -    return null; // Actually doesn't even look at the native event. -  } -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native event. - * @extends {SyntheticEvent} - */ -function ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(ResponderSyntheticEvent, ResponderEventInterface); - -module.exports = ResponderSyntheticEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ResponderTouchHistoryStore.js b/node_modules/react-dom/lib/ResponderTouchHistoryStore.js deleted file mode 100644 index 3813bdace..000000000 --- a/node_modules/react-dom/lib/ResponderTouchHistoryStore.js +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var EventPluginUtils = require('./EventPluginUtils'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var isEndish = EventPluginUtils.isEndish, -    isMoveish = EventPluginUtils.isMoveish, -    isStartish = EventPluginUtils.isStartish; - -/** - * Tracks the position and time of each active touch by `touch.identifier`. We - * should typically only see IDs in the range of 1-20 because IDs get recycled - * when touches end and start again. - */ - -var MAX_TOUCH_BANK = 20; -var touchBank = []; -var touchHistory = { -  touchBank: touchBank, -  numberActiveTouches: 0, -  // If there is only one active touch, we remember its location. This prevents -  // us having to loop through all of the touches all the time in the most -  // common case. -  indexOfSingleActiveTouch: -1, -  mostRecentTimeStamp: 0 -}; - -function timestampForTouch(touch) { -  // The legacy internal implementation provides "timeStamp", which has been -  // renamed to "timestamp". Let both work for now while we iron it out -  // TODO (evv): rename timeStamp to timestamp in internal code -  return touch.timeStamp || touch.timestamp; -} - -/** - * TODO: Instead of making gestures recompute filtered velocity, we could - * include a built in velocity computation that can be reused globally. - */ -function createTouchRecord(touch) { -  return { -    touchActive: true, -    startPageX: touch.pageX, -    startPageY: touch.pageY, -    startTimeStamp: timestampForTouch(touch), -    currentPageX: touch.pageX, -    currentPageY: touch.pageY, -    currentTimeStamp: timestampForTouch(touch), -    previousPageX: touch.pageX, -    previousPageY: touch.pageY, -    previousTimeStamp: timestampForTouch(touch) -  }; -} - -function resetTouchRecord(touchRecord, touch) { -  touchRecord.touchActive = true; -  touchRecord.startPageX = touch.pageX; -  touchRecord.startPageY = touch.pageY; -  touchRecord.startTimeStamp = timestampForTouch(touch); -  touchRecord.currentPageX = touch.pageX; -  touchRecord.currentPageY = touch.pageY; -  touchRecord.currentTimeStamp = timestampForTouch(touch); -  touchRecord.previousPageX = touch.pageX; -  touchRecord.previousPageY = touch.pageY; -  touchRecord.previousTimeStamp = timestampForTouch(touch); -} - -function getTouchIdentifier(_ref) { -  var identifier = _ref.identifier; - -  !(identifier != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Touch object is missing identifier.') : _prodInvariant('138') : void 0; -  process.env.NODE_ENV !== 'production' ? warning(identifier <= MAX_TOUCH_BANK, 'Touch identifier %s is greater than maximum supported %s which causes ' + 'performance issues backfilling array locations for all of the indices.', identifier, MAX_TOUCH_BANK) : void 0; -  return identifier; -} - -function recordTouchStart(touch) { -  var identifier = getTouchIdentifier(touch); -  var touchRecord = touchBank[identifier]; -  if (touchRecord) { -    resetTouchRecord(touchRecord, touch); -  } else { -    touchBank[identifier] = createTouchRecord(touch); -  } -  touchHistory.mostRecentTimeStamp = timestampForTouch(touch); -} - -function recordTouchMove(touch) { -  var touchRecord = touchBank[getTouchIdentifier(touch)]; -  if (touchRecord) { -    touchRecord.touchActive = true; -    touchRecord.previousPageX = touchRecord.currentPageX; -    touchRecord.previousPageY = touchRecord.currentPageY; -    touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; -    touchRecord.currentPageX = touch.pageX; -    touchRecord.currentPageY = touch.pageY; -    touchRecord.currentTimeStamp = timestampForTouch(touch); -    touchHistory.mostRecentTimeStamp = timestampForTouch(touch); -  } else { -    console.error('Cannot record touch move without a touch start.\n' + 'Touch Move: %s\n', 'Touch Bank: %s', printTouch(touch), printTouchBank()); -  } -} - -function recordTouchEnd(touch) { -  var touchRecord = touchBank[getTouchIdentifier(touch)]; -  if (touchRecord) { -    touchRecord.touchActive = false; -    touchRecord.previousPageX = touchRecord.currentPageX; -    touchRecord.previousPageY = touchRecord.currentPageY; -    touchRecord.previousTimeStamp = touchRecord.currentTimeStamp; -    touchRecord.currentPageX = touch.pageX; -    touchRecord.currentPageY = touch.pageY; -    touchRecord.currentTimeStamp = timestampForTouch(touch); -    touchHistory.mostRecentTimeStamp = timestampForTouch(touch); -  } else { -    console.error('Cannot record touch end without a touch start.\n' + 'Touch End: %s\n', 'Touch Bank: %s', printTouch(touch), printTouchBank()); -  } -} - -function printTouch(touch) { -  return JSON.stringify({ -    identifier: touch.identifier, -    pageX: touch.pageX, -    pageY: touch.pageY, -    timestamp: timestampForTouch(touch) -  }); -} - -function printTouchBank() { -  var printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK)); -  if (touchBank.length > MAX_TOUCH_BANK) { -    printed += ' (original size: ' + touchBank.length + ')'; -  } -  return printed; -} - -var ResponderTouchHistoryStore = { -  recordTouchTrack: function (topLevelType, nativeEvent) { -    if (isMoveish(topLevelType)) { -      nativeEvent.changedTouches.forEach(recordTouchMove); -    } else if (isStartish(topLevelType)) { -      nativeEvent.changedTouches.forEach(recordTouchStart); -      touchHistory.numberActiveTouches = nativeEvent.touches.length; -      if (touchHistory.numberActiveTouches === 1) { -        touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier; -      } -    } else if (isEndish(topLevelType)) { -      nativeEvent.changedTouches.forEach(recordTouchEnd); -      touchHistory.numberActiveTouches = nativeEvent.touches.length; -      if (touchHistory.numberActiveTouches === 1) { -        for (var i = 0; i < touchBank.length; i++) { -          var touchTrackToCheck = touchBank[i]; -          if (touchTrackToCheck != null && touchTrackToCheck.touchActive) { -            touchHistory.indexOfSingleActiveTouch = i; -            break; -          } -        } -        if (process.env.NODE_ENV !== 'production') { -          var activeRecord = touchBank[touchHistory.indexOfSingleActiveTouch]; -          process.env.NODE_ENV !== 'production' ? warning(activeRecord != null && activeRecord.touchActive, 'Cannot find single active touch.') : void 0; -        } -      } -    } -  }, - - -  touchHistory: touchHistory -}; - -module.exports = ResponderTouchHistoryStore;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SVGDOMPropertyConfig.js b/node_modules/react-dom/lib/SVGDOMPropertyConfig.js deleted file mode 100644 index 93df7897d..000000000 --- a/node_modules/react-dom/lib/SVGDOMPropertyConfig.js +++ /dev/null @@ -1,301 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var NS = { -  xlink: 'http://www.w3.org/1999/xlink', -  xml: 'http://www.w3.org/XML/1998/namespace' -}; - -// We use attributes for everything SVG so let's avoid some duplication and run -// code instead. -// The following are all specified in the HTML config already so we exclude here. -// - class (as className) -// - color -// - height -// - id -// - lang -// - max -// - media -// - method -// - min -// - name -// - style -// - target -// - type -// - width -var ATTRS = { -  accentHeight: 'accent-height', -  accumulate: 0, -  additive: 0, -  alignmentBaseline: 'alignment-baseline', -  allowReorder: 'allowReorder', -  alphabetic: 0, -  amplitude: 0, -  arabicForm: 'arabic-form', -  ascent: 0, -  attributeName: 'attributeName', -  attributeType: 'attributeType', -  autoReverse: 'autoReverse', -  azimuth: 0, -  baseFrequency: 'baseFrequency', -  baseProfile: 'baseProfile', -  baselineShift: 'baseline-shift', -  bbox: 0, -  begin: 0, -  bias: 0, -  by: 0, -  calcMode: 'calcMode', -  capHeight: 'cap-height', -  clip: 0, -  clipPath: 'clip-path', -  clipRule: 'clip-rule', -  clipPathUnits: 'clipPathUnits', -  colorInterpolation: 'color-interpolation', -  colorInterpolationFilters: 'color-interpolation-filters', -  colorProfile: 'color-profile', -  colorRendering: 'color-rendering', -  contentScriptType: 'contentScriptType', -  contentStyleType: 'contentStyleType', -  cursor: 0, -  cx: 0, -  cy: 0, -  d: 0, -  decelerate: 0, -  descent: 0, -  diffuseConstant: 'diffuseConstant', -  direction: 0, -  display: 0, -  divisor: 0, -  dominantBaseline: 'dominant-baseline', -  dur: 0, -  dx: 0, -  dy: 0, -  edgeMode: 'edgeMode', -  elevation: 0, -  enableBackground: 'enable-background', -  end: 0, -  exponent: 0, -  externalResourcesRequired: 'externalResourcesRequired', -  fill: 0, -  fillOpacity: 'fill-opacity', -  fillRule: 'fill-rule', -  filter: 0, -  filterRes: 'filterRes', -  filterUnits: 'filterUnits', -  floodColor: 'flood-color', -  floodOpacity: 'flood-opacity', -  focusable: 0, -  fontFamily: 'font-family', -  fontSize: 'font-size', -  fontSizeAdjust: 'font-size-adjust', -  fontStretch: 'font-stretch', -  fontStyle: 'font-style', -  fontVariant: 'font-variant', -  fontWeight: 'font-weight', -  format: 0, -  from: 0, -  fx: 0, -  fy: 0, -  g1: 0, -  g2: 0, -  glyphName: 'glyph-name', -  glyphOrientationHorizontal: 'glyph-orientation-horizontal', -  glyphOrientationVertical: 'glyph-orientation-vertical', -  glyphRef: 'glyphRef', -  gradientTransform: 'gradientTransform', -  gradientUnits: 'gradientUnits', -  hanging: 0, -  horizAdvX: 'horiz-adv-x', -  horizOriginX: 'horiz-origin-x', -  ideographic: 0, -  imageRendering: 'image-rendering', -  'in': 0, -  in2: 0, -  intercept: 0, -  k: 0, -  k1: 0, -  k2: 0, -  k3: 0, -  k4: 0, -  kernelMatrix: 'kernelMatrix', -  kernelUnitLength: 'kernelUnitLength', -  kerning: 0, -  keyPoints: 'keyPoints', -  keySplines: 'keySplines', -  keyTimes: 'keyTimes', -  lengthAdjust: 'lengthAdjust', -  letterSpacing: 'letter-spacing', -  lightingColor: 'lighting-color', -  limitingConeAngle: 'limitingConeAngle', -  local: 0, -  markerEnd: 'marker-end', -  markerMid: 'marker-mid', -  markerStart: 'marker-start', -  markerHeight: 'markerHeight', -  markerUnits: 'markerUnits', -  markerWidth: 'markerWidth', -  mask: 0, -  maskContentUnits: 'maskContentUnits', -  maskUnits: 'maskUnits', -  mathematical: 0, -  mode: 0, -  numOctaves: 'numOctaves', -  offset: 0, -  opacity: 0, -  operator: 0, -  order: 0, -  orient: 0, -  orientation: 0, -  origin: 0, -  overflow: 0, -  overlinePosition: 'overline-position', -  overlineThickness: 'overline-thickness', -  paintOrder: 'paint-order', -  panose1: 'panose-1', -  pathLength: 'pathLength', -  patternContentUnits: 'patternContentUnits', -  patternTransform: 'patternTransform', -  patternUnits: 'patternUnits', -  pointerEvents: 'pointer-events', -  points: 0, -  pointsAtX: 'pointsAtX', -  pointsAtY: 'pointsAtY', -  pointsAtZ: 'pointsAtZ', -  preserveAlpha: 'preserveAlpha', -  preserveAspectRatio: 'preserveAspectRatio', -  primitiveUnits: 'primitiveUnits', -  r: 0, -  radius: 0, -  refX: 'refX', -  refY: 'refY', -  renderingIntent: 'rendering-intent', -  repeatCount: 'repeatCount', -  repeatDur: 'repeatDur', -  requiredExtensions: 'requiredExtensions', -  requiredFeatures: 'requiredFeatures', -  restart: 0, -  result: 0, -  rotate: 0, -  rx: 0, -  ry: 0, -  scale: 0, -  seed: 0, -  shapeRendering: 'shape-rendering', -  slope: 0, -  spacing: 0, -  specularConstant: 'specularConstant', -  specularExponent: 'specularExponent', -  speed: 0, -  spreadMethod: 'spreadMethod', -  startOffset: 'startOffset', -  stdDeviation: 'stdDeviation', -  stemh: 0, -  stemv: 0, -  stitchTiles: 'stitchTiles', -  stopColor: 'stop-color', -  stopOpacity: 'stop-opacity', -  strikethroughPosition: 'strikethrough-position', -  strikethroughThickness: 'strikethrough-thickness', -  string: 0, -  stroke: 0, -  strokeDasharray: 'stroke-dasharray', -  strokeDashoffset: 'stroke-dashoffset', -  strokeLinecap: 'stroke-linecap', -  strokeLinejoin: 'stroke-linejoin', -  strokeMiterlimit: 'stroke-miterlimit', -  strokeOpacity: 'stroke-opacity', -  strokeWidth: 'stroke-width', -  surfaceScale: 'surfaceScale', -  systemLanguage: 'systemLanguage', -  tableValues: 'tableValues', -  targetX: 'targetX', -  targetY: 'targetY', -  textAnchor: 'text-anchor', -  textDecoration: 'text-decoration', -  textRendering: 'text-rendering', -  textLength: 'textLength', -  to: 0, -  transform: 0, -  u1: 0, -  u2: 0, -  underlinePosition: 'underline-position', -  underlineThickness: 'underline-thickness', -  unicode: 0, -  unicodeBidi: 'unicode-bidi', -  unicodeRange: 'unicode-range', -  unitsPerEm: 'units-per-em', -  vAlphabetic: 'v-alphabetic', -  vHanging: 'v-hanging', -  vIdeographic: 'v-ideographic', -  vMathematical: 'v-mathematical', -  values: 0, -  vectorEffect: 'vector-effect', -  version: 0, -  vertAdvY: 'vert-adv-y', -  vertOriginX: 'vert-origin-x', -  vertOriginY: 'vert-origin-y', -  viewBox: 'viewBox', -  viewTarget: 'viewTarget', -  visibility: 0, -  widths: 0, -  wordSpacing: 'word-spacing', -  writingMode: 'writing-mode', -  x: 0, -  xHeight: 'x-height', -  x1: 0, -  x2: 0, -  xChannelSelector: 'xChannelSelector', -  xlinkActuate: 'xlink:actuate', -  xlinkArcrole: 'xlink:arcrole', -  xlinkHref: 'xlink:href', -  xlinkRole: 'xlink:role', -  xlinkShow: 'xlink:show', -  xlinkTitle: 'xlink:title', -  xlinkType: 'xlink:type', -  xmlBase: 'xml:base', -  xmlns: 0, -  xmlnsXlink: 'xmlns:xlink', -  xmlLang: 'xml:lang', -  xmlSpace: 'xml:space', -  y: 0, -  y1: 0, -  y2: 0, -  yChannelSelector: 'yChannelSelector', -  z: 0, -  zoomAndPan: 'zoomAndPan' -}; - -var SVGDOMPropertyConfig = { -  Properties: {}, -  DOMAttributeNamespaces: { -    xlinkActuate: NS.xlink, -    xlinkArcrole: NS.xlink, -    xlinkHref: NS.xlink, -    xlinkRole: NS.xlink, -    xlinkShow: NS.xlink, -    xlinkTitle: NS.xlink, -    xlinkType: NS.xlink, -    xmlBase: NS.xml, -    xmlLang: NS.xml, -    xmlSpace: NS.xml -  }, -  DOMAttributeNames: {} -}; - -Object.keys(ATTRS).forEach(function (key) { -  SVGDOMPropertyConfig.Properties[key] = 0; -  if (ATTRS[key]) { -    SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key]; -  } -}); - -module.exports = SVGDOMPropertyConfig;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SelectEventPlugin.js b/node_modules/react-dom/lib/SelectEventPlugin.js deleted file mode 100644 index 28b820e46..000000000 --- a/node_modules/react-dom/lib/SelectEventPlugin.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var EventPropagators = require('./EventPropagators'); -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactInputSelection = require('./ReactInputSelection'); -var SyntheticEvent = require('./SyntheticEvent'); - -var getActiveElement = require('fbjs/lib/getActiveElement'); -var isTextInputElement = require('./isTextInputElement'); -var shallowEqual = require('fbjs/lib/shallowEqual'); - -var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11; - -var eventTypes = { -  select: { -    phasedRegistrationNames: { -      bubbled: 'onSelect', -      captured: 'onSelectCapture' -    }, -    dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange'] -  } -}; - -var activeElement = null; -var activeElementInst = null; -var lastSelection = null; -var mouseDown = false; - -// Track whether a listener exists for this plugin. If none exist, we do -// not extract events. See #3639. -var hasListener = false; - -/** - * Get an object which is a unique representation of the current selection. - * - * The return value will not be consistent across nodes or browsers, but - * two identical selections on the same node will return identical objects. - * - * @param {DOMElement} node - * @return {object} - */ -function getSelection(node) { -  if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) { -    return { -      start: node.selectionStart, -      end: node.selectionEnd -    }; -  } else if (window.getSelection) { -    var selection = window.getSelection(); -    return { -      anchorNode: selection.anchorNode, -      anchorOffset: selection.anchorOffset, -      focusNode: selection.focusNode, -      focusOffset: selection.focusOffset -    }; -  } else if (document.selection) { -    var range = document.selection.createRange(); -    return { -      parentElement: range.parentElement(), -      text: range.text, -      top: range.boundingTop, -      left: range.boundingLeft -    }; -  } -} - -/** - * Poll selection to see whether it's changed. - * - * @param {object} nativeEvent - * @return {?SyntheticEvent} - */ -function constructSelectEvent(nativeEvent, nativeEventTarget) { -  // Ensure we have the right element, and that the user is not dragging a -  // selection (this matches native `select` event behavior). In HTML5, select -  // fires only on input and textarea thus if there's no focused element we -  // won't dispatch. -  if (mouseDown || activeElement == null || activeElement !== getActiveElement()) { -    return null; -  } - -  // Only fire when selection has actually changed. -  var currentSelection = getSelection(activeElement); -  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) { -    lastSelection = currentSelection; - -    var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget); - -    syntheticEvent.type = 'select'; -    syntheticEvent.target = activeElement; - -    EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent); - -    return syntheticEvent; -  } - -  return null; -} - -/** - * This plugin creates an `onSelect` event that normalizes select events - * across form elements. - * - * Supported elements are: - * - input (see `isTextInputElement`) - * - textarea - * - contentEditable - * - * This differs from native browser implementations in the following ways: - * - Fires on contentEditable fields as well as inputs. - * - Fires for collapsed selection. - * - Fires after user input. - */ -var SelectEventPlugin = { -  eventTypes: eventTypes, - -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    if (!hasListener) { -      return null; -    } - -    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; - -    switch (topLevelType) { -      // Track the input node that has focus. -      case 'topFocus': -        if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') { -          activeElement = targetNode; -          activeElementInst = targetInst; -          lastSelection = null; -        } -        break; -      case 'topBlur': -        activeElement = null; -        activeElementInst = null; -        lastSelection = null; -        break; -      // Don't fire the event while the user is dragging. This matches the -      // semantics of the native select event. -      case 'topMouseDown': -        mouseDown = true; -        break; -      case 'topContextMenu': -      case 'topMouseUp': -        mouseDown = false; -        return constructSelectEvent(nativeEvent, nativeEventTarget); -      // Chrome and IE fire non-standard event when selection is changed (and -      // sometimes when it hasn't). IE's event fires out of order with respect -      // to key and input events on deletion, so we discard it. -      // -      // Firefox doesn't support selectionchange, so check selection status -      // after each key entry. The selection changes after keydown and before -      // keyup, but we check on keydown as well in the case of holding down a -      // key, when multiple keydown events are fired but only one keyup is. -      // This is also our approach for IE handling, for the reason above. -      case 'topSelectionChange': -        if (skipSelectionChangeEvent) { -          break; -        } -      // falls through -      case 'topKeyDown': -      case 'topKeyUp': -        return constructSelectEvent(nativeEvent, nativeEventTarget); -    } - -    return null; -  }, - -  didPutListener: function (inst, registrationName, listener) { -    if (registrationName === 'onSelect') { -      hasListener = true; -    } -  } -}; - -module.exports = SelectEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SimpleEventPlugin.js b/node_modules/react-dom/lib/SimpleEventPlugin.js deleted file mode 100644 index f2673cb72..000000000 --- a/node_modules/react-dom/lib/SimpleEventPlugin.js +++ /dev/null @@ -1,225 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var EventListener = require('fbjs/lib/EventListener'); -var EventPropagators = require('./EventPropagators'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var SyntheticAnimationEvent = require('./SyntheticAnimationEvent'); -var SyntheticClipboardEvent = require('./SyntheticClipboardEvent'); -var SyntheticEvent = require('./SyntheticEvent'); -var SyntheticFocusEvent = require('./SyntheticFocusEvent'); -var SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent'); -var SyntheticMouseEvent = require('./SyntheticMouseEvent'); -var SyntheticDragEvent = require('./SyntheticDragEvent'); -var SyntheticTouchEvent = require('./SyntheticTouchEvent'); -var SyntheticTransitionEvent = require('./SyntheticTransitionEvent'); -var SyntheticUIEvent = require('./SyntheticUIEvent'); -var SyntheticWheelEvent = require('./SyntheticWheelEvent'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); -var getEventCharCode = require('./getEventCharCode'); -var invariant = require('fbjs/lib/invariant'); - -/** - * Turns - * ['abort', ...] - * into - * eventTypes = { - *   'abort': { - *     phasedRegistrationNames: { - *       bubbled: 'onAbort', - *       captured: 'onAbortCapture', - *     }, - *     dependencies: ['topAbort'], - *   }, - *   ... - * }; - * topLevelEventsToDispatchConfig = { - *   'topAbort': { sameConfig } - * }; - */ -var eventTypes = {}; -var topLevelEventsToDispatchConfig = {}; -['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) { -  var capitalizedEvent = event[0].toUpperCase() + event.slice(1); -  var onEvent = 'on' + capitalizedEvent; -  var topEvent = 'top' + capitalizedEvent; - -  var type = { -    phasedRegistrationNames: { -      bubbled: onEvent, -      captured: onEvent + 'Capture' -    }, -    dependencies: [topEvent] -  }; -  eventTypes[event] = type; -  topLevelEventsToDispatchConfig[topEvent] = type; -}); - -var onClickListeners = {}; - -function getDictionaryKey(inst) { -  // Prevents V8 performance issue: -  // https://github.com/facebook/react/pull/7232 -  return '.' + inst._rootNodeID; -} - -function isInteractive(tag) { -  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; -} - -var SimpleEventPlugin = { -  eventTypes: eventTypes, - -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType]; -    if (!dispatchConfig) { -      return null; -    } -    var EventConstructor; -    switch (topLevelType) { -      case 'topAbort': -      case 'topCanPlay': -      case 'topCanPlayThrough': -      case 'topDurationChange': -      case 'topEmptied': -      case 'topEncrypted': -      case 'topEnded': -      case 'topError': -      case 'topInput': -      case 'topInvalid': -      case 'topLoad': -      case 'topLoadedData': -      case 'topLoadedMetadata': -      case 'topLoadStart': -      case 'topPause': -      case 'topPlay': -      case 'topPlaying': -      case 'topProgress': -      case 'topRateChange': -      case 'topReset': -      case 'topSeeked': -      case 'topSeeking': -      case 'topStalled': -      case 'topSubmit': -      case 'topSuspend': -      case 'topTimeUpdate': -      case 'topVolumeChange': -      case 'topWaiting': -        // HTML Events -        // @see http://www.w3.org/TR/html5/index.html#events-0 -        EventConstructor = SyntheticEvent; -        break; -      case 'topKeyPress': -        // Firefox creates a keypress event for function keys too. This removes -        // the unwanted keypress events. Enter is however both printable and -        // non-printable. One would expect Tab to be as well (but it isn't). -        if (getEventCharCode(nativeEvent) === 0) { -          return null; -        } -      /* falls through */ -      case 'topKeyDown': -      case 'topKeyUp': -        EventConstructor = SyntheticKeyboardEvent; -        break; -      case 'topBlur': -      case 'topFocus': -        EventConstructor = SyntheticFocusEvent; -        break; -      case 'topClick': -        // Firefox creates a click event on right mouse clicks. This removes the -        // unwanted click events. -        if (nativeEvent.button === 2) { -          return null; -        } -      /* falls through */ -      case 'topDoubleClick': -      case 'topMouseDown': -      case 'topMouseMove': -      case 'topMouseUp': -      // TODO: Disabled elements should not respond to mouse events -      /* falls through */ -      case 'topMouseOut': -      case 'topMouseOver': -      case 'topContextMenu': -        EventConstructor = SyntheticMouseEvent; -        break; -      case 'topDrag': -      case 'topDragEnd': -      case 'topDragEnter': -      case 'topDragExit': -      case 'topDragLeave': -      case 'topDragOver': -      case 'topDragStart': -      case 'topDrop': -        EventConstructor = SyntheticDragEvent; -        break; -      case 'topTouchCancel': -      case 'topTouchEnd': -      case 'topTouchMove': -      case 'topTouchStart': -        EventConstructor = SyntheticTouchEvent; -        break; -      case 'topAnimationEnd': -      case 'topAnimationIteration': -      case 'topAnimationStart': -        EventConstructor = SyntheticAnimationEvent; -        break; -      case 'topTransitionEnd': -        EventConstructor = SyntheticTransitionEvent; -        break; -      case 'topScroll': -        EventConstructor = SyntheticUIEvent; -        break; -      case 'topWheel': -        EventConstructor = SyntheticWheelEvent; -        break; -      case 'topCopy': -      case 'topCut': -      case 'topPaste': -        EventConstructor = SyntheticClipboardEvent; -        break; -    } -    !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0; -    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget); -    EventPropagators.accumulateTwoPhaseDispatches(event); -    return event; -  }, - -  didPutListener: function (inst, registrationName, listener) { -    // Mobile Safari does not fire properly bubble click events on -    // non-interactive elements, which means delegated click listeners do not -    // fire. The workaround for this bug involves attaching an empty click -    // listener on the target node. -    // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html -    if (registrationName === 'onClick' && !isInteractive(inst._tag)) { -      var key = getDictionaryKey(inst); -      var node = ReactDOMComponentTree.getNodeFromInstance(inst); -      if (!onClickListeners[key]) { -        onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction); -      } -    } -  }, - -  willDeleteListener: function (inst, registrationName) { -    if (registrationName === 'onClick' && !isInteractive(inst._tag)) { -      var key = getDictionaryKey(inst); -      onClickListeners[key].remove(); -      delete onClickListeners[key]; -    } -  } -}; - -module.exports = SimpleEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticAnimationEvent.js b/node_modules/react-dom/lib/SyntheticAnimationEvent.js deleted file mode 100644 index eb8d4102e..000000000 --- a/node_modules/react-dom/lib/SyntheticAnimationEvent.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * @interface Event - * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface - * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent - */ -var AnimationEventInterface = { -  animationName: null, -  elapsedTime: null, -  pseudoElement: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticEvent} - */ -function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface); - -module.exports = SyntheticAnimationEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticClipboardEvent.js b/node_modules/react-dom/lib/SyntheticClipboardEvent.js deleted file mode 100644 index 7537545b0..000000000 --- a/node_modules/react-dom/lib/SyntheticClipboardEvent.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * @interface Event - * @see http://www.w3.org/TR/clipboard-apis/ - */ -var ClipboardEventInterface = { -  clipboardData: function (event) { -    return 'clipboardData' in event ? event.clipboardData : window.clipboardData; -  } -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface); - -module.exports = SyntheticClipboardEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticCompositionEvent.js b/node_modules/react-dom/lib/SyntheticCompositionEvent.js deleted file mode 100644 index 96cc3d369..000000000 --- a/node_modules/react-dom/lib/SyntheticCompositionEvent.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * @interface Event - * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents - */ -var CompositionEventInterface = { -  data: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface); - -module.exports = SyntheticCompositionEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticDragEvent.js b/node_modules/react-dom/lib/SyntheticDragEvent.js deleted file mode 100644 index 7b5e9882b..000000000 --- a/node_modules/react-dom/lib/SyntheticDragEvent.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticMouseEvent = require('./SyntheticMouseEvent'); - -/** - * @interface DragEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var DragEventInterface = { -  dataTransfer: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); - -module.exports = SyntheticDragEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticEvent.js b/node_modules/react-dom/lib/SyntheticEvent.js deleted file mode 100644 index 61d869bb1..000000000 --- a/node_modules/react-dom/lib/SyntheticEvent.js +++ /dev/null @@ -1,265 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var PooledClass = require('./PooledClass'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); -var warning = require('fbjs/lib/warning'); - -var didWarnForAddedNewProperty = false; -var isProxySupported = typeof Proxy === 'function'; - -var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances']; - -/** - * @interface Event - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var EventInterface = { -  type: null, -  target: null, -  // currentTarget is set when dispatching; no use in copying it here -  currentTarget: emptyFunction.thatReturnsNull, -  eventPhase: null, -  bubbles: null, -  cancelable: null, -  timeStamp: function (event) { -    return event.timeStamp || Date.now(); -  }, -  defaultPrevented: null, -  isTrusted: null -}; - -/** - * Synthetic events are dispatched by event plugins, typically in response to a - * top-level event delegation handler. - * - * These systems should generally use pooling to reduce the frequency of garbage - * collection. The system should check `isPersistent` to determine whether the - * event should be released into the pool after being dispatched. Users that - * need a persisted event should invoke `persist`. - * - * Synthetic events (and subclasses) implement the DOM Level 3 Events API by - * normalizing browser quirks. Subclasses do not necessarily have to implement a - * DOM interface; custom application-specific events can also subclass this. - * - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {*} targetInst Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @param {DOMEventTarget} nativeEventTarget Target node. - */ -function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { -  if (process.env.NODE_ENV !== 'production') { -    // these have a getter/setter for warnings -    delete this.nativeEvent; -    delete this.preventDefault; -    delete this.stopPropagation; -  } - -  this.dispatchConfig = dispatchConfig; -  this._targetInst = targetInst; -  this.nativeEvent = nativeEvent; - -  var Interface = this.constructor.Interface; -  for (var propName in Interface) { -    if (!Interface.hasOwnProperty(propName)) { -      continue; -    } -    if (process.env.NODE_ENV !== 'production') { -      delete this[propName]; // this has a getter/setter for warnings -    } -    var normalize = Interface[propName]; -    if (normalize) { -      this[propName] = normalize(nativeEvent); -    } else { -      if (propName === 'target') { -        this.target = nativeEventTarget; -      } else { -        this[propName] = nativeEvent[propName]; -      } -    } -  } - -  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; -  if (defaultPrevented) { -    this.isDefaultPrevented = emptyFunction.thatReturnsTrue; -  } else { -    this.isDefaultPrevented = emptyFunction.thatReturnsFalse; -  } -  this.isPropagationStopped = emptyFunction.thatReturnsFalse; -  return this; -} - -_assign(SyntheticEvent.prototype, { -  preventDefault: function () { -    this.defaultPrevented = true; -    var event = this.nativeEvent; -    if (!event) { -      return; -    } - -    if (event.preventDefault) { -      event.preventDefault(); -      // eslint-disable-next-line valid-typeof -    } else if (typeof event.returnValue !== 'unknown') { -      event.returnValue = false; -    } -    this.isDefaultPrevented = emptyFunction.thatReturnsTrue; -  }, - -  stopPropagation: function () { -    var event = this.nativeEvent; -    if (!event) { -      return; -    } - -    if (event.stopPropagation) { -      event.stopPropagation(); -      // eslint-disable-next-line valid-typeof -    } else if (typeof event.cancelBubble !== 'unknown') { -      // The ChangeEventPlugin registers a "propertychange" event for -      // IE. This event does not support bubbling or cancelling, and -      // any references to cancelBubble throw "Member not found".  A -      // typeof check of "unknown" circumvents this issue (and is also -      // IE specific). -      event.cancelBubble = true; -    } - -    this.isPropagationStopped = emptyFunction.thatReturnsTrue; -  }, - -  /** -   * We release all dispatched `SyntheticEvent`s after each event loop, adding -   * them back into the pool. This allows a way to hold onto a reference that -   * won't be added back into the pool. -   */ -  persist: function () { -    this.isPersistent = emptyFunction.thatReturnsTrue; -  }, - -  /** -   * Checks if this event should be released back into the pool. -   * -   * @return {boolean} True if this should not be released, false otherwise. -   */ -  isPersistent: emptyFunction.thatReturnsFalse, - -  /** -   * `PooledClass` looks for `destructor` on each instance it releases. -   */ -  destructor: function () { -    var Interface = this.constructor.Interface; -    for (var propName in Interface) { -      if (process.env.NODE_ENV !== 'production') { -        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); -      } else { -        this[propName] = null; -      } -    } -    for (var i = 0; i < shouldBeReleasedProperties.length; i++) { -      this[shouldBeReleasedProperties[i]] = null; -    } -    if (process.env.NODE_ENV !== 'production') { -      Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null)); -      Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction)); -      Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction)); -    } -  } -}); - -SyntheticEvent.Interface = EventInterface; - -if (process.env.NODE_ENV !== 'production') { -  if (isProxySupported) { -    /*eslint-disable no-func-assign */ -    SyntheticEvent = new Proxy(SyntheticEvent, { -      construct: function (target, args) { -        return this.apply(target, Object.create(target.prototype), args); -      }, -      apply: function (constructor, that, args) { -        return new Proxy(constructor.apply(that, args), { -          set: function (target, prop, value) { -            if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) { -              process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0; -              didWarnForAddedNewProperty = true; -            } -            target[prop] = value; -            return true; -          } -        }); -      } -    }); -    /*eslint-enable no-func-assign */ -  } -} -/** - * Helper to reduce boilerplate when creating subclasses. - * - * @param {function} Class - * @param {?object} Interface - */ -SyntheticEvent.augmentClass = function (Class, Interface) { -  var Super = this; - -  var E = function () {}; -  E.prototype = Super.prototype; -  var prototype = new E(); - -  _assign(prototype, Class.prototype); -  Class.prototype = prototype; -  Class.prototype.constructor = Class; - -  Class.Interface = _assign({}, Super.Interface, Interface); -  Class.augmentClass = Super.augmentClass; - -  PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler); -}; - -PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler); - -module.exports = SyntheticEvent; - -/** -  * Helper to nullify syntheticEvent instance properties when destructing -  * -  * @param {object} SyntheticEvent -  * @param {String} propName -  * @return {object} defineProperty object -  */ -function getPooledWarningPropertyDefinition(propName, getVal) { -  var isFunction = typeof getVal === 'function'; -  return { -    configurable: true, -    set: set, -    get: get -  }; - -  function set(val) { -    var action = isFunction ? 'setting the method' : 'setting the property'; -    warn(action, 'This is effectively a no-op'); -    return val; -  } - -  function get() { -    var action = isFunction ? 'accessing the method' : 'accessing the property'; -    var result = isFunction ? 'This is a no-op function' : 'This is set to null'; -    warn(action, result); -    return getVal; -  } - -  function warn(action, result) { -    var warningCondition = false; -    process.env.NODE_ENV !== 'production' ? warning(warningCondition, "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0; -  } -}
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticFocusEvent.js b/node_modules/react-dom/lib/SyntheticFocusEvent.js deleted file mode 100644 index 96e4d6c36..000000000 --- a/node_modules/react-dom/lib/SyntheticFocusEvent.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticUIEvent = require('./SyntheticUIEvent'); - -/** - * @interface FocusEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var FocusEventInterface = { -  relatedTarget: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface); - -module.exports = SyntheticFocusEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticInputEvent.js b/node_modules/react-dom/lib/SyntheticInputEvent.js deleted file mode 100644 index 60f3ed68b..000000000 --- a/node_modules/react-dom/lib/SyntheticInputEvent.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * @interface Event - * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 - *      /#events-inputevents - */ -var InputEventInterface = { -  data: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface); - -module.exports = SyntheticInputEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticKeyboardEvent.js b/node_modules/react-dom/lib/SyntheticKeyboardEvent.js deleted file mode 100644 index c9be2bc46..000000000 --- a/node_modules/react-dom/lib/SyntheticKeyboardEvent.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticUIEvent = require('./SyntheticUIEvent'); - -var getEventCharCode = require('./getEventCharCode'); -var getEventKey = require('./getEventKey'); -var getEventModifierState = require('./getEventModifierState'); - -/** - * @interface KeyboardEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var KeyboardEventInterface = { -  key: getEventKey, -  location: null, -  ctrlKey: null, -  shiftKey: null, -  altKey: null, -  metaKey: null, -  repeat: null, -  locale: null, -  getModifierState: getEventModifierState, -  // Legacy Interface -  charCode: function (event) { -    // `charCode` is the result of a KeyPress event and represents the value of -    // the actual printable character. - -    // KeyPress is deprecated, but its replacement is not yet final and not -    // implemented in any major browser. Only KeyPress has charCode. -    if (event.type === 'keypress') { -      return getEventCharCode(event); -    } -    return 0; -  }, -  keyCode: function (event) { -    // `keyCode` is the result of a KeyDown/Up event and represents the value of -    // physical keyboard key. - -    // The actual meaning of the value depends on the users' keyboard layout -    // which cannot be detected. Assuming that it is a US keyboard layout -    // provides a surprisingly accurate mapping for US and European users. -    // Due to this, it is left to the user to implement at this time. -    if (event.type === 'keydown' || event.type === 'keyup') { -      return event.keyCode; -    } -    return 0; -  }, -  which: function (event) { -    // `which` is an alias for either `keyCode` or `charCode` depending on the -    // type of the event. -    if (event.type === 'keypress') { -      return getEventCharCode(event); -    } -    if (event.type === 'keydown' || event.type === 'keyup') { -      return event.keyCode; -    } -    return 0; -  } -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface); - -module.exports = SyntheticKeyboardEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticMouseEvent.js b/node_modules/react-dom/lib/SyntheticMouseEvent.js deleted file mode 100644 index e07e0e5c0..000000000 --- a/node_modules/react-dom/lib/SyntheticMouseEvent.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticUIEvent = require('./SyntheticUIEvent'); -var ViewportMetrics = require('./ViewportMetrics'); - -var getEventModifierState = require('./getEventModifierState'); - -/** - * @interface MouseEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var MouseEventInterface = { -  screenX: null, -  screenY: null, -  clientX: null, -  clientY: null, -  ctrlKey: null, -  shiftKey: null, -  altKey: null, -  metaKey: null, -  getModifierState: getEventModifierState, -  button: function (event) { -    // Webkit, Firefox, IE9+ -    // which:  1 2 3 -    // button: 0 1 2 (standard) -    var button = event.button; -    if ('which' in event) { -      return button; -    } -    // IE<9 -    // which:  undefined -    // button: 0 0 0 -    // button: 1 4 2 (onmouseup) -    return button === 2 ? 2 : button === 4 ? 1 : 0; -  }, -  buttons: null, -  relatedTarget: function (event) { -    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); -  }, -  // "Proprietary" Interface. -  pageX: function (event) { -    return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft; -  }, -  pageY: function (event) { -    return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop; -  } -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); - -module.exports = SyntheticMouseEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticTouchEvent.js b/node_modules/react-dom/lib/SyntheticTouchEvent.js deleted file mode 100644 index b3bb34d26..000000000 --- a/node_modules/react-dom/lib/SyntheticTouchEvent.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticUIEvent = require('./SyntheticUIEvent'); - -var getEventModifierState = require('./getEventModifierState'); - -/** - * @interface TouchEvent - * @see http://www.w3.org/TR/touch-events/ - */ -var TouchEventInterface = { -  touches: null, -  targetTouches: null, -  changedTouches: null, -  altKey: null, -  metaKey: null, -  ctrlKey: null, -  shiftKey: null, -  getModifierState: getEventModifierState -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticUIEvent} - */ -function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface); - -module.exports = SyntheticTouchEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticTransitionEvent.js b/node_modules/react-dom/lib/SyntheticTransitionEvent.js deleted file mode 100644 index 16ec36fed..000000000 --- a/node_modules/react-dom/lib/SyntheticTransitionEvent.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -/** - * @interface Event - * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- - * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent - */ -var TransitionEventInterface = { -  propertyName: null, -  elapsedTime: null, -  pseudoElement: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticEvent} - */ -function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface); - -module.exports = SyntheticTransitionEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticUIEvent.js b/node_modules/react-dom/lib/SyntheticUIEvent.js deleted file mode 100644 index 153f920d2..000000000 --- a/node_modules/react-dom/lib/SyntheticUIEvent.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticEvent = require('./SyntheticEvent'); - -var getEventTarget = require('./getEventTarget'); - -/** - * @interface UIEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var UIEventInterface = { -  view: function (event) { -    if (event.view) { -      return event.view; -    } - -    var target = getEventTarget(event); -    if (target.window === target) { -      // target is a window object -      return target; -    } - -    var doc = target.ownerDocument; -    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. -    if (doc) { -      return doc.defaultView || doc.parentWindow; -    } else { -      return window; -    } -  }, -  detail: function (event) { -    return event.detail || 0; -  } -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticEvent} - */ -function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); - -module.exports = SyntheticUIEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/SyntheticWheelEvent.js b/node_modules/react-dom/lib/SyntheticWheelEvent.js deleted file mode 100644 index 2ef895075..000000000 --- a/node_modules/react-dom/lib/SyntheticWheelEvent.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var SyntheticMouseEvent = require('./SyntheticMouseEvent'); - -/** - * @interface WheelEvent - * @see http://www.w3.org/TR/DOM-Level-3-Events/ - */ -var WheelEventInterface = { -  deltaX: function (event) { -    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). -    'wheelDeltaX' in event ? -event.wheelDeltaX : 0; -  }, -  deltaY: function (event) { -    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). -    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). -    'wheelDelta' in event ? -event.wheelDelta : 0; -  }, -  deltaZ: null, - -  // Browsers without "deltaMode" is reporting in raw wheel delta where one -  // notch on the scroll is always +/- 120, roughly equivalent to pixels. -  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or -  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. -  deltaMode: null -}; - -/** - * @param {object} dispatchConfig Configuration used to dispatch this event. - * @param {string} dispatchMarker Marker identifying the event target. - * @param {object} nativeEvent Native browser event. - * @extends {SyntheticMouseEvent} - */ -function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { -  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); -} - -SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface); - -module.exports = SyntheticWheelEvent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/TapEventPlugin.js b/node_modules/react-dom/lib/TapEventPlugin.js deleted file mode 100644 index ec1606877..000000000 --- a/node_modules/react-dom/lib/TapEventPlugin.js +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var EventPluginUtils = require('./EventPluginUtils'); -var EventPropagators = require('./EventPropagators'); -var SyntheticUIEvent = require('./SyntheticUIEvent'); -var TouchEventUtils = require('fbjs/lib/TouchEventUtils'); -var ViewportMetrics = require('./ViewportMetrics'); - -var isStartish = EventPluginUtils.isStartish; -var isEndish = EventPluginUtils.isEndish; - -/** - * We are extending the Flow 'Touch' declaration to enable using bracket - * notation to access properties. - * Without this adjustment Flow throws - * "Indexable signature not found in Touch". - * See https://github.com/facebook/flow/issues/1323 - */ - - -/** - * Number of pixels that are tolerated in between a `touchStart` and `touchEnd` - * in order to still be considered a 'tap' event. - */ -var tapMoveThreshold = 10; -var startCoords = { x: 0, y: 0 }; - -var Axis = { -  x: { page: 'pageX', client: 'clientX', envScroll: 'currentPageScrollLeft' }, -  y: { page: 'pageY', client: 'clientY', envScroll: 'currentPageScrollTop' } -}; - -function getAxisCoordOfEvent(axis, nativeEvent) { -  var singleTouch = TouchEventUtils.extractSingleTouch(nativeEvent); -  if (singleTouch) { -    return singleTouch[axis.page]; -  } -  return axis.page in nativeEvent ? nativeEvent[axis.page] : nativeEvent[axis.client] + ViewportMetrics[axis.envScroll]; -} - -function getDistance(coords, nativeEvent) { -  var pageX = getAxisCoordOfEvent(Axis.x, nativeEvent); -  var pageY = getAxisCoordOfEvent(Axis.y, nativeEvent); -  return Math.pow(Math.pow(pageX - coords.x, 2) + Math.pow(pageY - coords.y, 2), 0.5); -} - -var touchEvents = ['topTouchStart', 'topTouchCancel', 'topTouchEnd', 'topTouchMove']; - -var dependencies = ['topMouseDown', 'topMouseMove', 'topMouseUp'].concat(touchEvents); - -var eventTypes = { -  touchTap: { -    phasedRegistrationNames: { -      bubbled: 'onTouchTap', -      captured: 'onTouchTapCapture' -    }, -    dependencies: dependencies -  } -}; - -var usedTouch = false; -var usedTouchTime = 0; -var TOUCH_DELAY = 1000; - -var TapEventPlugin = { -  tapMoveThreshold: tapMoveThreshold, - -  eventTypes: eventTypes, - -  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { -    if (!isStartish(topLevelType) && !isEndish(topLevelType)) { -      return null; -    } -    // on ios, there is a delay after touch event and synthetic -    // mouse events, so that user can perform double tap -    // solution: ignore mouse events following touchevent within small timeframe -    if (touchEvents.indexOf(topLevelType) !== -1) { -      usedTouch = true; -      usedTouchTime = Date.now(); -    } else { -      if (usedTouch && Date.now() - usedTouchTime < TOUCH_DELAY) { -        return null; -      } -    } -    var event = null; -    var distance = getDistance(startCoords, nativeEvent); -    if (isEndish(topLevelType) && distance < tapMoveThreshold) { -      event = SyntheticUIEvent.getPooled(eventTypes.touchTap, targetInst, nativeEvent, nativeEventTarget); -    } -    if (isStartish(topLevelType)) { -      startCoords.x = getAxisCoordOfEvent(Axis.x, nativeEvent); -      startCoords.y = getAxisCoordOfEvent(Axis.y, nativeEvent); -    } else if (isEndish(topLevelType)) { -      startCoords.x = 0; -      startCoords.y = 0; -    } -    EventPropagators.accumulateTwoPhaseDispatches(event); -    return event; -  } -}; - -module.exports = TapEventPlugin;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/TouchHistoryMath.js b/node_modules/react-dom/lib/TouchHistoryMath.js deleted file mode 100644 index 0755b0f9a..000000000 --- a/node_modules/react-dom/lib/TouchHistoryMath.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - */ - -'use strict'; - -var TouchHistoryMath = { -  /** -   * This code is optimized and not intended to look beautiful. This allows -   * computing of touch centroids that have moved after `touchesChangedAfter` -   * timeStamp. You can compute the current centroid involving all touches -   * moves after `touchesChangedAfter`, or you can compute the previous -   * centroid of all touches that were moved after `touchesChangedAfter`. -   * -   * @param {TouchHistoryMath} touchHistory Standard Responder touch track -   * data. -   * @param {number} touchesChangedAfter timeStamp after which moved touches -   * are considered "actively moving" - not just "active". -   * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension. -   * @param {boolean} ofCurrent Compute current centroid for actively moving -   * touches vs. previous centroid of now actively moving touches. -   * @return {number} value of centroid in specified dimension. -   */ -  centroidDimension: function (touchHistory, touchesChangedAfter, isXAxis, ofCurrent) { -    var touchBank = touchHistory.touchBank; -    var total = 0; -    var count = 0; - -    var oneTouchData = touchHistory.numberActiveTouches === 1 ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null; - -    if (oneTouchData !== null) { -      if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) { -        total += ofCurrent && isXAxis ? oneTouchData.currentPageX : ofCurrent && !isXAxis ? oneTouchData.currentPageY : !ofCurrent && isXAxis ? oneTouchData.previousPageX : oneTouchData.previousPageY; -        count = 1; -      } -    } else { -      for (var i = 0; i < touchBank.length; i++) { -        var touchTrack = touchBank[i]; -        if (touchTrack !== null && touchTrack !== undefined && touchTrack.touchActive && touchTrack.currentTimeStamp >= touchesChangedAfter) { -          var toAdd; // Yuck, program temporarily in invalid state. -          if (ofCurrent && isXAxis) { -            toAdd = touchTrack.currentPageX; -          } else if (ofCurrent && !isXAxis) { -            toAdd = touchTrack.currentPageY; -          } else if (!ofCurrent && isXAxis) { -            toAdd = touchTrack.previousPageX; -          } else { -            toAdd = touchTrack.previousPageY; -          } -          total += toAdd; -          count++; -        } -      } -    } -    return count > 0 ? total / count : TouchHistoryMath.noCentroid; -  }, - -  currentCentroidXOfTouchesChangedAfter: function (touchHistory, touchesChangedAfter) { -    return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis -    true // ofCurrent -    ); -  }, - -  currentCentroidYOfTouchesChangedAfter: function (touchHistory, touchesChangedAfter) { -    return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis -    true // ofCurrent -    ); -  }, - -  previousCentroidXOfTouchesChangedAfter: function (touchHistory, touchesChangedAfter) { -    return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, true, // isXAxis -    false // ofCurrent -    ); -  }, - -  previousCentroidYOfTouchesChangedAfter: function (touchHistory, touchesChangedAfter) { -    return TouchHistoryMath.centroidDimension(touchHistory, touchesChangedAfter, false, // isXAxis -    false // ofCurrent -    ); -  }, - -  currentCentroidX: function (touchHistory) { -    return TouchHistoryMath.centroidDimension(touchHistory, 0, // touchesChangedAfter -    true, // isXAxis -    true // ofCurrent -    ); -  }, - -  currentCentroidY: function (touchHistory) { -    return TouchHistoryMath.centroidDimension(touchHistory, 0, // touchesChangedAfter -    false, // isXAxis -    true // ofCurrent -    ); -  }, - -  noCentroid: -1 -}; - -module.exports = TouchHistoryMath;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/Transaction.js b/node_modules/react-dom/lib/Transaction.js deleted file mode 100644 index f329dbb42..000000000 --- a/node_modules/react-dom/lib/Transaction.js +++ /dev/null @@ -1,227 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -var OBSERVED_ERROR = {}; - -/** - * `Transaction` creates a black box that is able to wrap any method such that - * certain invariants are maintained before and after the method is invoked - * (Even if an exception is thrown while invoking the wrapped method). Whoever - * instantiates a transaction can provide enforcers of the invariants at - * creation time. The `Transaction` class itself will supply one additional - * automatic invariant for you - the invariant that any transaction instance - * should not be run while it is already being run. You would typically create a - * single instance of a `Transaction` for reuse multiple times, that potentially - * is used to wrap several different methods. Wrappers are extremely simple - - * they only require implementing two methods. - * - * <pre> - *                       wrappers (injected at creation time) - *                                      +        + - *                                      |        | - *                    +-----------------|--------|--------------+ - *                    |                 v        |              | - *                    |      +---------------+   |              | - *                    |   +--|    wrapper1   |---|----+         | - *                    |   |  +---------------+   v    |         | - *                    |   |          +-------------+  |         | - *                    |   |     +----|   wrapper2  |--------+   | - *                    |   |     |    +-------------+  |     |   | - *                    |   |     |                     |     |   | - *                    |   v     v                     v     v   | wrapper - *                    | +---+ +---+   +---------+   +---+ +---+ | invariants - * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained - * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|--------> - *                    | |   | |   |   |         |   |   | |   | | - *                    | |   | |   |   |         |   |   | |   | | - *                    | |   | |   |   |         |   |   | |   | | - *                    | +---+ +---+   +---------+   +---+ +---+ | - *                    |  initialize                    close    | - *                    +-----------------------------------------+ - * </pre> - * - * Use cases: - * - Preserving the input selection ranges before/after reconciliation. - *   Restoring selection even in the event of an unexpected error. - * - Deactivating events while rearranging the DOM, preventing blurs/focuses, - *   while guaranteeing that afterwards, the event system is reactivated. - * - Flushing a queue of collected DOM mutations to the main UI thread after a - *   reconciliation takes place in a worker thread. - * - Invoking any collected `componentDidUpdate` callbacks after rendering new - *   content. - * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue - *   to preserve the `scrollTop` (an automatic scroll aware DOM). - * - (Future use case): Layout calculations before and after DOM updates. - * - * Transactional plugin API: - * - A module that has an `initialize` method that returns any precomputation. - * - and a `close` method that accepts the precomputation. `close` is invoked - *   when the wrapped process is completed, or has failed. - * - * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules - * that implement `initialize` and `close`. - * @return {Transaction} Single transaction for reuse in thread. - * - * @class Transaction - */ -var TransactionImpl = { -  /** -   * Sets up this instance so that it is prepared for collecting metrics. Does -   * so such that this setup method may be used on an instance that is already -   * initialized, in a way that does not consume additional memory upon reuse. -   * That can be useful if you decide to make your subclass of this mixin a -   * "PooledClass". -   */ -  reinitializeTransaction: function () { -    this.transactionWrappers = this.getTransactionWrappers(); -    if (this.wrapperInitData) { -      this.wrapperInitData.length = 0; -    } else { -      this.wrapperInitData = []; -    } -    this._isInTransaction = false; -  }, - -  _isInTransaction: false, - -  /** -   * @abstract -   * @return {Array<TransactionWrapper>} Array of transaction wrappers. -   */ -  getTransactionWrappers: null, - -  isInTransaction: function () { -    return !!this._isInTransaction; -  }, - -  /* eslint-disable space-before-function-paren */ - -  /** -   * Executes the function within a safety window. Use this for the top level -   * methods that result in large amounts of computation/mutations that would -   * need to be safety checked. The optional arguments helps prevent the need -   * to bind in many cases. -   * -   * @param {function} method Member of scope to call. -   * @param {Object} scope Scope to invoke from. -   * @param {Object?=} a Argument to pass to the method. -   * @param {Object?=} b Argument to pass to the method. -   * @param {Object?=} c Argument to pass to the method. -   * @param {Object?=} d Argument to pass to the method. -   * @param {Object?=} e Argument to pass to the method. -   * @param {Object?=} f Argument to pass to the method. -   * -   * @return {*} Return value from `method`. -   */ -  perform: function (method, scope, a, b, c, d, e, f) { -    /* eslint-enable space-before-function-paren */ -    !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0; -    var errorThrown; -    var ret; -    try { -      this._isInTransaction = true; -      // Catching errors makes debugging more difficult, so we start with -      // errorThrown set to true before setting it to false after calling -      // close -- if it's still set to true in the finally block, it means -      // one of these calls threw. -      errorThrown = true; -      this.initializeAll(0); -      ret = method.call(scope, a, b, c, d, e, f); -      errorThrown = false; -    } finally { -      try { -        if (errorThrown) { -          // If `method` throws, prefer to show that stack trace over any thrown -          // by invoking `closeAll`. -          try { -            this.closeAll(0); -          } catch (err) {} -        } else { -          // Since `method` didn't throw, we don't want to silence the exception -          // here. -          this.closeAll(0); -        } -      } finally { -        this._isInTransaction = false; -      } -    } -    return ret; -  }, - -  initializeAll: function (startIndex) { -    var transactionWrappers = this.transactionWrappers; -    for (var i = startIndex; i < transactionWrappers.length; i++) { -      var wrapper = transactionWrappers[i]; -      try { -        // Catching errors makes debugging more difficult, so we start with the -        // OBSERVED_ERROR state before overwriting it with the real return value -        // of initialize -- if it's still set to OBSERVED_ERROR in the finally -        // block, it means wrapper.initialize threw. -        this.wrapperInitData[i] = OBSERVED_ERROR; -        this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null; -      } finally { -        if (this.wrapperInitData[i] === OBSERVED_ERROR) { -          // The initializer for wrapper i threw an error; initialize the -          // remaining wrappers but silence any exceptions from them to ensure -          // that the first error is the one to bubble up. -          try { -            this.initializeAll(i + 1); -          } catch (err) {} -        } -      } -    } -  }, - -  /** -   * Invokes each of `this.transactionWrappers.close[i]` functions, passing into -   * them the respective return values of `this.transactionWrappers.init[i]` -   * (`close`rs that correspond to initializers that failed will not be -   * invoked). -   */ -  closeAll: function (startIndex) { -    !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0; -    var transactionWrappers = this.transactionWrappers; -    for (var i = startIndex; i < transactionWrappers.length; i++) { -      var wrapper = transactionWrappers[i]; -      var initData = this.wrapperInitData[i]; -      var errorThrown; -      try { -        // Catching errors makes debugging more difficult, so we start with -        // errorThrown set to true before setting it to false after calling -        // close -- if it's still set to true in the finally block, it means -        // wrapper.close threw. -        errorThrown = true; -        if (initData !== OBSERVED_ERROR && wrapper.close) { -          wrapper.close.call(this, initData); -        } -        errorThrown = false; -      } finally { -        if (errorThrown) { -          // The closer for wrapper i threw an error; close the remaining -          // wrappers but silence any exceptions from them to ensure that the -          // first error is the one to bubble up. -          try { -            this.closeAll(i + 1); -          } catch (e) {} -        } -      } -    } -    this.wrapperInitData.length = 0; -  } -}; - -module.exports = TransactionImpl;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/ViewportMetrics.js b/node_modules/react-dom/lib/ViewportMetrics.js deleted file mode 100644 index 4c2a2372d..000000000 --- a/node_modules/react-dom/lib/ViewportMetrics.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ViewportMetrics = { -  currentScrollLeft: 0, - -  currentScrollTop: 0, - -  refreshScrollValues: function (scrollPosition) { -    ViewportMetrics.currentScrollLeft = scrollPosition.x; -    ViewportMetrics.currentScrollTop = scrollPosition.y; -  } -}; - -module.exports = ViewportMetrics;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/accumulate.js b/node_modules/react-dom/lib/accumulate.js deleted file mode 100644 index a4c763fe4..000000000 --- a/node_modules/react-dom/lib/accumulate.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * Accumulates items that must not be null or undefined. - * - * This is used to conserve memory by avoiding array allocations. - * - * @return {*|array<*>} An accumulation of items. - */ -function accumulate(current, next) { -  !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulate(...): Accumulated items must be not be null or undefined.') : _prodInvariant('29') : void 0; - -  if (current == null) { -    return next; -  } - -  // Both are not empty. Warning: Never call x.concat(y) when you are not -  // certain that x is an Array (x could be a string with concat method). -  if (Array.isArray(current)) { -    return current.concat(next); -  } - -  if (Array.isArray(next)) { -    return [current].concat(next); -  } - -  return [current, next]; -} - -module.exports = accumulate;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/accumulateInto.js b/node_modules/react-dom/lib/accumulateInto.js deleted file mode 100644 index 8ea8f9e12..000000000 --- a/node_modules/react-dom/lib/accumulateInto.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright 2014-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var invariant = require('fbjs/lib/invariant'); - -/** - * Accumulates items that must not be null or undefined into the first one. This - * is used to conserve memory by avoiding array allocations, and thus sacrifices - * API cleanness. Since `current` can be null before being passed in and not - * null after this function, make sure to assign it back to `current`: - * - * `a = accumulateInto(a, b);` - * - * This API should be sparingly used. Try `accumulate` for something cleaner. - * - * @return {*|array<*>} An accumulation of items. - */ - -function accumulateInto(current, next) { -  !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0; - -  if (current == null) { -    return next; -  } - -  // Both are not empty. Warning: Never call x.concat(y) when you are not -  // certain that x is an Array (x could be a string with concat method). -  if (Array.isArray(current)) { -    if (Array.isArray(next)) { -      current.push.apply(current, next); -      return current; -    } -    current.push(next); -    return current; -  } - -  if (Array.isArray(next)) { -    // A bit too dangerous to mutate `next`. -    return [current].concat(next); -  } - -  return [current, next]; -} - -module.exports = accumulateInto;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/adler32.js b/node_modules/react-dom/lib/adler32.js deleted file mode 100644 index e153adcb3..000000000 --- a/node_modules/react-dom/lib/adler32.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var MOD = 65521; - -// adler32 is not cryptographically strong, and is only used to sanity check that -// markup generated on the server matches the markup generated on the client. -// This implementation (a modified version of the SheetJS version) has been optimized -// for our use case, at the expense of conforming to the adler32 specification -// for non-ascii inputs. -function adler32(data) { -  var a = 1; -  var b = 0; -  var i = 0; -  var l = data.length; -  var m = l & ~0x3; -  while (i < m) { -    var n = Math.min(i + 4096, m); -    for (; i < n; i += 4) { -      b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3)); -    } -    a %= MOD; -    b %= MOD; -  } -  for (; i < l; i++) { -    b += a += data.charCodeAt(i); -  } -  a %= MOD; -  b %= MOD; -  return a | b << 16; -} - -module.exports = adler32;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/canDefineProperty.js b/node_modules/react-dom/lib/canDefineProperty.js deleted file mode 100644 index cde9f5c55..000000000 --- a/node_modules/react-dom/lib/canDefineProperty.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var canDefineProperty = false; -if (process.env.NODE_ENV !== 'production') { -  try { -    // $FlowFixMe https://github.com/facebook/flow/issues/285 -    Object.defineProperty({}, 'x', { get: function () {} }); -    canDefineProperty = true; -  } catch (x) { -    // IE will fail on defineProperty -  } -} - -module.exports = canDefineProperty;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/checkReactTypeSpec.js b/node_modules/react-dom/lib/checkReactTypeSpec.js deleted file mode 100644 index 63c27d64f..000000000 --- a/node_modules/react-dom/lib/checkReactTypeSpec.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames'); -var ReactPropTypesSecret = require('./ReactPropTypesSecret'); - -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -var ReactComponentTreeHook; - -if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { -  // Temporary hack. -  // Inline requires don't work well with Jest: -  // https://github.com/facebook/react/issues/7240 -  // Remove the inline requires when we don't need them anymore: -  // https://github.com/facebook/react/pull/7178 -  ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -} - -var loggedTypeFailures = {}; - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?object} element The React element that is being type-checked - * @param {?number} debugID The React component instance that is being type-checked - * @private - */ -function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { -  for (var typeSpecName in typeSpecs) { -    if (typeSpecs.hasOwnProperty(typeSpecName)) { -      var error; -      // Prop type validation may throw. In case they do, we don't want to -      // fail the render phase where it didn't fail before. So we log it. -      // After these have been cleaned up, we'll let them throw. -      try { -        // This is intentionally an invariant that gets caught. It's the same -        // behavior as without this statement except with a better message. -        !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; -        error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); -      } catch (ex) { -        error = ex; -      } -      process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; -      if (error instanceof Error && !(error.message in loggedTypeFailures)) { -        // Only monitor this failure once because there tends to be a lot of the -        // same error. -        loggedTypeFailures[error.message] = true; - -        var componentStackInfo = ''; - -        if (process.env.NODE_ENV !== 'production') { -          if (!ReactComponentTreeHook) { -            ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -          } -          if (debugID !== null) { -            componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); -          } else if (element !== null) { -            componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); -          } -        } - -        process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; -      } -    } -  } -} - -module.exports = checkReactTypeSpec;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js b/node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js deleted file mode 100644 index 1ed76fcfd..000000000 --- a/node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -/* globals MSApp */ - -'use strict'; - -/** - * Create a function which has 'unsafe' privileges (required by windows8 apps) - */ - -var createMicrosoftUnsafeLocalFunction = function (func) { -  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { -    return function (arg0, arg1, arg2, arg3) { -      MSApp.execUnsafeLocalFunction(function () { -        return func(arg0, arg1, arg2, arg3); -      }); -    }; -  } else { -    return func; -  } -}; - -module.exports = createMicrosoftUnsafeLocalFunction;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/dangerousStyleValue.js b/node_modules/react-dom/lib/dangerousStyleValue.js deleted file mode 100644 index 1164f1a91..000000000 --- a/node_modules/react-dom/lib/dangerousStyleValue.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var CSSProperty = require('./CSSProperty'); -var warning = require('fbjs/lib/warning'); - -var isUnitlessNumber = CSSProperty.isUnitlessNumber; -var styleWarnings = {}; - -/** - * Convert a value into the proper css writable value. The style name `name` - * should be logical (no hyphens), as specified - * in `CSSProperty.isUnitlessNumber`. - * - * @param {string} name CSS property name such as `topMargin`. - * @param {*} value CSS property value such as `10px`. - * @param {ReactDOMComponent} component - * @return {string} Normalized style value with dimensions applied. - */ -function dangerousStyleValue(name, value, component, isCustomProperty) { -  // Note that we've removed escapeTextForBrowser() calls here since the -  // whole string will be escaped when the attribute is injected into -  // the markup. If you provide unsafe user data here they can inject -  // arbitrary CSS which may be problematic (I couldn't repro this): -  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet -  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ -  // This is not an XSS hole but instead a potential CSS injection issue -  // which has lead to a greater discussion about how we're going to -  // trust URLs moving forward. See #2115901 - -  var isEmpty = value == null || typeof value === 'boolean' || value === ''; -  if (isEmpty) { -    return ''; -  } - -  var isNonNumeric = isNaN(value); -  if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) { -    return '' + value; // cast to string -  } - -  if (typeof value === 'string') { -    if (process.env.NODE_ENV !== 'production') { -      // Allow '0' to pass through without warning. 0 is already special and -      // doesn't require units, so we don't need to warn about it. -      if (component && value !== '0') { -        var owner = component._currentElement._owner; -        var ownerName = owner ? owner.getName() : null; -        if (ownerName && !styleWarnings[ownerName]) { -          styleWarnings[ownerName] = {}; -        } -        var warned = false; -        if (ownerName) { -          var warnings = styleWarnings[ownerName]; -          warned = warnings[name]; -          if (!warned) { -            warnings[name] = true; -          } -        } -        if (!warned) { -          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; -        } -      } -    } -    value = value.trim(); -  } -  return value + 'px'; -} - -module.exports = dangerousStyleValue;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/deprecated.js b/node_modules/react-dom/lib/deprecated.js deleted file mode 100644 index f5683c4ab..000000000 --- a/node_modules/react-dom/lib/deprecated.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var _assign = require('object-assign'); - -var lowPriorityWarning = require('./lowPriorityWarning'); - -/** - * This will log a single deprecation notice per function and forward the call - * on to the new API. - * - * @param {string} fnName The name of the function - * @param {string} newModule The module that fn will exist in - * @param {string} newPackage The module that fn will exist in - * @param {*} ctx The context this forwarded call should run in - * @param {function} fn The function to forward on to - * @return {function} The function that will warn once and then call fn - */ -function deprecated(fnName, newModule, newPackage, ctx, fn) { -  var warned = false; -  if (process.env.NODE_ENV !== 'production') { -    var newFn = function () { -      lowPriorityWarning(warned, -      /* eslint-disable no-useless-concat */ -      // Require examples in this string must be split to prevent React's -      // build tools from mistaking them for real requires. -      // Otherwise the build tools will attempt to build a '%s' module. -      'React.%s is deprecated. Please use %s.%s from require' + "('%s') " + 'instead.', fnName, newModule, fnName, newPackage); -      /* eslint-enable no-useless-concat */ -      warned = true; -      return fn.apply(ctx, arguments); -    }; -    // We need to make sure all properties of the original fn are copied over. -    // In particular, this is needed to support PropTypes -    _assign(newFn, fn); - -    // Flow is not smart enough to figure out that newFn is of the same type as -    // fn. Since we don't want to lose out the type of the function, casting -    // to any and force flow to use T. -    return newFn; -  } - -  return fn; -} - -module.exports = deprecated;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/escapeTextContentForBrowser.js b/node_modules/react-dom/lib/escapeTextContentForBrowser.js deleted file mode 100644 index 6138f315e..000000000 --- a/node_modules/react-dom/lib/escapeTextContentForBrowser.js +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Copyright 2016-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * Based on the escape-html library, which is used under the MIT License below: - * - * Copyright (c) 2012-2013 TJ Holowaychuk - * Copyright (c) 2015 Andreas Lubbe - * Copyright (c) 2015 Tiancheng "Timothy" Gu - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * 'Software'), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -'use strict'; - -// code copied and modified from escape-html -/** - * Module variables. - * @private - */ - -var matchHtmlRegExp = /["'&<>]/; - -/** - * Escape special characters in the given string of html. - * - * @param  {string} string The string to escape for inserting into HTML - * @return {string} - * @public - */ - -function escapeHtml(string) { -  var str = '' + string; -  var match = matchHtmlRegExp.exec(str); - -  if (!match) { -    return str; -  } - -  var escape; -  var html = ''; -  var index = 0; -  var lastIndex = 0; - -  for (index = match.index; index < str.length; index++) { -    switch (str.charCodeAt(index)) { -      case 34: -        // " -        escape = '"'; -        break; -      case 38: -        // & -        escape = '&'; -        break; -      case 39: -        // ' -        escape = '''; // modified from escape-html; used to be ''' -        break; -      case 60: -        // < -        escape = '<'; -        break; -      case 62: -        // > -        escape = '>'; -        break; -      default: -        continue; -    } - -    if (lastIndex !== index) { -      html += str.substring(lastIndex, index); -    } - -    lastIndex = index + 1; -    html += escape; -  } - -  return lastIndex !== index ? html + str.substring(lastIndex, index) : html; -} -// end code copied and modified from escape-html - -/** - * Escapes text to prevent scripting attacks. - * - * @param {*} text Text value to escape. - * @return {string} An escaped string. - */ -function escapeTextContentForBrowser(text) { -  if (typeof text === 'boolean' || typeof text === 'number') { -    // this shortcircuit helps perf for types that we know will never have -    // special characters, especially given that this function is used often -    // for numeric dom ids. -    return '' + text; -  } -  return escapeHtml(text); -} - -module.exports = escapeTextContentForBrowser;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/findDOMNode.js b/node_modules/react-dom/lib/findDOMNode.js deleted file mode 100644 index 2b0df9ebb..000000000 --- a/node_modules/react-dom/lib/findDOMNode.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); -var ReactInstanceMap = require('./ReactInstanceMap'); - -var getHostComponentFromComposite = require('./getHostComponentFromComposite'); -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -/** - * Returns the DOM node rendered by this element. - * - * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode - * - * @param {ReactComponent|DOMElement} componentOrElement - * @return {?DOMElement} The root node of this element. - */ -function findDOMNode(componentOrElement) { -  if (process.env.NODE_ENV !== 'production') { -    var owner = ReactCurrentOwner.current; -    if (owner !== null) { -      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; -      owner._warnedAboutRefsInRender = true; -    } -  } -  if (componentOrElement == null) { -    return null; -  } -  if (componentOrElement.nodeType === 1) { -    return componentOrElement; -  } - -  var inst = ReactInstanceMap.get(componentOrElement); -  if (inst) { -    inst = getHostComponentFromComposite(inst); -    return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null; -  } - -  if (typeof componentOrElement.render === 'function') { -    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0; -  } else { -    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0; -  } -} - -module.exports = findDOMNode;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/flattenChildren.js b/node_modules/react-dom/lib/flattenChildren.js deleted file mode 100644 index 38b9eadc0..000000000 --- a/node_modules/react-dom/lib/flattenChildren.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -var KeyEscapeUtils = require('./KeyEscapeUtils'); -var traverseAllChildren = require('./traverseAllChildren'); -var warning = require('fbjs/lib/warning'); - -var ReactComponentTreeHook; - -if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { -  // Temporary hack. -  // Inline requires don't work well with Jest: -  // https://github.com/facebook/react/issues/7240 -  // Remove the inline requires when we don't need them anymore: -  // https://github.com/facebook/react/pull/7178 -  ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -} - -/** - * @param {function} traverseContext Context passed through traversal. - * @param {?ReactComponent} child React child component. - * @param {!string} name String name of key path to child. - * @param {number=} selfDebugID Optional debugID of the current internal instance. - */ -function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) { -  // We found a component instance. -  if (traverseContext && typeof traverseContext === 'object') { -    var result = traverseContext; -    var keyUnique = result[name] === undefined; -    if (process.env.NODE_ENV !== 'production') { -      if (!ReactComponentTreeHook) { -        ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook'); -      } -      if (!keyUnique) { -        process.env.NODE_ENV !== 'production' ? warning(false, '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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; -      } -    } -    if (keyUnique && child != null) { -      result[name] = child; -    } -  } -} - -/** - * Flattens children that are typically specified as `props.children`. Any null - * children will not be included in the resulting object. - * @return {!object} flattened children keyed by name. - */ -function flattenChildren(children, selfDebugID) { -  if (children == null) { -    return children; -  } -  var result = {}; - -  if (process.env.NODE_ENV !== 'production') { -    traverseAllChildren(children, function (traverseContext, child, name) { -      return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID); -    }, result); -  } else { -    traverseAllChildren(children, flattenSingleChildIntoContext, result); -  } -  return result; -} - -module.exports = flattenChildren;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/forEachAccumulated.js b/node_modules/react-dom/lib/forEachAccumulated.js deleted file mode 100644 index 37b126600..000000000 --- a/node_modules/react-dom/lib/forEachAccumulated.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -/** - * @param {array} arr an "accumulation" of items which is either an Array or - * a single item. Useful when paired with the `accumulate` module. This is a - * simple utility that allows us to reason about a collection of items, but - * handling the case when there is exactly one item (and we do not need to - * allocate an array). - */ - -function forEachAccumulated(arr, cb, scope) { -  if (Array.isArray(arr)) { -    arr.forEach(cb, scope); -  } else if (arr) { -    cb.call(scope, arr); -  } -} - -module.exports = forEachAccumulated;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getEventCharCode.js b/node_modules/react-dom/lib/getEventCharCode.js deleted file mode 100644 index 0fff86b8e..000000000 --- a/node_modules/react-dom/lib/getEventCharCode.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * `charCode` represents the actual "character code" and is safe to use with - * `String.fromCharCode`. As such, only keys that correspond to printable - * characters produce a valid `charCode`, the only exception to this is Enter. - * The Tab-key is considered non-printable and does not have a `charCode`, - * presumably because it does not produce a tab-character in browsers. - * - * @param {object} nativeEvent Native browser event. - * @return {number} Normalized `charCode` property. - */ - -function getEventCharCode(nativeEvent) { -  var charCode; -  var keyCode = nativeEvent.keyCode; - -  if ('charCode' in nativeEvent) { -    charCode = nativeEvent.charCode; - -    // FF does not set `charCode` for the Enter-key, check against `keyCode`. -    if (charCode === 0 && keyCode === 13) { -      charCode = 13; -    } -  } else { -    // IE8 does not implement `charCode`, but `keyCode` has the correct value. -    charCode = keyCode; -  } - -  // Some non-printable keys are reported in `charCode`/`keyCode`, discard them. -  // Must not discard the (non-)printable Enter-key. -  if (charCode >= 32 || charCode === 13) { -    return charCode; -  } - -  return 0; -} - -module.exports = getEventCharCode;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getEventKey.js b/node_modules/react-dom/lib/getEventKey.js deleted file mode 100644 index a8408b4c5..000000000 --- a/node_modules/react-dom/lib/getEventKey.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var getEventCharCode = require('./getEventCharCode'); - -/** - * Normalization of deprecated HTML5 `key` values - * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names - */ -var normalizeKey = { -  Esc: 'Escape', -  Spacebar: ' ', -  Left: 'ArrowLeft', -  Up: 'ArrowUp', -  Right: 'ArrowRight', -  Down: 'ArrowDown', -  Del: 'Delete', -  Win: 'OS', -  Menu: 'ContextMenu', -  Apps: 'ContextMenu', -  Scroll: 'ScrollLock', -  MozPrintableKey: 'Unidentified' -}; - -/** - * Translation from legacy `keyCode` to HTML5 `key` - * Only special keys supported, all others depend on keyboard layout or browser - * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names - */ -var translateToKey = { -  8: 'Backspace', -  9: 'Tab', -  12: 'Clear', -  13: 'Enter', -  16: 'Shift', -  17: 'Control', -  18: 'Alt', -  19: 'Pause', -  20: 'CapsLock', -  27: 'Escape', -  32: ' ', -  33: 'PageUp', -  34: 'PageDown', -  35: 'End', -  36: 'Home', -  37: 'ArrowLeft', -  38: 'ArrowUp', -  39: 'ArrowRight', -  40: 'ArrowDown', -  45: 'Insert', -  46: 'Delete', -  112: 'F1', -  113: 'F2', -  114: 'F3', -  115: 'F4', -  116: 'F5', -  117: 'F6', -  118: 'F7', -  119: 'F8', -  120: 'F9', -  121: 'F10', -  122: 'F11', -  123: 'F12', -  144: 'NumLock', -  145: 'ScrollLock', -  224: 'Meta' -}; - -/** - * @param {object} nativeEvent Native browser event. - * @return {string} Normalized `key` property. - */ -function getEventKey(nativeEvent) { -  if (nativeEvent.key) { -    // Normalize inconsistent values reported by browsers due to -    // implementations of a working draft specification. - -    // FireFox implements `key` but returns `MozPrintableKey` for all -    // printable characters (normalized to `Unidentified`), ignore it. -    var key = normalizeKey[nativeEvent.key] || nativeEvent.key; -    if (key !== 'Unidentified') { -      return key; -    } -  } - -  // Browser does not implement `key`, polyfill as much of it as we can. -  if (nativeEvent.type === 'keypress') { -    var charCode = getEventCharCode(nativeEvent); - -    // The enter-key is technically both printable and non-printable and can -    // thus be captured by `keypress`, no other non-printable key should. -    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode); -  } -  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') { -    // While user keyboard layout determines the actual meaning of each -    // `keyCode` value, almost all function keys have a universal value. -    return translateToKey[nativeEvent.keyCode] || 'Unidentified'; -  } -  return ''; -} - -module.exports = getEventKey;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getEventModifierState.js b/node_modules/react-dom/lib/getEventModifierState.js deleted file mode 100644 index 0af4df74c..000000000 --- a/node_modules/react-dom/lib/getEventModifierState.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Translation from modifier key to the associated property in the event. - * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers - */ - -var modifierKeyToProp = { -  Alt: 'altKey', -  Control: 'ctrlKey', -  Meta: 'metaKey', -  Shift: 'shiftKey' -}; - -// IE8 does not implement getModifierState so we simply map it to the only -// modifier keys exposed by the event itself, does not support Lock-keys. -// Currently, all major browsers except Chrome seems to support Lock-keys. -function modifierStateGetter(keyArg) { -  var syntheticEvent = this; -  var nativeEvent = syntheticEvent.nativeEvent; -  if (nativeEvent.getModifierState) { -    return nativeEvent.getModifierState(keyArg); -  } -  var keyProp = modifierKeyToProp[keyArg]; -  return keyProp ? !!nativeEvent[keyProp] : false; -} - -function getEventModifierState(nativeEvent) { -  return modifierStateGetter; -} - -module.exports = getEventModifierState;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getEventTarget.js b/node_modules/react-dom/lib/getEventTarget.js deleted file mode 100644 index 37fd3ad94..000000000 --- a/node_modules/react-dom/lib/getEventTarget.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Gets the target node from a native browser event by accounting for - * inconsistencies in browser DOM APIs. - * - * @param {object} nativeEvent Native browser event. - * @return {DOMEventTarget} Target node. - */ - -function getEventTarget(nativeEvent) { -  var target = nativeEvent.target || nativeEvent.srcElement || window; - -  // Normalize SVG <use> element events #4963 -  if (target.correspondingUseElement) { -    target = target.correspondingUseElement; -  } - -  // Safari may fire events on text nodes (Node.TEXT_NODE is 3). -  // @see http://www.quirksmode.org/js/events_properties.html -  return target.nodeType === 3 ? target.parentNode : target; -} - -module.exports = getEventTarget;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getHostComponentFromComposite.js b/node_modules/react-dom/lib/getHostComponentFromComposite.js deleted file mode 100644 index 722cdfb73..000000000 --- a/node_modules/react-dom/lib/getHostComponentFromComposite.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactNodeTypes = require('./ReactNodeTypes'); - -function getHostComponentFromComposite(inst) { -  var type; - -  while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) { -    inst = inst._renderedComponent; -  } - -  if (type === ReactNodeTypes.HOST) { -    return inst._renderedComponent; -  } else if (type === ReactNodeTypes.EMPTY) { -    return null; -  } -} - -module.exports = getHostComponentFromComposite;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getIteratorFn.js b/node_modules/react-dom/lib/getIteratorFn.js deleted file mode 100644 index 95eed4221..000000000 --- a/node_modules/react-dom/lib/getIteratorFn.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -/* global Symbol */ - -var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; -var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - -/** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - *     var iteratorFn = getIteratorFn(myIterable); - *     if (iteratorFn) { - *       var iterator = iteratorFn.call(myIterable); - *       ... - *     } - * - * @param {?object} maybeIterable - * @return {?function} - */ -function getIteratorFn(maybeIterable) { -  var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); -  if (typeof iteratorFn === 'function') { -    return iteratorFn; -  } -} - -module.exports = getIteratorFn;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getNodeForCharacterOffset.js b/node_modules/react-dom/lib/getNodeForCharacterOffset.js deleted file mode 100644 index 34ca33756..000000000 --- a/node_modules/react-dom/lib/getNodeForCharacterOffset.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Given any node return the first leaf node without children. - * - * @param {DOMElement|DOMTextNode} node - * @return {DOMElement|DOMTextNode} - */ - -function getLeafNode(node) { -  while (node && node.firstChild) { -    node = node.firstChild; -  } -  return node; -} - -/** - * Get the next sibling within a container. This will walk up the - * DOM if a node's siblings have been exhausted. - * - * @param {DOMElement|DOMTextNode} node - * @return {?DOMElement|DOMTextNode} - */ -function getSiblingNode(node) { -  while (node) { -    if (node.nextSibling) { -      return node.nextSibling; -    } -    node = node.parentNode; -  } -} - -/** - * Get object describing the nodes which contain characters at offset. - * - * @param {DOMElement|DOMTextNode} root - * @param {number} offset - * @return {?object} - */ -function getNodeForCharacterOffset(root, offset) { -  var node = getLeafNode(root); -  var nodeStart = 0; -  var nodeEnd = 0; - -  while (node) { -    if (node.nodeType === 3) { -      nodeEnd = nodeStart + node.textContent.length; - -      if (nodeStart <= offset && nodeEnd >= offset) { -        return { -          node: node, -          offset: offset - nodeStart -        }; -      } - -      nodeStart = nodeEnd; -    } - -    node = getLeafNode(getSiblingNode(node)); -  } -} - -module.exports = getNodeForCharacterOffset;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getTestDocument.js b/node_modules/react-dom/lib/getTestDocument.js deleted file mode 100644 index 2d5c5737e..000000000 --- a/node_modules/react-dom/lib/getTestDocument.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -function getTestDocument(markup) { -  document.open(); -  document.write(markup || '<!doctype html><html><meta charset=utf-8><title>test doc</title>'); -  document.close(); -  return document; -} - -module.exports = getTestDocument;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getTextContentAccessor.js b/node_modules/react-dom/lib/getTextContentAccessor.js deleted file mode 100644 index b22676995..000000000 --- a/node_modules/react-dom/lib/getTextContentAccessor.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -var contentKey = null; - -/** - * Gets the key used to access text content on a DOM node. - * - * @return {?string} Key used to access text content. - * @internal - */ -function getTextContentAccessor() { -  if (!contentKey && ExecutionEnvironment.canUseDOM) { -    // Prefer textContent to innerText because many browsers support both but -    // SVG <text> elements don't support innerText even when <div> does. -    contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText'; -  } -  return contentKey; -} - -module.exports = getTextContentAccessor;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/getVendorPrefixedEventName.js b/node_modules/react-dom/lib/getVendorPrefixedEventName.js deleted file mode 100644 index 4b051442d..000000000 --- a/node_modules/react-dom/lib/getVendorPrefixedEventName.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -/** - * Generate a mapping of standard vendor prefixes using the defined style property and event name. - * - * @param {string} styleProp - * @param {string} eventName - * @returns {object} - */ -function makePrefixMap(styleProp, eventName) { -  var prefixes = {}; - -  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); -  prefixes['Webkit' + styleProp] = 'webkit' + eventName; -  prefixes['Moz' + styleProp] = 'moz' + eventName; -  prefixes['ms' + styleProp] = 'MS' + eventName; -  prefixes['O' + styleProp] = 'o' + eventName.toLowerCase(); - -  return prefixes; -} - -/** - * A list of event names to a configurable list of vendor prefixes. - */ -var vendorPrefixes = { -  animationend: makePrefixMap('Animation', 'AnimationEnd'), -  animationiteration: makePrefixMap('Animation', 'AnimationIteration'), -  animationstart: makePrefixMap('Animation', 'AnimationStart'), -  transitionend: makePrefixMap('Transition', 'TransitionEnd') -}; - -/** - * Event names that have already been detected and prefixed (if applicable). - */ -var prefixedEventNames = {}; - -/** - * Element to check for prefixes on. - */ -var style = {}; - -/** - * Bootstrap if a DOM exists. - */ -if (ExecutionEnvironment.canUseDOM) { -  style = document.createElement('div').style; - -  // On some platforms, in particular some releases of Android 4.x, -  // the un-prefixed "animation" and "transition" properties are defined on the -  // style object but the events that fire will still be prefixed, so we need -  // to check if the un-prefixed events are usable, and if not remove them from the map. -  if (!('AnimationEvent' in window)) { -    delete vendorPrefixes.animationend.animation; -    delete vendorPrefixes.animationiteration.animation; -    delete vendorPrefixes.animationstart.animation; -  } - -  // Same as above -  if (!('TransitionEvent' in window)) { -    delete vendorPrefixes.transitionend.transition; -  } -} - -/** - * Attempts to determine the correct vendor prefixed event name. - * - * @param {string} eventName - * @returns {string} - */ -function getVendorPrefixedEventName(eventName) { -  if (prefixedEventNames[eventName]) { -    return prefixedEventNames[eventName]; -  } else if (!vendorPrefixes[eventName]) { -    return eventName; -  } - -  var prefixMap = vendorPrefixes[eventName]; - -  for (var styleProp in prefixMap) { -    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) { -      return prefixedEventNames[eventName] = prefixMap[styleProp]; -    } -  } - -  return ''; -} - -module.exports = getVendorPrefixedEventName;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/inputValueTracking.js b/node_modules/react-dom/lib/inputValueTracking.js deleted file mode 100644 index 7a7fa137a..000000000 --- a/node_modules/react-dom/lib/inputValueTracking.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - -function isCheckable(elem) { -  var type = elem.type; -  var nodeName = elem.nodeName; -  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio'); -} - -function getTracker(inst) { -  return inst._wrapperState.valueTracker; -} - -function attachTracker(inst, tracker) { -  inst._wrapperState.valueTracker = tracker; -} - -function detachTracker(inst) { -  delete inst._wrapperState.valueTracker; -} - -function getValueFromNode(node) { -  var value; -  if (node) { -    value = isCheckable(node) ? '' + node.checked : node.value; -  } -  return value; -} - -var inputValueTracking = { -  // exposed for testing -  _getTrackerFromNode: function (node) { -    return getTracker(ReactDOMComponentTree.getInstanceFromNode(node)); -  }, - - -  track: function (inst) { -    if (getTracker(inst)) { -      return; -    } - -    var node = ReactDOMComponentTree.getNodeFromInstance(inst); -    var valueField = isCheckable(node) ? 'checked' : 'value'; -    var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField); - -    var currentValue = '' + node[valueField]; - -    // if someone has already defined a value or Safari, then bail -    // and don't track value will cause over reporting of changes, -    // but it's better then a hard failure -    // (needed for certain tests that spyOn input values and Safari) -    if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') { -      return; -    } - -    Object.defineProperty(node, valueField, { -      enumerable: descriptor.enumerable, -      configurable: true, -      get: function () { -        return descriptor.get.call(this); -      }, -      set: function (value) { -        currentValue = '' + value; -        descriptor.set.call(this, value); -      } -    }); - -    attachTracker(inst, { -      getValue: function () { -        return currentValue; -      }, -      setValue: function (value) { -        currentValue = '' + value; -      }, -      stopTracking: function () { -        detachTracker(inst); -        delete node[valueField]; -      } -    }); -  }, - -  updateValueIfChanged: function (inst) { -    if (!inst) { -      return false; -    } -    var tracker = getTracker(inst); - -    if (!tracker) { -      inputValueTracking.track(inst); -      return true; -    } - -    var lastValue = tracker.getValue(); -    var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst)); - -    if (nextValue !== lastValue) { -      tracker.setValue(nextValue); -      return true; -    } - -    return false; -  }, -  stopTracking: function (inst) { -    var tracker = getTracker(inst); -    if (tracker) { -      tracker.stopTracking(); -    } -  } -}; - -module.exports = inputValueTracking;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/instantiateReactComponent.js b/node_modules/react-dom/lib/instantiateReactComponent.js deleted file mode 100644 index e4a3bdd3f..000000000 --- a/node_modules/react-dom/lib/instantiateReactComponent.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var ReactCompositeComponent = require('./ReactCompositeComponent'); -var ReactEmptyComponent = require('./ReactEmptyComponent'); -var ReactHostComponent = require('./ReactHostComponent'); - -var getNextDebugID = require('react/lib/getNextDebugID'); -var invariant = require('fbjs/lib/invariant'); -var warning = require('fbjs/lib/warning'); - -// To avoid a cyclic dependency, we create the final class in this module -var ReactCompositeComponentWrapper = function (element) { -  this.construct(element); -}; - -function getDeclarationErrorAddendum(owner) { -  if (owner) { -    var name = owner.getName(); -    if (name) { -      return ' Check the render method of `' + name + '`.'; -    } -  } -  return ''; -} - -/** - * Check if the type reference is a known internal type. I.e. not a user - * provided composite type. - * - * @param {function} type - * @return {boolean} Returns true if this is a valid internal type. - */ -function isInternalComponentType(type) { -  return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function'; -} - -/** - * Given a ReactNode, create an instance that will actually be mounted. - * - * @param {ReactNode} node - * @param {boolean} shouldHaveDebugID - * @return {object} A new instance of the element's constructor. - * @protected - */ -function instantiateReactComponent(node, shouldHaveDebugID) { -  var instance; - -  if (node === null || node === false) { -    instance = ReactEmptyComponent.create(instantiateReactComponent); -  } else if (typeof node === 'object') { -    var element = node; -    var type = element.type; -    if (typeof type !== 'function' && typeof type !== 'string') { -      var info = ''; -      if (process.env.NODE_ENV !== 'production') { -        if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { -          info += ' You likely forgot to export your component from the file ' + "it's defined in."; -        } -      } -      info += getDeclarationErrorAddendum(element._owner); -      !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0; -    } - -    // Special case string values -    if (typeof element.type === 'string') { -      instance = ReactHostComponent.createInternalComponent(element); -    } else if (isInternalComponentType(element.type)) { -      // This is temporarily available for custom components that are not string -      // representations. I.e. ART. Once those are updated to use the string -      // representation, we can drop this code path. -      instance = new element.type(element); - -      // We renamed this. Allow the old name for compat. :( -      if (!instance.getHostNode) { -        instance.getHostNode = instance.getNativeNode; -      } -    } else { -      instance = new ReactCompositeComponentWrapper(element); -    } -  } else if (typeof node === 'string' || typeof node === 'number') { -    instance = ReactHostComponent.createInstanceForText(node); -  } else { -    !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0; -  } - -  if (process.env.NODE_ENV !== 'production') { -    process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0; -  } - -  // These two fields are used by the DOM and ART diffing algorithms -  // respectively. Instead of using expandos on components, we should be -  // storing the state needed by the diffing algorithms elsewhere. -  instance._mountIndex = 0; -  instance._mountImage = null; - -  if (process.env.NODE_ENV !== 'production') { -    instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0; -  } - -  // Internal instances should fully constructed at this point, so they should -  // not get any new fields added to them at this point. -  if (process.env.NODE_ENV !== 'production') { -    if (Object.preventExtensions) { -      Object.preventExtensions(instance); -    } -  } - -  return instance; -} - -_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, { -  _instantiateReactComponent: instantiateReactComponent -}); - -module.exports = instantiateReactComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/isEventSupported.js b/node_modules/react-dom/lib/isEventSupported.js deleted file mode 100644 index f80d7ebe6..000000000 --- a/node_modules/react-dom/lib/isEventSupported.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); - -var useHasFeature; -if (ExecutionEnvironment.canUseDOM) { -  useHasFeature = document.implementation && document.implementation.hasFeature && -  // always returns true in newer browsers as per the standard. -  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature -  document.implementation.hasFeature('', '') !== true; -} - -/** - * Checks if an event is supported in the current execution environment. - * - * NOTE: This will not work correctly for non-generic events such as `change`, - * `reset`, `load`, `error`, and `select`. - * - * Borrows from Modernizr. - * - * @param {string} eventNameSuffix Event name, e.g. "click". - * @param {?boolean} capture Check if the capture phase is supported. - * @return {boolean} True if the event is supported. - * @internal - * @license Modernizr 3.0.0pre (Custom Build) | MIT - */ -function isEventSupported(eventNameSuffix, capture) { -  if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) { -    return false; -  } - -  var eventName = 'on' + eventNameSuffix; -  var isSupported = eventName in document; - -  if (!isSupported) { -    var element = document.createElement('div'); -    element.setAttribute(eventName, 'return;'); -    isSupported = typeof element[eventName] === 'function'; -  } - -  if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') { -    // This is the only way to test support for the `wheel` event in IE9+. -    isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); -  } - -  return isSupported; -} - -module.exports = isEventSupported;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/isTextInputElement.js b/node_modules/react-dom/lib/isTextInputElement.js deleted file mode 100644 index 52276a38e..000000000 --- a/node_modules/react-dom/lib/isTextInputElement.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ - -'use strict'; - -/** - * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary - */ - -var supportedInputTypes = { -  color: true, -  date: true, -  datetime: true, -  'datetime-local': true, -  email: true, -  month: true, -  number: true, -  password: true, -  range: true, -  search: true, -  tel: true, -  text: true, -  time: true, -  url: true, -  week: true -}; - -function isTextInputElement(elem) { -  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); - -  if (nodeName === 'input') { -    return !!supportedInputTypes[elem.type]; -  } - -  if (nodeName === 'textarea') { -    return true; -  } - -  return false; -} - -module.exports = isTextInputElement;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/lowPriorityWarning.js b/node_modules/react-dom/lib/lowPriorityWarning.js deleted file mode 100644 index 8c0f58bff..000000000 --- a/node_modules/react-dom/lib/lowPriorityWarning.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Forked from fbjs/warning: - * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js - * - * Only change is we use console.warn instead of console.error, - * and do nothing when 'console' is not supported. - * This really simplifies the code. - * --- - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var lowPriorityWarning = function () {}; - -if (process.env.NODE_ENV !== 'production') { -  var printWarning = function (format) { -    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { -      args[_key - 1] = arguments[_key]; -    } - -    var argIndex = 0; -    var message = 'Warning: ' + format.replace(/%s/g, function () { -      return args[argIndex++]; -    }); -    if (typeof console !== 'undefined') { -      console.warn(message); -    } -    try { -      // --- Welcome to debugging React --- -      // This error was thrown as a convenience so that you can use this stack -      // to find the callsite that caused this warning to fire. -      throw new Error(message); -    } catch (x) {} -  }; - -  lowPriorityWarning = function (condition, format) { -    if (format === undefined) { -      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); -    } -    if (!condition) { -      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { -        args[_key2 - 2] = arguments[_key2]; -      } - -      printWarning.apply(undefined, [format].concat(args)); -    } -  }; -} - -module.exports = lowPriorityWarning;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/quoteAttributeValueForBrowser.js b/node_modules/react-dom/lib/quoteAttributeValueForBrowser.js deleted file mode 100644 index ce78152cd..000000000 --- a/node_modules/react-dom/lib/quoteAttributeValueForBrowser.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var escapeTextContentForBrowser = require('./escapeTextContentForBrowser'); - -/** - * Escapes attribute value to prevent scripting attacks. - * - * @param {*} value Value to escape. - * @return {string} An escaped string. - */ -function quoteAttributeValueForBrowser(value) { -  return '"' + escapeTextContentForBrowser(value) + '"'; -} - -module.exports = quoteAttributeValueForBrowser;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/reactComponentExpect.js b/node_modules/react-dom/lib/reactComponentExpect.js deleted file mode 100644 index af3ba91cf..000000000 --- a/node_modules/react-dom/lib/reactComponentExpect.js +++ /dev/null @@ -1,216 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'), -    _assign = require('object-assign'); - -var ReactInstanceMap = require('./ReactInstanceMap'); -var ReactTestUtils = require('./ReactTestUtils'); - -var invariant = require('fbjs/lib/invariant'); - -function reactComponentExpect(instance) { -  if (instance instanceof reactComponentExpectInternal) { -    return instance; -  } - -  if (!(this instanceof reactComponentExpect)) { -    return new reactComponentExpect(instance); -  } - -  expect(instance).not.toBeNull(); -  expect(instance).not.toBeUndefined(); - -  !ReactTestUtils.isCompositeComponent(instance) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'reactComponentExpect(...): instance must be a composite component') : _prodInvariant('15') : void 0; -  var internalInstance = ReactInstanceMap.get(instance); - -  expect(typeof internalInstance).toBe('object'); -  expect(typeof internalInstance.constructor).toBe('function'); -  expect(ReactTestUtils.isElement(internalInstance)).toBe(false); - -  return new reactComponentExpectInternal(internalInstance); -} - -function reactComponentExpectInternal(internalInstance) { -  this._instance = internalInstance; -} - -_assign(reactComponentExpectInternal.prototype, { -  // Getters ------------------------------------------------------------------- - -  /** -   * @instance: Retrieves the backing instance. -   */ -  instance: function () { -    return this._instance.getPublicInstance(); -  }, - -  /** -   * There are two types of components in the world. -   * - A component created via React.createClass() - Has a single child -   *   subComponent - the return value from the .render() function. This -   *   function @subComponent expects that this._instance is component created -   *   with React.createClass(). -   * - A primitive DOM component - which has many renderedChildren, each of -   *   which may have a name that is unique with respect to its siblings. This -   *   method will fail if this._instance is a primitive component. -   * -   * TL;DR: An instance may have a subComponent (this._renderedComponent) or -   * renderedChildren, but never both. Neither will actually show up until you -   * render the component (simply instantiating is not enough). -   */ -  expectRenderedChild: function () { -    this.toBeCompositeComponent(); -    var child = this._instance._renderedComponent; -    // TODO: Hide ReactEmptyComponent instances here? -    return new reactComponentExpectInternal(child); -  }, - -  /** -   * The nth child of a DOMish component instance that is not falsy. -   */ -  expectRenderedChildAt: function (childIndex) { -    // Currently only dom components have arrays of children, but that will -    // change soon. -    this.toBeDOMComponent(); -    var renderedChildren = this._instance._renderedChildren || {}; -    for (var name in renderedChildren) { -      if (!renderedChildren.hasOwnProperty(name)) { -        continue; -      } -      if (renderedChildren[name]) { -        if (renderedChildren[name]._mountIndex === childIndex) { -          return new reactComponentExpectInternal(renderedChildren[name]); -        } -      } -    } -    throw new Error('Child:' + childIndex + ' is not found'); -  }, - -  toBeDOMComponentWithChildCount: function (count) { -    this.toBeDOMComponent(); -    var renderedChildren = this._instance._renderedChildren; -    expect(renderedChildren).toBeTruthy(); -    expect(Object.keys(renderedChildren).length).toBe(count); -    return this; -  }, - -  toBeDOMComponentWithNoChildren: function () { -    this.toBeDOMComponent(); -    expect(this._instance._renderedChildren).toBeFalsy(); -    return this; -  }, - -  // Matchers ------------------------------------------------------------------ - -  toBeComponentOfType: function (constructor) { -    expect(this._instance._currentElement.type === constructor).toBe(true); -    return this; -  }, - -  /** -   * A component that is created with React.createClass. Just duck typing -   * here. -   */ -  toBeCompositeComponent: function () { -    expect(typeof this.instance() === 'object' && typeof this.instance().render === 'function').toBe(true); -    return this; -  }, - -  toBeCompositeComponentWithType: function (constructor) { -    this.toBeCompositeComponent(); -    expect(this._instance._currentElement.type === constructor).toBe(true); -    return this; -  }, - -  toBeTextComponentWithValue: function (val) { -    var elementType = typeof this._instance._currentElement; -    expect(elementType === 'string' || elementType === 'number').toBe(true); -    expect(this._instance._stringText).toBe(val); -    return this; -  }, - -  toBeEmptyComponent: function () { -    var element = this._instance._currentElement; -    return element === null || element === false; -  }, - -  toBePresent: function () { -    expect(this.instance()).toBeTruthy(); -    return this; -  }, - -  /** -   * A terminal type of component representing some virtual dom node. Just duck -   * typing here. -   */ -  toBeDOMComponent: function () { -    expect(ReactTestUtils.isDOMComponent(this.instance())).toBe(true); -    return this; -  }, - -  /** -   * @deprecated -   * @see toBeComponentOfType -   */ -  toBeDOMComponentWithTag: function (tag) { -    this.toBeDOMComponent(); -    expect(this.instance().tagName).toBe(tag.toUpperCase()); -    return this; -  }, - -  /** -   * Check that internal state values are equal to a state of expected values. -   */ -  scalarStateEqual: function (stateNameToExpectedValue) { -    expect(this.instance()).toBeTruthy(); -    for (var stateName in stateNameToExpectedValue) { -      if (!stateNameToExpectedValue.hasOwnProperty(stateName)) { -        continue; -      } -      expect(this.instance().state[stateName]).toEqual(stateNameToExpectedValue[stateName]); -    } -    return this; -  }, - -  /** -   * Check a set of props are equal to a set of expected values - only works -   * with scalars. -   */ -  scalarPropsEqual: function (propNameToExpectedValue) { -    expect(this.instance()).toBeTruthy(); -    for (var propName in propNameToExpectedValue) { -      if (!propNameToExpectedValue.hasOwnProperty(propName)) { -        continue; -      } -      expect(this.instance().props[propName]).toEqual(propNameToExpectedValue[propName]); -    } -    return this; -  }, - -  /** -   * Check a set of props are equal to a set of expected values - only works -   * with scalars. -   */ -  scalarContextEqual: function (contextNameToExpectedValue) { -    expect(this.instance()).toBeTruthy(); -    for (var contextName in contextNameToExpectedValue) { -      if (!contextNameToExpectedValue.hasOwnProperty(contextName)) { -        continue; -      } -      expect(this.instance().context[contextName]).toEqual(contextNameToExpectedValue[contextName]); -    } -    return this; -  } -}); - -module.exports = reactComponentExpect;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/reactProdInvariant.js b/node_modules/react-dom/lib/reactProdInvariant.js deleted file mode 100644 index b90f9eb06..000000000 --- a/node_modules/react-dom/lib/reactProdInvariant.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - *  - */ -'use strict'; - -/** - * WARNING: DO NOT manually require this module. - * This is a replacement for `invariant(...)` used by the error code system - * and will _only_ be required by the corresponding babel pass. - * It always throws. - */ - -function reactProdInvariant(code) { -  var argCount = arguments.length - 1; - -  var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; - -  for (var argIdx = 0; argIdx < argCount; argIdx++) { -    message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); -  } - -  message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; - -  var error = new Error(message); -  error.name = 'Invariant Violation'; -  error.framesToPop = 1; // we don't care about reactProdInvariant's own frame - -  throw error; -} - -module.exports = reactProdInvariant;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/renderSubtreeIntoContainer.js b/node_modules/react-dom/lib/renderSubtreeIntoContainer.js deleted file mode 100644 index 11e9263f2..000000000 --- a/node_modules/react-dom/lib/renderSubtreeIntoContainer.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ReactMount = require('./ReactMount'); - -module.exports = ReactMount.renderSubtreeIntoContainer;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/setInnerHTML.js b/node_modules/react-dom/lib/setInnerHTML.js deleted file mode 100644 index 23488df6f..000000000 --- a/node_modules/react-dom/lib/setInnerHTML.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var DOMNamespaces = require('./DOMNamespaces'); - -var WHITESPACE_TEST = /^[ \r\n\t\f]/; -var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/; - -var createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction'); - -// SVG temp container for IE lacking innerHTML -var reusableSVGContainer; - -/** - * Set the innerHTML property of a node, ensuring that whitespace is preserved - * even in IE8. - * - * @param {DOMElement} node - * @param {string} html - * @internal - */ -var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) { -  // IE does not have innerHTML for SVG nodes, so instead we inject the -  // new markup in a temp node and then move the child nodes across into -  // the target node -  if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) { -    reusableSVGContainer = reusableSVGContainer || document.createElement('div'); -    reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>'; -    var svgNode = reusableSVGContainer.firstChild; -    while (svgNode.firstChild) { -      node.appendChild(svgNode.firstChild); -    } -  } else { -    node.innerHTML = html; -  } -}); - -if (ExecutionEnvironment.canUseDOM) { -  // IE8: When updating a just created node with innerHTML only leading -  // whitespace is removed. When updating an existing node with innerHTML -  // whitespace in root TextNodes is also collapsed. -  // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html - -  // Feature detection; only IE8 is known to behave improperly like this. -  var testElement = document.createElement('div'); -  testElement.innerHTML = ' '; -  if (testElement.innerHTML === '') { -    setInnerHTML = function (node, html) { -      // Magic theory: IE8 supposedly differentiates between added and updated -      // nodes when processing innerHTML, innerHTML on updated nodes suffers -      // from worse whitespace behavior. Re-adding a node like this triggers -      // the initial and more favorable whitespace behavior. -      // TODO: What to do on a detached node? -      if (node.parentNode) { -        node.parentNode.replaceChild(node, node); -      } - -      // We also implement a workaround for non-visible tags disappearing into -      // thin air on IE8, this only happens if there is no visible text -      // in-front of the non-visible tags. Piggyback on the whitespace fix -      // and simply check if any non-visible tags appear in the source. -      if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) { -        // Recover leading whitespace by temporarily prepending any character. -        // \uFEFF has the potential advantage of being zero-width/invisible. -        // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode -        // in hopes that this is preserved even if "\uFEFF" is transformed to -        // the actual Unicode character (by Babel, for example). -        // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216 -        node.innerHTML = String.fromCharCode(0xfeff) + html; - -        // deleteData leaves an empty `TextNode` which offsets the index of all -        // children. Definitely want to avoid this. -        var textNode = node.firstChild; -        if (textNode.data.length === 1) { -          node.removeChild(textNode); -        } else { -          textNode.deleteData(0, 1); -        } -      } else { -        node.innerHTML = html; -      } -    }; -  } -  testElement = null; -} - -module.exports = setInnerHTML;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/setTextContent.js b/node_modules/react-dom/lib/setTextContent.js deleted file mode 100644 index f63309391..000000000 --- a/node_modules/react-dom/lib/setTextContent.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); -var escapeTextContentForBrowser = require('./escapeTextContentForBrowser'); -var setInnerHTML = require('./setInnerHTML'); - -/** - * Set the textContent property of a node, ensuring that whitespace is preserved - * even in IE8. innerText is a poor substitute for textContent and, among many - * issues, inserts <br> instead of the literal newline chars. innerHTML behaves - * as it should. - * - * @param {DOMElement} node - * @param {string} text - * @internal - */ -var setTextContent = function (node, text) { -  if (text) { -    var firstChild = node.firstChild; - -    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) { -      firstChild.nodeValue = text; -      return; -    } -  } -  node.textContent = text; -}; - -if (ExecutionEnvironment.canUseDOM) { -  if (!('textContent' in document.documentElement)) { -    setTextContent = function (node, text) { -      if (node.nodeType === 3) { -        node.nodeValue = text; -        return; -      } -      setInnerHTML(node, escapeTextContentForBrowser(text)); -    }; -  } -} - -module.exports = setTextContent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/shouldUpdateReactComponent.js b/node_modules/react-dom/lib/shouldUpdateReactComponent.js deleted file mode 100644 index d39b948be..000000000 --- a/node_modules/react-dom/lib/shouldUpdateReactComponent.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -/** - * Given a `prevElement` and `nextElement`, determines if the existing - * instance should be updated as opposed to being destroyed or replaced by a new - * instance. Both arguments are elements. This ensures that this logic can - * operate on stateless trees without any backing instance. - * - * @param {?object} prevElement - * @param {?object} nextElement - * @return {boolean} True if the existing instance should be updated. - * @protected - */ - -function shouldUpdateReactComponent(prevElement, nextElement) { -  var prevEmpty = prevElement === null || prevElement === false; -  var nextEmpty = nextElement === null || nextElement === false; -  if (prevEmpty || nextEmpty) { -    return prevEmpty === nextEmpty; -  } - -  var prevType = typeof prevElement; -  var nextType = typeof nextElement; -  if (prevType === 'string' || prevType === 'number') { -    return nextType === 'string' || nextType === 'number'; -  } else { -    return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key; -  } -} - -module.exports = shouldUpdateReactComponent;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/traverseAllChildren.js b/node_modules/react-dom/lib/traverseAllChildren.js deleted file mode 100644 index 6970a0cc3..000000000 --- a/node_modules/react-dom/lib/traverseAllChildren.js +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _prodInvariant = require('./reactProdInvariant'); - -var ReactCurrentOwner = require('react/lib/ReactCurrentOwner'); -var REACT_ELEMENT_TYPE = require('./ReactElementSymbol'); - -var getIteratorFn = require('./getIteratorFn'); -var invariant = require('fbjs/lib/invariant'); -var KeyEscapeUtils = require('./KeyEscapeUtils'); -var warning = require('fbjs/lib/warning'); - -var SEPARATOR = '.'; -var SUBSEPARATOR = ':'; - -/** - * This is inlined from ReactElement since this file is shared between - * isomorphic and renderers. We could extract this to a - * - */ - -/** - * TODO: Test that a single child and an array with one item have the same key - * pattern. - */ - -var didWarnAboutMaps = false; - -/** - * Generate a key string that identifies a component within a set. - * - * @param {*} component A component that could contain a manual key. - * @param {number} index Index that is used if a manual key is not provided. - * @return {string} - */ -function getComponentKey(component, index) { -  // Do some typechecking here since we call this blindly. We want to ensure -  // that we don't block potential future ES APIs. -  if (component && typeof component === 'object' && component.key != null) { -    // Explicit key -    return KeyEscapeUtils.escape(component.key); -  } -  // Implicit key determined by the index in the set -  return index.toString(36); -} - -/** - * @param {?*} children Children tree container. - * @param {!string} nameSoFar Name of the key path so far. - * @param {!function} callback Callback to invoke with each child found. - * @param {?*} traverseContext Used to pass information throughout the traversal - * process. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { -  var type = typeof children; - -  if (type === 'undefined' || type === 'boolean') { -    // All of the above are perceived as null. -    children = null; -  } - -  if (children === null || type === 'string' || type === 'number' || -  // The following is inlined from ReactElement. This means we can optimize -  // some checks. React Fiber also inlines this logic for similar purposes. -  type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { -    callback(traverseContext, children, -    // If it's the only child, treat the name as if it was wrapped in an array -    // so that it's consistent if the number of children grows. -    nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); -    return 1; -  } - -  var child; -  var nextName; -  var subtreeCount = 0; // Count of children found in the current subtree. -  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; - -  if (Array.isArray(children)) { -    for (var i = 0; i < children.length; i++) { -      child = children[i]; -      nextName = nextNamePrefix + getComponentKey(child, i); -      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); -    } -  } else { -    var iteratorFn = getIteratorFn(children); -    if (iteratorFn) { -      var iterator = iteratorFn.call(children); -      var step; -      if (iteratorFn !== children.entries) { -        var ii = 0; -        while (!(step = iterator.next()).done) { -          child = step.value; -          nextName = nextNamePrefix + getComponentKey(child, ii++); -          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); -        } -      } else { -        if (process.env.NODE_ENV !== 'production') { -          var mapsAsChildrenAddendum = ''; -          if (ReactCurrentOwner.current) { -            var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); -            if (mapsAsChildrenOwnerName) { -              mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; -            } -          } -          process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; -          didWarnAboutMaps = true; -        } -        // Iterator will provide entry [k,v] tuples rather than values. -        while (!(step = iterator.next()).done) { -          var entry = step.value; -          if (entry) { -            child = entry[1]; -            nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); -            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); -          } -        } -      } -    } else if (type === 'object') { -      var addendum = ''; -      if (process.env.NODE_ENV !== 'production') { -        addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; -        if (children._isReactElement) { -          addendum = " It looks like you're using an element created by a different " + 'version of React. Make sure to use only one copy of React.'; -        } -        if (ReactCurrentOwner.current) { -          var name = ReactCurrentOwner.current.getName(); -          if (name) { -            addendum += ' Check the render method of `' + name + '`.'; -          } -        } -      } -      var childrenString = String(children); -      !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; -    } -  } - -  return subtreeCount; -} - -/** - * Traverses children that are typically specified as `props.children`, but - * might also be specified through attributes: - * - * - `traverseAllChildren(this.props.children, ...)` - * - `traverseAllChildren(this.props.leftPanelChildren, ...)` - * - * The `traverseContext` is an optional argument that is passed through the - * entire traversal. It can be used to store accumulations or anything else that - * the callback might find relevant. - * - * @param {?*} children Children tree object. - * @param {!function} callback To invoke upon traversing each child. - * @param {?*} traverseContext Context for traversal. - * @return {!number} The number of children in this subtree. - */ -function traverseAllChildren(children, callback, traverseContext) { -  if (children == null) { -    return 0; -  } - -  return traverseAllChildrenImpl(children, '', callback, traverseContext); -} - -module.exports = traverseAllChildren;
\ No newline at end of file diff --git a/node_modules/react-dom/lib/validateDOMNesting.js b/node_modules/react-dom/lib/validateDOMNesting.js deleted file mode 100644 index ec74f513a..000000000 --- a/node_modules/react-dom/lib/validateDOMNesting.js +++ /dev/null @@ -1,370 +0,0 @@ -/** - * Copyright 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -'use strict'; - -var _assign = require('object-assign'); - -var emptyFunction = require('fbjs/lib/emptyFunction'); -var warning = require('fbjs/lib/warning'); - -var validateDOMNesting = emptyFunction; - -if (process.env.NODE_ENV !== 'production') { -  // This validation code was written based on the HTML5 parsing spec: -  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope -  // -  // Note: this does not catch all invalid nesting, nor does it try to (as it's -  // not clear what practical benefit doing so provides); instead, we warn only -  // for cases where the parser will give a parse tree differing from what React -  // intended. For example, <b><div></div></b> is invalid but we don't warn -  // because it still parses correctly; we do warn for other cases like nested -  // <p> tags where the beginning of the second element implicitly closes the -  // first, causing a confusing mess. - -  // https://html.spec.whatwg.org/multipage/syntax.html#special -  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; - -  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope -  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', - -  // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point -  // TODO: Distinguish by namespace here -- for <title>, including it here -  // errs on the side of fewer warnings -  'foreignObject', 'desc', 'title']; - -  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope -  var buttonScopeTags = inScopeTags.concat(['button']); - -  // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags -  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt']; - -  var emptyAncestorInfo = { -    current: null, - -    formTag: null, -    aTagInScope: null, -    buttonTagInScope: null, -    nobrTagInScope: null, -    pTagInButtonScope: null, - -    listItemTagAutoclosing: null, -    dlItemTagAutoclosing: null -  }; - -  var updatedAncestorInfo = function (oldInfo, tag, instance) { -    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo); -    var info = { tag: tag, instance: instance }; - -    if (inScopeTags.indexOf(tag) !== -1) { -      ancestorInfo.aTagInScope = null; -      ancestorInfo.buttonTagInScope = null; -      ancestorInfo.nobrTagInScope = null; -    } -    if (buttonScopeTags.indexOf(tag) !== -1) { -      ancestorInfo.pTagInButtonScope = null; -    } - -    // See rules for 'li', 'dd', 'dt' start tags in -    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody -    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') { -      ancestorInfo.listItemTagAutoclosing = null; -      ancestorInfo.dlItemTagAutoclosing = null; -    } - -    ancestorInfo.current = info; - -    if (tag === 'form') { -      ancestorInfo.formTag = info; -    } -    if (tag === 'a') { -      ancestorInfo.aTagInScope = info; -    } -    if (tag === 'button') { -      ancestorInfo.buttonTagInScope = info; -    } -    if (tag === 'nobr') { -      ancestorInfo.nobrTagInScope = info; -    } -    if (tag === 'p') { -      ancestorInfo.pTagInButtonScope = info; -    } -    if (tag === 'li') { -      ancestorInfo.listItemTagAutoclosing = info; -    } -    if (tag === 'dd' || tag === 'dt') { -      ancestorInfo.dlItemTagAutoclosing = info; -    } - -    return ancestorInfo; -  }; - -  /** -   * Returns whether -   */ -  var isTagValidWithParent = function (tag, parentTag) { -    // First, let's check if we're in an unusual parsing mode... -    switch (parentTag) { -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect -      case 'select': -        return tag === 'option' || tag === 'optgroup' || tag === '#text'; -      case 'optgroup': -        return tag === 'option' || tag === '#text'; -      // Strictly speaking, seeing an <option> doesn't mean we're in a <select> -      // but -      case 'option': -        return tag === '#text'; -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption -      // No special behavior since these rules fall back to "in body" mode for -      // all except special table nodes which cause bad parsing behavior anyway. - -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr -      case 'tr': -        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template'; -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody -      case 'tbody': -      case 'thead': -      case 'tfoot': -        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template'; -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup -      case 'colgroup': -        return tag === 'col' || tag === 'template'; -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable -      case 'table': -        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template'; -      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead -      case 'head': -        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template'; -      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element -      case 'html': -        return tag === 'head' || tag === 'body'; -      case '#document': -        return tag === 'html'; -    } - -    // Probably in the "in body" parsing mode, so we outlaw only tag combos -    // where the parsing rules cause implicit opens or closes to be added. -    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody -    switch (tag) { -      case 'h1': -      case 'h2': -      case 'h3': -      case 'h4': -      case 'h5': -      case 'h6': -        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6'; - -      case 'rp': -      case 'rt': -        return impliedEndTags.indexOf(parentTag) === -1; - -      case 'body': -      case 'caption': -      case 'col': -      case 'colgroup': -      case 'frame': -      case 'head': -      case 'html': -      case 'tbody': -      case 'td': -      case 'tfoot': -      case 'th': -      case 'thead': -      case 'tr': -        // These tags are only valid with a few parents that have special child -        // parsing rules -- if we're down here, then none of those matched and -        // so we allow it only if we don't know what the parent is, as all other -        // cases are invalid. -        return parentTag == null; -    } - -    return true; -  }; - -  /** -   * Returns whether -   */ -  var findInvalidAncestorForTag = function (tag, ancestorInfo) { -    switch (tag) { -      case 'address': -      case 'article': -      case 'aside': -      case 'blockquote': -      case 'center': -      case 'details': -      case 'dialog': -      case 'dir': -      case 'div': -      case 'dl': -      case 'fieldset': -      case 'figcaption': -      case 'figure': -      case 'footer': -      case 'header': -      case 'hgroup': -      case 'main': -      case 'menu': -      case 'nav': -      case 'ol': -      case 'p': -      case 'section': -      case 'summary': -      case 'ul': -      case 'pre': -      case 'listing': -      case 'table': -      case 'hr': -      case 'xmp': -      case 'h1': -      case 'h2': -      case 'h3': -      case 'h4': -      case 'h5': -      case 'h6': -        return ancestorInfo.pTagInButtonScope; - -      case 'form': -        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope; - -      case 'li': -        return ancestorInfo.listItemTagAutoclosing; - -      case 'dd': -      case 'dt': -        return ancestorInfo.dlItemTagAutoclosing; - -      case 'button': -        return ancestorInfo.buttonTagInScope; - -      case 'a': -        // Spec says something about storing a list of markers, but it sounds -        // equivalent to this check. -        return ancestorInfo.aTagInScope; - -      case 'nobr': -        return ancestorInfo.nobrTagInScope; -    } - -    return null; -  }; - -  /** -   * Given a ReactCompositeComponent instance, return a list of its recursive -   * owners, starting at the root and ending with the instance itself. -   */ -  var findOwnerStack = function (instance) { -    if (!instance) { -      return []; -    } - -    var stack = []; -    do { -      stack.push(instance); -    } while (instance = instance._currentElement._owner); -    stack.reverse(); -    return stack; -  }; - -  var didWarn = {}; - -  validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) { -    ancestorInfo = ancestorInfo || emptyAncestorInfo; -    var parentInfo = ancestorInfo.current; -    var parentTag = parentInfo && parentInfo.tag; - -    if (childText != null) { -      process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0; -      childTag = '#text'; -    } - -    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo; -    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo); -    var problematic = invalidParent || invalidAncestor; - -    if (problematic) { -      var ancestorTag = problematic.tag; -      var ancestorInstance = problematic.instance; - -      var childOwner = childInstance && childInstance._currentElement._owner; -      var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner; - -      var childOwners = findOwnerStack(childOwner); -      var ancestorOwners = findOwnerStack(ancestorOwner); - -      var minStackLen = Math.min(childOwners.length, ancestorOwners.length); -      var i; - -      var deepestCommon = -1; -      for (i = 0; i < minStackLen; i++) { -        if (childOwners[i] === ancestorOwners[i]) { -          deepestCommon = i; -        } else { -          break; -        } -      } - -      var UNKNOWN = '(unknown)'; -      var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) { -        return inst.getName() || UNKNOWN; -      }); -      var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) { -        return inst.getName() || UNKNOWN; -      }); -      var ownerInfo = [].concat( -      // If the parent and child instances have a common owner ancestor, start -      // with that -- otherwise we just start with the parent's owners. -      deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag, -      // If we're warning about an invalid (non-parent) ancestry, add '...' -      invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > '); - -      var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo; -      if (didWarn[warnKey]) { -        return; -      } -      didWarn[warnKey] = true; - -      var tagDisplayName = childTag; -      var whitespaceInfo = ''; -      if (childTag === '#text') { -        if (/\S/.test(childText)) { -          tagDisplayName = 'Text nodes'; -        } else { -          tagDisplayName = 'Whitespace text nodes'; -          whitespaceInfo = " Make sure you don't have any extra whitespace between tags on " + 'each line of your source code.'; -        } -      } else { -        tagDisplayName = '<' + childTag + '>'; -      } - -      if (invalidParent) { -        var info = ''; -        if (ancestorTag === 'table' && childTag === 'tr') { -          info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.'; -        } -        process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0; -      } else { -        process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0; -      } -    } -  }; - -  validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo; - -  // For testing -  validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) { -    ancestorInfo = ancestorInfo || emptyAncestorInfo; -    var parentInfo = ancestorInfo.current; -    var parentTag = parentInfo && parentInfo.tag; -    return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo); -  }; -} - -module.exports = validateDOMNesting;
\ No newline at end of file  | 
