mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Vendorize React. This is required at this time because we need to modify it to work with QtWebKit.
The patch to do that has been submitted upstream; if accepted, we can un-vendorize again.
This commit is contained in:
committed by
Dave Page
parent
281b67952a
commit
a45b87d9b7
@@ -33,8 +33,8 @@
|
||||
"immutability-helper": "^2.2.0",
|
||||
"imports-loader": "git+https://github.com/webpack-contrib/imports-loader.git#44d6f48463b256a17c1ba6fd9b5cc1449b4e379d",
|
||||
"moment": "^2.18.1",
|
||||
"react": "~15.4.2",
|
||||
"react-dom": "~15.4.2",
|
||||
"react": "file:../web/pgadmin/static/vendor/react",
|
||||
"react-dom": "file:../web/pgadmin/static/vendor/react-dom",
|
||||
"requirejs": "~2.3.3",
|
||||
"underscore": "~1.8.3",
|
||||
"watchify": "~3.9.0"
|
||||
|
||||
31
web/pgadmin/static/vendor/react-dom/LICENSE
vendored
Normal file
31
web/pgadmin/static/vendor/react-dom/LICENSE
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
BSD License
|
||||
|
||||
For React software
|
||||
|
||||
Copyright (c) 2013-present, Facebook, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name Facebook nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
33
web/pgadmin/static/vendor/react-dom/PATENTS
vendored
Normal file
33
web/pgadmin/static/vendor/react-dom/PATENTS
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
Additional Grant of Patent Rights Version 2
|
||||
|
||||
"Software" means the React software distributed by Facebook, Inc.
|
||||
|
||||
Facebook, Inc. ("Facebook") hereby grants to each recipient of the Software
|
||||
("you") a perpetual, worldwide, royalty-free, non-exclusive, irrevocable
|
||||
(subject to the termination provision below) license under any Necessary
|
||||
Claims, to make, have made, use, sell, offer to sell, import, and otherwise
|
||||
transfer the Software. For avoidance of doubt, no license is granted under
|
||||
Facebook's rights in any patent claims that are infringed by (i) modifications
|
||||
to the Software made by you or any third party or (ii) the Software in
|
||||
combination with any software or other technology.
|
||||
|
||||
The license granted hereunder will terminate, automatically and without notice,
|
||||
if you (or any of your subsidiaries, corporate affiliates or agents) initiate
|
||||
directly or indirectly, or take a direct financial interest in, any Patent
|
||||
Assertion: (i) against Facebook or any of its subsidiaries or corporate
|
||||
affiliates, (ii) against any party if such Patent Assertion arises in whole or
|
||||
in part from any software, technology, product or service of Facebook or any of
|
||||
its subsidiaries or corporate affiliates, or (iii) against any party relating
|
||||
to the Software. Notwithstanding the foregoing, if Facebook or any of its
|
||||
subsidiaries or corporate affiliates files a lawsuit alleging patent
|
||||
infringement against you in the first instance, and you respond by filing a
|
||||
patent infringement counterclaim in that lawsuit against that party that is
|
||||
unrelated to the Software, the license granted hereunder will not terminate
|
||||
under section (i) of this paragraph due to such counterclaim.
|
||||
|
||||
A "Necessary Claim" is a claim of a patent owned by Facebook that is
|
||||
necessarily infringed by the Software standing alone.
|
||||
|
||||
A "Patent Assertion" is any lawsuit or other action alleging direct, indirect,
|
||||
or contributory infringement or inducement to infringe any patent, including a
|
||||
cross-claim or counterclaim.
|
||||
54
web/pgadmin/static/vendor/react-dom/README.md
vendored
Normal file
54
web/pgadmin/static/vendor/react-dom/README.md
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
# `react-dom`
|
||||
|
||||
This package serves as the entry point of the DOM-related rendering paths. It is intended to be paired with the isomorphic React, which will be shipped as `react` to npm.
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
npm install react react-dom
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### In the browser
|
||||
|
||||
```js
|
||||
var React = require('react');
|
||||
var ReactDOM = require('react-dom');
|
||||
|
||||
class MyComponent extends React.Component {
|
||||
render() {
|
||||
return <div>Hello World</div>;
|
||||
}
|
||||
}
|
||||
|
||||
ReactDOM.render(<MyComponent />, node);
|
||||
```
|
||||
|
||||
### On the server
|
||||
|
||||
```js
|
||||
var React = require('react');
|
||||
var ReactDOMServer = require('react-dom/server');
|
||||
|
||||
class MyComponent extends React.Component {
|
||||
render() {
|
||||
return <div>Hello World</div>;
|
||||
}
|
||||
}
|
||||
|
||||
ReactDOMServer.renderToString(<MyComponent />);
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### `react-dom`
|
||||
|
||||
- `findDOMNode`
|
||||
- `render`
|
||||
- `unmountComponentAtNode`
|
||||
|
||||
### `react-dom/server`
|
||||
|
||||
- `renderToString`
|
||||
- `renderToStaticMarkup`
|
||||
16223
web/pgadmin/static/vendor/react-dom/dist/react-dom-server.js
vendored
Normal file
16223
web/pgadmin/static/vendor/react-dom/dist/react-dom-server.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
15
web/pgadmin/static/vendor/react-dom/dist/react-dom-server.min.js
vendored
Normal file
15
web/pgadmin/static/vendor/react-dom/dist/react-dom-server.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18265
web/pgadmin/static/vendor/react-dom/dist/react-dom.js
vendored
Normal file
18265
web/pgadmin/static/vendor/react-dom/dist/react-dom.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
15
web/pgadmin/static/vendor/react-dom/dist/react-dom.min.js
vendored
Normal file
15
web/pgadmin/static/vendor/react-dom/dist/react-dom.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
web/pgadmin/static/vendor/react-dom/index.js
vendored
Normal file
3
web/pgadmin/static/vendor/react-dom/index.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = require('./lib/ReactDOM');
|
||||
73
web/pgadmin/static/vendor/react-dom/lib/ARIADOMPropertyConfig.js
vendored
Normal file
73
web/pgadmin/static/vendor/react-dom/lib/ARIADOMPropertyConfig.js
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* 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;
|
||||
23
web/pgadmin/static/vendor/react-dom/lib/AutoFocusUtils.js
vendored
Normal file
23
web/pgadmin/static/vendor/react-dom/lib/AutoFocusUtils.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 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;
|
||||
384
web/pgadmin/static/vendor/react-dom/lib/BeforeInputEventPlugin.js
vendored
Normal file
384
web/pgadmin/static/vendor/react-dom/lib/BeforeInputEventPlugin.js
vendored
Normal file
@@ -0,0 +1,384 @@
|
||||
/**
|
||||
* 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;
|
||||
147
web/pgadmin/static/vendor/react-dom/lib/CSSProperty.js
vendored
Normal file
147
web/pgadmin/static/vendor/react-dom/lib/CSSProperty.js
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
/**
|
||||
* 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,
|
||||
gridColumn: 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;
|
||||
208
web/pgadmin/static/vendor/react-dom/lib/CSSPropertyOperations.js
vendored
Normal file
208
web/pgadmin/static/vendor/react-dom/lib/CSSPropertyOperations.js
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
/**
|
||||
* 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 styleValue = styles[styleName];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
warnValidStyle(styleName, styleValue, component);
|
||||
}
|
||||
if (styleValue != null) {
|
||||
serialized += processStyleName(styleName) + ':';
|
||||
serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
warnValidStyle(styleName, styles[styleName], component);
|
||||
}
|
||||
var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
|
||||
if (styleName === 'float' || styleName === 'cssFloat') {
|
||||
styleName = styleFloatAccessor;
|
||||
}
|
||||
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;
|
||||
118
web/pgadmin/static/vendor/react-dom/lib/CallbackQueue.js
vendored
Normal file
118
web/pgadmin/static/vendor/react-dom/lib/CallbackQueue.js
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
/**
|
||||
* 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);
|
||||
320
web/pgadmin/static/vendor/react-dom/lib/ChangeEventPlugin.js
vendored
Normal file
320
web/pgadmin/static/vendor/react-dom/lib/ChangeEventPlugin.js
vendored
Normal file
@@ -0,0 +1,320 @@
|
||||
/**
|
||||
* 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 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']
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* For IE shims
|
||||
*/
|
||||
var activeElement = null;
|
||||
var activeElementInst = null;
|
||||
var activeElementValue = null;
|
||||
var activeElementValueProp = 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 = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
|
||||
EventPropagators.accumulateTwoPhaseDispatches(event);
|
||||
|
||||
// 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 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.
|
||||
// IE10+ fire input events to often, such when a placeholder
|
||||
// changes or when an input with a placeholder is focused.
|
||||
isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);
|
||||
}
|
||||
|
||||
/**
|
||||
* (For IE <=11) Replacement getter/setter for the `value` property that gets
|
||||
* set on the active element.
|
||||
*/
|
||||
var newValueProp = {
|
||||
get: function () {
|
||||
return activeElementValueProp.get.call(this);
|
||||
},
|
||||
set: function (val) {
|
||||
// Cast to a string so we can do equality checks.
|
||||
activeElementValue = '' + val;
|
||||
activeElementValueProp.set.call(this, val);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* (For IE <=11) 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;
|
||||
activeElementValue = target.value;
|
||||
activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
|
||||
|
||||
// Not guarded in a canDefineProperty check: IE8 supports defineProperty only
|
||||
// on DOM elements
|
||||
Object.defineProperty(activeElement, 'value', newValueProp);
|
||||
if (activeElement.attachEvent) {
|
||||
activeElement.attachEvent('onpropertychange', handlePropertyChange);
|
||||
} else {
|
||||
activeElement.addEventListener('propertychange', handlePropertyChange, false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* (For IE <=11) Removes the event listeners from the currently-tracked element,
|
||||
* if any exists.
|
||||
*/
|
||||
function stopWatchingForValueChange() {
|
||||
if (!activeElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
// delete restores the original property definition
|
||||
delete activeElement.value;
|
||||
|
||||
if (activeElement.detachEvent) {
|
||||
activeElement.detachEvent('onpropertychange', handlePropertyChange);
|
||||
} else {
|
||||
activeElement.removeEventListener('propertychange', handlePropertyChange, false);
|
||||
}
|
||||
|
||||
activeElement = null;
|
||||
activeElementInst = null;
|
||||
activeElementValue = null;
|
||||
activeElementValueProp = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* (For IE <=11) 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;
|
||||
}
|
||||
var value = nativeEvent.srcElement.value;
|
||||
if (value === activeElementValue) {
|
||||
return;
|
||||
}
|
||||
activeElementValue = value;
|
||||
|
||||
manualDispatchChangeEvent(nativeEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
* If a `change` event should be fired, returns the target's ID.
|
||||
*/
|
||||
function getTargetInstForInputEvent(topLevelType, targetInst) {
|
||||
if (topLevelType === 'topInput') {
|
||||
// In modern browsers (i.e., not IE8 or IE9), the input event is exactly
|
||||
// what we want so fall through here and trigger an abstract event
|
||||
return targetInst;
|
||||
}
|
||||
}
|
||||
|
||||
function handleEventsForInputEventIE(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-11, 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 getTargetInstForInputEventIE(topLevelType, targetInst) {
|
||||
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.
|
||||
if (activeElement && activeElement.value !== activeElementValue) {
|
||||
activeElementValue = activeElement.value;
|
||||
return activeElementInst;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
|
||||
}
|
||||
|
||||
function getTargetInstForClickEvent(topLevelType, targetInst) {
|
||||
if (topLevelType === 'topClick') {
|
||||
return targetInst;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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,
|
||||
|
||||
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 = getTargetInstForInputEvent;
|
||||
} else {
|
||||
getTargetInstFunc = getTargetInstForInputEventIE;
|
||||
handleEventFunc = handleEventsForInputEventIE;
|
||||
}
|
||||
} else if (shouldUseClickEvent(targetNode)) {
|
||||
getTargetInstFunc = getTargetInstForClickEvent;
|
||||
}
|
||||
|
||||
if (getTargetInstFunc) {
|
||||
var inst = getTargetInstFunc(topLevelType, targetInst);
|
||||
if (inst) {
|
||||
var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);
|
||||
event.type = 'change';
|
||||
EventPropagators.accumulateTwoPhaseDispatches(event);
|
||||
return event;
|
||||
}
|
||||
}
|
||||
|
||||
if (handleEventFunc) {
|
||||
handleEventFunc(topLevelType, targetNode, targetInst);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
module.exports = ChangeEventPlugin;
|
||||
224
web/pgadmin/static/vendor/react-dom/lib/DOMChildrenOperations.js
vendored
Normal file
224
web/pgadmin/static/vendor/react-dom/lib/DOMChildrenOperations.js
vendored
Normal file
@@ -0,0 +1,224 @@
|
||||
/**
|
||||
* 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;
|
||||
117
web/pgadmin/static/vendor/react-dom/lib/DOMLazyTree.js
vendored
Normal file
117
web/pgadmin/static/vendor/react-dom/lib/DOMLazyTree.js
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/**
|
||||
* 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;
|
||||
19
web/pgadmin/static/vendor/react-dom/lib/DOMNamespaces.js
vendored
Normal file
19
web/pgadmin/static/vendor/react-dom/lib/DOMNamespaces.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* 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;
|
||||
209
web/pgadmin/static/vendor/react-dom/lib/DOMProperty.js
vendored
Normal file
209
web/pgadmin/static/vendor/react-dom/lib/DOMProperty.js
vendored
Normal file
@@ -0,0 +1,209 @@
|
||||
/**
|
||||
* 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;
|
||||
236
web/pgadmin/static/vendor/react-dom/lib/DOMPropertyOperations.js
vendored
Normal file
236
web/pgadmin/static/vendor/react-dom/lib/DOMPropertyOperations.js
vendored
Normal file
@@ -0,0 +1,236 @@
|
||||
/**
|
||||
* 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;
|
||||
47
web/pgadmin/static/vendor/react-dom/lib/Danger.js
vendored
Normal file
47
web/pgadmin/static/vendor/react-dom/lib/Danger.js
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* 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;
|
||||
25
web/pgadmin/static/vendor/react-dom/lib/DefaultEventPluginOrder.js
vendored
Normal file
25
web/pgadmin/static/vendor/react-dom/lib/DefaultEventPluginOrder.js
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* 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;
|
||||
99
web/pgadmin/static/vendor/react-dom/lib/EnterLeaveEventPlugin.js
vendored
Normal file
99
web/pgadmin/static/vendor/react-dom/lib/EnterLeaveEventPlugin.js
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* 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;
|
||||
91
web/pgadmin/static/vendor/react-dom/lib/EventConstants.js
vendored
Normal file
91
web/pgadmin/static/vendor/react-dom/lib/EventConstants.js
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* 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;
|
||||
277
web/pgadmin/static/vendor/react-dom/lib/EventPluginHub.js
vendored
Normal file
277
web/pgadmin/static/vendor/react-dom/lib/EventPluginHub.js
vendored
Normal file
@@ -0,0 +1,277 @@
|
||||
/**
|
||||
* 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;
|
||||
254
web/pgadmin/static/vendor/react-dom/lib/EventPluginRegistry.js
vendored
Normal file
254
web/pgadmin/static/vendor/react-dom/lib/EventPluginRegistry.js
vendored
Normal file
@@ -0,0 +1,254 @@
|
||||
/**
|
||||
* 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;
|
||||
225
web/pgadmin/static/vendor/react-dom/lib/EventPluginUtils.js
vendored
Normal file
225
web/pgadmin/static/vendor/react-dom/lib/EventPluginUtils.js
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
/**
|
||||
* 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;
|
||||
133
web/pgadmin/static/vendor/react-dom/lib/EventPropagators.js
vendored
Normal file
133
web/pgadmin/static/vendor/react-dom/lib/EventPropagators.js
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
/**
|
||||
* 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;
|
||||
94
web/pgadmin/static/vendor/react-dom/lib/FallbackCompositionState.js
vendored
Normal file
94
web/pgadmin/static/vendor/react-dom/lib/FallbackCompositionState.js
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* 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;
|
||||
211
web/pgadmin/static/vendor/react-dom/lib/HTMLDOMPropertyConfig.js
vendored
Normal file
211
web/pgadmin/static/vendor/react-dom/lib/HTMLDOMPropertyConfig.js
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
/**
|
||||
* 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: {}
|
||||
};
|
||||
|
||||
module.exports = HTMLDOMPropertyConfig;
|
||||
58
web/pgadmin/static/vendor/react-dom/lib/KeyEscapeUtils.js
vendored
Normal file
58
web/pgadmin/static/vendor/react-dom/lib/KeyEscapeUtils.js
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* 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;
|
||||
134
web/pgadmin/static/vendor/react-dom/lib/LinkedValueUtils.js
vendored
Normal file
134
web/pgadmin/static/vendor/react-dom/lib/LinkedValueUtils.js
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
* 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 ReactPropTypesSecret = require('./ReactPropTypesSecret');
|
||||
|
||||
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: React.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;
|
||||
12
web/pgadmin/static/vendor/react-dom/lib/PluginModuleType.js
vendored
Normal file
12
web/pgadmin/static/vendor/react-dom/lib/PluginModuleType.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* 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';
|
||||
111
web/pgadmin/static/vendor/react-dom/lib/PooledClass.js
vendored
Normal file
111
web/pgadmin/static/vendor/react-dom/lib/PooledClass.js
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/**
|
||||
* 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;
|
||||
327
web/pgadmin/static/vendor/react-dom/lib/ReactBrowserEventEmitter.js
vendored
Normal file
327
web/pgadmin/static/vendor/react-dom/lib/ReactBrowserEventEmitter.js
vendored
Normal file
@@ -0,0 +1,327 @@
|
||||
/**
|
||||
* 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;
|
||||
243
web/pgadmin/static/vendor/react-dom/lib/ReactChildFiber.js
vendored
Normal file
243
web/pgadmin/static/vendor/react-dom/lib/ReactChildFiber.js
vendored
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
};
|
||||
153
web/pgadmin/static/vendor/react-dom/lib/ReactChildReconciler.js
vendored
Normal file
153
web/pgadmin/static/vendor/react-dom/lib/ReactChildReconciler.js
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
/**
|
||||
* 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;
|
||||
29
web/pgadmin/static/vendor/react-dom/lib/ReactComponentBrowserEnvironment.js
vendored
Normal file
29
web/pgadmin/static/vendor/react-dom/lib/ReactComponentBrowserEnvironment.js
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* 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;
|
||||
45
web/pgadmin/static/vendor/react-dom/lib/ReactComponentEnvironment.js
vendored
Normal file
45
web/pgadmin/static/vendor/react-dom/lib/ReactComponentEnvironment.js
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* 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;
|
||||
86
web/pgadmin/static/vendor/react-dom/lib/ReactComponentTreeTestUtils.js
vendored
Normal file
86
web/pgadmin/static/vendor/react-dom/lib/ReactComponentTreeTestUtils.js
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* 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;
|
||||
901
web/pgadmin/static/vendor/react-dom/lib/ReactCompositeComponent.js
vendored
Normal file
901
web/pgadmin/static/vendor/react-dom/lib/ReactCompositeComponent.js
vendored
Normal file
@@ -0,0 +1,901 @@
|
||||
/**
|
||||
* 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, 'childContext');
|
||||
}
|
||||
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;
|
||||
80
web/pgadmin/static/vendor/react-dom/lib/ReactCoroutine.js
vendored
Normal file
80
web/pgadmin/static/vendor/react-dom/lib/ReactCoroutine.js
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* 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;
|
||||
110
web/pgadmin/static/vendor/react-dom/lib/ReactDOM.js
vendored
Normal file
110
web/pgadmin/static/vendor/react-dom/lib/ReactDOM.js
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
/**
|
||||
* 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
|
||||
};
|
||||
|
||||
// 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;
|
||||
1000
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponent.js
vendored
Normal file
1000
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponent.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
17
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponentFlags.js
vendored
Normal file
17
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponentFlags.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* 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;
|
||||
194
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponentTree.js
vendored
Normal file
194
web/pgadmin/static/vendor/react-dom/lib/ReactDOMComponentTree.js
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
/**
|
||||
* 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;
|
||||
32
web/pgadmin/static/vendor/react-dom/lib/ReactDOMContainerInfo.js
vendored
Normal file
32
web/pgadmin/static/vendor/react-dom/lib/ReactDOMContainerInfo.js
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* 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;
|
||||
59
web/pgadmin/static/vendor/react-dom/lib/ReactDOMEmptyComponent.js
vendored
Normal file
59
web/pgadmin/static/vendor/react-dom/lib/ReactDOMEmptyComponent.js
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* 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;
|
||||
18
web/pgadmin/static/vendor/react-dom/lib/ReactDOMFeatureFlags.js
vendored
Normal file
18
web/pgadmin/static/vendor/react-dom/lib/ReactDOMFeatureFlags.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* 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;
|
||||
97
web/pgadmin/static/vendor/react-dom/lib/ReactDOMFiber.js
vendored
Normal file
97
web/pgadmin/static/vendor/react-dom/lib/ReactDOMFiber.js
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* 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;
|
||||
33
web/pgadmin/static/vendor/react-dom/lib/ReactDOMIDOperations.js
vendored
Normal file
33
web/pgadmin/static/vendor/react-dom/lib/ReactDOMIDOperations.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 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;
|
||||
277
web/pgadmin/static/vendor/react-dom/lib/ReactDOMInput.js
vendored
Normal file
277
web/pgadmin/static/vendor/react-dom/lib/ReactDOMInput.js
vendored
Normal file
@@ -0,0 +1,277 @@
|
||||
/**
|
||||
* 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)
|
||||
};
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
inst._wrapperState.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) {
|
||||
|
||||
// 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;
|
||||
}
|
||||
} 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;
|
||||
92
web/pgadmin/static/vendor/react-dom/lib/ReactDOMInvalidARIAHook.js
vendored
Normal file
92
web/pgadmin/static/vendor/react-dom/lib/ReactDOMInvalidARIAHook.js
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* 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;
|
||||
42
web/pgadmin/static/vendor/react-dom/lib/ReactDOMNullInputValuePropHook.js
vendored
Normal file
42
web/pgadmin/static/vendor/react-dom/lib/ReactDOMNullInputValuePropHook.js
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* 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;
|
||||
122
web/pgadmin/static/vendor/react-dom/lib/ReactDOMOption.js
vendored
Normal file
122
web/pgadmin/static/vendor/react-dom/lib/ReactDOMOption.js
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
/**
|
||||
* 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;
|
||||
199
web/pgadmin/static/vendor/react-dom/lib/ReactDOMSelect.js
vendored
Normal file
199
web/pgadmin/static/vendor/react-dom/lib/ReactDOMSelect.js
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
/**
|
||||
* 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;
|
||||
211
web/pgadmin/static/vendor/react-dom/lib/ReactDOMSelection.js
vendored
Normal file
211
web/pgadmin/static/vendor/react-dom/lib/ReactDOMSelection.js
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
/**
|
||||
* 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;
|
||||
25
web/pgadmin/static/vendor/react-dom/lib/ReactDOMServer.js
vendored
Normal file
25
web/pgadmin/static/vendor/react-dom/lib/ReactDOMServer.js
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* 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;
|
||||
15
web/pgadmin/static/vendor/react-dom/lib/ReactDOMServerUMDEntry.js
vendored
Normal file
15
web/pgadmin/static/vendor/react-dom/lib/ReactDOMServerUMDEntry.js
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* 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;
|
||||
163
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTextComponent.js
vendored
Normal file
163
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTextComponent.js
vendored
Normal file
@@ -0,0 +1,163 @@
|
||||
/**
|
||||
* 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;
|
||||
159
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTextarea.js
vendored
Normal file
159
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTextarea.js
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
/**
|
||||
* 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;
|
||||
135
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTreeTraversal.js
vendored
Normal file
135
web/pgadmin/static/vendor/react-dom/lib/ReactDOMTreeTraversal.js
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
/**
|
||||
* 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
|
||||
};
|
||||
33
web/pgadmin/static/vendor/react-dom/lib/ReactDOMUMDEntry.js
vendored
Normal file
33
web/pgadmin/static/vendor/react-dom/lib/ReactDOMUMDEntry.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 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;
|
||||
111
web/pgadmin/static/vendor/react-dom/lib/ReactDOMUnknownPropertyHook.js
vendored
Normal file
111
web/pgadmin/static/vendor/react-dom/lib/ReactDOMUnknownPropertyHook.js
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/**
|
||||
* 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;
|
||||
360
web/pgadmin/static/vendor/react-dom/lib/ReactDebugTool.js
vendored
Normal file
360
web/pgadmin/static/vendor/react-dom/lib/ReactDebugTool.js
vendored
Normal file
@@ -0,0 +1,360 @@
|
||||
/**
|
||||
* 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 =
|
||||
// $FlowFixMe https://github.com/facebook/flow/issues/2345
|
||||
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);
|
||||
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;
|
||||
67
web/pgadmin/static/vendor/react-dom/lib/ReactDefaultBatchingStrategy.js
vendored
Normal file
67
web/pgadmin/static/vendor/react-dom/lib/ReactDefaultBatchingStrategy.js
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* 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;
|
||||
85
web/pgadmin/static/vendor/react-dom/lib/ReactDefaultInjection.js
vendored
Normal file
85
web/pgadmin/static/vendor/react-dom/lib/ReactDefaultInjection.js
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* 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
|
||||
};
|
||||
19
web/pgadmin/static/vendor/react-dom/lib/ReactElementSymbol.js
vendored
Normal file
19
web/pgadmin/static/vendor/react-dom/lib/ReactElementSymbol.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
* 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;
|
||||
29
web/pgadmin/static/vendor/react-dom/lib/ReactEmptyComponent.js
vendored
Normal file
29
web/pgadmin/static/vendor/react-dom/lib/ReactEmptyComponent.js
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* 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;
|
||||
76
web/pgadmin/static/vendor/react-dom/lib/ReactErrorUtils.js
vendored
Normal file
76
web/pgadmin/static/vendor/react-dom/lib/ReactErrorUtils.js
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* 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');
|
||||
// $FlowFixMe https://github.com/facebook/flow/issues/2336
|
||||
evt.initEvent(evtType, false, false);
|
||||
fakeNode.dispatchEvent(evt);
|
||||
fakeNode.removeEventListener(evtType, boundFunc, false);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ReactErrorUtils;
|
||||
32
web/pgadmin/static/vendor/react-dom/lib/ReactEventEmitterMixin.js
vendored
Normal file
32
web/pgadmin/static/vendor/react-dom/lib/ReactEventEmitterMixin.js
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* 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;
|
||||
154
web/pgadmin/static/vendor/react-dom/lib/ReactEventListener.js
vendored
Normal file
154
web/pgadmin/static/vendor/react-dom/lib/ReactEventListener.js
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* 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;
|
||||
21
web/pgadmin/static/vendor/react-dom/lib/ReactFeatureFlags.js
vendored
Normal file
21
web/pgadmin/static/vendor/react-dom/lib/ReactFeatureFlags.js
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/**
|
||||
* 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;
|
||||
190
web/pgadmin/static/vendor/react-dom/lib/ReactFiber.js
vendored
Normal file
190
web/pgadmin/static/vendor/react-dom/lib/ReactFiber.js
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
380
web/pgadmin/static/vendor/react-dom/lib/ReactFiberBeginWork.js
vendored
Normal file
380
web/pgadmin/static/vendor/react-dom/lib/ReactFiberBeginWork.js
vendored
Normal file
@@ -0,0 +1,380 @@
|
||||
/**
|
||||
* 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 && config.beginUpdate) {
|
||||
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
|
||||
};
|
||||
};
|
||||
78
web/pgadmin/static/vendor/react-dom/lib/ReactFiberCommitWork.js
vendored
Normal file
78
web/pgadmin/static/vendor/react-dom/lib/ReactFiberCommitWork.js
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* 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
|
||||
};
|
||||
};
|
||||
208
web/pgadmin/static/vendor/react-dom/lib/ReactFiberCompleteWork.js
vendored
Normal file
208
web/pgadmin/static/vendor/react-dom/lib/ReactFiberCompleteWork.js
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
/**
|
||||
* 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
|
||||
};
|
||||
};
|
||||
64
web/pgadmin/static/vendor/react-dom/lib/ReactFiberReconciler.js
vendored
Normal file
64
web/pgadmin/static/vendor/react-dom/lib/ReactFiberReconciler.js
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
};
|
||||
};
|
||||
29
web/pgadmin/static/vendor/react-dom/lib/ReactFiberRoot.js
vendored
Normal file
29
web/pgadmin/static/vendor/react-dom/lib/ReactFiberRoot.js
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
331
web/pgadmin/static/vendor/react-dom/lib/ReactFiberScheduler.js
vendored
Normal file
331
web/pgadmin/static/vendor/react-dom/lib/ReactFiberScheduler.js
vendored
Normal file
@@ -0,0 +1,331 @@
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
77
web/pgadmin/static/vendor/react-dom/lib/ReactFiberUpdateQueue.js
vendored
Normal file
77
web/pgadmin/static/vendor/react-dom/lib/ReactFiberUpdateQueue.js
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
67
web/pgadmin/static/vendor/react-dom/lib/ReactHostComponent.js
vendored
Normal file
67
web/pgadmin/static/vendor/react-dom/lib/ReactHostComponent.js
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* 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;
|
||||
33
web/pgadmin/static/vendor/react-dom/lib/ReactHostOperationHistoryHook.js
vendored
Normal file
33
web/pgadmin/static/vendor/react-dom/lib/ReactHostOperationHistoryHook.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 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;
|
||||
33
web/pgadmin/static/vendor/react-dom/lib/ReactInjection.js
vendored
Normal file
33
web/pgadmin/static/vendor/react-dom/lib/ReactInjection.js
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* 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;
|
||||
123
web/pgadmin/static/vendor/react-dom/lib/ReactInputSelection.js
vendored
Normal file
123
web/pgadmin/static/vendor/react-dom/lib/ReactInputSelection.js
vendored
Normal file
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* 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;
|
||||
47
web/pgadmin/static/vendor/react-dom/lib/ReactInstanceMap.js
vendored
Normal file
47
web/pgadmin/static/vendor/react-dom/lib/ReactInstanceMap.js
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* 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;
|
||||
12
web/pgadmin/static/vendor/react-dom/lib/ReactInstanceType.js
vendored
Normal file
12
web/pgadmin/static/vendor/react-dom/lib/ReactInstanceType.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* 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';
|
||||
23
web/pgadmin/static/vendor/react-dom/lib/ReactInstrumentation.js
vendored
Normal file
23
web/pgadmin/static/vendor/react-dom/lib/ReactInstrumentation.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 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 };
|
||||
36
web/pgadmin/static/vendor/react-dom/lib/ReactInvalidSetStateWarningHook.js
vendored
Normal file
36
web/pgadmin/static/vendor/react-dom/lib/ReactInvalidSetStateWarningHook.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* 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;
|
||||
49
web/pgadmin/static/vendor/react-dom/lib/ReactMarkupChecksum.js
vendored
Normal file
49
web/pgadmin/static/vendor/react-dom/lib/ReactMarkupChecksum.js
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* 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;
|
||||
537
web/pgadmin/static/vendor/react-dom/lib/ReactMount.js
vendored
Normal file
537
web/pgadmin/static/vendor/react-dom/lib/ReactMount.js
vendored
Normal file
@@ -0,0 +1,537 @@
|
||||
/**
|
||||
* 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;
|
||||
449
web/pgadmin/static/vendor/react-dom/lib/ReactMultiChild.js
vendored
Normal file
449
web/pgadmin/static/vendor/react-dom/lib/ReactMultiChild.js
vendored
Normal file
@@ -0,0 +1,449 @@
|
||||
/**
|
||||
* 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;
|
||||
18
web/pgadmin/static/vendor/react-dom/lib/ReactMultiChildUpdateTypes.js
vendored
Normal file
18
web/pgadmin/static/vendor/react-dom/lib/ReactMultiChildUpdateTypes.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
39
web/pgadmin/static/vendor/react-dom/lib/ReactNodeTypes.js
vendored
Normal file
39
web/pgadmin/static/vendor/react-dom/lib/ReactNodeTypes.js
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* 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;
|
||||
93
web/pgadmin/static/vendor/react-dom/lib/ReactOwner.js
vendored
Normal file
93
web/pgadmin/static/vendor/react-dom/lib/ReactOwner.js
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* 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;
|
||||
500
web/pgadmin/static/vendor/react-dom/lib/ReactPerf.js
vendored
Normal file
500
web/pgadmin/static/vendor/react-dom/lib/ReactPerf.js
vendored
Normal file
@@ -0,0 +1,500 @@
|
||||
/**
|
||||
* 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 warning = require('fbjs/lib/warning');
|
||||
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) {
|
||||
process.env.NODE_ENV !== 'production' ? warning(warnedAboutPrintDOM, '`ReactPerf.printDOM(...)` is deprecated. Use ' + '`ReactPerf.printOperations(...)` instead.') : void 0;
|
||||
warnedAboutPrintDOM = true;
|
||||
return printOperations(measurements);
|
||||
}
|
||||
|
||||
var warnedAboutGetMeasurementsSummaryMap = false;
|
||||
function getMeasurementsSummaryMap(measurements) {
|
||||
process.env.NODE_ENV !== 'production' ? warning(warnedAboutGetMeasurementsSummaryMap, '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' + '`ReactPerf.getWasted(...)` instead.') : void 0;
|
||||
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;
|
||||
20
web/pgadmin/static/vendor/react-dom/lib/ReactPriorityLevel.js
vendored
Normal file
20
web/pgadmin/static/vendor/react-dom/lib/ReactPriorityLevel.js
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* 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 };
|
||||
24
web/pgadmin/static/vendor/react-dom/lib/ReactPropTypeLocationNames.js
vendored
Normal file
24
web/pgadmin/static/vendor/react-dom/lib/ReactPropTypeLocationNames.js
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* 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;
|
||||
12
web/pgadmin/static/vendor/react-dom/lib/ReactPropTypeLocations.js
vendored
Normal file
12
web/pgadmin/static/vendor/react-dom/lib/ReactPropTypeLocations.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* 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';
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user