` element
-// and optionally an object literal with `Map options`.
-//
-// @alternative
-// @factory L.map(el: HTMLElement, options?: Map options)
-// Instantiates a map object given an instance of a `
` HTML element
-// and optionally an object literal with `Map options`.
-export function createMap(id, options) {
- return new Map(id, options);
-}
diff --git a/Website/node_modules/leaflet/src/map/Map.methodOptions.leafdoc b/Website/node_modules/leaflet/src/map/Map.methodOptions.leafdoc
deleted file mode 100644
index a625fee..0000000
--- a/Website/node_modules/leaflet/src/map/Map.methodOptions.leafdoc
+++ /dev/null
@@ -1,112 +0,0 @@
-
-This file documents the common options passed to several map methods.
-
-
-@miniclass Locate options (Map)
-@aka locate options
-@section
-
-Some of the geolocation methods for `Map` take in an `options` parameter. This
-is a plain javascript object with the following optional components:
-
-@option watch: Boolean = false
-If `true`, starts continuous watching of location changes (instead of detecting it
-once) using W3C `watchPosition` method. You can later stop watching using
-`map.stopLocate()` method.
-
-
-@option setView: Boolean = false
-If `true`, automatically sets the map view to the user location with respect to
-detection accuracy, or to world view if geolocation failed.
-
-@option maxZoom: Number = Infinity
-The maximum zoom for automatic view setting when using `setView` option.
-
-@option timeout: Number = 10000
-Number of milliseconds to wait for a response from geolocation before firing a
-`locationerror` event.
-
-@option maximumAge: Number = 0
-Maximum age of detected location. If less than this amount of milliseconds
-passed since last geolocation response, `locate` will return a cached location.
-
-@option enableHighAccuracy: Boolean = false
-Enables high accuracy, see [description in the W3C spec](https://w3c.github.io/geolocation-api/#enablehighaccuracy-member).
-
-
-
-@miniclass Zoom options (Map)
-@aka zoom options
-@section
-
-Some of the `Map` methods which modify the zoom level take in an `options`
-parameter. This is a plain javascript object with the following optional
-components:
-
-
-@option animate: Boolean
-If not specified, zoom animation will happen if the zoom origin is inside the
-current view. If `true`, the map will attempt animating zoom disregarding where
-zoom origin is. Setting `false` will make it always reset the view completely
-without animation.
-
-
-
-
-@miniclass Pan options (Map)
-@aka pan options
-@section
-
-Some of the `Map` methods which modify the center of the map take in an `options`
-parameter. This is a plain javascript object with the following optional
-components:
-
-@option animate: Boolean
-If `true`, panning will always be animated if possible. If `false`, it will
-not animate panning, either resetting the map view if panning more than a
-screen away, or just setting a new offset for the map pane (except for `panBy`
-which always does the latter).
-
-@option duration: Number = 0.25
-Duration of animated panning, in seconds.
-
-@option easeLinearity: Number = 0.25
-The curvature factor of panning animation easing (third parameter of the
-[Cubic Bezier curve](https://cubic-bezier.com/)). 1.0 means linear animation,
-and the smaller this number, the more bowed the curve.
-
-@option noMoveStart: Boolean = false
-If `true`, panning won't fire `movestart` event on start (used internally for
-panning inertia).
-
-
-@miniclass Zoom/pan options (Map)
-@aka zoom/pan options
-@inherits Zoom options
-@inherits Pan options
-
-
-@miniclass Padding options (Map)
-@aka padding options
-@option paddingTopLeft: Point = [0, 0]
-Sets the amount of padding in the top left corner of a map container that
-shouldn't be accounted for when setting the view to fit bounds. Useful if you
-have some control overlays on the map like a sidebar and you don't want them
-to obscure objects you're zooming to.
-
-@option paddingBottomRight: Point = [0, 0]
-The same for the bottom right corner of the map.
-
-@option padding: Point = [0, 0]
-Equivalent of setting both top left and bottom right padding to the same value.
-
-
-@miniclass FitBounds options (Map)
-@aka fitBounds options
-@inherits Zoom/pan options
-@inherits Padding options
-
-@option maxZoom: Number = null
-The maximum possible zoom to use.
-
-
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.BoxZoom.js b/Website/node_modules/leaflet/src/map/handler/Map.BoxZoom.js
deleted file mode 100644
index 522cfd0..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.BoxZoom.js
+++ /dev/null
@@ -1,152 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import * as Util from '../../core/Util';
-import * as DomUtil from '../../dom/DomUtil';
-import * as DomEvent from '../../dom/DomEvent';
-import {LatLngBounds} from '../../geo/LatLngBounds';
-import {Bounds} from '../../geometry/Bounds';
-
-/*
- * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map
- * (zoom to a selected bounding box), enabled by default.
- */
-
-// @namespace Map
-// @section Interaction Options
-Map.mergeOptions({
- // @option boxZoom: Boolean = true
- // Whether the map can be zoomed to a rectangular area specified by
- // dragging the mouse while pressing the shift key.
- boxZoom: true
-});
-
-export var BoxZoom = Handler.extend({
- initialize: function (map) {
- this._map = map;
- this._container = map._container;
- this._pane = map._panes.overlayPane;
- this._resetStateTimeout = 0;
- map.on('unload', this._destroy, this);
- },
-
- addHooks: function () {
- DomEvent.on(this._container, 'mousedown', this._onMouseDown, this);
- },
-
- removeHooks: function () {
- DomEvent.off(this._container, 'mousedown', this._onMouseDown, this);
- },
-
- moved: function () {
- return this._moved;
- },
-
- _destroy: function () {
- DomUtil.remove(this._pane);
- delete this._pane;
- },
-
- _resetState: function () {
- this._resetStateTimeout = 0;
- this._moved = false;
- },
-
- _clearDeferredResetState: function () {
- if (this._resetStateTimeout !== 0) {
- clearTimeout(this._resetStateTimeout);
- this._resetStateTimeout = 0;
- }
- },
-
- _onMouseDown: function (e) {
- if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }
-
- // Clear the deferred resetState if it hasn't executed yet, otherwise it
- // will interrupt the interaction and orphan a box element in the container.
- this._clearDeferredResetState();
- this._resetState();
-
- DomUtil.disableTextSelection();
- DomUtil.disableImageDrag();
-
- this._startPoint = this._map.mouseEventToContainerPoint(e);
-
- DomEvent.on(document, {
- contextmenu: DomEvent.stop,
- mousemove: this._onMouseMove,
- mouseup: this._onMouseUp,
- keydown: this._onKeyDown
- }, this);
- },
-
- _onMouseMove: function (e) {
- if (!this._moved) {
- this._moved = true;
-
- this._box = DomUtil.create('div', 'leaflet-zoom-box', this._container);
- DomUtil.addClass(this._container, 'leaflet-crosshair');
-
- this._map.fire('boxzoomstart');
- }
-
- this._point = this._map.mouseEventToContainerPoint(e);
-
- var bounds = new Bounds(this._point, this._startPoint),
- size = bounds.getSize();
-
- DomUtil.setPosition(this._box, bounds.min);
-
- this._box.style.width = size.x + 'px';
- this._box.style.height = size.y + 'px';
- },
-
- _finish: function () {
- if (this._moved) {
- DomUtil.remove(this._box);
- DomUtil.removeClass(this._container, 'leaflet-crosshair');
- }
-
- DomUtil.enableTextSelection();
- DomUtil.enableImageDrag();
-
- DomEvent.off(document, {
- contextmenu: DomEvent.stop,
- mousemove: this._onMouseMove,
- mouseup: this._onMouseUp,
- keydown: this._onKeyDown
- }, this);
- },
-
- _onMouseUp: function (e) {
- if ((e.which !== 1) && (e.button !== 1)) { return; }
-
- this._finish();
-
- if (!this._moved) { return; }
- // Postpone to next JS tick so internal click event handling
- // still see it as "moved".
- this._clearDeferredResetState();
- this._resetStateTimeout = setTimeout(Util.bind(this._resetState, this), 0);
-
- var bounds = new LatLngBounds(
- this._map.containerPointToLatLng(this._startPoint),
- this._map.containerPointToLatLng(this._point));
-
- this._map
- .fitBounds(bounds)
- .fire('boxzoomend', {boxZoomBounds: bounds});
- },
-
- _onKeyDown: function (e) {
- if (e.keyCode === 27) {
- this._finish();
- this._clearDeferredResetState();
- this._resetState();
- }
- }
-});
-
-// @section Handlers
-// @property boxZoom: Handler
-// Box (shift-drag with mouse) zoom handler.
-Map.addInitHook('addHandler', 'boxZoom', BoxZoom);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js b/Website/node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js
deleted file mode 100644
index c105e8e..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-
-/*
- * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.
- */
-
-// @namespace Map
-// @section Interaction Options
-
-Map.mergeOptions({
- // @option doubleClickZoom: Boolean|String = true
- // Whether the map can be zoomed in by double clicking on it and
- // zoomed out by double clicking while holding shift. If passed
- // `'center'`, double-click zoom will zoom to the center of the
- // view regardless of where the mouse was.
- doubleClickZoom: true
-});
-
-export var DoubleClickZoom = Handler.extend({
- addHooks: function () {
- this._map.on('dblclick', this._onDoubleClick, this);
- },
-
- removeHooks: function () {
- this._map.off('dblclick', this._onDoubleClick, this);
- },
-
- _onDoubleClick: function (e) {
- var map = this._map,
- oldZoom = map.getZoom(),
- delta = map.options.zoomDelta,
- zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;
-
- if (map.options.doubleClickZoom === 'center') {
- map.setZoom(zoom);
- } else {
- map.setZoomAround(e.containerPoint, zoom);
- }
- }
-});
-
-// @section Handlers
-//
-// Map properties include interaction handlers that allow you to control
-// interaction behavior in runtime, enabling or disabling certain features such
-// as dragging or touch zoom (see `Handler` methods). For example:
-//
-// ```js
-// map.doubleClickZoom.disable();
-// ```
-//
-// @property doubleClickZoom: Handler
-// Double click zoom handler.
-Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.Drag.js b/Website/node_modules/leaflet/src/map/handler/Map.Drag.js
deleted file mode 100644
index 295f70f..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.Drag.js
+++ /dev/null
@@ -1,235 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import {Draggable} from '../../dom/Draggable';
-import * as Util from '../../core/Util';
-import * as DomUtil from '../../dom/DomUtil';
-import {toLatLngBounds as latLngBounds} from '../../geo/LatLngBounds';
-import {toBounds} from '../../geometry/Bounds';
-
-/*
- * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.
- */
-
-// @namespace Map
-// @section Interaction Options
-Map.mergeOptions({
- // @option dragging: Boolean = true
- // Whether the map is draggable with mouse/touch or not.
- dragging: true,
-
- // @section Panning Inertia Options
- // @option inertia: Boolean = *
- // If enabled, panning of the map will have an inertia effect where
- // the map builds momentum while dragging and continues moving in
- // the same direction for some time. Feels especially nice on touch
- // devices. Enabled by default.
- inertia: true,
-
- // @option inertiaDeceleration: Number = 3000
- // The rate with which the inertial movement slows down, in pixels/second².
- inertiaDeceleration: 3400, // px/s^2
-
- // @option inertiaMaxSpeed: Number = Infinity
- // Max speed of the inertial movement, in pixels/second.
- inertiaMaxSpeed: Infinity, // px/s
-
- // @option easeLinearity: Number = 0.2
- easeLinearity: 0.2,
-
- // TODO refactor, move to CRS
- // @option worldCopyJump: Boolean = false
- // With this option enabled, the map tracks when you pan to another "copy"
- // of the world and seamlessly jumps to the original one so that all overlays
- // like markers and vector layers are still visible.
- worldCopyJump: false,
-
- // @option maxBoundsViscosity: Number = 0.0
- // If `maxBounds` is set, this option will control how solid the bounds
- // are when dragging the map around. The default value of `0.0` allows the
- // user to drag outside the bounds at normal speed, higher values will
- // slow down map dragging outside bounds, and `1.0` makes the bounds fully
- // solid, preventing the user from dragging outside the bounds.
- maxBoundsViscosity: 0.0
-});
-
-export var Drag = Handler.extend({
- addHooks: function () {
- if (!this._draggable) {
- var map = this._map;
-
- this._draggable = new Draggable(map._mapPane, map._container);
-
- this._draggable.on({
- dragstart: this._onDragStart,
- drag: this._onDrag,
- dragend: this._onDragEnd
- }, this);
-
- this._draggable.on('predrag', this._onPreDragLimit, this);
- if (map.options.worldCopyJump) {
- this._draggable.on('predrag', this._onPreDragWrap, this);
- map.on('zoomend', this._onZoomEnd, this);
-
- map.whenReady(this._onZoomEnd, this);
- }
- }
- DomUtil.addClass(this._map._container, 'leaflet-grab leaflet-touch-drag');
- this._draggable.enable();
- this._positions = [];
- this._times = [];
- },
-
- removeHooks: function () {
- DomUtil.removeClass(this._map._container, 'leaflet-grab');
- DomUtil.removeClass(this._map._container, 'leaflet-touch-drag');
- this._draggable.disable();
- },
-
- moved: function () {
- return this._draggable && this._draggable._moved;
- },
-
- moving: function () {
- return this._draggable && this._draggable._moving;
- },
-
- _onDragStart: function () {
- var map = this._map;
-
- map._stop();
- if (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {
- var bounds = latLngBounds(this._map.options.maxBounds);
-
- this._offsetLimit = toBounds(
- this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),
- this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)
- .add(this._map.getSize()));
-
- this._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));
- } else {
- this._offsetLimit = null;
- }
-
- map
- .fire('movestart')
- .fire('dragstart');
-
- if (map.options.inertia) {
- this._positions = [];
- this._times = [];
- }
- },
-
- _onDrag: function (e) {
- if (this._map.options.inertia) {
- var time = this._lastTime = +new Date(),
- pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;
-
- this._positions.push(pos);
- this._times.push(time);
-
- this._prunePositions(time);
- }
-
- this._map
- .fire('move', e)
- .fire('drag', e);
- },
-
- _prunePositions: function (time) {
- while (this._positions.length > 1 && time - this._times[0] > 50) {
- this._positions.shift();
- this._times.shift();
- }
- },
-
- _onZoomEnd: function () {
- var pxCenter = this._map.getSize().divideBy(2),
- pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);
-
- this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;
- this._worldWidth = this._map.getPixelWorldBounds().getSize().x;
- },
-
- _viscousLimit: function (value, threshold) {
- return value - (value - threshold) * this._viscosity;
- },
-
- _onPreDragLimit: function () {
- if (!this._viscosity || !this._offsetLimit) { return; }
-
- var offset = this._draggable._newPos.subtract(this._draggable._startPos);
-
- var limit = this._offsetLimit;
- if (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }
- if (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }
- if (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }
- if (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }
-
- this._draggable._newPos = this._draggable._startPos.add(offset);
- },
-
- _onPreDragWrap: function () {
- // TODO refactor to be able to adjust map pane position after zoom
- var worldWidth = this._worldWidth,
- halfWidth = Math.round(worldWidth / 2),
- dx = this._initialWorldOffset,
- x = this._draggable._newPos.x,
- newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,
- newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,
- newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;
-
- this._draggable._absPos = this._draggable._newPos.clone();
- this._draggable._newPos.x = newX;
- },
-
- _onDragEnd: function (e) {
- var map = this._map,
- options = map.options,
-
- noInertia = !options.inertia || e.noInertia || this._times.length < 2;
-
- map.fire('dragend', e);
-
- if (noInertia) {
- map.fire('moveend');
-
- } else {
- this._prunePositions(+new Date());
-
- var direction = this._lastPos.subtract(this._positions[0]),
- duration = (this._lastTime - this._times[0]) / 1000,
- ease = options.easeLinearity,
-
- speedVector = direction.multiplyBy(ease / duration),
- speed = speedVector.distanceTo([0, 0]),
-
- limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),
- limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),
-
- decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),
- offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();
-
- if (!offset.x && !offset.y) {
- map.fire('moveend');
-
- } else {
- offset = map._limitOffset(offset, map.options.maxBounds);
-
- Util.requestAnimFrame(function () {
- map.panBy(offset, {
- duration: decelerationDuration,
- easeLinearity: ease,
- noMoveStart: true,
- animate: true
- });
- });
- }
- }
- }
-});
-
-// @section Handlers
-// @property dragging: Handler
-// Map dragging handler (by both mouse and touch).
-Map.addInitHook('addHandler', 'dragging', Drag);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.Keyboard.js b/Website/node_modules/leaflet/src/map/handler/Map.Keyboard.js
deleted file mode 100644
index 7244c4d..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.Keyboard.js
+++ /dev/null
@@ -1,183 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import {on, off, stop} from '../../dom/DomEvent';
-import {toPoint} from '../../geometry/Point';
-
-
-/*
- * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.
- */
-
-// @namespace Map
-// @section Keyboard Navigation Options
-Map.mergeOptions({
- // @option keyboard: Boolean = true
- // Makes the map focusable and allows users to navigate the map with keyboard
- // arrows and `+`/`-` keys.
- keyboard: true,
-
- // @option keyboardPanDelta: Number = 80
- // Amount of pixels to pan when pressing an arrow key.
- keyboardPanDelta: 80
-});
-
-export var Keyboard = Handler.extend({
-
- keyCodes: {
- left: [37],
- right: [39],
- down: [40],
- up: [38],
- zoomIn: [187, 107, 61, 171],
- zoomOut: [189, 109, 54, 173]
- },
-
- initialize: function (map) {
- this._map = map;
-
- this._setPanDelta(map.options.keyboardPanDelta);
- this._setZoomDelta(map.options.zoomDelta);
- },
-
- addHooks: function () {
- var container = this._map._container;
-
- // make the container focusable by tabbing
- if (container.tabIndex <= 0) {
- container.tabIndex = '0';
- }
-
- on(container, {
- focus: this._onFocus,
- blur: this._onBlur,
- mousedown: this._onMouseDown
- }, this);
-
- this._map.on({
- focus: this._addHooks,
- blur: this._removeHooks
- }, this);
- },
-
- removeHooks: function () {
- this._removeHooks();
-
- off(this._map._container, {
- focus: this._onFocus,
- blur: this._onBlur,
- mousedown: this._onMouseDown
- }, this);
-
- this._map.off({
- focus: this._addHooks,
- blur: this._removeHooks
- }, this);
- },
-
- _onMouseDown: function () {
- if (this._focused) { return; }
-
- var body = document.body,
- docEl = document.documentElement,
- top = body.scrollTop || docEl.scrollTop,
- left = body.scrollLeft || docEl.scrollLeft;
-
- this._map._container.focus();
-
- window.scrollTo(left, top);
- },
-
- _onFocus: function () {
- this._focused = true;
- this._map.fire('focus');
- },
-
- _onBlur: function () {
- this._focused = false;
- this._map.fire('blur');
- },
-
- _setPanDelta: function (panDelta) {
- var keys = this._panKeys = {},
- codes = this.keyCodes,
- i, len;
-
- for (i = 0, len = codes.left.length; i < len; i++) {
- keys[codes.left[i]] = [-1 * panDelta, 0];
- }
- for (i = 0, len = codes.right.length; i < len; i++) {
- keys[codes.right[i]] = [panDelta, 0];
- }
- for (i = 0, len = codes.down.length; i < len; i++) {
- keys[codes.down[i]] = [0, panDelta];
- }
- for (i = 0, len = codes.up.length; i < len; i++) {
- keys[codes.up[i]] = [0, -1 * panDelta];
- }
- },
-
- _setZoomDelta: function (zoomDelta) {
- var keys = this._zoomKeys = {},
- codes = this.keyCodes,
- i, len;
-
- for (i = 0, len = codes.zoomIn.length; i < len; i++) {
- keys[codes.zoomIn[i]] = zoomDelta;
- }
- for (i = 0, len = codes.zoomOut.length; i < len; i++) {
- keys[codes.zoomOut[i]] = -zoomDelta;
- }
- },
-
- _addHooks: function () {
- on(document, 'keydown', this._onKeyDown, this);
- },
-
- _removeHooks: function () {
- off(document, 'keydown', this._onKeyDown, this);
- },
-
- _onKeyDown: function (e) {
- if (e.altKey || e.ctrlKey || e.metaKey) { return; }
-
- var key = e.keyCode,
- map = this._map,
- offset;
-
- if (key in this._panKeys) {
- if (!map._panAnim || !map._panAnim._inProgress) {
- offset = this._panKeys[key];
- if (e.shiftKey) {
- offset = toPoint(offset).multiplyBy(3);
- }
-
- if (map.options.maxBounds) {
- offset = map._limitOffset(toPoint(offset), map.options.maxBounds);
- }
-
- if (map.options.worldCopyJump) {
- var newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));
- map.panTo(newLatLng);
- } else {
- map.panBy(offset);
- }
- }
- } else if (key in this._zoomKeys) {
- map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);
-
- } else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {
- map.closePopup();
-
- } else {
- return;
- }
-
- stop(e);
- }
-});
-
-// @section Handlers
-// @section Handlers
-// @property keyboard: Handler
-// Keyboard navigation handler.
-Map.addInitHook('addHandler', 'keyboard', Keyboard);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js b/Website/node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js
deleted file mode 100644
index 85d9ee1..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js
+++ /dev/null
@@ -1,91 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import * as DomEvent from '../../dom/DomEvent';
-import * as Util from '../../core/Util';
-
-/*
- * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.
- */
-
-// @namespace Map
-// @section Interaction Options
-Map.mergeOptions({
- // @section Mouse wheel options
- // @option scrollWheelZoom: Boolean|String = true
- // Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,
- // it will zoom to the center of the view regardless of where the mouse was.
- scrollWheelZoom: true,
-
- // @option wheelDebounceTime: Number = 40
- // Limits the rate at which a wheel can fire (in milliseconds). By default
- // user can't zoom via wheel more often than once per 40 ms.
- wheelDebounceTime: 40,
-
- // @option wheelPxPerZoomLevel: Number = 60
- // How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))
- // mean a change of one full zoom level. Smaller values will make wheel-zooming
- // faster (and vice versa).
- wheelPxPerZoomLevel: 60
-});
-
-export var ScrollWheelZoom = Handler.extend({
- addHooks: function () {
- DomEvent.on(this._map._container, 'wheel', this._onWheelScroll, this);
-
- this._delta = 0;
- },
-
- removeHooks: function () {
- DomEvent.off(this._map._container, 'wheel', this._onWheelScroll, this);
- },
-
- _onWheelScroll: function (e) {
- var delta = DomEvent.getWheelDelta(e);
-
- var debounce = this._map.options.wheelDebounceTime;
-
- this._delta += delta;
- this._lastMousePos = this._map.mouseEventToContainerPoint(e);
-
- if (!this._startTime) {
- this._startTime = +new Date();
- }
-
- var left = Math.max(debounce - (+new Date() - this._startTime), 0);
-
- clearTimeout(this._timer);
- this._timer = setTimeout(Util.bind(this._performZoom, this), left);
-
- DomEvent.stop(e);
- },
-
- _performZoom: function () {
- var map = this._map,
- zoom = map.getZoom(),
- snap = this._map.options.zoomSnap || 0;
-
- map._stop(); // stop panning and fly animations if any
-
- // map the delta with a sigmoid function to -4..4 range leaning on -1..1
- var d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),
- d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,
- d4 = snap ? Math.ceil(d3 / snap) * snap : d3,
- delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;
-
- this._delta = 0;
- this._startTime = null;
-
- if (!delta) { return; }
-
- if (map.options.scrollWheelZoom === 'center') {
- map.setZoom(zoom + delta);
- } else {
- map.setZoomAround(this._lastMousePos, zoom + delta);
- }
- }
-});
-
-// @section Handlers
-// @property scrollWheelZoom: Handler
-// Scroll wheel zoom handler.
-Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.TapHold.js b/Website/node_modules/leaflet/src/map/handler/Map.TapHold.js
deleted file mode 100644
index 558ba77..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.TapHold.js
+++ /dev/null
@@ -1,102 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import * as DomEvent from '../../dom/DomEvent';
-import {Point} from '../../geometry/Point';
-import * as Util from '../../core/Util';
-import Browser from '../../core/Browser';
-
-/*
- * L.Map.TapHold is used to simulate `contextmenu` event on long hold,
- * which otherwise is not fired by mobile Safari.
- */
-
-var tapHoldDelay = 600;
-
-// @namespace Map
-// @section Interaction Options
-Map.mergeOptions({
- // @section Touch interaction options
- // @option tapHold: Boolean
- // Enables simulation of `contextmenu` event, default is `true` for mobile Safari.
- tapHold: Browser.touchNative && Browser.safari && Browser.mobile,
-
- // @option tapTolerance: Number = 15
- // The max number of pixels a user can shift his finger during touch
- // for it to be considered a valid tap.
- tapTolerance: 15
-});
-
-export var TapHold = Handler.extend({
- addHooks: function () {
- DomEvent.on(this._map._container, 'touchstart', this._onDown, this);
- },
-
- removeHooks: function () {
- DomEvent.off(this._map._container, 'touchstart', this._onDown, this);
- },
-
- _onDown: function (e) {
- clearTimeout(this._holdTimeout);
- if (e.touches.length !== 1) { return; }
-
- var first = e.touches[0];
- this._startPos = this._newPos = new Point(first.clientX, first.clientY);
-
- this._holdTimeout = setTimeout(Util.bind(function () {
- this._cancel();
- if (!this._isTapValid()) { return; }
-
- // prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events
- DomEvent.on(document, 'touchend', DomEvent.preventDefault);
- DomEvent.on(document, 'touchend touchcancel', this._cancelClickPrevent);
- this._simulateEvent('contextmenu', first);
- }, this), tapHoldDelay);
-
- DomEvent.on(document, 'touchend touchcancel contextmenu', this._cancel, this);
- DomEvent.on(document, 'touchmove', this._onMove, this);
- },
-
- _cancelClickPrevent: function cancelClickPrevent() {
- DomEvent.off(document, 'touchend', DomEvent.preventDefault);
- DomEvent.off(document, 'touchend touchcancel', cancelClickPrevent);
- },
-
- _cancel: function () {
- clearTimeout(this._holdTimeout);
- DomEvent.off(document, 'touchend touchcancel contextmenu', this._cancel, this);
- DomEvent.off(document, 'touchmove', this._onMove, this);
- },
-
- _onMove: function (e) {
- var first = e.touches[0];
- this._newPos = new Point(first.clientX, first.clientY);
- },
-
- _isTapValid: function () {
- return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;
- },
-
- _simulateEvent: function (type, e) {
- var simulatedEvent = new MouseEvent(type, {
- bubbles: true,
- cancelable: true,
- view: window,
- // detail: 1,
- screenX: e.screenX,
- screenY: e.screenY,
- clientX: e.clientX,
- clientY: e.clientY,
- // button: 2,
- // buttons: 2
- });
-
- simulatedEvent._simulated = true;
-
- e.target.dispatchEvent(simulatedEvent);
- }
-});
-
-// @section Handlers
-// @property tapHold: Handler
-// Long tap handler to simulate `contextmenu` event (useful in mobile Safari).
-Map.addInitHook('addHandler', 'tapHold', TapHold);
diff --git a/Website/node_modules/leaflet/src/map/handler/Map.TouchZoom.js b/Website/node_modules/leaflet/src/map/handler/Map.TouchZoom.js
deleted file mode 100644
index 2590d8f..0000000
--- a/Website/node_modules/leaflet/src/map/handler/Map.TouchZoom.js
+++ /dev/null
@@ -1,130 +0,0 @@
-import {Map} from '../Map';
-import {Handler} from '../../core/Handler';
-import * as DomEvent from '../../dom/DomEvent';
-import * as Util from '../../core/Util';
-import * as DomUtil from '../../dom/DomUtil';
-import Browser from '../../core/Browser';
-
-/*
- * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.
- */
-
-// @namespace Map
-// @section Interaction Options
-Map.mergeOptions({
- // @section Touch interaction options
- // @option touchZoom: Boolean|String = *
- // Whether the map can be zoomed by touch-dragging with two fingers. If
- // passed `'center'`, it will zoom to the center of the view regardless of
- // where the touch events (fingers) were. Enabled for touch-capable web
- // browsers.
- touchZoom: Browser.touch,
-
- // @option bounceAtZoomLimits: Boolean = true
- // Set it to false if you don't want the map to zoom beyond min/max zoom
- // and then bounce back when pinch-zooming.
- bounceAtZoomLimits: true
-});
-
-export var TouchZoom = Handler.extend({
- addHooks: function () {
- DomUtil.addClass(this._map._container, 'leaflet-touch-zoom');
- DomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this);
- },
-
- removeHooks: function () {
- DomUtil.removeClass(this._map._container, 'leaflet-touch-zoom');
- DomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this);
- },
-
- _onTouchStart: function (e) {
- var map = this._map;
- if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }
-
- var p1 = map.mouseEventToContainerPoint(e.touches[0]),
- p2 = map.mouseEventToContainerPoint(e.touches[1]);
-
- this._centerPoint = map.getSize()._divideBy(2);
- this._startLatLng = map.containerPointToLatLng(this._centerPoint);
- if (map.options.touchZoom !== 'center') {
- this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));
- }
-
- this._startDist = p1.distanceTo(p2);
- this._startZoom = map.getZoom();
-
- this._moved = false;
- this._zooming = true;
-
- map._stop();
-
- DomEvent.on(document, 'touchmove', this._onTouchMove, this);
- DomEvent.on(document, 'touchend touchcancel', this._onTouchEnd, this);
-
- DomEvent.preventDefault(e);
- },
-
- _onTouchMove: function (e) {
- if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }
-
- var map = this._map,
- p1 = map.mouseEventToContainerPoint(e.touches[0]),
- p2 = map.mouseEventToContainerPoint(e.touches[1]),
- scale = p1.distanceTo(p2) / this._startDist;
-
- this._zoom = map.getScaleZoom(scale, this._startZoom);
-
- if (!map.options.bounceAtZoomLimits && (
- (this._zoom < map.getMinZoom() && scale < 1) ||
- (this._zoom > map.getMaxZoom() && scale > 1))) {
- this._zoom = map._limitZoom(this._zoom);
- }
-
- if (map.options.touchZoom === 'center') {
- this._center = this._startLatLng;
- if (scale === 1) { return; }
- } else {
- // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng
- var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);
- if (scale === 1 && delta.x === 0 && delta.y === 0) { return; }
- this._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);
- }
-
- if (!this._moved) {
- map._moveStart(true, false);
- this._moved = true;
- }
-
- Util.cancelAnimFrame(this._animRequest);
-
- var moveFn = Util.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);
- this._animRequest = Util.requestAnimFrame(moveFn, this, true);
-
- DomEvent.preventDefault(e);
- },
-
- _onTouchEnd: function () {
- if (!this._moved || !this._zooming) {
- this._zooming = false;
- return;
- }
-
- this._zooming = false;
- Util.cancelAnimFrame(this._animRequest);
-
- DomEvent.off(document, 'touchmove', this._onTouchMove, this);
- DomEvent.off(document, 'touchend touchcancel', this._onTouchEnd, this);
-
- // Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.
- if (this._map.options.zoomAnimation) {
- this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);
- } else {
- this._map._resetView(this._center, this._map._limitZoom(this._zoom));
- }
- }
-});
-
-// @section Handlers
-// @property touchZoom: Handler
-// Touch zoom handler.
-Map.addInitHook('addHandler', 'touchZoom', TouchZoom);
diff --git a/Website/node_modules/leaflet/src/map/index.js b/Website/node_modules/leaflet/src/map/index.js
deleted file mode 100644
index e35f755..0000000
--- a/Website/node_modules/leaflet/src/map/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {Map} from './Map';
-import {BoxZoom} from './handler/Map.BoxZoom';
-Map.BoxZoom = BoxZoom;
-import {DoubleClickZoom} from './handler/Map.DoubleClickZoom';
-Map.DoubleClickZoom = DoubleClickZoom;
-import {Drag} from './handler/Map.Drag';
-Map.Drag = Drag;
-import {Keyboard} from './handler/Map.Keyboard';
-Map.Keyboard = Keyboard;
-import {ScrollWheelZoom} from './handler/Map.ScrollWheelZoom';
-Map.ScrollWheelZoom = ScrollWheelZoom;
-import {TapHold} from './handler/Map.TapHold';
-Map.TapHold = TapHold;
-import {TouchZoom} from './handler/Map.TouchZoom';
-Map.TouchZoom = TouchZoom;
-
-export {Map, createMap as map} from './Map';
diff --git a/Website/node_modules/loose-envify/LICENSE b/Website/node_modules/loose-envify/LICENSE
deleted file mode 100644
index fbafb48..0000000
--- a/Website/node_modules/loose-envify/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Andres Suarez
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/Website/node_modules/loose-envify/README.md b/Website/node_modules/loose-envify/README.md
deleted file mode 100644
index 7f4e07b..0000000
--- a/Website/node_modules/loose-envify/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# loose-envify
-
-[](https://travis-ci.org/zertosh/loose-envify)
-
-Fast (and loose) selective `process.env` replacer using [js-tokens](https://github.com/lydell/js-tokens) instead of an AST. Works just like [envify](https://github.com/hughsk/envify) but much faster.
-
-## Gotchas
-
-* Doesn't handle broken syntax.
-* Doesn't look inside embedded expressions in template strings.
- - **this won't work:**
- ```js
- console.log(`the current env is ${process.env.NODE_ENV}`);
- ```
-* Doesn't replace oddly-spaced or oddly-commented expressions.
- - **this won't work:**
- ```js
- console.log(process./*won't*/env./*work*/NODE_ENV);
- ```
-
-## Usage/Options
-
-loose-envify has the exact same interface as [envify](https://github.com/hughsk/envify), including the CLI.
-
-## Benchmark
-
-```
-envify:
-
- $ for i in {1..5}; do node bench/bench.js 'envify'; done
- 708ms
- 727ms
- 791ms
- 719ms
- 720ms
-
-loose-envify:
-
- $ for i in {1..5}; do node bench/bench.js '../'; done
- 51ms
- 52ms
- 52ms
- 52ms
- 52ms
-```
diff --git a/Website/node_modules/loose-envify/cli.js b/Website/node_modules/loose-envify/cli.js
deleted file mode 100644
index c0b63cb..0000000
--- a/Website/node_modules/loose-envify/cli.js
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-var looseEnvify = require('./');
-var fs = require('fs');
-
-if (process.argv[2]) {
- fs.createReadStream(process.argv[2], {encoding: 'utf8'})
- .pipe(looseEnvify(process.argv[2]))
- .pipe(process.stdout);
-} else {
- process.stdin.resume()
- process.stdin
- .pipe(looseEnvify(__filename))
- .pipe(process.stdout);
-}
diff --git a/Website/node_modules/loose-envify/custom.js b/Website/node_modules/loose-envify/custom.js
deleted file mode 100644
index 6389bfa..0000000
--- a/Website/node_modules/loose-envify/custom.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// envify compatibility
-'use strict';
-
-module.exports = require('./loose-envify');
diff --git a/Website/node_modules/loose-envify/index.js b/Website/node_modules/loose-envify/index.js
deleted file mode 100644
index 8cd8305..0000000
--- a/Website/node_modules/loose-envify/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = require('./loose-envify')(process.env);
diff --git a/Website/node_modules/loose-envify/loose-envify.js b/Website/node_modules/loose-envify/loose-envify.js
deleted file mode 100644
index b5a5be2..0000000
--- a/Website/node_modules/loose-envify/loose-envify.js
+++ /dev/null
@@ -1,36 +0,0 @@
-'use strict';
-
-var stream = require('stream');
-var util = require('util');
-var replace = require('./replace');
-
-var jsonExtRe = /\.json$/;
-
-module.exports = function(rootEnv) {
- rootEnv = rootEnv || process.env;
- return function (file, trOpts) {
- if (jsonExtRe.test(file)) {
- return stream.PassThrough();
- }
- var envs = trOpts ? [rootEnv, trOpts] : [rootEnv];
- return new LooseEnvify(envs);
- };
-};
-
-function LooseEnvify(envs) {
- stream.Transform.call(this);
- this._data = '';
- this._envs = envs;
-}
-util.inherits(LooseEnvify, stream.Transform);
-
-LooseEnvify.prototype._transform = function(buf, enc, cb) {
- this._data += buf;
- cb();
-};
-
-LooseEnvify.prototype._flush = function(cb) {
- var replaced = replace(this._data, this._envs);
- this.push(replaced);
- cb();
-};
diff --git a/Website/node_modules/loose-envify/package.json b/Website/node_modules/loose-envify/package.json
deleted file mode 100644
index 5e3d0e2..0000000
--- a/Website/node_modules/loose-envify/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "loose-envify",
- "version": "1.4.0",
- "description": "Fast (and loose) selective `process.env` replacer using js-tokens instead of an AST",
- "keywords": [
- "environment",
- "variables",
- "browserify",
- "browserify-transform",
- "transform",
- "source",
- "configuration"
- ],
- "homepage": "https://github.com/zertosh/loose-envify",
- "license": "MIT",
- "author": "Andres Suarez ",
- "main": "index.js",
- "bin": {
- "loose-envify": "cli.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/zertosh/loose-envify.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "devDependencies": {
- "browserify": "^13.1.1",
- "envify": "^3.4.0",
- "tap": "^8.0.0"
- }
-}
diff --git a/Website/node_modules/loose-envify/replace.js b/Website/node_modules/loose-envify/replace.js
deleted file mode 100644
index ec15e81..0000000
--- a/Website/node_modules/loose-envify/replace.js
+++ /dev/null
@@ -1,65 +0,0 @@
-'use strict';
-
-var jsTokens = require('js-tokens').default;
-
-var processEnvRe = /\bprocess\.env\.[_$a-zA-Z][$\w]+\b/;
-var spaceOrCommentRe = /^(?:\s|\/[/*])/;
-
-function replace(src, envs) {
- if (!processEnvRe.test(src)) {
- return src;
- }
-
- var out = [];
- var purge = envs.some(function(env) {
- return env._ && env._.indexOf('purge') !== -1;
- });
-
- jsTokens.lastIndex = 0
- var parts = src.match(jsTokens);
-
- for (var i = 0; i < parts.length; i++) {
- if (parts[i ] === 'process' &&
- parts[i + 1] === '.' &&
- parts[i + 2] === 'env' &&
- parts[i + 3] === '.') {
- var prevCodeToken = getAdjacentCodeToken(-1, parts, i);
- var nextCodeToken = getAdjacentCodeToken(1, parts, i + 4);
- var replacement = getReplacementString(envs, parts[i + 4], purge);
- if (prevCodeToken !== '.' &&
- nextCodeToken !== '.' &&
- nextCodeToken !== '=' &&
- typeof replacement === 'string') {
- out.push(replacement);
- i += 4;
- continue;
- }
- }
- out.push(parts[i]);
- }
-
- return out.join('');
-}
-
-function getAdjacentCodeToken(dir, parts, i) {
- while (true) {
- var part = parts[i += dir];
- if (!spaceOrCommentRe.test(part)) {
- return part;
- }
- }
-}
-
-function getReplacementString(envs, name, purge) {
- for (var j = 0; j < envs.length; j++) {
- var env = envs[j];
- if (typeof env[name] !== 'undefined') {
- return JSON.stringify(env[name]);
- }
- }
- if (purge) {
- return 'undefined';
- }
-}
-
-module.exports = replace;
diff --git a/Website/node_modules/react-dom/LICENSE b/Website/node_modules/react-dom/LICENSE
deleted file mode 100644
index b96dcb0..0000000
--- a/Website/node_modules/react-dom/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) Facebook, Inc. and its affiliates.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Website/node_modules/react-dom/README.md b/Website/node_modules/react-dom/README.md
deleted file mode 100644
index ecba5cf..0000000
--- a/Website/node_modules/react-dom/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# `react-dom`
-
-This package serves as the entry point to the DOM and server renderers for React. It is intended to be paired with the generic React package, which is shipped as `react` to npm.
-
-## Installation
-
-```sh
-npm install react react-dom
-```
-
-## Usage
-
-### In the browser
-
-```js
-import { createRoot } from 'react-dom/client';
-
-function App() {
- return Hello World
;
-}
-
-const root = createRoot(document.getElementById('root'));
-root.render();
-```
-
-### On the server
-
-```js
-import { renderToPipeableStream } from 'react-dom/server';
-
-function App() {
- return Hello World
;
-}
-
-function handleRequest(res) {
- // ... in your server handler ...
- const stream = renderToPipeableStream(, {
- onShellReady() {
- res.statusCode = 200;
- res.setHeader('Content-type', 'text/html');
- stream.pipe(res);
- },
- // ...
- });
-}
-```
-
-## API
-
-### `react-dom`
-
-See https://reactjs.org/docs/react-dom.html
-
-### `react-dom/client`
-
-See https://reactjs.org/docs/react-dom-client.html
-
-### `react-dom/server`
-
-See https://reactjs.org/docs/react-dom-server.html
diff --git a/Website/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js b/Website/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js
deleted file mode 100644
index 11c25e0..0000000
--- a/Website/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js
+++ /dev/null
@@ -1,7018 +0,0 @@
-/**
- * @license React
- * react-dom-server-legacy.browser.development.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-'use strict';
-
-if (process.env.NODE_ENV !== "production") {
- (function() {
-'use strict';
-
-var React = require('react');
-
-var ReactVersion = '18.2.0';
-
-var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
-
-// by calls to these methods by a Babel plugin.
-//
-// In PROD (or in packages without access to React internals),
-// they are left as they are instead.
-
-function warn(format) {
- {
- {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
-
- printWarning('warn', format, args);
- }
- }
-}
-function error(format) {
- {
- {
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
- args[_key2 - 1] = arguments[_key2];
- }
-
- printWarning('error', format, args);
- }
- }
-}
-
-function printWarning(level, format, args) {
- // When changing this logic, you might want to also
- // update consoleWithStackDev.www.js as well.
- {
- var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
- var stack = ReactDebugCurrentFrame.getStackAddendum();
-
- if (stack !== '') {
- format += '%s';
- args = args.concat([stack]);
- } // eslint-disable-next-line react-internal/safe-string-coercion
-
-
- var argsWithFormat = args.map(function (item) {
- return String(item);
- }); // Careful: RN currently depends on this prefix
-
- argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
- // breaks IE9: https://github.com/facebook/react/issues/13610
- // eslint-disable-next-line react-internal/no-production-logging
-
- Function.prototype.apply.call(console[level], console, argsWithFormat);
- }
-}
-
-function scheduleWork(callback) {
- callback();
-}
-function beginWriting(destination) {}
-function writeChunk(destination, chunk) {
- writeChunkAndReturn(destination, chunk);
-}
-function writeChunkAndReturn(destination, chunk) {
- return destination.push(chunk);
-}
-function completeWriting(destination) {}
-function close(destination) {
- destination.push(null);
-}
-function stringToChunk(content) {
- return content;
-}
-function stringToPrecomputedChunk(content) {
- return content;
-}
-function closeWithError(destination, error) {
- // $FlowFixMe: This is an Error object or the destination accepts other types.
- destination.destroy(error);
-}
-
-/*
- * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol
- * and Temporal.* types. See https://github.com/facebook/react/pull/22064.
- *
- * The functions in this module will throw an easier-to-understand,
- * easier-to-debug exception with a clear errors message message explaining the
- * problem. (Instead of a confusing exception thrown inside the implementation
- * of the `value` object).
- */
-// $FlowFixMe only called in DEV, so void return is not possible.
-function typeName(value) {
- {
- // toStringTag is needed for namespaced types like Temporal.Instant
- var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;
- var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';
- return type;
- }
-} // $FlowFixMe only called in DEV, so void return is not possible.
-
-
-function willCoercionThrow(value) {
- {
- try {
- testStringCoercion(value);
- return false;
- } catch (e) {
- return true;
- }
- }
-}
-
-function testStringCoercion(value) {
- // If you ended up here by following an exception call stack, here's what's
- // happened: you supplied an object or symbol value to React (as a prop, key,
- // DOM attribute, CSS property, string ref, etc.) and when React tried to
- // coerce it to a string using `'' + value`, an exception was thrown.
- //
- // The most common types that will cause this exception are `Symbol` instances
- // and Temporal objects like `Temporal.Instant`. But any object that has a
- // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this
- // exception. (Library authors do this to prevent users from using built-in
- // numeric operators like `+` or comparison operators like `>=` because custom
- // methods are needed to perform accurate arithmetic or comparison.)
- //
- // To fix the problem, coerce this object or symbol value to a string before
- // passing it to React. The most reliable way is usually `String(value)`.
- //
- // To find which value is throwing, check the browser or debugger console.
- // Before this exception was thrown, there should be `console.error` output
- // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the
- // problem and how that type was used: key, atrribute, input value prop, etc.
- // In most cases, this console output also shows the component and its
- // ancestor components where the exception happened.
- //
- // eslint-disable-next-line react-internal/safe-string-coercion
- return '' + value;
-}
-
-function checkAttributeStringCoercion(value, attributeName) {
- {
- if (willCoercionThrow(value)) {
- error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));
-
- return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
- }
- }
-}
-function checkCSSPropertyStringCoercion(value, propName) {
- {
- if (willCoercionThrow(value)) {
- error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));
-
- return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
- }
- }
-}
-function checkHtmlStringCoercion(value) {
- {
- if (willCoercionThrow(value)) {
- error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));
-
- return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
- }
- }
-}
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-// A reserved attribute.
-// It is handled by React separately and shouldn't be written to the DOM.
-var RESERVED = 0; // A simple string attribute.
-// Attributes that aren't in the filter are presumed to have this type.
-
-var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called
-// "enumerated" attributes with "true" and "false" as possible values.
-// When true, it should be set to a "true" string.
-// When false, it should be set to a "false" string.
-
-var BOOLEANISH_STRING = 2; // A real boolean attribute.
-// When true, it should be present (set either to an empty string or its name).
-// When false, it should be omitted.
-
-var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.
-// When true, it should be present (set either to an empty string or its name).
-// When false, it should be omitted.
-// For any other value, should be present with that value.
-
-var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.
-// When falsy, it should be removed.
-
-var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.
-// When falsy, it should be removed.
-
-var POSITIVE_NUMERIC = 6;
-
-/* 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 */
-
-var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
-var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');
-var illegalAttributeNameCache = {};
-var validatedAttributeNameCache = {};
-function isAttributeNameSafe(attributeName) {
- if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {
- return true;
- }
-
- if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {
- return false;
- }
-
- if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
- validatedAttributeNameCache[attributeName] = true;
- return true;
- }
-
- illegalAttributeNameCache[attributeName] = true;
-
- {
- error('Invalid attribute name: `%s`', attributeName);
- }
-
- return false;
-}
-function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {
- if (propertyInfo !== null && propertyInfo.type === RESERVED) {
- return false;
- }
-
- switch (typeof value) {
- case 'function': // $FlowIssue symbol is perfectly valid here
-
- case 'symbol':
- // eslint-disable-line
- return true;
-
- case 'boolean':
- {
- if (isCustomComponentTag) {
- return false;
- }
-
- if (propertyInfo !== null) {
- return !propertyInfo.acceptsBooleans;
- } else {
- var prefix = name.toLowerCase().slice(0, 5);
- return prefix !== 'data-' && prefix !== 'aria-';
- }
- }
-
- default:
- return false;
- }
-}
-function getPropertyInfo(name) {
- return properties.hasOwnProperty(name) ? properties[name] : null;
-}
-
-function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {
- this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
- this.attributeName = attributeName;
- this.attributeNamespace = attributeNamespace;
- this.mustUseProperty = mustUseProperty;
- this.propertyName = name;
- this.type = type;
- this.sanitizeURL = sanitizeURL;
- this.removeEmptyString = removeEmptyString;
-} // When adding attributes to this list, be sure to also add them to
-// the `possibleStandardNames` module to ensure casing and incorrect
-// name warnings.
-
-
-var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.
-
-var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular
-// elements (not just inputs). Now that ReactDOMInput assigns to the
-// defaultValue property -- do we need this?
-'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];
-
-reservedProps.forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty
- name, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // A few React string attributes have a different name.
-// This is a mapping from React prop names to the attribute names.
-
-[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {
- var name = _ref[0],
- attributeName = _ref[1];
- properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
- attributeName, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are "enumerated" HTML attributes that accept "true" and "false".
-// In React, we let users pass `true` and `false` even though technically
-// these aren't boolean attributes (they are coerced to strings).
-
-['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
- name.toLowerCase(), // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are "enumerated" SVG attributes that accept "true" and "false".
-// In React, we let users pass `true` and `false` even though technically
-// these aren't boolean attributes (they are coerced to strings).
-// Since these are SVG attributes, their attribute names are case-sensitive.
-
-['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
- name, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are HTML boolean attributes.
-
-['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM
-// on the client side because the browsers are inconsistent. Instead we call focus().
-'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata
-'itemScope'].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty
- name.toLowerCase(), // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are the few React props that we set as DOM properties
-// rather than attributes. These are all booleans.
-
-['checked', // Note: `option.selected` is not updated if `select.multiple` is
-// disabled with `removeAttribute`. We have special logic for handling this.
-'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty
- name, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are HTML attributes that are "overloaded booleans": they behave like
-// booleans, but can also accept a string value.
-
-['capture', 'download' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty
- name, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are HTML attributes that must be positive numbers.
-
-['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty
- name, // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These are HTML attributes that must be numbers.
-
-['rowSpan', 'start'].forEach(function (name) {
- properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty
- name.toLowerCase(), // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-});
-var CAMELIZE = /[\-\:]([a-z])/g;
-
-var capitalize = function (token) {
- return token[1].toUpperCase();
-}; // This is a list of all SVG attributes that need special casing, namespacing,
-// or boolean value assignment. Regular attributes that just accept strings
-// and have the same names are omitted, just like in the HTML attribute filter.
-// Some of these attributes can be hard to find. This list was created by
-// scraping the MDN documentation.
-
-
-['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (attributeName) {
- var name = attributeName.replace(CAMELIZE, capitalize);
- properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
- attributeName, null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // String SVG attributes with the xlink namespace.
-
-['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (attributeName) {
- var name = attributeName.replace(CAMELIZE, capitalize);
- properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
- attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL
- false);
-}); // String SVG attributes with the xml namespace.
-
-['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,
-// you'll need to set attributeName to name.toLowerCase()
-// instead in the assignment below.
-].forEach(function (attributeName) {
- var name = attributeName.replace(CAMELIZE, capitalize);
- properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
- attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL
- false);
-}); // These attribute exists both in HTML and SVG.
-// The attribute name is case-sensitive in SVG so we can't just use
-// the React name like we do for attributes that exist only in HTML.
-
-['tabIndex', 'crossOrigin'].forEach(function (attributeName) {
- properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
- attributeName.toLowerCase(), // attributeName
- null, // attributeNamespace
- false, // sanitizeURL
- false);
-}); // These attributes accept URLs. These must not allow javascript: URLS.
-// These will also need to accept Trusted Types object in the future.
-
-var xlinkHref = 'xlinkHref';
-properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty
-'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL
-false);
-['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {
- properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
- attributeName.toLowerCase(), // attributeName
- null, // attributeNamespace
- true, // sanitizeURL
- true);
-});
-
-/**
- * CSS properties which accept numbers but are not in units of "px".
- */
-var isUnitlessNumber = {
- animationIterationCount: true,
- aspectRatio: true,
- borderImageOutset: true,
- borderImageSlice: true,
- borderImageWidth: true,
- boxFlex: true,
- boxFlexGroup: true,
- boxOrdinalGroup: true,
- columnCount: true,
- columns: true,
- flex: true,
- flexGrow: true,
- flexPositive: true,
- flexShrink: true,
- flexNegative: true,
- flexOrder: true,
- gridArea: true,
- gridRow: true,
- gridRowEnd: true,
- gridRowSpan: true,
- gridRowStart: true,
- gridColumn: true,
- gridColumnEnd: true,
- gridColumnSpan: true,
- gridColumnStart: true,
- fontWeight: true,
- lineClamp: true,
- lineHeight: true,
- opacity: true,
- order: true,
- orphans: true,
- tabSize: true,
- widows: true,
- zIndex: true,
- zoom: true,
- // SVG-related properties
- fillOpacity: true,
- floodOpacity: true,
- stopOpacity: true,
- strokeDasharray: true,
- strokeDashoffset: true,
- strokeMiterlimit: true,
- strokeOpacity: true,
- strokeWidth: true
-};
-/**
- * @param {string} prefix vendor-specific prefix, eg: Webkit
- * @param {string} key style name, eg: transitionDuration
- * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
- * WebkitTransitionDuration
- */
-
-function prefixKey(prefix, key) {
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
-}
-/**
- * Support style names that may come passed in prefixed by adding permutations
- * of vendor prefixes.
- */
-
-
-var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
-// infinite loop, because it iterates over the newly added props too.
-
-Object.keys(isUnitlessNumber).forEach(function (prop) {
- prefixes.forEach(function (prefix) {
- isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
- });
-});
-
-var hasReadOnlyValue = {
- button: true,
- checkbox: true,
- image: true,
- hidden: true,
- radio: true,
- reset: true,
- submit: true
-};
-function checkControlledValueProps(tagName, props) {
- {
- if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {
- 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`.');
- }
-
- if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {
- 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`.');
- }
- }
-}
-
-function isCustomComponent(tagName, props) {
- if (tagName.indexOf('-') === -1) {
- return typeof props.is === 'string';
- }
-
- switch (tagName) {
- // These are reserved SVG and MathML elements.
- // We don't mind this list too much because we expect it to never grow.
- // The alternative is to track the namespace in a few places which is convoluted.
- // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
- case 'annotation-xml':
- case 'color-profile':
- case 'font-face':
- case 'font-face-src':
- case 'font-face-uri':
- case 'font-face-format':
- case 'font-face-name':
- case 'missing-glyph':
- return false;
-
- default:
- return true;
- }
-}
-
-var ariaProperties = {
- 'aria-current': 0,
- // state
- 'aria-description': 0,
- '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
-};
-
-var warnedProperties = {};
-var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
-var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
-
-function validateProperty(tagName, name) {
- {
- if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {
- return true;
- }
-
- if (rARIACamel.test(name)) {
- var ariaName = 'aria-' + name.slice(4).toLowerCase();
- var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : 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 (correctName == null) {
- error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);
-
- warnedProperties[name] = true;
- return true;
- } // aria-* attributes should be lowercase; suggest the lowercase version.
-
-
- if (name !== correctName) {
- error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);
-
- warnedProperties[name] = true;
- return true;
- }
- }
-
- if (rARIA.test(name)) {
- var lowerCasedName = name.toLowerCase();
- var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? 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) {
- error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);
-
- warnedProperties[name] = true;
- return true;
- }
- }
- }
-
- return true;
-}
-
-function warnInvalidARIAProps(type, props) {
- {
- var invalidProps = [];
-
- for (var key in props) {
- var isValid = validateProperty(type, key);
-
- if (!isValid) {
- invalidProps.push(key);
- }
- }
-
- var unknownPropString = invalidProps.map(function (prop) {
- return '`' + prop + '`';
- }).join(', ');
-
- if (invalidProps.length === 1) {
- error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);
- } else if (invalidProps.length > 1) {
- error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);
- }
- }
-}
-
-function validateProperties(type, props) {
- if (isCustomComponent(type, props)) {
- return;
- }
-
- warnInvalidARIAProps(type, props);
-}
-
-var didWarnValueNull = false;
-function validateProperties$1(type, props) {
- {
- if (type !== 'input' && type !== 'textarea' && type !== 'select') {
- return;
- }
-
- if (props != null && props.value === null && !didWarnValueNull) {
- didWarnValueNull = true;
-
- if (type === 'select' && props.multiple) {
- error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);
- } else {
- error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);
- }
- }
- }
-}
-
-// When adding attributes to the HTML or SVG allowed attribute list, be sure to
-// also add them to this module to ensure casing and incorrect name
-// warnings.
-var possibleStandardNames = {
- // HTML
- accept: 'accept',
- acceptcharset: 'acceptCharset',
- 'accept-charset': 'acceptCharset',
- accesskey: 'accessKey',
- action: 'action',
- allowfullscreen: 'allowFullScreen',
- alt: 'alt',
- as: 'as',
- async: 'async',
- autocapitalize: 'autoCapitalize',
- autocomplete: 'autoComplete',
- autocorrect: 'autoCorrect',
- autofocus: 'autoFocus',
- autoplay: 'autoPlay',
- autosave: 'autoSave',
- capture: 'capture',
- cellpadding: 'cellPadding',
- cellspacing: 'cellSpacing',
- challenge: 'challenge',
- charset: 'charSet',
- checked: 'checked',
- children: 'children',
- cite: 'cite',
- class: 'className',
- classid: 'classID',
- classname: 'className',
- cols: 'cols',
- colspan: 'colSpan',
- content: 'content',
- contenteditable: 'contentEditable',
- contextmenu: 'contextMenu',
- controls: 'controls',
- controlslist: 'controlsList',
- coords: 'coords',
- crossorigin: 'crossOrigin',
- dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
- data: 'data',
- datetime: 'dateTime',
- default: 'default',
- defaultchecked: 'defaultChecked',
- defaultvalue: 'defaultValue',
- defer: 'defer',
- dir: 'dir',
- disabled: 'disabled',
- disablepictureinpicture: 'disablePictureInPicture',
- disableremoteplayback: 'disableRemotePlayback',
- download: 'download',
- draggable: 'draggable',
- enctype: 'encType',
- enterkeyhint: 'enterKeyHint',
- for: 'htmlFor',
- form: 'form',
- formmethod: 'formMethod',
- formaction: 'formAction',
- formenctype: 'formEncType',
- formnovalidate: 'formNoValidate',
- formtarget: 'formTarget',
- frameborder: 'frameBorder',
- headers: 'headers',
- height: 'height',
- hidden: 'hidden',
- high: 'high',
- href: 'href',
- hreflang: 'hrefLang',
- htmlfor: 'htmlFor',
- httpequiv: 'httpEquiv',
- 'http-equiv': 'httpEquiv',
- icon: 'icon',
- id: 'id',
- imagesizes: 'imageSizes',
- imagesrcset: 'imageSrcSet',
- innerhtml: 'innerHTML',
- inputmode: 'inputMode',
- integrity: 'integrity',
- is: 'is',
- itemid: 'itemID',
- itemprop: 'itemProp',
- itemref: 'itemRef',
- itemscope: 'itemScope',
- itemtype: 'itemType',
- keyparams: 'keyParams',
- keytype: 'keyType',
- kind: 'kind',
- label: 'label',
- lang: 'lang',
- list: 'list',
- loop: 'loop',
- low: 'low',
- manifest: 'manifest',
- marginwidth: 'marginWidth',
- marginheight: 'marginHeight',
- max: 'max',
- maxlength: 'maxLength',
- media: 'media',
- mediagroup: 'mediaGroup',
- method: 'method',
- min: 'min',
- minlength: 'minLength',
- multiple: 'multiple',
- muted: 'muted',
- name: 'name',
- nomodule: 'noModule',
- nonce: 'nonce',
- novalidate: 'noValidate',
- open: 'open',
- optimum: 'optimum',
- pattern: 'pattern',
- placeholder: 'placeholder',
- playsinline: 'playsInline',
- poster: 'poster',
- preload: 'preload',
- profile: 'profile',
- radiogroup: 'radioGroup',
- readonly: 'readOnly',
- referrerpolicy: 'referrerPolicy',
- rel: 'rel',
- required: 'required',
- reversed: 'reversed',
- role: 'role',
- rows: 'rows',
- rowspan: 'rowSpan',
- sandbox: 'sandbox',
- scope: 'scope',
- scoped: 'scoped',
- scrolling: 'scrolling',
- seamless: 'seamless',
- selected: 'selected',
- shape: 'shape',
- size: 'size',
- sizes: 'sizes',
- span: 'span',
- spellcheck: 'spellCheck',
- src: 'src',
- srcdoc: 'srcDoc',
- srclang: 'srcLang',
- srcset: 'srcSet',
- start: 'start',
- step: 'step',
- style: 'style',
- summary: 'summary',
- tabindex: 'tabIndex',
- target: 'target',
- title: 'title',
- type: 'type',
- usemap: 'useMap',
- value: 'value',
- width: 'width',
- wmode: 'wmode',
- wrap: 'wrap',
- // SVG
- about: 'about',
- accentheight: 'accentHeight',
- 'accent-height': 'accentHeight',
- accumulate: 'accumulate',
- additive: 'additive',
- alignmentbaseline: 'alignmentBaseline',
- 'alignment-baseline': 'alignmentBaseline',
- allowreorder: 'allowReorder',
- alphabetic: 'alphabetic',
- amplitude: 'amplitude',
- arabicform: 'arabicForm',
- 'arabic-form': 'arabicForm',
- ascent: 'ascent',
- attributename: 'attributeName',
- attributetype: 'attributeType',
- autoreverse: 'autoReverse',
- azimuth: 'azimuth',
- basefrequency: 'baseFrequency',
- baselineshift: 'baselineShift',
- 'baseline-shift': 'baselineShift',
- baseprofile: 'baseProfile',
- bbox: 'bbox',
- begin: 'begin',
- bias: 'bias',
- by: 'by',
- calcmode: 'calcMode',
- capheight: 'capHeight',
- 'cap-height': 'capHeight',
- clip: 'clip',
- clippath: 'clipPath',
- 'clip-path': 'clipPath',
- clippathunits: 'clipPathUnits',
- cliprule: 'clipRule',
- 'clip-rule': 'clipRule',
- color: 'color',
- colorinterpolation: 'colorInterpolation',
- 'color-interpolation': 'colorInterpolation',
- colorinterpolationfilters: 'colorInterpolationFilters',
- 'color-interpolation-filters': 'colorInterpolationFilters',
- colorprofile: 'colorProfile',
- 'color-profile': 'colorProfile',
- colorrendering: 'colorRendering',
- 'color-rendering': 'colorRendering',
- contentscripttype: 'contentScriptType',
- contentstyletype: 'contentStyleType',
- cursor: 'cursor',
- cx: 'cx',
- cy: 'cy',
- d: 'd',
- datatype: 'datatype',
- decelerate: 'decelerate',
- descent: 'descent',
- diffuseconstant: 'diffuseConstant',
- direction: 'direction',
- display: 'display',
- divisor: 'divisor',
- dominantbaseline: 'dominantBaseline',
- 'dominant-baseline': 'dominantBaseline',
- dur: 'dur',
- dx: 'dx',
- dy: 'dy',
- edgemode: 'edgeMode',
- elevation: 'elevation',
- enablebackground: 'enableBackground',
- 'enable-background': 'enableBackground',
- end: 'end',
- exponent: 'exponent',
- externalresourcesrequired: 'externalResourcesRequired',
- fill: 'fill',
- fillopacity: 'fillOpacity',
- 'fill-opacity': 'fillOpacity',
- fillrule: 'fillRule',
- 'fill-rule': 'fillRule',
- filter: 'filter',
- filterres: 'filterRes',
- filterunits: 'filterUnits',
- floodopacity: 'floodOpacity',
- 'flood-opacity': 'floodOpacity',
- floodcolor: 'floodColor',
- 'flood-color': 'floodColor',
- focusable: 'focusable',
- fontfamily: 'fontFamily',
- 'font-family': 'fontFamily',
- fontsize: 'fontSize',
- 'font-size': 'fontSize',
- fontsizeadjust: 'fontSizeAdjust',
- 'font-size-adjust': 'fontSizeAdjust',
- fontstretch: 'fontStretch',
- 'font-stretch': 'fontStretch',
- fontstyle: 'fontStyle',
- 'font-style': 'fontStyle',
- fontvariant: 'fontVariant',
- 'font-variant': 'fontVariant',
- fontweight: 'fontWeight',
- 'font-weight': 'fontWeight',
- format: 'format',
- from: 'from',
- fx: 'fx',
- fy: 'fy',
- g1: 'g1',
- g2: 'g2',
- glyphname: 'glyphName',
- 'glyph-name': 'glyphName',
- glyphorientationhorizontal: 'glyphOrientationHorizontal',
- 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
- glyphorientationvertical: 'glyphOrientationVertical',
- 'glyph-orientation-vertical': 'glyphOrientationVertical',
- glyphref: 'glyphRef',
- gradienttransform: 'gradientTransform',
- gradientunits: 'gradientUnits',
- hanging: 'hanging',
- horizadvx: 'horizAdvX',
- 'horiz-adv-x': 'horizAdvX',
- horizoriginx: 'horizOriginX',
- 'horiz-origin-x': 'horizOriginX',
- ideographic: 'ideographic',
- imagerendering: 'imageRendering',
- 'image-rendering': 'imageRendering',
- in2: 'in2',
- in: 'in',
- inlist: 'inlist',
- intercept: 'intercept',
- k1: 'k1',
- k2: 'k2',
- k3: 'k3',
- k4: 'k4',
- k: 'k',
- kernelmatrix: 'kernelMatrix',
- kernelunitlength: 'kernelUnitLength',
- kerning: 'kerning',
- keypoints: 'keyPoints',
- keysplines: 'keySplines',
- keytimes: 'keyTimes',
- lengthadjust: 'lengthAdjust',
- letterspacing: 'letterSpacing',
- 'letter-spacing': 'letterSpacing',
- lightingcolor: 'lightingColor',
- 'lighting-color': 'lightingColor',
- limitingconeangle: 'limitingConeAngle',
- local: 'local',
- markerend: 'markerEnd',
- 'marker-end': 'markerEnd',
- markerheight: 'markerHeight',
- markermid: 'markerMid',
- 'marker-mid': 'markerMid',
- markerstart: 'markerStart',
- 'marker-start': 'markerStart',
- markerunits: 'markerUnits',
- markerwidth: 'markerWidth',
- mask: 'mask',
- maskcontentunits: 'maskContentUnits',
- maskunits: 'maskUnits',
- mathematical: 'mathematical',
- mode: 'mode',
- numoctaves: 'numOctaves',
- offset: 'offset',
- opacity: 'opacity',
- operator: 'operator',
- order: 'order',
- orient: 'orient',
- orientation: 'orientation',
- origin: 'origin',
- overflow: 'overflow',
- overlineposition: 'overlinePosition',
- 'overline-position': 'overlinePosition',
- overlinethickness: 'overlineThickness',
- 'overline-thickness': 'overlineThickness',
- paintorder: 'paintOrder',
- 'paint-order': 'paintOrder',
- panose1: 'panose1',
- 'panose-1': 'panose1',
- pathlength: 'pathLength',
- patterncontentunits: 'patternContentUnits',
- patterntransform: 'patternTransform',
- patternunits: 'patternUnits',
- pointerevents: 'pointerEvents',
- 'pointer-events': 'pointerEvents',
- points: 'points',
- pointsatx: 'pointsAtX',
- pointsaty: 'pointsAtY',
- pointsatz: 'pointsAtZ',
- prefix: 'prefix',
- preservealpha: 'preserveAlpha',
- preserveaspectratio: 'preserveAspectRatio',
- primitiveunits: 'primitiveUnits',
- property: 'property',
- r: 'r',
- radius: 'radius',
- refx: 'refX',
- refy: 'refY',
- renderingintent: 'renderingIntent',
- 'rendering-intent': 'renderingIntent',
- repeatcount: 'repeatCount',
- repeatdur: 'repeatDur',
- requiredextensions: 'requiredExtensions',
- requiredfeatures: 'requiredFeatures',
- resource: 'resource',
- restart: 'restart',
- result: 'result',
- results: 'results',
- rotate: 'rotate',
- rx: 'rx',
- ry: 'ry',
- scale: 'scale',
- security: 'security',
- seed: 'seed',
- shaperendering: 'shapeRendering',
- 'shape-rendering': 'shapeRendering',
- slope: 'slope',
- spacing: 'spacing',
- specularconstant: 'specularConstant',
- specularexponent: 'specularExponent',
- speed: 'speed',
- spreadmethod: 'spreadMethod',
- startoffset: 'startOffset',
- stddeviation: 'stdDeviation',
- stemh: 'stemh',
- stemv: 'stemv',
- stitchtiles: 'stitchTiles',
- stopcolor: 'stopColor',
- 'stop-color': 'stopColor',
- stopopacity: 'stopOpacity',
- 'stop-opacity': 'stopOpacity',
- strikethroughposition: 'strikethroughPosition',
- 'strikethrough-position': 'strikethroughPosition',
- strikethroughthickness: 'strikethroughThickness',
- 'strikethrough-thickness': 'strikethroughThickness',
- string: 'string',
- stroke: 'stroke',
- strokedasharray: 'strokeDasharray',
- 'stroke-dasharray': 'strokeDasharray',
- strokedashoffset: 'strokeDashoffset',
- 'stroke-dashoffset': 'strokeDashoffset',
- strokelinecap: 'strokeLinecap',
- 'stroke-linecap': 'strokeLinecap',
- strokelinejoin: 'strokeLinejoin',
- 'stroke-linejoin': 'strokeLinejoin',
- strokemiterlimit: 'strokeMiterlimit',
- 'stroke-miterlimit': 'strokeMiterlimit',
- strokewidth: 'strokeWidth',
- 'stroke-width': 'strokeWidth',
- strokeopacity: 'strokeOpacity',
- 'stroke-opacity': 'strokeOpacity',
- suppresscontenteditablewarning: 'suppressContentEditableWarning',
- suppresshydrationwarning: 'suppressHydrationWarning',
- surfacescale: 'surfaceScale',
- systemlanguage: 'systemLanguage',
- tablevalues: 'tableValues',
- targetx: 'targetX',
- targety: 'targetY',
- textanchor: 'textAnchor',
- 'text-anchor': 'textAnchor',
- textdecoration: 'textDecoration',
- 'text-decoration': 'textDecoration',
- textlength: 'textLength',
- textrendering: 'textRendering',
- 'text-rendering': 'textRendering',
- to: 'to',
- transform: 'transform',
- typeof: 'typeof',
- u1: 'u1',
- u2: 'u2',
- underlineposition: 'underlinePosition',
- 'underline-position': 'underlinePosition',
- underlinethickness: 'underlineThickness',
- 'underline-thickness': 'underlineThickness',
- unicode: 'unicode',
- unicodebidi: 'unicodeBidi',
- 'unicode-bidi': 'unicodeBidi',
- unicoderange: 'unicodeRange',
- 'unicode-range': 'unicodeRange',
- unitsperem: 'unitsPerEm',
- 'units-per-em': 'unitsPerEm',
- unselectable: 'unselectable',
- valphabetic: 'vAlphabetic',
- 'v-alphabetic': 'vAlphabetic',
- values: 'values',
- vectoreffect: 'vectorEffect',
- 'vector-effect': 'vectorEffect',
- version: 'version',
- vertadvy: 'vertAdvY',
- 'vert-adv-y': 'vertAdvY',
- vertoriginx: 'vertOriginX',
- 'vert-origin-x': 'vertOriginX',
- vertoriginy: 'vertOriginY',
- 'vert-origin-y': 'vertOriginY',
- vhanging: 'vHanging',
- 'v-hanging': 'vHanging',
- videographic: 'vIdeographic',
- 'v-ideographic': 'vIdeographic',
- viewbox: 'viewBox',
- viewtarget: 'viewTarget',
- visibility: 'visibility',
- vmathematical: 'vMathematical',
- 'v-mathematical': 'vMathematical',
- vocab: 'vocab',
- widths: 'widths',
- wordspacing: 'wordSpacing',
- 'word-spacing': 'wordSpacing',
- writingmode: 'writingMode',
- 'writing-mode': 'writingMode',
- x1: 'x1',
- x2: 'x2',
- x: 'x',
- xchannelselector: 'xChannelSelector',
- xheight: 'xHeight',
- 'x-height': 'xHeight',
- xlinkactuate: 'xlinkActuate',
- 'xlink:actuate': 'xlinkActuate',
- xlinkarcrole: 'xlinkArcrole',
- 'xlink:arcrole': 'xlinkArcrole',
- xlinkhref: 'xlinkHref',
- 'xlink:href': 'xlinkHref',
- xlinkrole: 'xlinkRole',
- 'xlink:role': 'xlinkRole',
- xlinkshow: 'xlinkShow',
- 'xlink:show': 'xlinkShow',
- xlinktitle: 'xlinkTitle',
- 'xlink:title': 'xlinkTitle',
- xlinktype: 'xlinkType',
- 'xlink:type': 'xlinkType',
- xmlbase: 'xmlBase',
- 'xml:base': 'xmlBase',
- xmllang: 'xmlLang',
- 'xml:lang': 'xmlLang',
- xmlns: 'xmlns',
- 'xml:space': 'xmlSpace',
- xmlnsxlink: 'xmlnsXlink',
- 'xmlns:xlink': 'xmlnsXlink',
- xmlspace: 'xmlSpace',
- y1: 'y1',
- y2: 'y2',
- y: 'y',
- ychannelselector: 'yChannelSelector',
- z: 'z',
- zoomandpan: 'zoomAndPan'
-};
-
-var validateProperty$1 = function () {};
-
-{
- var warnedProperties$1 = {};
- var EVENT_NAME_REGEX = /^on./;
- var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;
- var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
- var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
-
- validateProperty$1 = function (tagName, name, value, eventRegistry) {
- if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {
- return true;
- }
-
- var lowerCasedName = name.toLowerCase();
-
- if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {
- error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');
-
- warnedProperties$1[name] = true;
- return true;
- } // We can't rely on the event system being injected on the server.
-
-
- if (eventRegistry != null) {
- var registrationNameDependencies = eventRegistry.registrationNameDependencies,
- possibleRegistrationNames = eventRegistry.possibleRegistrationNames;
-
- if (registrationNameDependencies.hasOwnProperty(name)) {
- return true;
- }
-
- var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;
-
- if (registrationName != null) {
- error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- if (EVENT_NAME_REGEX.test(name)) {
- error('Unknown event handler property `%s`. It will be ignored.', name);
-
- warnedProperties$1[name] = true;
- return true;
- }
- } else if (EVENT_NAME_REGEX.test(name)) {
- // If no event plugins have been injected, we are in a server environment.
- // So we can't tell if the event name is correct for sure, but we can filter
- // out known bad ones like `onclick`. We can't suggest a specific replacement though.
- if (INVALID_EVENT_NAME_REGEX.test(name)) {
- error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);
- }
-
- warnedProperties$1[name] = true;
- return true;
- } // Let the ARIA attribute hook validate ARIA attributes
-
-
- if (rARIA$1.test(name) || rARIACamel$1.test(name)) {
- return true;
- }
-
- if (lowerCasedName === 'innerhtml') {
- error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- if (lowerCasedName === 'aria') {
- error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {
- error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- if (typeof value === 'number' && isNaN(value)) {
- error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- var propertyInfo = getPropertyInfo(name);
- var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.
-
- if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
- var standardName = possibleStandardNames[lowerCasedName];
-
- if (standardName !== name) {
- error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);
-
- warnedProperties$1[name] = true;
- return true;
- }
- } else if (!isReserved && name !== lowerCasedName) {
- // Unknown attributes should have lowercase casing since that's how they
- // will be cased anyway with server rendering.
- error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
- if (value) {
- error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name);
- } else {
- error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);
- }
-
- warnedProperties$1[name] = true;
- return true;
- } // Now that we've validated casing, do not validate
- // data types for reserved props
-
-
- if (isReserved) {
- return true;
- } // Warn when a known attribute is a bad type
-
-
- if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
- warnedProperties$1[name] = true;
- return false;
- } // Warn when passing the strings 'false' or 'true' into a boolean prop
-
-
- if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {
- error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value);
-
- warnedProperties$1[name] = true;
- return true;
- }
-
- return true;
- };
-}
-
-var warnUnknownProperties = function (type, props, eventRegistry) {
- {
- var unknownProps = [];
-
- for (var key in props) {
- var isValid = validateProperty$1(type, key, props[key], eventRegistry);
-
- if (!isValid) {
- unknownProps.push(key);
- }
- }
-
- var unknownPropString = unknownProps.map(function (prop) {
- return '`' + prop + '`';
- }).join(', ');
-
- if (unknownProps.length === 1) {
- error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);
- } else if (unknownProps.length > 1) {
- error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);
- }
- }
-};
-
-function validateProperties$2(type, props, eventRegistry) {
- if (isCustomComponent(type, props)) {
- return;
- }
-
- warnUnknownProperties(type, props, eventRegistry);
-}
-
-var warnValidStyle = function () {};
-
-{
- // 'msTransform' is correct, but the other prefixes should be capitalized
- var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
- var msPattern = /^-ms-/;
- var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon
-
- var badStyleValueWithSemicolonPattern = /;\s*$/;
- var warnedStyleNames = {};
- var warnedStyleValues = {};
- var warnedForNaNValue = false;
- var warnedForInfinityValue = false;
-
- var camelize = function (string) {
- return string.replace(hyphenPattern, function (_, character) {
- return character.toUpperCase();
- });
- };
-
- var warnHyphenatedStyleName = function (name) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
-
- warnedStyleNames[name] = true;
-
- error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests
- // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
- // is converted to lowercase `ms`.
- camelize(name.replace(msPattern, 'ms-')));
- };
-
- var warnBadVendoredStyleName = function (name) {
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
- return;
- }
-
- warnedStyleNames[name] = true;
-
- error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));
- };
-
- var warnStyleValueWithSemicolon = function (name, value) {
- if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
- return;
- }
-
- warnedStyleValues[value] = true;
-
- error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));
- };
-
- var warnStyleValueIsNaN = function (name, value) {
- if (warnedForNaNValue) {
- return;
- }
-
- warnedForNaNValue = true;
-
- error('`NaN` is an invalid value for the `%s` css style property.', name);
- };
-
- var warnStyleValueIsInfinity = function (name, value) {
- if (warnedForInfinityValue) {
- return;
- }
-
- warnedForInfinityValue = true;
-
- error('`Infinity` is an invalid value for the `%s` css style property.', name);
- };
-
- warnValidStyle = function (name, value) {
- if (name.indexOf('-') > -1) {
- warnHyphenatedStyleName(name);
- } else if (badVendoredStyleNamePattern.test(name)) {
- warnBadVendoredStyleName(name);
- } else if (badStyleValueWithSemicolonPattern.test(value)) {
- warnStyleValueWithSemicolon(name, value);
- }
-
- if (typeof value === 'number') {
- if (isNaN(value)) {
- warnStyleValueIsNaN(name, value);
- } else if (!isFinite(value)) {
- warnStyleValueIsInfinity(name, value);
- }
- }
- };
-}
-
-var warnValidStyle$1 = warnValidStyle;
-
-// code copied and modified from escape-html
-var matchHtmlRegExp = /["'&<>]/;
-/**
- * Escapes special characters and HTML entities in a given html string.
- *
- * @param {string} string HTML string to escape for later insertion
- * @return {string}
- * @public
- */
-
-function escapeHtml(string) {
- {
- checkHtmlStringCoercion(string);
- }
-
- var str = '' + string;
- var match = matchHtmlRegExp.exec(str);
-
- if (!match) {
- return str;
- }
-
- var escape;
- var html = '';
- var index;
- var lastIndex = 0;
-
- for (index = match.index; index < str.length; index++) {
- switch (str.charCodeAt(index)) {
- case 34:
- // "
- escape = '"';
- break;
-
- case 38:
- // &
- escape = '&';
- break;
-
- case 39:
- // '
- escape = '''; // modified from escape-html; used to be '''
-
- break;
-
- case 60:
- // <
- escape = '<';
- break;
-
- case 62:
- // >
- escape = '>';
- break;
-
- default:
- continue;
- }
-
- if (lastIndex !== index) {
- html += str.substring(lastIndex, index);
- }
-
- lastIndex = index + 1;
- html += escape;
- }
-
- return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
-} // end code copied and modified from escape-html
-
-/**
- * Escapes text to prevent scripting attacks.
- *
- * @param {*} text Text value to escape.
- * @return {string} An escaped string.
- */
-
-
-function escapeTextForBrowser(text) {
- if (typeof text === 'boolean' || typeof text === 'number') {
- // this shortcircuit helps perf for types that we know will never have
- // special characters, especially given that this function is used often
- // for numeric dom ids.
- return '' + text;
- }
-
- return escapeHtml(text);
-}
-
-var uppercasePattern = /([A-Z])/g;
-var msPattern$1 = /^ms-/;
-/**
- * Hyphenates a camelcased CSS property name, for example:
- *
- * > hyphenateStyleName('backgroundColor')
- * < "background-color"
- * > hyphenateStyleName('MozTransition')
- * < "-moz-transition"
- * > hyphenateStyleName('msTransition')
- * < "-ms-transition"
- *
- * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
- * is converted to `-ms-`.
- */
-
-function hyphenateStyleName(name) {
- return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern$1, '-ms-');
-}
-
-// and any newline or tab are filtered out as if they're not part of the URL.
-// https://url.spec.whatwg.org/#url-parsing
-// Tab or newline are defined as \r\n\t:
-// https://infra.spec.whatwg.org/#ascii-tab-or-newline
-// A C0 control is a code point in the range \u0000 NULL to \u001F
-// INFORMATION SEPARATOR ONE, inclusive:
-// https://infra.spec.whatwg.org/#c0-control-or-space
-
-/* eslint-disable max-len */
-
-var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;
-var didWarn = false;
-
-function sanitizeURL(url) {
- {
- if (!didWarn && isJavaScriptProtocol.test(url)) {
- didWarn = true;
-
- error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));
- }
- }
-}
-
-var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare
-
-function isArray(a) {
- return isArrayImpl(a);
-}
-
-var startInlineScript = stringToPrecomputedChunk('');
-var startScriptSrc = stringToPrecomputedChunk('');
-/**
- * This escaping function is designed to work with bootstrapScriptContent only.
- * because we know we are escaping the entire script. We can avoid for instance
- * escaping html comment string sequences that are valid javascript as well because
- * if there are no sebsequent ');
-function writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) {
- writeChunk(destination, responseState.startInlineScript);
-
- if (!responseState.sentCompleteSegmentFunction) {
- // The first time we write this, we'll need to include the full implementation.
- responseState.sentCompleteSegmentFunction = true;
- writeChunk(destination, completeSegmentScript1Full);
- } else {
- // Future calls can just reuse the same function.
- writeChunk(destination, completeSegmentScript1Partial);
- }
-
- writeChunk(destination, responseState.segmentPrefix);
- var formattedID = stringToChunk(contentSegmentID.toString(16));
- writeChunk(destination, formattedID);
- writeChunk(destination, completeSegmentScript2);
- writeChunk(destination, responseState.placeholderPrefix);
- writeChunk(destination, formattedID);
- return writeChunkAndReturn(destination, completeSegmentScript3);
-}
-var completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC("');
-var completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC("');
-var completeBoundaryScript2 = stringToPrecomputedChunk('","');
-var completeBoundaryScript3 = stringToPrecomputedChunk('")');
-function writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) {
- writeChunk(destination, responseState.startInlineScript);
-
- if (!responseState.sentCompleteBoundaryFunction) {
- // The first time we write this, we'll need to include the full implementation.
- responseState.sentCompleteBoundaryFunction = true;
- writeChunk(destination, completeBoundaryScript1Full);
- } else {
- // Future calls can just reuse the same function.
- writeChunk(destination, completeBoundaryScript1Partial);
- }
-
- if (boundaryID === null) {
- throw new Error('An ID must have been assigned before we can complete the boundary.');
- }
-
- var formattedContentID = stringToChunk(contentSegmentID.toString(16));
- writeChunk(destination, boundaryID);
- writeChunk(destination, completeBoundaryScript2);
- writeChunk(destination, responseState.segmentPrefix);
- writeChunk(destination, formattedContentID);
- return writeChunkAndReturn(destination, completeBoundaryScript3);
-}
-var clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX("');
-var clientRenderScript1Partial = stringToPrecomputedChunk('$RX("');
-var clientRenderScript1A = stringToPrecomputedChunk('"');
-var clientRenderScript2 = stringToPrecomputedChunk(')');
-var clientRenderErrorScriptArgInterstitial = stringToPrecomputedChunk(',');
-function writeClientRenderBoundaryInstruction(destination, responseState, boundaryID, errorDigest, errorMessage, errorComponentStack) {
- writeChunk(destination, responseState.startInlineScript);
-
- if (!responseState.sentClientRenderFunction) {
- // The first time we write this, we'll need to include the full implementation.
- responseState.sentClientRenderFunction = true;
- writeChunk(destination, clientRenderScript1Full);
- } else {
- // Future calls can just reuse the same function.
- writeChunk(destination, clientRenderScript1Partial);
- }
-
- if (boundaryID === null) {
- throw new Error('An ID must have been assigned before we can complete the boundary.');
- }
-
- writeChunk(destination, boundaryID);
- writeChunk(destination, clientRenderScript1A);
-
- if (errorDigest || errorMessage || errorComponentStack) {
- writeChunk(destination, clientRenderErrorScriptArgInterstitial);
- writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorDigest || '')));
- }
-
- if (errorMessage || errorComponentStack) {
- writeChunk(destination, clientRenderErrorScriptArgInterstitial);
- writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorMessage || '')));
- }
-
- if (errorComponentStack) {
- writeChunk(destination, clientRenderErrorScriptArgInterstitial);
- writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorComponentStack)));
- }
-
- return writeChunkAndReturn(destination, clientRenderScript2);
-}
-var regexForJSStringsInScripts = /[<\u2028\u2029]/g;
-
-function escapeJSStringsForInstructionScripts(input) {
- var escaped = JSON.stringify(input);
- return escaped.replace(regexForJSStringsInScripts, function (match) {
- switch (match) {
- // santizing breaking out of strings and script tags
- case '<':
- return "\\u003c";
-
- case "\u2028":
- return "\\u2028";
-
- case "\u2029":
- return "\\u2029";
-
- default:
- {
- // eslint-disable-next-line react-internal/prod-error-codes
- throw new Error('escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React');
- }
- }
- });
-}
-
-function createResponseState$1(generateStaticMarkup, identifierPrefix) {
- var responseState = createResponseState(identifierPrefix, undefined);
- return {
- // Keep this in sync with ReactDOMServerFormatConfig
- bootstrapChunks: responseState.bootstrapChunks,
- startInlineScript: responseState.startInlineScript,
- placeholderPrefix: responseState.placeholderPrefix,
- segmentPrefix: responseState.segmentPrefix,
- boundaryPrefix: responseState.boundaryPrefix,
- idPrefix: responseState.idPrefix,
- nextSuspenseID: responseState.nextSuspenseID,
- sentCompleteSegmentFunction: responseState.sentCompleteSegmentFunction,
- sentCompleteBoundaryFunction: responseState.sentCompleteBoundaryFunction,
- sentClientRenderFunction: responseState.sentClientRenderFunction,
- // This is an extra field for the legacy renderer
- generateStaticMarkup: generateStaticMarkup
- };
-}
-function createRootFormatContext() {
- return {
- insertionMode: HTML_MODE,
- // We skip the root mode because we don't want to emit the DOCTYPE in legacy mode.
- selectedValue: null
- };
-}
-function pushTextInstance$1(target, text, responseState, textEmbedded) {
- if (responseState.generateStaticMarkup) {
- target.push(stringToChunk(escapeTextForBrowser(text)));
- return false;
- } else {
- return pushTextInstance(target, text, responseState, textEmbedded);
- }
-}
-function pushSegmentFinale$1(target, responseState, lastPushedText, textEmbedded) {
- if (responseState.generateStaticMarkup) {
- return;
- } else {
- return pushSegmentFinale(target, responseState, lastPushedText, textEmbedded);
- }
-}
-function writeStartCompletedSuspenseBoundary$1(destination, responseState) {
- if (responseState.generateStaticMarkup) {
- // A completed boundary is done and doesn't need a representation in the HTML
- // if we're not going to be hydrating it.
- return true;
- }
-
- return writeStartCompletedSuspenseBoundary(destination);
-}
-function writeStartClientRenderedSuspenseBoundary$1(destination, responseState, // flushing these error arguments are not currently supported in this legacy streaming format.
-errorDigest, errorMessage, errorComponentStack) {
- if (responseState.generateStaticMarkup) {
- // A client rendered boundary is done and doesn't need a representation in the HTML
- // since we'll never hydrate it. This is arguably an error in static generation.
- return true;
- }
-
- return writeStartClientRenderedSuspenseBoundary(destination, responseState, errorDigest, errorMessage, errorComponentStack);
-}
-function writeEndCompletedSuspenseBoundary$1(destination, responseState) {
- if (responseState.generateStaticMarkup) {
- return true;
- }
-
- return writeEndCompletedSuspenseBoundary(destination);
-}
-function writeEndClientRenderedSuspenseBoundary$1(destination, responseState) {
- if (responseState.generateStaticMarkup) {
- return true;
- }
-
- return writeEndClientRenderedSuspenseBoundary(destination);
-}
-
-var assign = Object.assign;
-
-// ATTENTION
-// When adding new symbols to this file,
-// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
-// The Symbol used to tag the ReactElement-like types.
-var REACT_ELEMENT_TYPE = Symbol.for('react.element');
-var REACT_PORTAL_TYPE = Symbol.for('react.portal');
-var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
-var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
-var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
-var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
-var REACT_CONTEXT_TYPE = Symbol.for('react.context');
-var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
-var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
-var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
-var REACT_MEMO_TYPE = Symbol.for('react.memo');
-var REACT_LAZY_TYPE = Symbol.for('react.lazy');
-var REACT_SCOPE_TYPE = Symbol.for('react.scope');
-var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');
-var REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');
-var REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');
-var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
-var FAUX_ITERATOR_SYMBOL = '@@iterator';
-function getIteratorFn(maybeIterable) {
- if (maybeIterable === null || typeof maybeIterable !== 'object') {
- return null;
- }
-
- var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
-
- if (typeof maybeIterator === 'function') {
- return maybeIterator;
- }
-
- return null;
-}
-
-function getWrappedName(outerType, innerType, wrapperName) {
- var displayName = outerType.displayName;
-
- if (displayName) {
- return displayName;
- }
-
- var functionName = innerType.displayName || innerType.name || '';
- return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName;
-} // Keep in sync with react-reconciler/getComponentNameFromFiber
-
-
-function getContextName(type) {
- return type.displayName || 'Context';
-} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.
-
-
-function getComponentNameFromType(type) {
- if (type == null) {
- // Host root, text node or just invalid type.
- return null;
- }
-
- {
- if (typeof type.tag === 'number') {
- error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');
- }
- }
-
- if (typeof type === 'function') {
- return type.displayName || type.name || null;
- }
-
- if (typeof type === 'string') {
- return type;
- }
-
- switch (type) {
- case REACT_FRAGMENT_TYPE:
- return 'Fragment';
-
- case REACT_PORTAL_TYPE:
- return 'Portal';
-
- case REACT_PROFILER_TYPE:
- return 'Profiler';
-
- case REACT_STRICT_MODE_TYPE:
- return 'StrictMode';
-
- case REACT_SUSPENSE_TYPE:
- return 'Suspense';
-
- case REACT_SUSPENSE_LIST_TYPE:
- return 'SuspenseList';
-
- }
-
- if (typeof type === 'object') {
- switch (type.$$typeof) {
- case REACT_CONTEXT_TYPE:
- var context = type;
- return getContextName(context) + '.Consumer';
-
- case REACT_PROVIDER_TYPE:
- var provider = type;
- return getContextName(provider._context) + '.Provider';
-
- case REACT_FORWARD_REF_TYPE:
- return getWrappedName(type, type.render, 'ForwardRef');
-
- case REACT_MEMO_TYPE:
- var outerName = type.displayName || null;
-
- if (outerName !== null) {
- return outerName;
- }
-
- return getComponentNameFromType(type.type) || 'Memo';
-
- case REACT_LAZY_TYPE:
- {
- var lazyComponent = type;
- var payload = lazyComponent._payload;
- var init = lazyComponent._init;
-
- try {
- return getComponentNameFromType(init(payload));
- } catch (x) {
- return null;
- }
- }
-
- // eslint-disable-next-line no-fallthrough
- }
- }
-
- return null;
-}
-
-// Helpers to patch console.logs to avoid logging during side-effect free
-// replaying on render function. This currently only patches the object
-// lazily which won't cover if the log function was extracted eagerly.
-// We could also eagerly patch the method.
-var disabledDepth = 0;
-var prevLog;
-var prevInfo;
-var prevWarn;
-var prevError;
-var prevGroup;
-var prevGroupCollapsed;
-var prevGroupEnd;
-
-function disabledLog() {}
-
-disabledLog.__reactDisabledLog = true;
-function disableLogs() {
- {
- if (disabledDepth === 0) {
- /* eslint-disable react-internal/no-production-logging */
- prevLog = console.log;
- prevInfo = console.info;
- prevWarn = console.warn;
- prevError = console.error;
- prevGroup = console.group;
- prevGroupCollapsed = console.groupCollapsed;
- prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
-
- var props = {
- configurable: true,
- enumerable: true,
- value: disabledLog,
- writable: true
- }; // $FlowFixMe Flow thinks console is immutable.
-
- Object.defineProperties(console, {
- info: props,
- log: props,
- warn: props,
- error: props,
- group: props,
- groupCollapsed: props,
- groupEnd: props
- });
- /* eslint-enable react-internal/no-production-logging */
- }
-
- disabledDepth++;
- }
-}
-function reenableLogs() {
- {
- disabledDepth--;
-
- if (disabledDepth === 0) {
- /* eslint-disable react-internal/no-production-logging */
- var props = {
- configurable: true,
- enumerable: true,
- writable: true
- }; // $FlowFixMe Flow thinks console is immutable.
-
- Object.defineProperties(console, {
- log: assign({}, props, {
- value: prevLog
- }),
- info: assign({}, props, {
- value: prevInfo
- }),
- warn: assign({}, props, {
- value: prevWarn
- }),
- error: assign({}, props, {
- value: prevError
- }),
- group: assign({}, props, {
- value: prevGroup
- }),
- groupCollapsed: assign({}, props, {
- value: prevGroupCollapsed
- }),
- groupEnd: assign({}, props, {
- value: prevGroupEnd
- })
- });
- /* eslint-enable react-internal/no-production-logging */
- }
-
- if (disabledDepth < 0) {
- error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
- }
- }
-}
-
-var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
-var prefix;
-function describeBuiltInComponentFrame(name, source, ownerFn) {
- {
- if (prefix === undefined) {
- // Extract the VM specific prefix used by each line.
- try {
- throw Error();
- } catch (x) {
- var match = x.stack.trim().match(/\n( *(at )?)/);
- prefix = match && match[1] || '';
- }
- } // We use the prefix to ensure our stacks line up with native stack frames.
-
-
- return '\n' + prefix + name;
- }
-}
-var reentry = false;
-var componentFrameCache;
-
-{
- var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
- componentFrameCache = new PossiblyWeakMap();
-}
-
-function describeNativeComponentFrame(fn, construct) {
- // If something asked for a stack inside a fake render, it should get ignored.
- if ( !fn || reentry) {
- return '';
- }
-
- {
- var frame = componentFrameCache.get(fn);
-
- if (frame !== undefined) {
- return frame;
- }
- }
-
- var control;
- reentry = true;
- var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
-
- Error.prepareStackTrace = undefined;
- var previousDispatcher;
-
- {
- previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function
- // for warnings.
-
- ReactCurrentDispatcher.current = null;
- disableLogs();
- }
-
- try {
- // This should throw.
- if (construct) {
- // Something should be setting the props in the constructor.
- var Fake = function () {
- throw Error();
- }; // $FlowFixMe
-
-
- Object.defineProperty(Fake.prototype, 'props', {
- set: function () {
- // We use a throwing setter instead of frozen or non-writable props
- // because that won't throw in a non-strict mode function.
- throw Error();
- }
- });
-
- if (typeof Reflect === 'object' && Reflect.construct) {
- // We construct a different control for this case to include any extra
- // frames added by the construct call.
- try {
- Reflect.construct(Fake, []);
- } catch (x) {
- control = x;
- }
-
- Reflect.construct(fn, [], Fake);
- } else {
- try {
- Fake.call();
- } catch (x) {
- control = x;
- }
-
- fn.call(Fake.prototype);
- }
- } else {
- try {
- throw Error();
- } catch (x) {
- control = x;
- }
-
- fn();
- }
- } catch (sample) {
- // This is inlined manually because closure doesn't do it for us.
- if (sample && control && typeof sample.stack === 'string') {
- // This extracts the first frame from the sample that isn't also in the control.
- // Skipping one frame that we assume is the frame that calls the two.
- var sampleLines = sample.stack.split('\n');
- var controlLines = control.stack.split('\n');
- var s = sampleLines.length - 1;
- var c = controlLines.length - 1;
-
- while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
- // We expect at least one stack frame to be shared.
- // Typically this will be the root most one. However, stack frames may be
- // cut off due to maximum stack limits. In this case, one maybe cut off
- // earlier than the other. We assume that the sample is longer or the same
- // and there for cut off earlier. So we should find the root most frame in
- // the sample somewhere in the control.
- c--;
- }
-
- for (; s >= 1 && c >= 0; s--, c--) {
- // Next we find the first one that isn't the same which should be the
- // frame that called our sample function and the control.
- if (sampleLines[s] !== controlLines[c]) {
- // In V8, the first line is describing the message but other VMs don't.
- // If we're about to return the first line, and the control is also on the same
- // line, that's a pretty good indicator that our sample threw at same line as
- // the control. I.e. before we entered the sample frame. So we ignore this result.
- // This can happen if you passed a class to function component, or non-function.
- if (s !== 1 || c !== 1) {
- do {
- s--;
- c--; // We may still have similar intermediate frames from the construct call.
- // The next one that isn't the same should be our match though.
-
- if (c < 0 || sampleLines[s] !== controlLines[c]) {
- // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
- var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled ""
- // but we have a user-provided "displayName"
- // splice it in to make the stack more readable.
-
-
- if (fn.displayName && _frame.includes('')) {
- _frame = _frame.replace('', fn.displayName);
- }
-
- {
- if (typeof fn === 'function') {
- componentFrameCache.set(fn, _frame);
- }
- } // Return the line we found.
-
-
- return _frame;
- }
- } while (s >= 1 && c >= 0);
- }
-
- break;
- }
- }
- }
- } finally {
- reentry = false;
-
- {
- ReactCurrentDispatcher.current = previousDispatcher;
- reenableLogs();
- }
-
- Error.prepareStackTrace = previousPrepareStackTrace;
- } // Fallback to just using the name if we couldn't make it throw.
-
-
- var name = fn ? fn.displayName || fn.name : '';
- var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
-
- {
- if (typeof fn === 'function') {
- componentFrameCache.set(fn, syntheticFrame);
- }
- }
-
- return syntheticFrame;
-}
-
-function describeClassComponentFrame(ctor, source, ownerFn) {
- {
- return describeNativeComponentFrame(ctor, true);
- }
-}
-function describeFunctionComponentFrame(fn, source, ownerFn) {
- {
- return describeNativeComponentFrame(fn, false);
- }
-}
-
-function shouldConstruct(Component) {
- var prototype = Component.prototype;
- return !!(prototype && prototype.isReactComponent);
-}
-
-function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
-
- if (type == null) {
- return '';
- }
-
- if (typeof type === 'function') {
- {
- return describeNativeComponentFrame(type, shouldConstruct(type));
- }
- }
-
- if (typeof type === 'string') {
- return describeBuiltInComponentFrame(type);
- }
-
- switch (type) {
- case REACT_SUSPENSE_TYPE:
- return describeBuiltInComponentFrame('Suspense');
-
- case REACT_SUSPENSE_LIST_TYPE:
- return describeBuiltInComponentFrame('SuspenseList');
- }
-
- if (typeof type === 'object') {
- switch (type.$$typeof) {
- case REACT_FORWARD_REF_TYPE:
- return describeFunctionComponentFrame(type.render);
-
- case REACT_MEMO_TYPE:
- // Memo may contain any component type so we recursively resolve it.
- return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
-
- case REACT_LAZY_TYPE:
- {
- var lazyComponent = type;
- var payload = lazyComponent._payload;
- var init = lazyComponent._init;
-
- try {
- // Lazy may contain any component type so we recursively resolve it.
- return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
- } catch (x) {}
- }
- }
- }
-
- return '';
-}
-
-var loggedTypeFailures = {};
-var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
-
-function setCurrentlyValidatingElement(element) {
- {
- if (element) {
- var owner = element._owner;
- var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
- ReactDebugCurrentFrame.setExtraStackFrame(stack);
- } else {
- ReactDebugCurrentFrame.setExtraStackFrame(null);
- }
- }
-}
-
-function checkPropTypes(typeSpecs, values, location, componentName, element) {
- {
- // $FlowFixMe This is okay but Flow doesn't know it.
- var has = Function.call.bind(hasOwnProperty);
-
- for (var typeSpecName in typeSpecs) {
- if (has(typeSpecs, typeSpecName)) {
- var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
- // fail the render phase where it didn't fail before. So we log it.
- // After these have been cleaned up, we'll let them throw.
-
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- if (typeof typeSpecs[typeSpecName] !== 'function') {
- // eslint-disable-next-line react-internal/prod-error-codes
- var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
- err.name = 'Invariant Violation';
- throw err;
- }
-
- error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
- } catch (ex) {
- error$1 = ex;
- }
-
- if (error$1 && !(error$1 instanceof Error)) {
- setCurrentlyValidatingElement(element);
-
- error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
-
- setCurrentlyValidatingElement(null);
- }
-
- if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
- // Only monitor this failure once because there tends to be a lot of the
- // same error.
- loggedTypeFailures[error$1.message] = true;
- setCurrentlyValidatingElement(element);
-
- error('Failed %s type: %s', location, error$1.message);
-
- setCurrentlyValidatingElement(null);
- }
- }
- }
- }
-}
-
-var warnedAboutMissingGetChildContext;
-
-{
- warnedAboutMissingGetChildContext = {};
-}
-
-var emptyContextObject = {};
-
-{
- Object.freeze(emptyContextObject);
-}
-
-function getMaskedContext(type, unmaskedContext) {
- {
- var contextTypes = type.contextTypes;
-
- if (!contextTypes) {
- return emptyContextObject;
- }
-
- var context = {};
-
- for (var key in contextTypes) {
- context[key] = unmaskedContext[key];
- }
-
- {
- var name = getComponentNameFromType(type) || 'Unknown';
- checkPropTypes(contextTypes, context, 'context', name);
- }
-
- return context;
- }
-}
-function processChildContext(instance, type, parentContext, childContextTypes) {
- {
- // TODO (bvaughn) Replace this behavior with an invariant() in the future.
- // It has only been added in Fiber to match the (unintentional) behavior in Stack.
- if (typeof instance.getChildContext !== 'function') {
- {
- var componentName = getComponentNameFromType(type) || 'Unknown';
-
- if (!warnedAboutMissingGetChildContext[componentName]) {
- warnedAboutMissingGetChildContext[componentName] = true;
-
- error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);
- }
- }
-
- return parentContext;
- }
-
- var childContext = instance.getChildContext();
-
- for (var contextKey in childContext) {
- if (!(contextKey in childContextTypes)) {
- throw new Error((getComponentNameFromType(type) || 'Unknown') + ".getChildContext(): key \"" + contextKey + "\" is not defined in childContextTypes.");
- }
- }
-
- {
- var name = getComponentNameFromType(type) || 'Unknown';
- checkPropTypes(childContextTypes, childContext, 'child context', name);
- }
-
- return assign({}, parentContext, childContext);
- }
-}
-
-var rendererSigil;
-
-{
- // Use this to detect multiple renderers using the same context
- rendererSigil = {};
-} // Used to store the parent path of all context overrides in a shared linked list.
-// Forming a reverse tree.
-
-
-var rootContextSnapshot = null; // We assume that this runtime owns the "current" field on all ReactContext instances.
-// This global (actually thread local) state represents what state all those "current",
-// fields are currently in.
-
-var currentActiveSnapshot = null;
-
-function popNode(prev) {
- {
- prev.context._currentValue2 = prev.parentValue;
- }
-}
-
-function pushNode(next) {
- {
- next.context._currentValue2 = next.value;
- }
-}
-
-function popToNearestCommonAncestor(prev, next) {
- if (prev === next) ; else {
- popNode(prev);
- var parentPrev = prev.parent;
- var parentNext = next.parent;
-
- if (parentPrev === null) {
- if (parentNext !== null) {
- throw new Error('The stacks must reach the root at the same time. This is a bug in React.');
- }
- } else {
- if (parentNext === null) {
- throw new Error('The stacks must reach the root at the same time. This is a bug in React.');
- }
-
- popToNearestCommonAncestor(parentPrev, parentNext);
- } // On the way back, we push the new ones that weren't common.
-
-
- pushNode(next);
- }
-}
-
-function popAllPrevious(prev) {
- popNode(prev);
- var parentPrev = prev.parent;
-
- if (parentPrev !== null) {
- popAllPrevious(parentPrev);
- }
-}
-
-function pushAllNext(next) {
- var parentNext = next.parent;
-
- if (parentNext !== null) {
- pushAllNext(parentNext);
- }
-
- pushNode(next);
-}
-
-function popPreviousToCommonLevel(prev, next) {
- popNode(prev);
- var parentPrev = prev.parent;
-
- if (parentPrev === null) {
- throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');
- }
-
- if (parentPrev.depth === next.depth) {
- // We found the same level. Now we just need to find a shared ancestor.
- popToNearestCommonAncestor(parentPrev, next);
- } else {
- // We must still be deeper.
- popPreviousToCommonLevel(parentPrev, next);
- }
-}
-
-function popNextToCommonLevel(prev, next) {
- var parentNext = next.parent;
-
- if (parentNext === null) {
- throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');
- }
-
- if (prev.depth === parentNext.depth) {
- // We found the same level. Now we just need to find a shared ancestor.
- popToNearestCommonAncestor(prev, parentNext);
- } else {
- // We must still be deeper.
- popNextToCommonLevel(prev, parentNext);
- }
-
- pushNode(next);
-} // Perform context switching to the new snapshot.
-// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by
-// updating all the context's current values. That way reads, always just read the current value.
-// At the cost of updating contexts even if they're never read by this subtree.
-
-
-function switchContext(newSnapshot) {
- // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.
- // We also need to update any new contexts that are now on the stack with the deepest value.
- // The easiest way to update new contexts is to just reapply them in reverse order from the
- // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack
- // for that. Therefore this algorithm is recursive.
- // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.
- // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.
- // 3) Then we reapply new contexts on the way back up the stack.
- var prev = currentActiveSnapshot;
- var next = newSnapshot;
-
- if (prev !== next) {
- if (prev === null) {
- // $FlowFixMe: This has to be non-null since it's not equal to prev.
- pushAllNext(next);
- } else if (next === null) {
- popAllPrevious(prev);
- } else if (prev.depth === next.depth) {
- popToNearestCommonAncestor(prev, next);
- } else if (prev.depth > next.depth) {
- popPreviousToCommonLevel(prev, next);
- } else {
- popNextToCommonLevel(prev, next);
- }
-
- currentActiveSnapshot = next;
- }
-}
-function pushProvider(context, nextValue) {
- var prevValue;
-
- {
- prevValue = context._currentValue2;
- context._currentValue2 = nextValue;
-
- {
- if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {
- error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
- }
-
- context._currentRenderer2 = rendererSigil;
- }
- }
-
- var prevNode = currentActiveSnapshot;
- var newNode = {
- parent: prevNode,
- depth: prevNode === null ? 0 : prevNode.depth + 1,
- context: context,
- parentValue: prevValue,
- value: nextValue
- };
- currentActiveSnapshot = newNode;
- return newNode;
-}
-function popProvider(context) {
- var prevSnapshot = currentActiveSnapshot;
-
- if (prevSnapshot === null) {
- throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.');
- }
-
- {
- if (prevSnapshot.context !== context) {
- error('The parent context is not the expected context. This is probably a bug in React.');
- }
- }
-
- {
- var _value = prevSnapshot.parentValue;
-
- if (_value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) {
- prevSnapshot.context._currentValue2 = prevSnapshot.context._defaultValue;
- } else {
- prevSnapshot.context._currentValue2 = _value;
- }
-
- {
- if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {
- error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
- }
-
- context._currentRenderer2 = rendererSigil;
- }
- }
-
- return currentActiveSnapshot = prevSnapshot.parent;
-}
-function getActiveContext() {
- return currentActiveSnapshot;
-}
-function readContext(context) {
- var value = context._currentValue2;
- return value;
-}
-
-/**
- * `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.
- *
- * Note that this module is currently shared and assumed to be stateless.
- * If this becomes an actual Map, that will break.
- */
-function get(key) {
- return key._reactInternals;
-}
-function set(key, value) {
- key._reactInternals = value;
-}
-
-var didWarnAboutNoopUpdateForComponent = {};
-var didWarnAboutDeprecatedWillMount = {};
-var didWarnAboutUninitializedState;
-var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;
-var didWarnAboutLegacyLifecyclesAndDerivedState;
-var didWarnAboutUndefinedDerivedState;
-var warnOnUndefinedDerivedState;
-var warnOnInvalidCallback;
-var didWarnAboutDirectlyAssigningPropsToState;
-var didWarnAboutContextTypeAndContextTypes;
-var didWarnAboutInvalidateContextType;
-
-{
- didWarnAboutUninitializedState = new Set();
- didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();
- didWarnAboutLegacyLifecyclesAndDerivedState = new Set();
- didWarnAboutDirectlyAssigningPropsToState = new Set();
- didWarnAboutUndefinedDerivedState = new Set();
- didWarnAboutContextTypeAndContextTypes = new Set();
- didWarnAboutInvalidateContextType = new Set();
- var didWarnOnInvalidCallback = new Set();
-
- warnOnInvalidCallback = function (callback, callerName) {
- if (callback === null || typeof callback === 'function') {
- return;
- }
-
- var key = callerName + '_' + callback;
-
- if (!didWarnOnInvalidCallback.has(key)) {
- didWarnOnInvalidCallback.add(key);
-
- error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
- }
- };
-
- warnOnUndefinedDerivedState = function (type, partialState) {
- if (partialState === undefined) {
- var componentName = getComponentNameFromType(type) || 'Component';
-
- if (!didWarnAboutUndefinedDerivedState.has(componentName)) {
- didWarnAboutUndefinedDerivedState.add(componentName);
-
- error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);
- }
- }
- };
-}
-
-function warnNoop(publicInstance, callerName) {
- {
- var _constructor = publicInstance.constructor;
- var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass';
- var warningKey = componentName + '.' + callerName;
-
- if (didWarnAboutNoopUpdateForComponent[warningKey]) {
- return;
- }
-
- error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName);
-
- didWarnAboutNoopUpdateForComponent[warningKey] = true;
- }
-}
-
-var classComponentUpdater = {
- isMounted: function (inst) {
- return false;
- },
- enqueueSetState: function (inst, payload, callback) {
- var internals = get(inst);
-
- if (internals.queue === null) {
- warnNoop(inst, 'setState');
- } else {
- internals.queue.push(payload);
-
- {
- if (callback !== undefined && callback !== null) {
- warnOnInvalidCallback(callback, 'setState');
- }
- }
- }
- },
- enqueueReplaceState: function (inst, payload, callback) {
- var internals = get(inst);
- internals.replace = true;
- internals.queue = [payload];
-
- {
- if (callback !== undefined && callback !== null) {
- warnOnInvalidCallback(callback, 'setState');
- }
- }
- },
- enqueueForceUpdate: function (inst, callback) {
- var internals = get(inst);
-
- if (internals.queue === null) {
- warnNoop(inst, 'forceUpdate');
- } else {
- {
- if (callback !== undefined && callback !== null) {
- warnOnInvalidCallback(callback, 'setState');
- }
- }
- }
- }
-};
-
-function applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) {
- var partialState = getDerivedStateFromProps(nextProps, prevState);
-
- {
- warnOnUndefinedDerivedState(ctor, partialState);
- } // Merge the partial state and the previous state.
-
-
- var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);
- return newState;
-}
-
-function constructClassInstance(ctor, props, maskedLegacyContext) {
- var context = emptyContextObject;
- var contextType = ctor.contextType;
-
- {
- if ('contextType' in ctor) {
- var isValid = // Allow null for conditional declaration
- contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a
-
- if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
- didWarnAboutInvalidateContextType.add(ctor);
- var addendum = '';
-
- if (contextType === undefined) {
- addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
- } else if (typeof contextType !== 'object') {
- addendum = ' However, it is set to a ' + typeof contextType + '.';
- } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
- addendum = ' Did you accidentally pass the Context.Provider instead?';
- } else if (contextType._context !== undefined) {
- //