{"version":3,"sources":["node_modules\\react-dom\\lib\\inputValueTracking.js"],"names":["ReactDOMComponentTree","require","isCheckable","elem","type","nodeName","toLowerCase","getTracker","inst","_wrapperState","valueTracker","attachTracker","tracker","detachTracker","getValueFromNode","node","value","checked","inputValueTracking","_getTrackerFromNode","getInstanceFromNode","track","getNodeFromInstance","valueField","descriptor","Object","getOwnPropertyDescriptor","constructor","prototype","currentValue","hasOwnProperty","get","set","defineProperty","enumerable","configurable","call","getValue","setValue","stopTracking","updateValueIfChanged","lastValue","nextValue","module","exports"],"mappings":"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","file":"inputValueTracking.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'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n  return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n  inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n  delete inst._wrapperState.valueTracker;\n}\n\nfunction getValueFromNode(node) {\n  var value;\n  if (node) {\n    value = isCheckable(node) ? '' + node.checked : node.value;\n  }\n  return value;\n}\n\nvar inputValueTracking = {\n  // exposed for testing\n  _getTrackerFromNode: function (node) {\n    return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n  },\n\n\n  track: function (inst) {\n    if (getTracker(inst)) {\n      return;\n    }\n\n    var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n    var valueField = isCheckable(node) ? 'checked' : 'value';\n    var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n    var currentValue = '' + node[valueField];\n\n    // if someone has already defined a value or Safari, then bail\n    // and don't track value will cause over reporting of changes,\n    // but it's better then a hard failure\n    // (needed for certain tests that spyOn input values and Safari)\n    if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n      return;\n    }\n\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable,\n      configurable: true,\n      get: function () {\n        return descriptor.get.call(this);\n      },\n      set: function (value) {\n        currentValue = '' + value;\n        descriptor.set.call(this, value);\n      }\n    });\n\n    attachTracker(inst, {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = '' + value;\n      },\n      stopTracking: function () {\n        detachTracker(inst);\n        delete node[valueField];\n      }\n    });\n  },\n\n  updateValueIfChanged: function (inst) {\n    if (!inst) {\n      return false;\n    }\n    var tracker = getTracker(inst);\n\n    if (!tracker) {\n      inputValueTracking.track(inst);\n      return true;\n    }\n\n    var lastValue = tracker.getValue();\n    var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n    if (nextValue !== lastValue) {\n      tracker.setValue(nextValue);\n      return true;\n    }\n\n    return false;\n  },\n  stopTracking: function (inst) {\n    var tracker = getTracker(inst);\n    if (tracker) {\n      tracker.stopTracking();\n    }\n  }\n};\n\nmodule.exports = inputValueTracking;"]}