{"version":3,"sources":["node_modules\\react-dom\\lib\\ReactDOMComponent.js"],"names":["_prodInvariant","require","_assign","AutoFocusUtils","CSSPropertyOperations","DOMLazyTree","DOMNamespaces","DOMProperty","DOMPropertyOperations","EventPluginHub","EventPluginRegistry","ReactBrowserEventEmitter","ReactDOMComponentFlags","ReactDOMComponentTree","ReactDOMInput","ReactDOMOption","ReactDOMSelect","ReactDOMTextarea","ReactInstrumentation","ReactMultiChild","ReactServerRenderingTransaction","emptyFunction","escapeTextContentForBrowser","invariant","isEventSupported","shallowEqual","inputValueTracking","validateDOMNesting","warning","Flags","deleteListener","getNode","getNodeFromInstance","listenTo","registrationNameModules","CONTENT_TYPES","string","number","STYLE","HTML","RESERVED_PROPS","children","dangerouslySetInnerHTML","suppressContentEditableWarning","DOC_FRAGMENT_TYPE","getDeclarationErrorAddendum","internalInstance","owner","_currentElement","_owner","name","getName","friendlyStringify","obj","Array","isArray","map","join","pairs","key","Object","prototype","hasOwnProperty","call","keyEscaped","test","JSON","stringify","push","String","styleMutationWarning","checkAndWarnForMutatedStyle","style1","style2","component","componentName","_tag","ownerName","hash","process","env","NODE_ENV","assertValidProps","props","voidElementTags","innerHTML","contentEditable","onFocusIn","onFocusOut","style","enqueuePutListener","inst","registrationName","listener","transaction","containerInfo","_hostContainerInfo","isDocumentFragment","_node","nodeType","doc","_ownerDocument","getReactMountReady","enqueue","putListener","listenerToPut","inputPostMount","postMountWrapper","textareaPostMount","optionPostMount","setAndValidateContentChildDev","content","hasExistingContent","_contentDebugID","debugID","_debugID","contentDebugID","debugTool","onUnmountComponent","_ancestorInfo","onBeforeUpdateComponent","onUpdateComponent","onBeforeMountComponent","onMountComponent","onSetChildren","mediaEvents","topAbort","topCanPlay","topCanPlayThrough","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topLoadedData","topLoadedMetadata","topLoadStart","topPause","topPlay","topPlaying","topProgress","topRateChange","topSeeked","topSeeking","topStalled","topSuspend","topTimeUpdate","topVolumeChange","topWaiting","trackInputValue","track","trapBubbledEventsLocal","_rootNodeID","node","_wrapperState","listeners","trapBubbledEvent","event","postUpdateSelectWrapper","postUpdateWrapper","omittedCloseTags","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","wbr","newlineEatingTags","listing","pre","textarea","menuitem","VALID_TAG_REGEX","validatedTagCache","validateDangerousTag","tag","isCustomComponent","tagName","indexOf","is","globalIdCounter","ReactDOMComponent","element","type","toLowerCase","_namespaceURI","_renderedChildren","_previousStyle","_previousStyleCopy","_hostNode","_hostParent","_domID","_topLevelWrapper","_flags","displayName","Mixin","mountComponent","hostParent","hostContainerInfo","context","_idCounter","mountWrapper","getHostProps","namespaceURI","parentTag","svg","html","mathml","parentInfo","updatedAncestorInfo","mountImage","useCreateElement","ownerDocument","el","div","createElement","removeChild","firstChild","createElementNS","precacheNode","hasCachedChildNodes","setAttributeForRoot","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","autoFocus","focusDOMComponent","ret","propKey","propValue","createMarkupForStyles","markup","createMarkupForCustomAttribute","createMarkupForProperty","renderToStaticMarkup","createMarkupForRoot","createMarkupForID","__html","contentToUse","childrenToUse","mountImages","mountChildren","charAt","queueHTML","queueText","i","length","queueChild","receiveComponent","nextElement","prevElement","updateComponent","lastProps","nextProps","_updateDOMChildren","updateWrapper","styleName","styleUpdates","lastStyle","deleteValueForAttribute","properties","isCustomAttribute","deleteValueForProperty","nextProp","lastProp","undefined","setValueForAttribute","setValueForProperty","setValueForStyles","lastContent","nextContent","lastHtml","nextHtml","lastChildren","nextChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateChildren","updateTextContent","updateMarkup","getHostNode","unmountComponent","safely","remove","stopTracking","unmountChildren","uncacheNode","deleteAllListeners","getPublicInstance","module","exports"],"mappings":"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","file":"ReactDOMComponent.js","sourceRoot":"d:/Work/Office/react-native-on-web/cli/tmpl/project","sourcesContent":["/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n    _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar inputValueTracking = require('./inputValueTracking');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n  children: null,\n  dangerouslySetInnerHTML: null,\n  suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n  if (internalInstance) {\n    var owner = internalInstance._currentElement._owner || null;\n    if (owner) {\n      var name = owner.getName();\n      if (name) {\n        return ' This DOM node was rendered by `' + name + '`.';\n      }\n    }\n  }\n  return '';\n}\n\nfunction friendlyStringify(obj) {\n  if (typeof obj === 'object') {\n    if (Array.isArray(obj)) {\n      return '[' + obj.map(friendlyStringify).join(', ') + ']';\n    } else {\n      var pairs = [];\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n          pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n        }\n      }\n      return '{' + pairs.join(', ') + '}';\n    }\n  } else if (typeof obj === 'string') {\n    return JSON.stringify(obj);\n  } else if (typeof obj === 'function') {\n    return '[function object]';\n  }\n  // Differs from JSON.stringify in that undefined because undefined and that\n  // inf and nan don't become null\n  return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n  if (style1 == null || style2 == null) {\n    return;\n  }\n  if (shallowEqual(style1, style2)) {\n    return;\n  }\n\n  var componentName = component._tag;\n  var owner = component._currentElement._owner;\n  var ownerName;\n  if (owner) {\n    ownerName = owner.getName();\n  }\n\n  var hash = ownerName + '|' + componentName;\n\n  if (styleMutationWarning.hasOwnProperty(hash)) {\n    return;\n  }\n\n  styleMutationWarning[hash] = true;\n\n  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;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n  if (!props) {\n    return;\n  }\n  // Note the use of `==` which checks for null or undefined.\n  if (voidElementTags[component._tag]) {\n    !(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;\n  }\n  if (props.dangerouslySetInnerHTML != null) {\n    !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n    !(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;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    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;\n    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;\n    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;\n  }\n  !(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;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n  if (transaction instanceof ReactServerRenderingTransaction) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // IE8 has no API for event capturing and the `onScroll` event doesn't\n    // bubble.\n    process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n  }\n  var containerInfo = inst._hostContainerInfo;\n  var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n  var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n  listenTo(registrationName, doc);\n  transaction.getReactMountReady().enqueue(putListener, {\n    inst: inst,\n    registrationName: registrationName,\n    listener: listener\n  });\n}\n\nfunction putListener() {\n  var listenerToPut = this;\n  EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n  var inst = this;\n  ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n  var inst = this;\n  ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n  var inst = this;\n  ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n  setAndValidateContentChildDev = function (content) {\n    var hasExistingContent = this._contentDebugID != null;\n    var debugID = this._debugID;\n    // This ID represents the inlined child that has no backing instance:\n    var contentDebugID = -debugID;\n\n    if (content == null) {\n      if (hasExistingContent) {\n        ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n      }\n      this._contentDebugID = null;\n      return;\n    }\n\n    validateDOMNesting(null, String(content), this, this._ancestorInfo);\n    this._contentDebugID = contentDebugID;\n    if (hasExistingContent) {\n      ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n      ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n    } else {\n      ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n      ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n      ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n    }\n  };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n  topAbort: 'abort',\n  topCanPlay: 'canplay',\n  topCanPlayThrough: 'canplaythrough',\n  topDurationChange: 'durationchange',\n  topEmptied: 'emptied',\n  topEncrypted: 'encrypted',\n  topEnded: 'ended',\n  topError: 'error',\n  topLoadedData: 'loadeddata',\n  topLoadedMetadata: 'loadedmetadata',\n  topLoadStart: 'loadstart',\n  topPause: 'pause',\n  topPlay: 'play',\n  topPlaying: 'playing',\n  topProgress: 'progress',\n  topRateChange: 'ratechange',\n  topSeeked: 'seeked',\n  topSeeking: 'seeking',\n  topStalled: 'stalled',\n  topSuspend: 'suspend',\n  topTimeUpdate: 'timeupdate',\n  topVolumeChange: 'volumechange',\n  topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n  inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n  var inst = this;\n  // If a component renders to null or if another component fatals and causes\n  // the state of the tree to be corrupted, `node` here can be null.\n  !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n  var node = getNode(inst);\n  !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n  switch (inst._tag) {\n    case 'iframe':\n    case 'object':\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n      break;\n    case 'video':\n    case 'audio':\n      inst._wrapperState.listeners = [];\n      // Create listener for each media event\n      for (var event in mediaEvents) {\n        if (mediaEvents.hasOwnProperty(event)) {\n          inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n        }\n      }\n      break;\n    case 'source':\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n      break;\n    case 'img':\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n      break;\n    case 'form':\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n      break;\n    case 'input':\n    case 'select':\n    case 'textarea':\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n      break;\n  }\n}\n\nfunction postUpdateSelectWrapper() {\n  ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true\n  // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n  listing: true,\n  pre: true,\n  textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n  menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n  if (!hasOwnProperty.call(validatedTagCache, tag)) {\n    !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n    validatedTagCache[tag] = true;\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n *  - Event listeners: `onClick`, `onMouseDown`, etc.\n *  - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n  var tag = element.type;\n  validateDangerousTag(tag);\n  this._currentElement = element;\n  this._tag = tag.toLowerCase();\n  this._namespaceURI = null;\n  this._renderedChildren = null;\n  this._previousStyle = null;\n  this._previousStyleCopy = null;\n  this._hostNode = null;\n  this._hostParent = null;\n  this._rootNodeID = 0;\n  this._domID = 0;\n  this._hostContainerInfo = null;\n  this._wrapperState = null;\n  this._topLevelWrapper = null;\n  this._flags = 0;\n  if (process.env.NODE_ENV !== 'production') {\n    this._ancestorInfo = null;\n    setAndValidateContentChildDev.call(this, null);\n  }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n  /**\n   * Generates root tag markup then recurses. This method has side effects and\n   * is not idempotent.\n   *\n   * @internal\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {?ReactDOMComponent} the parent component instance\n   * @param {?object} info about the host container\n   * @param {object} context\n   * @return {string} The computed markup.\n   */\n  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n    this._rootNodeID = globalIdCounter++;\n    this._domID = hostContainerInfo._idCounter++;\n    this._hostParent = hostParent;\n    this._hostContainerInfo = hostContainerInfo;\n\n    var props = this._currentElement.props;\n\n    switch (this._tag) {\n      case 'audio':\n      case 'form':\n      case 'iframe':\n      case 'img':\n      case 'link':\n      case 'object':\n      case 'source':\n      case 'video':\n        this._wrapperState = {\n          listeners: null\n        };\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case 'input':\n        ReactDOMInput.mountWrapper(this, props, hostParent);\n        props = ReactDOMInput.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trackInputValue, this);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case 'option':\n        ReactDOMOption.mountWrapper(this, props, hostParent);\n        props = ReactDOMOption.getHostProps(this, props);\n        break;\n      case 'select':\n        ReactDOMSelect.mountWrapper(this, props, hostParent);\n        props = ReactDOMSelect.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case 'textarea':\n        ReactDOMTextarea.mountWrapper(this, props, hostParent);\n        props = ReactDOMTextarea.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trackInputValue, this);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n    }\n\n    assertValidProps(this, props);\n\n    // We create tags in the namespace of their parent container, except HTML\n    // tags get no namespace.\n    var namespaceURI;\n    var parentTag;\n    if (hostParent != null) {\n      namespaceURI = hostParent._namespaceURI;\n      parentTag = hostParent._tag;\n    } else if (hostContainerInfo._tag) {\n      namespaceURI = hostContainerInfo._namespaceURI;\n      parentTag = hostContainerInfo._tag;\n    }\n    if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n      namespaceURI = DOMNamespaces.html;\n    }\n    if (namespaceURI === DOMNamespaces.html) {\n      if (this._tag === 'svg') {\n        namespaceURI = DOMNamespaces.svg;\n      } else if (this._tag === 'math') {\n        namespaceURI = DOMNamespaces.mathml;\n      }\n    }\n    this._namespaceURI = namespaceURI;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var parentInfo;\n      if (hostParent != null) {\n        parentInfo = hostParent._ancestorInfo;\n      } else if (hostContainerInfo._tag) {\n        parentInfo = hostContainerInfo._ancestorInfo;\n      }\n      if (parentInfo) {\n        // parentInfo should always be present except for the top-level\n        // component when server rendering\n        validateDOMNesting(this._tag, null, this, parentInfo);\n      }\n      this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n    }\n\n    var mountImage;\n    if (transaction.useCreateElement) {\n      var ownerDocument = hostContainerInfo._ownerDocument;\n      var el;\n      if (namespaceURI === DOMNamespaces.html) {\n        if (this._tag === 'script') {\n          // Create the script via .innerHTML so its \"parser-inserted\" flag is\n          // set to true and it does not execute\n          var div = ownerDocument.createElement('div');\n          var type = this._currentElement.type;\n          div.innerHTML = '<' + type + '></' + type + '>';\n          el = div.removeChild(div.firstChild);\n        } else if (props.is) {\n          el = ownerDocument.createElement(this._currentElement.type, props.is);\n        } else {\n          // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n          // See discussion in https://github.com/facebook/react/pull/6896\n          // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n          el = ownerDocument.createElement(this._currentElement.type);\n        }\n      } else {\n        el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n      }\n      ReactDOMComponentTree.precacheNode(this, el);\n      this._flags |= Flags.hasCachedChildNodes;\n      if (!this._hostParent) {\n        DOMPropertyOperations.setAttributeForRoot(el);\n      }\n      this._updateDOMProperties(null, props, transaction);\n      var lazyTree = DOMLazyTree(el);\n      this._createInitialChildren(transaction, props, context, lazyTree);\n      mountImage = lazyTree;\n    } else {\n      var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n      var tagContent = this._createContentMarkup(transaction, props, context);\n      if (!tagContent && omittedCloseTags[this._tag]) {\n        mountImage = tagOpen + '/>';\n      } else {\n        mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n      }\n    }\n\n    switch (this._tag) {\n      case 'input':\n        transaction.getReactMountReady().enqueue(inputPostMount, this);\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case 'textarea':\n        transaction.getReactMountReady().enqueue(textareaPostMount, this);\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case 'select':\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case 'button':\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case 'option':\n        transaction.getReactMountReady().enqueue(optionPostMount, this);\n        break;\n    }\n\n    return mountImage;\n  },\n\n  /**\n   * Creates markup for the open tag and all attributes.\n   *\n   * This method has side effects because events get registered.\n   *\n   * Iterating over object properties is faster than iterating over arrays.\n   * @see http://jsperf.com/obj-vs-arr-iteration\n   *\n   * @private\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} props\n   * @return {string} Markup of opening tag.\n   */\n  _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n    var ret = '<' + this._currentElement.type;\n\n    for (var propKey in props) {\n      if (!props.hasOwnProperty(propKey)) {\n        continue;\n      }\n      var propValue = props[propKey];\n      if (propValue == null) {\n        continue;\n      }\n      if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (propValue) {\n          enqueuePutListener(this, propKey, propValue, transaction);\n        }\n      } else {\n        if (propKey === STYLE) {\n          if (propValue) {\n            if (process.env.NODE_ENV !== 'production') {\n              // See `_updateDOMProperties`. style block\n              this._previousStyle = propValue;\n            }\n            propValue = this._previousStyleCopy = _assign({}, props.style);\n          }\n          propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n        }\n        var markup = null;\n        if (this._tag != null && isCustomComponent(this._tag, props)) {\n          if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n            markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n          }\n        } else {\n          markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n        }\n        if (markup) {\n          ret += ' ' + markup;\n        }\n      }\n    }\n\n    // For static pages, no need to put React ID and checksum. Saves lots of\n    // bytes.\n    if (transaction.renderToStaticMarkup) {\n      return ret;\n    }\n\n    if (!this._hostParent) {\n      ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n    }\n    ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n    return ret;\n  },\n\n  /**\n   * Creates markup for the content between the tags.\n   *\n   * @private\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} props\n   * @param {object} context\n   * @return {string} Content markup.\n   */\n  _createContentMarkup: function (transaction, props, context) {\n    var ret = '';\n\n    // Intentional use of != to avoid catching zero/false.\n    var innerHTML = props.dangerouslySetInnerHTML;\n    if (innerHTML != null) {\n      if (innerHTML.__html != null) {\n        ret = innerHTML.__html;\n      }\n    } else {\n      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n      var childrenToUse = contentToUse != null ? null : props.children;\n      if (contentToUse != null) {\n        // TODO: Validate that text is allowed as a child of this node\n        ret = escapeTextContentForBrowser(contentToUse);\n        if (process.env.NODE_ENV !== 'production') {\n          setAndValidateContentChildDev.call(this, contentToUse);\n        }\n      } else if (childrenToUse != null) {\n        var mountImages = this.mountChildren(childrenToUse, transaction, context);\n        ret = mountImages.join('');\n      }\n    }\n    if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n      // text/html ignores the first character in these tags if it's a newline\n      // Prefer to break application/xml over text/html (for now) by adding\n      // a newline specifically to get eaten by the parser. (Alternately for\n      // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n      // \\r is normalized out by HTMLTextAreaElement#value.)\n      // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n      // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n      // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n      // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n      //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n      return '\\n' + ret;\n    } else {\n      return ret;\n    }\n  },\n\n  _createInitialChildren: function (transaction, props, context, lazyTree) {\n    // Intentional use of != to avoid catching zero/false.\n    var innerHTML = props.dangerouslySetInnerHTML;\n    if (innerHTML != null) {\n      if (innerHTML.__html != null) {\n        DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n      }\n    } else {\n      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n      var childrenToUse = contentToUse != null ? null : props.children;\n      // TODO: Validate that text is allowed as a child of this node\n      if (contentToUse != null) {\n        // Avoid setting textContent when the text is empty. In IE11 setting\n        // textContent on a text area will cause the placeholder to not\n        // show within the textarea until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        if (contentToUse !== '') {\n          if (process.env.NODE_ENV !== 'production') {\n            setAndValidateContentChildDev.call(this, contentToUse);\n          }\n          DOMLazyTree.queueText(lazyTree, contentToUse);\n        }\n      } else if (childrenToUse != null) {\n        var mountImages = this.mountChildren(childrenToUse, transaction, context);\n        for (var i = 0; i < mountImages.length; i++) {\n          DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n        }\n      }\n    }\n  },\n\n  /**\n   * Receives a next element and updates the component.\n   *\n   * @internal\n   * @param {ReactElement} nextElement\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} context\n   */\n  receiveComponent: function (nextElement, transaction, context) {\n    var prevElement = this._currentElement;\n    this._currentElement = nextElement;\n    this.updateComponent(transaction, prevElement, nextElement, context);\n  },\n\n  /**\n   * Updates a DOM component after it has already been allocated and\n   * attached to the DOM. Reconciles the root DOM node, then recurses.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @param {ReactElement} prevElement\n   * @param {ReactElement} nextElement\n   * @internal\n   * @overridable\n   */\n  updateComponent: function (transaction, prevElement, nextElement, context) {\n    var lastProps = prevElement.props;\n    var nextProps = this._currentElement.props;\n\n    switch (this._tag) {\n      case 'input':\n        lastProps = ReactDOMInput.getHostProps(this, lastProps);\n        nextProps = ReactDOMInput.getHostProps(this, nextProps);\n        break;\n      case 'option':\n        lastProps = ReactDOMOption.getHostProps(this, lastProps);\n        nextProps = ReactDOMOption.getHostProps(this, nextProps);\n        break;\n      case 'select':\n        lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n        nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n        break;\n      case 'textarea':\n        lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n        nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n        break;\n    }\n\n    assertValidProps(this, nextProps);\n    this._updateDOMProperties(lastProps, nextProps, transaction);\n    this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n    switch (this._tag) {\n      case 'input':\n        // Update the wrapper around inputs *after* updating props. This has to\n        // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n        // raise warnings and prevent the new value from being assigned.\n        ReactDOMInput.updateWrapper(this);\n        break;\n      case 'textarea':\n        ReactDOMTextarea.updateWrapper(this);\n        break;\n      case 'select':\n        // <select> value update needs to occur after <option> children\n        // reconciliation\n        transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n        break;\n    }\n  },\n\n  /**\n   * Reconciles the properties by detecting differences in property values and\n   * updating the DOM as necessary. This function is probably the single most\n   * critical path for performance optimization.\n   *\n   * TODO: Benchmark whether checking for changed values in memory actually\n   *       improves performance (especially statically positioned elements).\n   * TODO: Benchmark the effects of putting this at the top since 99% of props\n   *       do not change for a given reconciliation.\n   * TODO: Benchmark areas that can be improved with caching.\n   *\n   * @private\n   * @param {object} lastProps\n   * @param {object} nextProps\n   * @param {?DOMElement} node\n   */\n  _updateDOMProperties: function (lastProps, nextProps, transaction) {\n    var propKey;\n    var styleName;\n    var styleUpdates;\n    for (propKey in lastProps) {\n      if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        var lastStyle = this._previousStyleCopy;\n        for (styleName in lastStyle) {\n          if (lastStyle.hasOwnProperty(styleName)) {\n            styleUpdates = styleUpdates || {};\n            styleUpdates[styleName] = '';\n          }\n        }\n        this._previousStyleCopy = null;\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (lastProps[propKey]) {\n          // Only call deleteListener if there was a listener previously or\n          // else willDeleteListener gets called when there wasn't actually a\n          // listener (e.g., onClick={null})\n          deleteListener(this, propKey);\n        }\n      } else if (isCustomComponent(this._tag, lastProps)) {\n        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n          DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n        }\n      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n        DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n      }\n    }\n    for (propKey in nextProps) {\n      var nextProp = nextProps[propKey];\n      var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n      if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        if (nextProp) {\n          if (process.env.NODE_ENV !== 'production') {\n            checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n            this._previousStyle = nextProp;\n          }\n          nextProp = this._previousStyleCopy = _assign({}, nextProp);\n        } else {\n          this._previousStyleCopy = null;\n        }\n        if (lastProp) {\n          // Unset styles on `lastProp` but not on `nextProp`.\n          for (styleName in lastProp) {\n            if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n              styleUpdates = styleUpdates || {};\n              styleUpdates[styleName] = '';\n            }\n          }\n          // Update styles that changed since `lastProp`.\n          for (styleName in nextProp) {\n            if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n              styleUpdates = styleUpdates || {};\n              styleUpdates[styleName] = nextProp[styleName];\n            }\n          }\n        } else {\n          // Relies on `updateStylesByID` not mutating `styleUpdates`.\n          styleUpdates = nextProp;\n        }\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (nextProp) {\n          enqueuePutListener(this, propKey, nextProp, transaction);\n        } else if (lastProp) {\n          deleteListener(this, propKey);\n        }\n      } else if (isCustomComponent(this._tag, nextProps)) {\n        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n          DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n        }\n      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n        var node = getNode(this);\n        // If we're updating to null or undefined, we should remove the property\n        // from the DOM node instead of inadvertently setting to a string. This\n        // brings us in line with the same behavior we have on initial render.\n        if (nextProp != null) {\n          DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n        } else {\n          DOMPropertyOperations.deleteValueForProperty(node, propKey);\n        }\n      }\n    }\n    if (styleUpdates) {\n      CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n    }\n  },\n\n  /**\n   * Reconciles the children with the various properties that affect the\n   * children content.\n   *\n   * @param {object} lastProps\n   * @param {object} nextProps\n   * @param {ReactReconcileTransaction} transaction\n   * @param {object} context\n   */\n  _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n    var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n    var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n    var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n    var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n    // Note the use of `!=` which checks for null or undefined.\n    var lastChildren = lastContent != null ? null : lastProps.children;\n    var nextChildren = nextContent != null ? null : nextProps.children;\n\n    // If we're switching from children to content/html or vice versa, remove\n    // the old content\n    var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n    var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n    if (lastChildren != null && nextChildren == null) {\n      this.updateChildren(null, transaction, context);\n    } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n      this.updateTextContent('');\n      if (process.env.NODE_ENV !== 'production') {\n        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n      }\n    }\n\n    if (nextContent != null) {\n      if (lastContent !== nextContent) {\n        this.updateTextContent('' + nextContent);\n        if (process.env.NODE_ENV !== 'production') {\n          setAndValidateContentChildDev.call(this, nextContent);\n        }\n      }\n    } else if (nextHtml != null) {\n      if (lastHtml !== nextHtml) {\n        this.updateMarkup('' + nextHtml);\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n      }\n    } else if (nextChildren != null) {\n      if (process.env.NODE_ENV !== 'production') {\n        setAndValidateContentChildDev.call(this, null);\n      }\n\n      this.updateChildren(nextChildren, transaction, context);\n    }\n  },\n\n  getHostNode: function () {\n    return getNode(this);\n  },\n\n  /**\n   * Destroys all event registrations for this instance. Does not remove from\n   * the DOM. That must be done by the parent.\n   *\n   * @internal\n   */\n  unmountComponent: function (safely) {\n    switch (this._tag) {\n      case 'audio':\n      case 'form':\n      case 'iframe':\n      case 'img':\n      case 'link':\n      case 'object':\n      case 'source':\n      case 'video':\n        var listeners = this._wrapperState.listeners;\n        if (listeners) {\n          for (var i = 0; i < listeners.length; i++) {\n            listeners[i].remove();\n          }\n        }\n        break;\n      case 'input':\n      case 'textarea':\n        inputValueTracking.stopTracking(this);\n        break;\n      case 'html':\n      case 'head':\n      case 'body':\n        /**\n         * Components like <html> <head> and <body> can't be removed or added\n         * easily in a cross-browser way, however it's valuable to be able to\n         * take advantage of React's reconciliation for styling and <title>\n         * management. So we just document it and throw in dangerous cases.\n         */\n        !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;\n        break;\n    }\n\n    this.unmountChildren(safely);\n    ReactDOMComponentTree.uncacheNode(this);\n    EventPluginHub.deleteAllListeners(this);\n    this._rootNodeID = 0;\n    this._domID = 0;\n    this._wrapperState = null;\n\n    if (process.env.NODE_ENV !== 'production') {\n      setAndValidateContentChildDev.call(this, null);\n    }\n  },\n\n  getPublicInstance: function () {\n    return getNode(this);\n  }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;"]}