/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js": /*!********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/defineProperty.js ***! \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _defineProperty) /* harmony export */ }); /* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"); function _defineProperty(e, r, t) { return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__["default"])(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/extends.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/extends.js ***! \*************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _extends) /* harmony export */ }); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectSpread2) /* harmony export */ }); /* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": /*!**********************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! \**********************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectWithoutPropertiesLoose) /* harmony export */ }); function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***! \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPrimitive) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); function toPrimitive(t, r) { if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPropertyKey) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); /* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js"); function toPropertyKey(t) { var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__["default"])(t, "string"); return "symbol" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i) ? i : i + ""; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/typeof.js": /*!************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/typeof.js ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _typeof) /* harmony export */ }); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/typeof.js": /*!********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! \********************************************************/ /***/ ((module) => { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js": /*!******************************************************************!*\ !*** ../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ EnhancerArray: () => (/* binding */ EnhancerArray), /* harmony export */ MiddlewareArray: () => (/* binding */ MiddlewareArray), /* harmony export */ SHOULD_AUTOBATCH: () => (/* binding */ SHOULD_AUTOBATCH), /* harmony export */ TaskAbortError: () => (/* binding */ TaskAbortError), /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.__DO_NOT_USE__ActionTypes), /* harmony export */ addListener: () => (/* binding */ addListener), /* harmony export */ applyMiddleware: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.applyMiddleware), /* harmony export */ autoBatchEnhancer: () => (/* binding */ autoBatchEnhancer), /* harmony export */ bindActionCreators: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.bindActionCreators), /* harmony export */ clearAllListeners: () => (/* binding */ clearAllListeners), /* harmony export */ combineReducers: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.combineReducers), /* harmony export */ compose: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.compose), /* harmony export */ configureStore: () => (/* binding */ configureStore), /* harmony export */ createAction: () => (/* binding */ createAction), /* harmony export */ createActionCreatorInvariantMiddleware: () => (/* binding */ createActionCreatorInvariantMiddleware), /* harmony export */ createAsyncThunk: () => (/* binding */ createAsyncThunk), /* harmony export */ createDraftSafeSelector: () => (/* binding */ createDraftSafeSelector), /* harmony export */ createEntityAdapter: () => (/* binding */ createEntityAdapter), /* harmony export */ createImmutableStateInvariantMiddleware: () => (/* binding */ createImmutableStateInvariantMiddleware), /* harmony export */ createListenerMiddleware: () => (/* binding */ createListenerMiddleware), /* harmony export */ createNextState: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__["default"]), /* harmony export */ createReducer: () => (/* binding */ createReducer), /* harmony export */ createSelector: () => (/* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_2__.createSelector), /* harmony export */ createSerializableStateInvariantMiddleware: () => (/* binding */ createSerializableStateInvariantMiddleware), /* harmony export */ createSlice: () => (/* binding */ createSlice), /* harmony export */ createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.createStore), /* harmony export */ current: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.current), /* harmony export */ findNonSerializableValue: () => (/* binding */ findNonSerializableValue), /* harmony export */ freeze: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.freeze), /* harmony export */ getDefaultMiddleware: () => (/* binding */ getDefaultMiddleware), /* harmony export */ getType: () => (/* binding */ getType), /* harmony export */ isAction: () => (/* binding */ isAction), /* harmony export */ isActionCreator: () => (/* binding */ isActionCreator), /* harmony export */ isAllOf: () => (/* binding */ isAllOf), /* harmony export */ isAnyOf: () => (/* binding */ isAnyOf), /* harmony export */ isAsyncThunkAction: () => (/* binding */ isAsyncThunkAction), /* harmony export */ isDraft: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.isDraft), /* harmony export */ isFluxStandardAction: () => (/* binding */ isFSA), /* harmony export */ isFulfilled: () => (/* binding */ isFulfilled), /* harmony export */ isImmutableDefault: () => (/* binding */ isImmutableDefault), /* harmony export */ isPending: () => (/* binding */ isPending), /* harmony export */ isPlain: () => (/* binding */ isPlain), /* harmony export */ isPlainObject: () => (/* binding */ isPlainObject), /* harmony export */ isRejected: () => (/* binding */ isRejected), /* harmony export */ isRejectedWithValue: () => (/* binding */ isRejectedWithValue), /* harmony export */ legacy_createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_1__.legacy_createStore), /* harmony export */ miniSerializeError: () => (/* binding */ miniSerializeError), /* harmony export */ nanoid: () => (/* binding */ nanoid), /* harmony export */ original: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_0__.original), /* harmony export */ prepareAutoBatched: () => (/* binding */ prepareAutoBatched), /* harmony export */ removeListener: () => (/* binding */ removeListener), /* harmony export */ unwrapResult: () => (/* binding */ unwrapResult) /* harmony export */ }); /* harmony import */ var immer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! immer */ "../node_modules/immer/dist/immer.esm.mjs"); /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux */ "../node_modules/redux/es/redux.js"); /* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! reselect */ "../node_modules/reselect/es/index.js"); /* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-thunk */ "../node_modules/redux-thunk/es/index.js"); var __extends = (undefined && undefined.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __generator = (undefined && undefined.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; }; var __spreadValues = function (a, b) { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) { var prop = _c[_i]; if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); }; var __async = function (__this, __arguments, generator) { return new Promise(function (resolve, reject) { var fulfilled = function (value) { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = function (value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); }; step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts // src/createDraftSafeSelector.ts var createDraftSafeSelector = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var selector = reselect__WEBPACK_IMPORTED_MODULE_2__.createSelector.apply(void 0, args); var wrappedSelector = function (value) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { rest[_i - 1] = arguments[_i]; } return selector.apply(void 0, __spreadArray([(0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(value) ? (0,immer__WEBPACK_IMPORTED_MODULE_0__.current)(value) : value], rest)); }; return wrappedSelector; }; // src/configureStore.ts // src/devtoolsExtension.ts var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () { if (arguments.length === 0) return void 0; if (typeof arguments[0] === "object") return redux__WEBPACK_IMPORTED_MODULE_1__.compose; return redux__WEBPACK_IMPORTED_MODULE_1__.compose.apply(null, arguments); }; var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () { return function (noop2) { return noop2; }; }; // src/isPlainObject.ts function isPlainObject(value) { if (typeof value !== "object" || value === null) return false; var proto = Object.getPrototypeOf(value); if (proto === null) return true; var baseProto = proto; while (Object.getPrototypeOf(baseProto) !== null) { baseProto = Object.getPrototypeOf(baseProto); } return proto === baseProto; } // src/getDefaultMiddleware.ts // src/tsHelpers.ts var hasMatchFunction = function (v) { return v && typeof v.match === "function"; }; // src/createAction.ts function createAction(type, prepareAction) { function actionCreator() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (prepareAction) { var prepared = prepareAction.apply(void 0, args); if (!prepared) { throw new Error("prepareAction did not return an object"); } return __spreadValues(__spreadValues({ type: type, payload: prepared.payload }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error }); } return { type: type, payload: args[0] }; } actionCreator.toString = function () { return "" + type; }; actionCreator.type = type; actionCreator.match = function (action) { return action.type === type; }; return actionCreator; } function isAction(action) { return isPlainObject(action) && "type" in action; } function isActionCreator(action) { return typeof action === "function" && "type" in action && hasMatchFunction(action); } function isFSA(action) { return isAction(action) && typeof action.type === "string" && Object.keys(action).every(isValidKey); } function isValidKey(key) { return ["type", "payload", "error", "meta"].indexOf(key) > -1; } function getType(actionCreator) { return "" + actionCreator; } // src/actionCreatorInvariantMiddleware.ts function getMessage(type) { var splitType = type ? ("" + type).split("/") : []; var actionName = splitType[splitType.length - 1] || "actionCreator"; return "Detected an action creator with type \"" + (type || "unknown") + "\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. `dispatch(" + actionName + "())` instead of `dispatch(" + actionName + ")`. This is necessary even if the action has no payload."; } function createActionCreatorInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isActionCreator, isActionCreator2 = _c === void 0 ? isActionCreator : _c; return function () { return function (next) { return function (action) { if (isActionCreator2(action)) { console.warn(getMessage(action.type)); } return next(action); }; }; }; } // src/utils.ts function getTimeMeasureUtils(maxDelay, fnName) { var elapsed = 0; return { measureTime: function (fn) { var started = Date.now(); try { return fn(); } finally { var finished = Date.now(); elapsed += finished - started; } }, warnIfExceeded: function () { if (elapsed > maxDelay) { console.warn(fnName + " took " + elapsed + "ms, which is more than the warning threshold of " + maxDelay + "ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that."); } } }; } var MiddlewareArray = /** @class */ (function (_super) { __extends(MiddlewareArray, _super); function MiddlewareArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, MiddlewareArray.prototype); return _this; } Object.defineProperty(MiddlewareArray, Symbol.species, { get: function () { return MiddlewareArray; }, enumerable: false, configurable: true }); MiddlewareArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; MiddlewareArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))(); }; return MiddlewareArray; }(Array)); var EnhancerArray = /** @class */ (function (_super) { __extends(EnhancerArray, _super); function EnhancerArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, EnhancerArray.prototype); return _this; } Object.defineProperty(EnhancerArray, Symbol.species, { get: function () { return EnhancerArray; }, enumerable: false, configurable: true }); EnhancerArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; EnhancerArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))(); }; return EnhancerArray; }(Array)); function freezeDraftable(val) { return (0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraftable)(val) ? (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(val, function () { }) : val; } // src/immutableStateInvariantMiddleware.ts var isProduction = "development" === "production"; var prefix = "Invariant failed"; function invariant(condition, message) { if (condition) { return; } if (isProduction) { throw new Error(prefix); } throw new Error(prefix + ": " + (message || "")); } function stringify(obj, serializer, indent, decycler) { return JSON.stringify(obj, getSerialize(serializer, decycler), indent); } function getSerialize(serializer, decycler) { var stack = [], keys = []; if (!decycler) decycler = function (_, value) { if (stack[0] === value) return "[Circular ~]"; return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; }; return function (key, value) { if (stack.length > 0) { var thisPos = stack.indexOf(this); ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); if (~stack.indexOf(value)) value = decycler.call(this, key, value); } else stack.push(value); return serializer == null ? value : serializer.call(this, key, value); }; } function isImmutableDefault(value) { return typeof value !== "object" || value == null || Object.isFrozen(value); } function trackForMutations(isImmutable, ignorePaths, obj) { var trackedProperties = trackProperties(isImmutable, ignorePaths, obj); return { detectMutations: function () { return detectMutations(isImmutable, ignorePaths, trackedProperties, obj); } }; } function trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) { if (ignorePaths === void 0) { ignorePaths = []; } if (path === void 0) { path = ""; } if (checkedObjects === void 0) { checkedObjects = new Set(); } var tracked = { value: obj }; if (!isImmutable(obj) && !checkedObjects.has(obj)) { checkedObjects.add(obj); tracked.children = {}; for (var key in obj) { var childPath = path ? path + "." + key : key; if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) { continue; } tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath); } } return tracked; } function detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) { if (ignoredPaths === void 0) { ignoredPaths = []; } if (sameParentRef === void 0) { sameParentRef = false; } if (path === void 0) { path = ""; } var prevObj = trackedProperty ? trackedProperty.value : void 0; var sameRef = prevObj === obj; if (sameParentRef && !sameRef && !Number.isNaN(obj)) { return { wasMutated: true, path: path }; } if (isImmutable(prevObj) || isImmutable(obj)) { return { wasMutated: false }; } var keysToDetect = {}; for (var key in trackedProperty.children) { keysToDetect[key] = true; } for (var key in obj) { keysToDetect[key] = true; } var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_1 = function (key) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath); if (result.wasMutated) { return { value: result }; } }; for (var key in keysToDetect) { var state_1 = _loop_1(key); if (typeof state_1 === "object") return state_1.value; } return { wasMutated: false }; } function createImmutableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore; ignoredPaths = ignoredPaths || ignore; var track = trackForMutations.bind(null, isImmutable, ignoredPaths); return function (_c) { var getState = _c.getState; var state = getState(); var tracker = track(state); var result; return function (next) { return function (action) { var measureUtils = getTimeMeasureUtils(warnAfter, "ImmutableStateInvariantMiddleware"); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); invariant(!result.wasMutated, "A state mutation was detected between dispatches, in the path '" + (result.path || "") + "'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); var dispatchedAction = next(action); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); result.wasMutated && invariant(!result.wasMutated, "A state mutation was detected inside a dispatch, in the path: " + (result.path || "") + ". Take a look at the reducer(s) handling the action " + stringify(action) + ". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); measureUtils.warnIfExceeded(); return dispatchedAction; }; }; }; } // src/serializableStateInvariantMiddleware.ts function isPlain(val) { var type = typeof val; return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject(val); } function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) { if (path === void 0) { path = ""; } if (isSerializable === void 0) { isSerializable = isPlain; } if (ignoredPaths === void 0) { ignoredPaths = []; } var foundNestedSerializable; if (!isSerializable(value)) { return { keyPath: path || "", value: value }; } if (typeof value !== "object" || value === null) { return false; } if (cache == null ? void 0 : cache.has(value)) return false; var entries = getEntries != null ? getEntries(value) : Object.entries(value); var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_2 = function (key, nestedValue) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } if (!isSerializable(nestedValue)) { return { value: { keyPath: nestedPath, value: nestedValue } }; } if (typeof nestedValue === "object") { foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache); if (foundNestedSerializable) { return { value: foundNestedSerializable }; } } }; for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { var _c = entries_1[_i], key = _c[0], nestedValue = _c[1]; var state_2 = _loop_2(key, nestedValue); if (typeof state_2 === "object") return state_2.value; } if (cache && isNestedFrozen(value)) cache.add(value); return false; } function isNestedFrozen(value) { if (!Object.isFrozen(value)) return false; for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) { var nestedValue = _c[_i]; if (typeof nestedValue !== "object" || nestedValue === null) continue; if (!isNestedFrozen(nestedValue)) return false; } return true; } function createSerializableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) // removed by dead control flow {} var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k; var cache = !disableCache && WeakSet ? new WeakSet() : void 0; return function (storeAPI) { return function (next) { return function (action) { var result = next(action); var measureUtils = getTimeMeasureUtils(warnAfter, "SerializableStateInvariantMiddleware"); if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) { measureUtils.measureTime(function () { var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths, cache); if (foundActionNonSerializableValue) { var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value; console.error("A non-serializable value was detected in an action, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the logic that dispatched this action: ", action, "\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)", "\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)"); } }); } if (!ignoreState) { measureUtils.measureTime(function () { var state = storeAPI.getState(); var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths, cache); if (foundStateNonSerializableValue) { var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value; console.error("A non-serializable value was detected in the state, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the reducer(s) handling this action type: " + action.type + ".\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)"); } }); measureUtils.warnIfExceeded(); } return result; }; }; }; } // src/getDefaultMiddleware.ts function isBoolean(x) { return typeof x === "boolean"; } function curryGetDefaultMiddleware() { return function curriedGetDefaultMiddleware(options) { return getDefaultMiddleware(options); }; } function getDefaultMiddleware(options) { if (options === void 0) { options = {}; } var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e, _f = options.actionCreatorCheck, actionCreatorCheck = _f === void 0 ? true : _f; var middlewareArray = new MiddlewareArray(); if (thunk) { if (isBoolean(thunk)) { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"]); } else { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"].withExtraArgument(thunk.extraArgument)); } } if (true) { if (immutableCheck) { var immutableOptions = {}; if (!isBoolean(immutableCheck)) { immutableOptions = immutableCheck; } middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions)); } if (serializableCheck) { var serializableOptions = {}; if (!isBoolean(serializableCheck)) { serializableOptions = serializableCheck; } middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions)); } if (actionCreatorCheck) { var actionCreatorOptions = {}; if (!isBoolean(actionCreatorCheck)) { actionCreatorOptions = actionCreatorCheck; } middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions)); } } return middlewareArray; } // src/configureStore.ts var IS_PRODUCTION = "development" === "production"; function configureStore(options) { var curriedGetDefaultMiddleware = curryGetDefaultMiddleware(); var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h; var rootReducer; if (typeof reducer === "function") { rootReducer = reducer; } else if (isPlainObject(reducer)) { rootReducer = (0,redux__WEBPACK_IMPORTED_MODULE_1__.combineReducers)(reducer); } else { throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'); } var finalMiddleware = middleware; if (typeof finalMiddleware === "function") { finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware); if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) { throw new Error("when using a middleware builder function, an array of middleware must be returned"); } } if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== "function"; })) { throw new Error("each middleware provided to configureStore must be a function"); } var middlewareEnhancer = redux__WEBPACK_IMPORTED_MODULE_1__.applyMiddleware.apply(void 0, finalMiddleware); var finalCompose = redux__WEBPACK_IMPORTED_MODULE_1__.compose; if (devTools) { finalCompose = composeWithDevTools(__spreadValues({ trace: !IS_PRODUCTION }, typeof devTools === "object" && devTools)); } var defaultEnhancers = new EnhancerArray(middlewareEnhancer); var storeEnhancers = defaultEnhancers; if (Array.isArray(enhancers)) { storeEnhancers = __spreadArray([middlewareEnhancer], enhancers); } else if (typeof enhancers === "function") { storeEnhancers = enhancers(defaultEnhancers); } var composedEnhancer = finalCompose.apply(void 0, storeEnhancers); return (0,redux__WEBPACK_IMPORTED_MODULE_1__.createStore)(rootReducer, preloadedState, composedEnhancer); } // src/createReducer.ts // src/mapBuilders.ts function executeReducerBuilderCallback(builderCallback) { var actionsMap = {}; var actionMatchers = []; var defaultCaseReducer; var builder = { addCase: function (typeOrActionCreator, reducer) { if (true) { if (actionMatchers.length > 0) { throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`"); } if (defaultCaseReducer) { throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`"); } } var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type; if (!type) { throw new Error("`builder.addCase` cannot be called with an empty action type"); } if (type in actionsMap) { throw new Error("`builder.addCase` cannot be called with two reducers for the same action type"); } actionsMap[type] = reducer; return builder; }, addMatcher: function (matcher, reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`"); } } actionMatchers.push({ matcher: matcher, reducer: reducer }); return builder; }, addDefaultCase: function (reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addDefaultCase` can only be called once"); } } defaultCaseReducer = reducer; return builder; } }; builderCallback(builder); return [actionsMap, actionMatchers, defaultCaseReducer]; } // src/createReducer.ts function isStateFunction(x) { return typeof x === "function"; } var hasWarnedAboutObjectNotation = false; function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { if (actionMatchers === void 0) { actionMatchers = []; } if (true) { if (typeof mapOrBuilderCallback === "object") { if (!hasWarnedAboutObjectNotation) { hasWarnedAboutObjectNotation = true; console.warn("The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer"); } } } var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2]; var getInitialState; if (isStateFunction(initialState)) { getInitialState = function () { return freezeDraftable(initialState()); }; } else { var frozenInitialState_1 = freezeDraftable(initialState); getInitialState = function () { return frozenInitialState_1; }; } function reducer(state, action) { if (state === void 0) { state = getInitialState(); } var caseReducers = __spreadArray([ actionsMap[action.type] ], finalActionMatchers.filter(function (_c) { var matcher = _c.matcher; return matcher(action); }).map(function (_c) { var reducer2 = _c.reducer; return reducer2; })); if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) { caseReducers = [finalDefaultCaseReducer]; } return caseReducers.reduce(function (previousState, caseReducer) { if (caseReducer) { if ((0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(previousState)) { var draft = previousState; var result = caseReducer(draft, action); if (result === void 0) { return previousState; } return result; } else if (!(0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraftable)(previousState)) { var result = caseReducer(previousState, action); if (result === void 0) { if (previousState === null) { return previousState; } throw Error("A case reducer on a non-draftable value must not return undefined"); } return result; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(previousState, function (draft) { return caseReducer(draft, action); }); } } return previousState; }, state); } reducer.getInitialState = getInitialState; return reducer; } // src/createSlice.ts var hasWarnedAboutObjectNotation2 = false; function getType2(slice, actionKey) { return slice + "/" + actionKey; } function createSlice(options) { var name = options.name; if (!name) { throw new Error("`name` is a required option for createSlice"); } if (typeof process !== "undefined" && "development" === "development") { if (options.initialState === void 0) { console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`"); } } var initialState = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState); var reducers = options.reducers || {}; var reducerNames = Object.keys(reducers); var sliceCaseReducersByName = {}; var sliceCaseReducersByType = {}; var actionCreators = {}; reducerNames.forEach(function (reducerName) { var maybeReducerWithPrepare = reducers[reducerName]; var type = getType2(name, reducerName); var caseReducer; var prepareCallback; if ("reducer" in maybeReducerWithPrepare) { caseReducer = maybeReducerWithPrepare.reducer; prepareCallback = maybeReducerWithPrepare.prepare; } else { caseReducer = maybeReducerWithPrepare; } sliceCaseReducersByName[reducerName] = caseReducer; sliceCaseReducersByType[type] = caseReducer; actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type); }); function buildReducer() { if (true) { if (typeof options.extraReducers === "object") { if (!hasWarnedAboutObjectNotation2) { hasWarnedAboutObjectNotation2 = true; console.warn("The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice"); } } } var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType); return createReducer(initialState, function (builder) { for (var key in finalCaseReducers) { builder.addCase(key, finalCaseReducers[key]); } for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) { var m = actionMatchers_1[_i]; builder.addMatcher(m.matcher, m.reducer); } if (defaultCaseReducer) { builder.addDefaultCase(defaultCaseReducer); } }); } var _reducer; return { name: name, reducer: function (state, action) { if (!_reducer) _reducer = buildReducer(); return _reducer(state, action); }, actions: actionCreators, caseReducers: sliceCaseReducersByName, getInitialState: function () { if (!_reducer) _reducer = buildReducer(); return _reducer.getInitialState(); } }; } // src/entities/entity_state.ts function getInitialEntityState() { return { ids: [], entities: {} }; } function createInitialStateFactory() { function getInitialState(additionalState) { if (additionalState === void 0) { additionalState = {}; } return Object.assign(getInitialEntityState(), additionalState); } return { getInitialState: getInitialState }; } // src/entities/state_selectors.ts function createSelectorsFactory() { function getSelectors(selectState) { var selectIds = function (state) { return state.ids; }; var selectEntities = function (state) { return state.entities; }; var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); }); var selectId = function (_, id) { return id; }; var selectById = function (entities, id) { return entities[id]; }; var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; }); if (!selectState) { return { selectIds: selectIds, selectEntities: selectEntities, selectAll: selectAll, selectTotal: selectTotal, selectById: createDraftSafeSelector(selectEntities, selectId, selectById) }; } var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities); return { selectIds: createDraftSafeSelector(selectState, selectIds), selectEntities: selectGlobalizedEntities, selectAll: createDraftSafeSelector(selectState, selectAll), selectTotal: createDraftSafeSelector(selectState, selectTotal), selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById) }; } return { getSelectors: getSelectors }; } // src/entities/state_adapter.ts function createSingleArgumentStateOperator(mutator) { var operator = createStateOperator(function (_, state) { return mutator(state); }); return function operation(state) { return operator(state, void 0); }; } function createStateOperator(mutator) { return function operation(state, arg) { function isPayloadActionArgument(arg2) { return isFSA(arg2); } var runMutator = function (draft) { if (isPayloadActionArgument(arg)) { mutator(arg.payload, draft); } else { mutator(arg, draft); } }; if ((0,immer__WEBPACK_IMPORTED_MODULE_0__.isDraft)(state)) { runMutator(state); return state; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_0__["default"])(state, runMutator); } }; } // src/entities/utils.ts function selectIdValue(entity, selectId) { var key = selectId(entity); if ( true && key === void 0) { console.warn("The entity passed to the `selectId` implementation returned undefined.", "You should probably provide your own `selectId` implementation.", "The entity that was passed:", entity, "The `selectId` implementation:", selectId.toString()); } return key; } function ensureEntitiesArray(entities) { if (!Array.isArray(entities)) { entities = Object.values(entities); } return entities; } function splitAddedUpdatedEntities(newEntities, selectId, state) { newEntities = ensureEntitiesArray(newEntities); var added = []; var updated = []; for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) { var entity = newEntities_1[_i]; var id = selectIdValue(entity, selectId); if (id in state.entities) { updated.push({ id: id, changes: entity }); } else { added.push(entity); } } return [added, updated]; } // src/entities/unsorted_state_adapter.ts function createUnsortedStateAdapter(selectId) { function addOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (key in state.entities) { return; } state.ids.push(key); state.entities[key] = entity; } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) { var entity = newEntities_2[_i]; addOneMutably(entity, state); } } function setOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (!(key in state.entities)) { state.ids.push(key); } state.entities[key] = entity; } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) { var entity = newEntities_3[_i]; setOneMutably(entity, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.ids = []; state.entities = {}; addManyMutably(newEntities, state); } function removeOneMutably(key, state) { return removeManyMutably([key], state); } function removeManyMutably(keys, state) { var didMutate = false; keys.forEach(function (key) { if (key in state.entities) { delete state.entities[key]; didMutate = true; } }); if (didMutate) { state.ids = state.ids.filter(function (id) { return id in state.entities; }); } } function removeAllMutably(state) { Object.assign(state, { ids: [], entities: {} }); } function takeNewKey(keys, update, state) { var original2 = state.entities[update.id]; var updated = Object.assign({}, original2, update.changes); var newKey = selectIdValue(updated, selectId); var hasNewKey = newKey !== update.id; if (hasNewKey) { keys[update.id] = newKey; delete state.entities[update.id]; } state.entities[newKey] = updated; return hasNewKey; } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var newKeys = {}; var updatesPerEntity = {}; updates.forEach(function (update) { if (update.id in state.entities) { updatesPerEntity[update.id] = { id: update.id, changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes) }; } }); updates = Object.values(updatesPerEntity); var didMutateEntities = updates.length > 0; if (didMutateEntities) { var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0; if (didMutateIds) { state.ids = Object.keys(state.entities); } } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } return { removeAll: createSingleArgumentStateOperator(removeAllMutably), addOne: createStateOperator(addOneMutably), addMany: createStateOperator(addManyMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), updateOne: createStateOperator(updateOneMutably), updateMany: createStateOperator(updateManyMutably), upsertOne: createStateOperator(upsertOneMutably), upsertMany: createStateOperator(upsertManyMutably), removeOne: createStateOperator(removeOneMutably), removeMany: createStateOperator(removeManyMutably) }; } // src/entities/sorted_state_adapter.ts function createSortedStateAdapter(selectId, sort) { var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll; function addOneMutably(entity, state) { return addManyMutably([entity], state); } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); }); if (models.length !== 0) { merge(models, state); } } function setOneMutably(entity, state) { return setManyMutably([entity], state); } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); if (newEntities.length !== 0) { merge(newEntities, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.entities = {}; state.ids = []; addManyMutably(newEntities, state); } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var appliedUpdates = false; for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) { var update = updates_1[_i]; var entity = state.entities[update.id]; if (!entity) { continue; } appliedUpdates = true; Object.assign(entity, update.changes); var newId = selectId(entity); if (update.id !== newId) { delete state.entities[update.id]; state.entities[newId] = entity; } } if (appliedUpdates) { resortEntities(state); } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } function areArraysEqual(a, b) { if (a.length !== b.length) { return false; } for (var i = 0; i < a.length && i < b.length; i++) { if (a[i] === b[i]) { continue; } return false; } return true; } function merge(models, state) { models.forEach(function (model) { state.entities[selectId(model)] = model; }); resortEntities(state); } function resortEntities(state) { var allEntities = Object.values(state.entities); allEntities.sort(sort); var newSortedIds = allEntities.map(selectId); var ids = state.ids; if (!areArraysEqual(ids, newSortedIds)) { state.ids = newSortedIds; } } return { removeOne: removeOne, removeMany: removeMany, removeAll: removeAll, addOne: createStateOperator(addOneMutably), updateOne: createStateOperator(updateOneMutably), upsertOne: createStateOperator(upsertOneMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), addMany: createStateOperator(addManyMutably), updateMany: createStateOperator(updateManyMutably), upsertMany: createStateOperator(upsertManyMutably) }; } // src/entities/create_adapter.ts function createEntityAdapter(options) { if (options === void 0) { options = {}; } var _c = __spreadValues({ sortComparer: false, selectId: function (instance) { return instance.id; } }, options), selectId = _c.selectId, sortComparer = _c.sortComparer; var stateFactory = createInitialStateFactory(); var selectorsFactory = createSelectorsFactory(); var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId); return __spreadValues(__spreadValues(__spreadValues({ selectId: selectId, sortComparer: sortComparer }, stateFactory), selectorsFactory), stateAdapter); } // src/nanoid.ts var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"; var nanoid = function (size) { if (size === void 0) { size = 21; } var id = ""; var i = size; while (i--) { id += urlAlphabet[Math.random() * 64 | 0]; } return id; }; // src/createAsyncThunk.ts var commonProperties = [ "name", "message", "stack", "code" ]; var RejectWithValue = /** @class */ (function () { function RejectWithValue(payload, meta) { this.payload = payload; this.meta = meta; } return RejectWithValue; }()); var FulfillWithMeta = /** @class */ (function () { function FulfillWithMeta(payload, meta) { this.payload = payload; this.meta = meta; } return FulfillWithMeta; }()); var miniSerializeError = function (value) { if (typeof value === "object" && value !== null) { var simpleError = {}; for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) { var property = commonProperties_1[_i]; if (typeof value[property] === "string") { simpleError[property] = value[property]; } } return simpleError; } return { message: String(value) }; }; var createAsyncThunk = (function () { function createAsyncThunk2(typePrefix, payloadCreator, options) { var fulfilled = createAction(typePrefix + "/fulfilled", function (payload, requestId, arg, meta) { return ({ payload: payload, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "fulfilled" }) }); }); var pending = createAction(typePrefix + "/pending", function (requestId, arg, meta) { return ({ payload: void 0, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "pending" }) }); }); var rejected = createAction(typePrefix + "/rejected", function (error, requestId, arg, payload, meta) { return ({ payload: payload, error: (options && options.serializeError || miniSerializeError)(error || "Rejected"), meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, rejectedWithValue: !!payload, requestStatus: "rejected", aborted: (error == null ? void 0 : error.name) === "AbortError", condition: (error == null ? void 0 : error.name) === "ConditionError" }) }); }); var displayedWarning = false; var AC = typeof AbortController !== "undefined" ? AbortController : /** @class */ (function () { function class_1() { this.signal = { aborted: false, addEventListener: function () { }, dispatchEvent: function () { return false; }, onabort: function () { }, removeEventListener: function () { }, reason: void 0, throwIfAborted: function () { } }; } class_1.prototype.abort = function () { if (true) { if (!displayedWarning) { displayedWarning = true; console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); } } }; return class_1; }()); function actionCreator(arg) { return function (dispatch, getState, extra) { var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid(); var abortController = new AC(); var abortReason; var started = false; function abort(reason) { abortReason = reason; abortController.abort(); } var promise2 = function () { return __async(this, null, function () { var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 4, , 5]); conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra }); if (!isThenable(conditionResult)) return [3 /*break*/, 2]; return [4 /*yield*/, conditionResult]; case 1: conditionResult = _c.sent(); _c.label = 2; case 2: if (conditionResult === false || abortController.signal.aborted) { throw { name: "ConditionError", message: "Aborted due to condition callback returning false." }; } started = true; abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener("abort", function () { return reject({ name: "AbortError", message: abortReason || "Aborted" }); }); }); dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra }))); return [4 /*yield*/, Promise.race([ abortedPromise, Promise.resolve(payloadCreator(arg, { dispatch: dispatch, getState: getState, extra: extra, requestId: requestId, signal: abortController.signal, abort: abort, rejectWithValue: function (value, meta) { return new RejectWithValue(value, meta); }, fulfillWithValue: function (value, meta) { return new FulfillWithMeta(value, meta); } })).then(function (result) { if (result instanceof RejectWithValue) { throw result; } if (result instanceof FulfillWithMeta) { return fulfilled(result.payload, requestId, arg, result.meta); } return fulfilled(result, requestId, arg); }) ])]; case 3: finalAction = _c.sent(); return [3 /*break*/, 5]; case 4: err_1 = _c.sent(); finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg); return [3 /*break*/, 5]; case 5: skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition; if (!skipDispatch) { dispatch(finalAction); } return [2 /*return*/, finalAction]; } }); }); }(); return Object.assign(promise2, { abort: abort, requestId: requestId, arg: arg, unwrap: function () { return promise2.then(unwrapResult); } }); }; } return Object.assign(actionCreator, { pending: pending, rejected: rejected, fulfilled: fulfilled, typePrefix: typePrefix }); } createAsyncThunk2.withTypes = function () { return createAsyncThunk2; }; return createAsyncThunk2; })(); function unwrapResult(action) { if (action.meta && action.meta.rejectedWithValue) { throw action.payload; } if (action.error) { throw action.error; } return action.payload; } function isThenable(value) { return value !== null && typeof value === "object" && typeof value.then === "function"; } // src/matchers.ts var matches = function (matcher, action) { if (hasMatchFunction(matcher)) { return matcher.match(action); } else { return matcher(action); } }; function isAnyOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.some(function (matcher) { return matches(matcher, action); }); }; } function isAllOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.every(function (matcher) { return matches(matcher, action); }); }; } function hasExpectedRequestMetadata(action, validStatus) { if (!action || !action.meta) return false; var hasValidRequestId = typeof action.meta.requestId === "string"; var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1; return hasValidRequestId && hasValidRequestStatus; } function isAsyncThunkArray(a) { return typeof a[0] === "function" && "pending" in a[0] && "fulfilled" in a[0] && "rejected" in a[0]; } function isPending() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isPending()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejected() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejected()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejectedWithValue() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } var hasFlag = function (action) { return action && action.meta && action.meta.rejectedWithValue; }; if (asyncThunks.length === 0) { return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejectedWithValue()(asyncThunks[0]); } return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } function isFulfilled() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["fulfilled"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isFulfilled()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isAsyncThunkAction() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending", "fulfilled", "rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isAsyncThunkAction()(asyncThunks[0]); } return function (action) { var matchers = []; for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) { var asyncThunk = asyncThunks_1[_i]; matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled); } var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } // src/listenerMiddleware/utils.ts var assertFunction = function (func, expected) { if (typeof func !== "function") { throw new TypeError(expected + " is not a function"); } }; var noop = function () { }; var catchRejection = function (promise2, onError) { if (onError === void 0) { onError = noop; } promise2.catch(onError); return promise2; }; var addAbortSignalListener = function (abortSignal, callback) { abortSignal.addEventListener("abort", callback, { once: true }); return function () { return abortSignal.removeEventListener("abort", callback); }; }; var abortControllerWithReason = function (abortController, reason) { var signal = abortController.signal; if (signal.aborted) { return; } if (!("reason" in signal)) { Object.defineProperty(signal, "reason", { enumerable: true, value: reason, configurable: true, writable: true }); } ; abortController.abort(reason); }; // src/listenerMiddleware/exceptions.ts var task = "task"; var listener = "listener"; var completed = "completed"; var cancelled = "cancelled"; var taskCancelled = "task-" + cancelled; var taskCompleted = "task-" + completed; var listenerCancelled = listener + "-" + cancelled; var listenerCompleted = listener + "-" + completed; var TaskAbortError = /** @class */ (function () { function TaskAbortError(code) { this.code = code; this.name = "TaskAbortError"; this.message = task + " " + cancelled + " (reason: " + code + ")"; } return TaskAbortError; }()); // src/listenerMiddleware/task.ts var validateActive = function (signal) { if (signal.aborted) { throw new TaskAbortError(signal.reason); } }; function raceWithSignal(signal, promise2) { var cleanup = noop; return new Promise(function (resolve, reject) { var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); }; if (signal.aborted) { notifyRejection(); return; } cleanup = addAbortSignalListener(signal, notifyRejection); promise2.finally(function () { return cleanup(); }).then(resolve, reject); }).finally(function () { cleanup = noop; }); } var runTask = function (task2, cleanUp) { return __async(void 0, null, function () { var value, error_1; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 3, 4, 5]); return [4 /*yield*/, Promise.resolve()]; case 1: _c.sent(); return [4 /*yield*/, task2()]; case 2: value = _c.sent(); return [2 /*return*/, { status: "ok", value: value }]; case 3: error_1 = _c.sent(); return [2 /*return*/, { status: error_1 instanceof TaskAbortError ? "cancelled" : "rejected", error: error_1 }]; case 4: cleanUp == null ? void 0 : cleanUp(); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; var createPause = function (signal) { return function (promise2) { return catchRejection(raceWithSignal(signal, promise2).then(function (output) { validateActive(signal); return output; })); }; }; var createDelay = function (signal) { var pause = createPause(signal); return function (timeoutMs) { return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); })); }; }; // src/listenerMiddleware/index.ts var assign = Object.assign; var INTERNAL_NIL_TOKEN = {}; var alm = "listenerMiddleware"; var createFork = function (parentAbortSignal, parentBlockingPromises) { var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); }; return function (taskExecutor, opts) { assertFunction(taskExecutor, "taskExecutor"); var childAbortController = new AbortController(); linkControllers(childAbortController); var result = runTask(function () { return __async(void 0, null, function () { var result2; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(parentAbortSignal); validateActive(childAbortController.signal); return [4 /*yield*/, taskExecutor({ pause: createPause(childAbortController.signal), delay: createDelay(childAbortController.signal), signal: childAbortController.signal })]; case 1: result2 = _c.sent(); validateActive(childAbortController.signal); return [2 /*return*/, result2]; } }); }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); }); if (opts == null ? void 0 : opts.autoJoin) { parentBlockingPromises.push(result); } return { result: createPause(parentAbortSignal)(result), cancel: function () { abortControllerWithReason(childAbortController, taskCancelled); } }; }; }; var createTakePattern = function (startListening, signal) { var take = function (predicate, timeout) { return __async(void 0, null, function () { var unsubscribe, tuplePromise, promises, output; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(signal); unsubscribe = function () { }; tuplePromise = new Promise(function (resolve, reject) { var stopListening = startListening({ predicate: predicate, effect: function (action, listenerApi) { listenerApi.unsubscribe(); resolve([ action, listenerApi.getState(), listenerApi.getOriginalState() ]); } }); unsubscribe = function () { stopListening(); reject(); }; }); promises = [ tuplePromise ]; if (timeout != null) { promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); })); } _c.label = 1; case 1: _c.trys.push([1, , 3, 4]); return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))]; case 2: output = _c.sent(); validateActive(signal); return [2 /*return*/, output]; case 3: unsubscribe(); return [7 /*endfinally*/]; case 4: return [2 /*return*/]; } }); }); }; return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); }; }; var getListenerEntryPropsFrom = function (options) { var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect; if (type) { predicate = createAction(type).match; } else if (actionCreator) { type = actionCreator.type; predicate = actionCreator.match; } else if (matcher) { predicate = matcher; } else if (predicate) { } else { throw new Error("Creating or removing a listener requires one of the known fields for matching an action"); } assertFunction(effect, "options.listener"); return { predicate: predicate, type: type, effect: effect }; }; var createListenerEntry = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect; var id = nanoid(); var entry = { id: id, effect: effect, type: type, predicate: predicate, pending: new Set(), unsubscribe: function () { throw new Error("Unsubscribe not initialized"); } }; return entry; }; var cancelActiveListeners = function (entry) { entry.pending.forEach(function (controller) { abortControllerWithReason(controller, listenerCancelled); }); }; var createClearListenerMiddleware = function (listenerMap) { return function () { listenerMap.forEach(cancelActiveListeners); listenerMap.clear(); }; }; var safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) { try { errorHandler(errorToNotify, errorInfo); } catch (errorHandlerError) { setTimeout(function () { throw errorHandlerError; }, 0); } }; var addListener = createAction(alm + "/add"); var clearAllListeners = createAction(alm + "/removeAll"); var removeListener = createAction(alm + "/remove"); var defaultErrorHandler = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } console.error.apply(console, __spreadArray([alm + "/error"], args)); }; function createListenerMiddleware(middlewareOptions) { var _this = this; if (middlewareOptions === void 0) { middlewareOptions = {}; } var listenerMap = new Map(); var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c; assertFunction(onError, "onError"); var insertEntry = function (entry) { entry.unsubscribe = function () { return listenerMap.delete(entry.id); }; listenerMap.set(entry.id, entry); return function (cancelOptions) { entry.unsubscribe(); if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) { cancelActiveListeners(entry); } }; }; var findListenerEntry = function (comparator) { for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) { var entry = _c[_i]; if (comparator(entry)) { return entry; } } return void 0; }; var startListening = function (options) { var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; }); if (!entry) { entry = createListenerEntry(options); } return insertEntry(entry); }; var stopListening = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate; var entry = findListenerEntry(function (entry2) { var matchPredicateOrType = typeof type === "string" ? entry2.type === type : entry2.predicate === predicate; return matchPredicateOrType && entry2.effect === effect; }); if (entry) { entry.unsubscribe(); if (options.cancelActive) { cancelActiveListeners(entry); } } return !!entry; }; var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () { var internalTaskController, take, autoJoinPromises, listenerError_1; return __generator(this, function (_c) { switch (_c.label) { case 0: internalTaskController = new AbortController(); take = createTakePattern(startListening, internalTaskController.signal); autoJoinPromises = []; _c.label = 1; case 1: _c.trys.push([1, 3, 4, 6]); entry.pending.add(internalTaskController); return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, { getOriginalState: getOriginalState, condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); }, take: take, delay: createDelay(internalTaskController.signal), pause: createPause(internalTaskController.signal), extra: extra, signal: internalTaskController.signal, fork: createFork(internalTaskController.signal, autoJoinPromises), unsubscribe: entry.unsubscribe, subscribe: function () { listenerMap.set(entry.id, entry); }, cancelActiveListeners: function () { entry.pending.forEach(function (controller, _, set) { if (controller !== internalTaskController) { abortControllerWithReason(controller, listenerCancelled); set.delete(controller); } }); } })))]; case 2: _c.sent(); return [3 /*break*/, 6]; case 3: listenerError_1 = _c.sent(); if (!(listenerError_1 instanceof TaskAbortError)) { safelyNotifyError(onError, listenerError_1, { raisedBy: "effect" }); } return [3 /*break*/, 6]; case 4: return [4 /*yield*/, Promise.allSettled(autoJoinPromises)]; case 5: _c.sent(); abortControllerWithReason(internalTaskController, listenerCompleted); entry.pending.delete(internalTaskController); return [7 /*endfinally*/]; case 6: return [2 /*return*/]; } }); }); }; var clearListenerMiddleware = createClearListenerMiddleware(listenerMap); var middleware = function (api) { return function (next) { return function (action) { if (!isAction(action)) { return next(action); } if (addListener.match(action)) { return startListening(action.payload); } if (clearAllListeners.match(action)) { clearListenerMiddleware(); return; } if (removeListener.match(action)) { return stopListening(action.payload); } var originalState = api.getState(); var getOriginalState = function () { if (originalState === INTERNAL_NIL_TOKEN) { throw new Error(alm + ": getOriginalState can only be called synchronously"); } return originalState; }; var result; try { result = next(action); if (listenerMap.size > 0) { var currentState = api.getState(); var listenerEntries = Array.from(listenerMap.values()); for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) { var entry = listenerEntries_1[_i]; var runListener = false; try { runListener = entry.predicate(action, currentState, originalState); } catch (predicateError) { runListener = false; safelyNotifyError(onError, predicateError, { raisedBy: "predicate" }); } if (!runListener) { continue; } notifyListener(entry, action, api, getOriginalState); } } } finally { originalState = INTERNAL_NIL_TOKEN; } return result; }; }; }; return { middleware: middleware, startListening: startListening, stopListening: stopListening, clearListeners: clearListenerMiddleware }; } // src/autoBatchEnhancer.ts var SHOULD_AUTOBATCH = "RTK_autoBatch"; var prepareAutoBatched = function () { return function (payload) { var _c; return ({ payload: payload, meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c) }); }; }; var promise; var queueMicrotaskShim = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () { throw err; }, 0); }); }; var createQueueWithTimer = function (timeout) { return function (notify) { setTimeout(notify, timeout); }; }; var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10); var autoBatchEnhancer = function (options) { if (options === void 0) { options = { type: "raf" }; } return function (next) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var store = next.apply(void 0, args); var notifying = true; var shouldNotifyAtEndOfTick = false; var notificationQueued = false; var listeners = new Set(); var queueCallback = options.type === "tick" ? queueMicrotaskShim : options.type === "raf" ? rAF : options.type === "callback" ? options.queueNotification : createQueueWithTimer(options.timeout); var notifyListeners = function () { notificationQueued = false; if (shouldNotifyAtEndOfTick) { shouldNotifyAtEndOfTick = false; listeners.forEach(function (l) { return l(); }); } }; return Object.assign({}, store, { subscribe: function (listener2) { var wrappedListener = function () { return notifying && listener2(); }; var unsubscribe = store.subscribe(wrappedListener); listeners.add(listener2); return function () { unsubscribe(); listeners.delete(listener2); }; }, dispatch: function (action) { var _a; try { notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]); shouldNotifyAtEndOfTick = !notifying; if (shouldNotifyAtEndOfTick) { if (!notificationQueued) { notificationQueued = true; queueCallback(notifyListeners); } } return store.dispatch(action); } finally { notifying = true; } } }); }; }; }; // src/index.ts (0,immer__WEBPACK_IMPORTED_MODULE_0__.enableES5)(); //# sourceMappingURL=redux-toolkit.esm.js.map /***/ }), /***/ "../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js": /*!***********************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***! \***********************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var reactIs = __webpack_require__(/*! react-is */ "../node_modules/hoist-non-react-statics/node_modules/react-is/index.js"); /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var REACT_STATICS = { childContextTypes: true, contextType: true, contextTypes: true, defaultProps: true, displayName: true, getDefaultProps: true, getDerivedStateFromError: true, getDerivedStateFromProps: true, mixins: true, propTypes: true, type: true }; var KNOWN_STATICS = { name: true, length: true, prototype: true, caller: true, callee: true, arguments: true, arity: true }; var FORWARD_REF_STATICS = { '$$typeof': true, render: true, defaultProps: true, displayName: true, propTypes: true }; var MEMO_STATICS = { '$$typeof': true, compare: true, defaultProps: true, displayName: true, propTypes: true, type: true }; var TYPE_STATICS = {}; TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; function getStatics(component) { // React v16.11 and below if (reactIs.isMemo(component)) { return MEMO_STATICS; } // React v16.12 and above return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; } var defineProperty = Object.defineProperty; var getOwnPropertyNames = Object.getOwnPropertyNames; var getOwnPropertySymbols = Object.getOwnPropertySymbols; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var getPrototypeOf = Object.getPrototypeOf; var objectPrototype = Object.prototype; function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components if (objectPrototype) { var inheritedComponent = getPrototypeOf(sourceComponent); if (inheritedComponent && inheritedComponent !== objectPrototype) { hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); } } var keys = getOwnPropertyNames(sourceComponent); if (getOwnPropertySymbols) { keys = keys.concat(getOwnPropertySymbols(sourceComponent)); } var targetStatics = getStatics(targetComponent); var sourceStatics = getStatics(sourceComponent); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { var descriptor = getOwnPropertyDescriptor(sourceComponent, key); try { // Avoid failures from read-only properties defineProperty(targetComponent, key, descriptor); } catch (e) {} } } } return targetComponent; } module.exports = hoistNonReactStatics; /***/ }), /***/ "../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js": /*!*************************************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***! \*************************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** @license React v16.13.1 * react-is.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. */ if (true) { (function() { 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/hoist-non-react-statics/node_modules/react-is/index.js": /*!******************************************************************************!*\ !*** ../node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***! \******************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "../node_modules/immer/dist/immer.esm.mjs": /*!************************************************!*\ !*** ../node_modules/immer/dist/immer.esm.mjs ***! \************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Immer: () => (/* binding */ un), /* harmony export */ applyPatches: () => (/* binding */ pn), /* harmony export */ castDraft: () => (/* binding */ K), /* harmony export */ castImmutable: () => (/* binding */ $), /* harmony export */ createDraft: () => (/* binding */ ln), /* harmony export */ current: () => (/* binding */ R), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ enableAllPlugins: () => (/* binding */ J), /* harmony export */ enableES5: () => (/* binding */ F), /* harmony export */ enableMapSet: () => (/* binding */ C), /* harmony export */ enablePatches: () => (/* binding */ T), /* harmony export */ finishDraft: () => (/* binding */ dn), /* harmony export */ freeze: () => (/* binding */ d), /* harmony export */ immerable: () => (/* binding */ L), /* harmony export */ isDraft: () => (/* binding */ r), /* harmony export */ isDraftable: () => (/* binding */ t), /* harmony export */ nothing: () => (/* binding */ H), /* harmony export */ original: () => (/* binding */ e), /* harmony export */ produce: () => (/* binding */ fn), /* harmony export */ produceWithPatches: () => (/* binding */ cn), /* harmony export */ setAutoFreeze: () => (/* binding */ sn), /* harmony export */ setUseProxies: () => (/* binding */ vn) /* harmony export */ }); function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return false||U||n(0),U}function j(n,r){r&&(b("Patches"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b("ES5").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b("Patches").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b("Patches").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if( true&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b("MapSet").F(r,t):v(r)?b("MapSet").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b("ES5").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b("ES5").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return true&&f(r),en.get(r,n)},set:function(r){var t=this[Q]; true&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b("Patches").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (fn); //# sourceMappingURL=immer.esm.js.map /***/ }), /***/ "../node_modules/react-is/cjs/react-is.development.js": /*!************************************************************!*\ !*** ../node_modules/react-is/cjs/react-is.development.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** * @license React * react-is.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. */ if (true) { (function() { 'use strict'; // 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_SERVER_CONTEXT_TYPE = Symbol.for('react.server_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_OFFSCREEN_TYPE = Symbol.for('react.offscreen'); // ----------------------------------------------------------------------------- var enableScopeAPI = false; // Experimental Create Event Handle API. var enableCacheElement = false; var enableTransitionTracing = false; // No known bugs, but needs performance testing var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber // stuff. Intended to enable React core members to more easily debug scheduling // issues in DEV builds. var enableDebugTracing = false; // Track which Fiber(s) schedule render work. var REACT_MODULE_REFERENCE; { REACT_MODULE_REFERENCE = Symbol.for('react.module.reference'); } function isValidElementType(type) { if (typeof type === 'string' || typeof type === 'function') { return true; } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) { return true; } if (typeof type === 'object' && type !== null) { if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object // types supported by any Flight configuration anywhere since // we don't know which Flight build this will end up being used // with. type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) { return true; } } return false; } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: case REACT_SUSPENSE_LIST_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_SERVER_CONTEXT_TYPE: case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var SuspenseList = REACT_SUSPENSE_LIST_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); } } return false; } function isConcurrentMode(object) { { if (!hasWarnedAboutDeprecatedIsConcurrentMode) { hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.'); } } return false; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } function isSuspenseList(object) { return typeOf(object) === REACT_SUSPENSE_LIST_TYPE; } exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.SuspenseList = SuspenseList; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isSuspenseList = isSuspenseList; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/react-is/index.js": /*!*****************************************!*\ !*** ../node_modules/react-is/index.js ***! \*****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "../node_modules/react-redux/es/components/Context.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/components/Context.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ReactReduxContext: () => (/* binding */ ReactReduxContext), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); const ContextKey = Symbol.for(`react-redux-context`); const gT = typeof globalThis !== "undefined" ? globalThis : /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ {}; function getContext() { var _gT$ContextKey; if (!react__WEBPACK_IMPORTED_MODULE_0__.createContext) return {}; const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map(); let realContext = contextMap.get(react__WEBPACK_IMPORTED_MODULE_0__.createContext); if (!realContext) { realContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); if (true) { realContext.displayName = 'ReactRedux'; } contextMap.set(react__WEBPACK_IMPORTED_MODULE_0__.createContext, realContext); } return realContext; } const ReactReduxContext = /*#__PURE__*/getContext(); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactReduxContext); /***/ }), /***/ "../node_modules/react-redux/es/components/Provider.js": /*!*************************************************************!*\ !*** ../node_modules/react-redux/es/components/Provider.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ "../node_modules/react-redux/es/utils/Subscription.js"); /* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js"); function Provider({ store, context, children, serverState, stabilityCheck = 'once', noopCheck = 'once' }) { const contextValue = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => { const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store); return { store, subscription, getServerState: serverState ? () => serverState : undefined, stabilityCheck, noopCheck }; }, [store, serverState, stabilityCheck, noopCheck]); const previousState = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => store.getState(), [store]); (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(() => { const { subscription } = contextValue; subscription.onStateChange = subscription.notifyNestedSubs; subscription.trySubscribe(); if (previousState !== store.getState()) { subscription.notifyNestedSubs(); } return () => { subscription.tryUnsubscribe(); subscription.onStateChange = undefined; }; }, [contextValue, previousState]); const Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider, { value: contextValue }, children); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Provider); /***/ }), /***/ "../node_modules/react-redux/es/components/connect.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/components/connect.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ initializeConnect: () => (/* binding */ initializeConnect) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ "../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"); /* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js"); /* harmony import */ var _connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../connect/selectorFactory */ "../node_modules/react-redux/es/connect/selectorFactory.js"); /* harmony import */ var _connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../connect/mapDispatchToProps */ "../node_modules/react-redux/es/connect/mapDispatchToProps.js"); /* harmony import */ var _connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../connect/mapStateToProps */ "../node_modules/react-redux/es/connect/mapStateToProps.js"); /* harmony import */ var _connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../connect/mergeProps */ "../node_modules/react-redux/es/connect/mergeProps.js"); /* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/Subscription */ "../node_modules/react-redux/es/utils/Subscription.js"); /* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js"); /* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/shallowEqual */ "../node_modules/react-redux/es/utils/shallowEqual.js"); /* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/warning */ "../node_modules/react-redux/es/utils/warning.js"); /* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ "../node_modules/react-redux/es/utils/useSyncExternalStore.js"); const _excluded = ["reactReduxForwardedRef"]; /* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */ let useSyncExternalStore = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__.notInitialized; const initializeConnect = fn => { useSyncExternalStore = fn; }; // Define some constant arrays just to avoid re-creating these const EMPTY_ARRAY = [null, 0]; const NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given // for logging in an error message const stringifyComponent = Comp => { try { return JSON.stringify(Comp); } catch (err) { return String(Comp); } }; // This is "just" a `useLayoutEffect`, but with two modifications: // - we need to fall back to `useEffect` in SSR to avoid annoying warnings // - we extract this to a separate function to avoid closing over values // and causing memory leaks function useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) { (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => effectFunc(...effectArgs), dependencies); } // Effect callback, extracted: assign the latest props values to refs for later usage function captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown, childPropsFromStoreUpdate, notifyNestedSubs) { // We want to capture the wrapper props and child props we used for later comparisons lastWrapperProps.current = wrapperProps; renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update if (childPropsFromStoreUpdate.current) { childPropsFromStoreUpdate.current = null; notifyNestedSubs(); } } // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor, // check for updates after dispatched actions, and trigger re-renders. function subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch, additionalSubscribeListener) { // If we're not subscribed to the store, nothing to do here if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts let didUnsubscribe = false; let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component const checkForUpdates = () => { if (didUnsubscribe || !isMounted.current) { // Don't run stale listeners. // Redux doesn't guarantee unsubscriptions happen until next dispatch. return; } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it const latestStoreState = store.getState(); let newChildProps, error; try { // Actually run the selector with the most recent store state and wrapper props // to determine what the child props should be newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current); } catch (e) { error = e; lastThrownError = e; } if (!error) { lastThrownError = null; } // If the child props haven't changed, nothing to do here - cascade the subscription update if (newChildProps === lastChildProps.current) { if (!renderIsScheduled.current) { notifyNestedSubs(); } } else { // Save references to the new child props. Note that we track the "child props from store update" // as a ref instead of a useState/useReducer because we need a way to determine if that value has // been processed. If this went into useState/useReducer, we couldn't clear out the value without // forcing another re-render, which we don't want. lastChildProps.current = newChildProps; childPropsFromStoreUpdate.current = newChildProps; renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used // Trigger the React `useSyncExternalStore` subscriber additionalSubscribeListener(); } }; // Actually subscribe to the nearest connected ancestor (or store) subscription.onStateChange = checkForUpdates; subscription.trySubscribe(); // Pull data from the store after first render in case the store has // changed since we began. checkForUpdates(); const unsubscribeWrapper = () => { didUnsubscribe = true; subscription.tryUnsubscribe(); subscription.onStateChange = null; if (lastThrownError) { // It's possible that we caught an error due to a bad mapState function, but the // parent re-rendered without this component and we're about to unmount. // This shouldn't happen as long as we do top-down subscriptions correctly, but // if we ever do those wrong, this throw will surface the error in our tests. // In that case, throw the error from here so it doesn't get lost. throw lastThrownError; } }; return unsubscribeWrapper; } // Reducer initial state creation for our update reducer const initStateUpdates = () => EMPTY_ARRAY; function strictEqual(a, b) { return a === b; } /** * Infers the type of props that a connector will inject into a component. */ let hasWarnedAboutDeprecatedPureOption = false; /** * Connects a React component to a Redux store. * * - Without arguments, just wraps the component, without changing the behavior / props * * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior * is to override ownProps (as stated in the docs), so what remains is everything that's * not a state or dispatch prop * * - When 3rd param is passed, we don't know if ownProps propagate and whether they * should be valid component props, because it depends on mergeProps implementation. * As such, it is the user's responsibility to extend ownProps interface from state or * dispatch props or both when applicable * * @param mapStateToProps A function that extracts values from state * @param mapDispatchToProps Setup for dispatching actions * @param mergeProps Optional callback to merge state and dispatch props together * @param options Options for configuring the connection * */ function connect(mapStateToProps, mapDispatchToProps, mergeProps, { // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence. // @ts-ignore pure, areStatesEqual = strictEqual, areOwnPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], areStatePropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], areMergedPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__["default"], // use React's forwardRef to expose a ref of the wrapped component forwardRef = false, // the context consumer to use context = _Context__WEBPACK_IMPORTED_MODULE_13__.ReactReduxContext } = {}) { if (true) { if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) { hasWarnedAboutDeprecatedPureOption = true; (0,_utils_warning__WEBPACK_IMPORTED_MODULE_12__["default"])('The `pure` option has been removed. `connect` is now always a "pure/memoized" component'); } } const Context = context; const initMapStateToProps = (0,_connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__.mapStateToPropsFactory)(mapStateToProps); const initMapDispatchToProps = (0,_connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__.mapDispatchToPropsFactory)(mapDispatchToProps); const initMergeProps = (0,_connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__.mergePropsFactory)(mergeProps); const shouldHandleStateChanges = Boolean(mapStateToProps); const wrapWithConnect = WrappedComponent => { if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) { throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`); } const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component'; const displayName = `Connect(${wrappedComponentName})`; const selectorFactoryOptions = { shouldHandleStateChanges, displayName, wrappedComponentName, WrappedComponent, // @ts-ignore initMapStateToProps, // @ts-ignore initMapDispatchToProps, initMergeProps, areStatesEqual, areStatePropsEqual, areOwnPropsEqual, areMergedPropsEqual }; function ConnectFunction(props) { const [propsContext, reactReduxForwardedRef, wrapperProps] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // Distinguish between actual "data" props that were passed to the wrapper component, // and values needed to control behavior (forwarded refs, alternate context instances). // To maintain the wrapperProps object reference, memoize this destructuring. const { reactReduxForwardedRef } = props, wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, _excluded); return [props.context, reactReduxForwardedRef, wrapperProps]; }, [props]); const ContextToUse = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext. // Memoize the check that determines which context instance we should use. return propsContext && propsContext.Consumer && // @ts-ignore (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(propsContext.Consumer, null)) ? propsContext : Context; }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available const contextValue = react__WEBPACK_IMPORTED_MODULE_3__.useContext(ContextToUse); // The store _must_ exist as either a prop or in context. // We'll check to see if it _looks_ like a Redux store first. // This allows us to pass through a `store` prop that is just a plain value. const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch); const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store); if ( true && !didStoreComeFromProps && !didStoreComeFromContext) { throw new Error(`Could not find "store" in the context of ` + `"${displayName}". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`); } // Based on the previous check, one of these must be true const store = didStoreComeFromProps ? props.store : contextValue.store; const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState; const childPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { // The child props selector needs the store reference as an input. // Re-create this selector whenever the store changes. return (0,_connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__["default"])(store.dispatch, selectorFactoryOptions); }, [store]); const [subscription, notifyNestedSubs] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component // connected to the store via props shouldn't use subscription from context, or vice versa. const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_9__.createSubscription)(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in // the middle of the notification loop, where `subscription` will then be null. This can // probably be avoided if Subscription's listeners logic is changed to not call listeners // that have been unsubscribed in the middle of the notification loop. const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription); return [subscription, notifyNestedSubs]; }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary, // and memoize that value to avoid unnecessary context updates. const overriddenContextValue = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (didStoreComeFromProps) { // This component is directly subscribed to a store from props. // We don't want descendants reading from this store - pass down whatever // the existing context value is from the nearest connected ancestor. return contextValue; } // Otherwise, put this component's subscription instance into context, so that // connected descendants won't update until after this component is done return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contextValue, { subscription }); }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic const lastChildProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); const lastWrapperProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef(wrapperProps); const childPropsFromStoreUpdate = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); const renderIsScheduled = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const isProcessingDispatch = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const isMounted = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false); const latestSubscriptionCallbackError = react__WEBPACK_IMPORTED_MODULE_3__.useRef(); (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => { isMounted.current = true; return () => { isMounted.current = false; }; }, []); const actualChildPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { const selector = () => { // Tricky logic here: // - This render may have been triggered by a Redux store update that produced new child props // - However, we may have gotten new wrapper props after that // If we have new child props, and the same wrapper props, we know we should use the new child props as-is. // But, if we have new wrapper props, those might change the child props, so we have to recalculate things. // So, we'll use the child props from store update only if the wrapper props are the same as last time. if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) { return childPropsFromStoreUpdate.current; } // TODO We're reading the store directly in render() here. Bad idea? // This will likely cause Bad Things (TM) to happen in Concurrent Mode. // Note that we do this because on renders _not_ caused by store updates, we need the latest store state // to determine what the child props should be. return childPropsSelector(store.getState(), wrapperProps); }; return selector; }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns // about useLayoutEffect in SSR, so we try to detect environment and fall back to // just useEffect instead to avoid the warning, since neither will run anyway. const subscribeForReact = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { const subscribe = reactListener => { if (!subscription) { return () => {}; } return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener); }; return subscribe; }, [subscription]); useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]); let actualChildProps; try { actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props, // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`. actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector); } catch (err) { if (latestSubscriptionCallbackError.current) { ; err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`; } throw err; } (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => { latestSubscriptionCallbackError.current = undefined; childPropsFromStoreUpdate.current = undefined; lastChildProps.current = actualChildProps; }); // Now that all that's done, we can finally try to actually render the child component. // We memoize the elements for the rendered child component as an optimization. const renderedWrappedComponent = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { return ( /*#__PURE__*/ // @ts-ignore react__WEBPACK_IMPORTED_MODULE_3__.createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, actualChildProps, { ref: reactReduxForwardedRef })) ); }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate. const renderedChild = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(() => { if (shouldHandleStateChanges) { // If this component is subscribed to store updates, we need to pass its own // subscription instance down to our descendants. That means rendering the same // Context instance, and putting a different value into the context. return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(ContextToUse.Provider, { value: overriddenContextValue }, renderedWrappedComponent); } return renderedWrappedComponent; }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]); return renderedChild; } const _Connect = react__WEBPACK_IMPORTED_MODULE_3__.memo(ConnectFunction); // Add a hacky cast to get the right output type const Connect = _Connect; Connect.WrappedComponent = WrappedComponent; Connect.displayName = ConnectFunction.displayName = displayName; if (forwardRef) { const _forwarded = react__WEBPACK_IMPORTED_MODULE_3__.forwardRef(function forwardConnectRef(props, ref) { // @ts-ignore return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, { reactReduxForwardedRef: ref })); }); const forwarded = _forwarded; forwarded.displayName = displayName; forwarded.WrappedComponent = WrappedComponent; return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent); } return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent); }; return wrapWithConnect; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (connect); /***/ }), /***/ "../node_modules/react-redux/es/connect/invalidArgFactory.js": /*!*******************************************************************!*\ !*** ../node_modules/react-redux/es/connect/invalidArgFactory.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createInvalidArgFactory: () => (/* binding */ createInvalidArgFactory) /* harmony export */ }); function createInvalidArgFactory(arg, name) { return (dispatch, options) => { throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`); }; } /***/ }), /***/ "../node_modules/react-redux/es/connect/mapDispatchToProps.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mapDispatchToProps.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ mapDispatchToPropsFactory: () => (/* binding */ mapDispatchToPropsFactory) /* harmony export */ }); /* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ "../node_modules/react-redux/es/utils/bindActionCreators.js"); /* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ "../node_modules/react-redux/es/connect/wrapMapToProps.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function mapDispatchToPropsFactory(mapDispatchToProps) { return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => // @ts-ignore (0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__["default"])(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => ({ dispatch })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mapDispatchToProps, 'mapDispatchToProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/mapStateToProps.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mapStateToProps.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ mapStateToPropsFactory: () => (/* binding */ mapStateToPropsFactory) /* harmony export */ }); /* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ "../node_modules/react-redux/es/connect/wrapMapToProps.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function mapStateToPropsFactory(mapStateToProps) { return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__.createInvalidArgFactory)(mapStateToProps, 'mapStateToProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/mergeProps.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/connect/mergeProps.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ defaultMergeProps: () => (/* binding */ defaultMergeProps), /* harmony export */ mergePropsFactory: () => (/* binding */ mergePropsFactory), /* harmony export */ wrapMergePropsFunc: () => (/* binding */ wrapMergePropsFunc) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "../node_modules/react-redux/es/utils/verifyPlainObject.js"); /* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ "../node_modules/react-redux/es/connect/invalidArgFactory.js"); function defaultMergeProps(stateProps, dispatchProps, ownProps) { // @ts-ignore return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, ownProps, stateProps, dispatchProps); } function wrapMergePropsFunc(mergeProps) { return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) { let hasRunOnce = false; let mergedProps; return function mergePropsProxy(stateProps, dispatchProps, ownProps) { const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps); if (hasRunOnce) { if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps; } else { hasRunOnce = true; mergedProps = nextMergedProps; if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(mergedProps, displayName, 'mergeProps'); } return mergedProps; }; }; } function mergePropsFactory(mergeProps) { return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mergeProps, 'mergeProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/selectorFactory.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/selectorFactory.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ finalPropsSelectorFactory), /* harmony export */ pureFinalPropsSelectorFactory: () => (/* binding */ pureFinalPropsSelectorFactory) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ "../node_modules/react-redux/es/connect/verifySubselectors.js"); const _excluded = ["initMapStateToProps", "initMapDispatchToProps", "initMergeProps"]; function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, { areStatesEqual, areOwnPropsEqual, areStatePropsEqual }) { let hasRunAtLeastOnce = false; let state; let ownProps; let stateProps; let dispatchProps; let mergedProps; function handleFirstCall(firstState, firstOwnProps) { state = firstState; ownProps = firstOwnProps; stateProps = mapStateToProps(state, ownProps); dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); hasRunAtLeastOnce = true; return mergedProps; } function handleNewPropsAndNewState() { stateProps = mapStateToProps(state, ownProps); if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleNewProps() { if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps); if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps); mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleNewState() { const nextStateProps = mapStateToProps(state, ownProps); const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps); stateProps = nextStateProps; if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps); return mergedProps; } function handleSubsequentCalls(nextState, nextOwnProps) { const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps); const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps); state = nextState; ownProps = nextOwnProps; if (propsChanged && stateChanged) return handleNewPropsAndNewState(); if (propsChanged) return handleNewProps(); if (stateChanged) return handleNewState(); return mergedProps; } return function pureFinalPropsSelector(nextState, nextOwnProps) { return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps); }; } // TODO: Add more comments // The selector returned by selectorFactory will memoize its results, // allowing connect's shouldComponentUpdate to return false if final // props have not changed. function finalPropsSelectorFactory(dispatch, _ref) { let { initMapStateToProps, initMapDispatchToProps, initMergeProps } = _ref, options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref, _excluded); const mapStateToProps = initMapStateToProps(dispatch, options); const mapDispatchToProps = initMapDispatchToProps(dispatch, options); const mergeProps = initMergeProps(dispatch, options); if (true) { (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__["default"])(mapStateToProps, mapDispatchToProps, mergeProps); } return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options); } /***/ }), /***/ "../node_modules/react-redux/es/connect/verifySubselectors.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/connect/verifySubselectors.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ verifySubselectors) /* harmony export */ }); /* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ "../node_modules/react-redux/es/utils/warning.js"); function verify(selector, methodName) { if (!selector) { throw new Error(`Unexpected value for ${methodName} in connect.`); } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') { if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) { (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__["default"])(`The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`); } } } function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) { verify(mapStateToProps, 'mapStateToProps'); verify(mapDispatchToProps, 'mapDispatchToProps'); verify(mergeProps, 'mergeProps'); } /***/ }), /***/ "../node_modules/react-redux/es/connect/wrapMapToProps.js": /*!****************************************************************!*\ !*** ../node_modules/react-redux/es/connect/wrapMapToProps.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getDependsOnOwnProps: () => (/* binding */ getDependsOnOwnProps), /* harmony export */ wrapMapToPropsConstant: () => (/* binding */ wrapMapToPropsConstant), /* harmony export */ wrapMapToPropsFunc: () => (/* binding */ wrapMapToPropsFunc) /* harmony export */ }); /* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ "../node_modules/react-redux/es/utils/verifyPlainObject.js"); function wrapMapToPropsConstant( // * Note: // It seems that the dispatch argument // could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing) // and a state object in some others (ex: whenMapStateToPropsIsMissing) // eslint-disable-next-line no-unused-vars getConstant) { return function initConstantSelector(dispatch) { const constant = getConstant(dispatch); function constantSelector() { return constant; } constantSelector.dependsOnOwnProps = false; return constantSelector; }; } // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args // to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine // whether mapToProps needs to be invoked when props have changed. // // A length of one signals that mapToProps does not depend on props from the parent component. // A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and // therefore not reporting its length accurately.. // TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps? function getDependsOnOwnProps(mapToProps) { return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1; } // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction, // this function wraps mapToProps in a proxy function which does several things: // // * Detects whether the mapToProps function being called depends on props, which // is used by selectorFactory to decide if it should reinvoke on props changes. // // * On first call, handles mapToProps if returns another function, and treats that // new function as the true mapToProps for subsequent calls. // // * On first call, verifies the first result is a plain object, in order to warn // the developer that their mapToProps function is not returning a valid result. // function wrapMapToPropsFunc(mapToProps, methodName) { return function initProxySelector(dispatch, { displayName }) { const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) { return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined); }; // allow detectFactoryAndVerify to get ownProps proxy.dependsOnOwnProps = true; proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) { proxy.mapToProps = mapToProps; proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps); let props = proxy(stateOrDispatch, ownProps); if (typeof props === 'function') { proxy.mapToProps = props; proxy.dependsOnOwnProps = getDependsOnOwnProps(props); props = proxy(stateOrDispatch, ownProps); } if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(props, displayName, methodName); return props; }; return proxy; }; } /***/ }), /***/ "../node_modules/react-redux/es/exports.js": /*!*************************************************!*\ !*** ../node_modules/react-redux/es/exports.js ***! \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Provider: () => (/* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__["default"]), /* harmony export */ ReactReduxContext: () => (/* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext), /* harmony export */ connect: () => (/* reexport safe */ _components_connect__WEBPACK_IMPORTED_MODULE_1__["default"]), /* harmony export */ createDispatchHook: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.createDispatchHook), /* harmony export */ createSelectorHook: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.createSelectorHook), /* harmony export */ createStoreHook: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.createStoreHook), /* harmony export */ shallowEqual: () => (/* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__["default"]), /* harmony export */ useDispatch: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.useDispatch), /* harmony export */ useSelector: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.useSelector), /* harmony export */ useStore: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore) /* harmony export */ }); /* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ "../node_modules/react-redux/es/components/Provider.js"); /* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connect */ "../node_modules/react-redux/es/components/connect.js"); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/useDispatch */ "../node_modules/react-redux/es/hooks/useDispatch.js"); /* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ "../node_modules/react-redux/es/hooks/useSelector.js"); /* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useStore */ "../node_modules/react-redux/es/hooks/useStore.js"); /* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/shallowEqual */ "../node_modules/react-redux/es/utils/shallowEqual.js"); /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ "../node_modules/react-redux/es/types.js"); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useDispatch.js": /*!***********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useDispatch.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createDispatchHook: () => (/* binding */ createDispatchHook), /* harmony export */ useDispatch: () => (/* binding */ useDispatch) /* harmony export */ }); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ "../node_modules/react-redux/es/hooks/useStore.js"); /** * Hook factory, which creates a `useDispatch` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useDispatch` hook bound to the specified context. */ function createDispatchHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext) { const useStore = // @ts-ignore context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context); return function useDispatch() { const store = useStore(); // @ts-ignore return store.dispatch; }; } /** * A hook to access the redux `dispatch` function. * * @returns {any|function} redux store's `dispatch` function * * @example * * import React, { useCallback } from 'react' * import { useDispatch } from 'react-redux' * * export const CounterComponent = ({ value }) => { * const dispatch = useDispatch() * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), []) * return ( *
* {value} * *
* ) * } */ const useDispatch = /*#__PURE__*/createDispatchHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useReduxContext.js": /*!***************************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useReduxContext.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createReduxContextHook: () => (/* binding */ createReduxContextHook), /* harmony export */ useReduxContext: () => (/* binding */ useReduxContext) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /** * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level * hook that you should usually not need to call directly. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useReduxContext` hook bound to the specified context. */ function createReduxContextHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext) { return function useReduxContext() { const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context); if ( true && !contextValue) { throw new Error('could not find react-redux context value; please ensure the component is wrapped in a '); } return contextValue; }; } /** * A hook to access the value of the `ReactReduxContext`. This is a low-level * hook that you should usually not need to call directly. * * @returns {any} the value of the `ReactReduxContext` * * @example * * import React from 'react' * import { useReduxContext } from 'react-redux' * * export const CounterComponent = () => { * const { store } = useReduxContext() * return
{store.getState()}
* } */ const useReduxContext = /*#__PURE__*/createReduxContextHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useSelector.js": /*!***********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useSelector.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSelectorHook: () => (/* binding */ createSelectorHook), /* harmony export */ initializeUseSelector: () => (/* binding */ initializeUseSelector), /* harmony export */ useSelector: () => (/* binding */ useSelector) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ "../node_modules/react-redux/es/hooks/useReduxContext.js"); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ "../node_modules/react-redux/es/utils/useSyncExternalStore.js"); let useSyncExternalStoreWithSelector = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__.notInitialized; const initializeUseSelector = fn => { useSyncExternalStoreWithSelector = fn; }; const refEquality = (a, b) => a === b; /** * Hook factory, which creates a `useSelector` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useSelector` hook bound to the specified context. */ function createSelectorHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext) { const useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context); return function useSelector(selector, equalityFnOrOptions = {}) { const { equalityFn = refEquality, stabilityCheck = undefined, noopCheck = undefined } = typeof equalityFnOrOptions === 'function' ? { equalityFn: equalityFnOrOptions } : equalityFnOrOptions; if (true) { if (!selector) { throw new Error(`You must pass a selector to useSelector`); } if (typeof selector !== 'function') { throw new Error(`You must pass a function as a selector to useSelector`); } if (typeof equalityFn !== 'function') { throw new Error(`You must pass a function as an equality function to useSelector`); } } const { store, subscription, getServerState, stabilityCheck: globalStabilityCheck, noopCheck: globalNoopCheck } = useReduxContext(); const firstRun = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true); const wrappedSelector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)({ [selector.name](state) { const selected = selector(state); if (true) { const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck; if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) { const toCompare = selector(state); if (!equalityFn(selected, toCompare)) { let stack = undefined; try { throw new Error(); } catch (e) { ; ({ stack } = e); } console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', { state, selected, selected2: toCompare, stack }); } } const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck; if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) { // @ts-ignore if (selected === state) { let stack = undefined; try { throw new Error(); } catch (e) { ; ({ stack } = e); } console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', { stack }); } } if (firstRun.current) firstRun.current = false; } return selected; } }[selector.name], [selector, globalStabilityCheck, stabilityCheck]); const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn); (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState); return selectedState; }; } /** * A hook to access the redux store's state. This hook takes a selector function * as an argument. The selector is called with the store state. * * This hook takes an optional equality comparison function as the second parameter * that allows you to customize the way the selected state is compared to determine * whether the component needs to be re-rendered. * * @param {Function} selector the selector function * @param {Function=} equalityFn the function that will be used to determine equality * * @returns {any} the selected state * * @example * * import React from 'react' * import { useSelector } from 'react-redux' * * export const CounterComponent = () => { * const counter = useSelector(state => state.counter) * return
{counter}
* } */ const useSelector = /*#__PURE__*/createSelectorHook(); /***/ }), /***/ "../node_modules/react-redux/es/hooks/useStore.js": /*!********************************************************!*\ !*** ../node_modules/react-redux/es/hooks/useStore.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createStoreHook: () => (/* binding */ createStoreHook), /* harmony export */ useStore: () => (/* binding */ useStore) /* harmony export */ }); /* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ "../node_modules/react-redux/es/components/Context.js"); /* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ "../node_modules/react-redux/es/hooks/useReduxContext.js"); /** * Hook factory, which creates a `useStore` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your ``. * @returns {Function} A `useStore` hook bound to the specified context. */ function createStoreHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext) { const useReduxContext = // @ts-ignore context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : // @ts-ignore (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context); return function useStore() { const { store } = useReduxContext(); // @ts-ignore return store; }; } /** * A hook to access the redux store. * * @returns {any} the redux store * * @example * * import React from 'react' * import { useStore } from 'react-redux' * * export const ExampleComponent = () => { * const store = useStore() * return
{store.getState()}
* } */ const useStore = /*#__PURE__*/createStoreHook(); /***/ }), /***/ "../node_modules/react-redux/es/index.js": /*!***********************************************!*\ !*** ../node_modules/react-redux/es/index.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Provider: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.Provider), /* harmony export */ ReactReduxContext: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.ReactReduxContext), /* harmony export */ batch: () => (/* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates), /* harmony export */ connect: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.connect), /* harmony export */ createDispatchHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createDispatchHook), /* harmony export */ createSelectorHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createSelectorHook), /* harmony export */ createStoreHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createStoreHook), /* harmony export */ shallowEqual: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.shallowEqual), /* harmony export */ useDispatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useDispatch), /* harmony export */ useSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useSelector), /* harmony export */ useStore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useStore) /* harmony export */ }); /* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sync-external-store/shim */ "../node_modules/use-sync-external-store/shim/index.js"); /* harmony import */ var use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector */ "../node_modules/use-sync-external-store/shim/with-selector.js"); /* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ "../node_modules/react-redux/es/utils/reactBatchedUpdates.js"); /* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/batch */ "../node_modules/react-redux/es/utils/batch.js"); /* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ "../node_modules/react-redux/es/hooks/useSelector.js"); /* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/connect */ "../node_modules/react-redux/es/components/connect.js"); /* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./exports */ "../node_modules/react-redux/es/exports.js"); // The primary entry point assumes we're working with standard ReactDOM/RN, but // older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x). // Because of that, the useSyncExternalStore compat shim is needed. (0,_hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.initializeUseSelector)(use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__.useSyncExternalStoreWithSelector); (0,_components_connect__WEBPACK_IMPORTED_MODULE_5__.initializeConnect)(use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore); // Enable batched updates in our subscriptions for use // with standard React renderers (ReactDOM, React Native) (0,_utils_batch__WEBPACK_IMPORTED_MODULE_3__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates); /***/ }), /***/ "../node_modules/react-redux/es/types.js": /*!***********************************************!*\ !*** ../node_modules/react-redux/es/types.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /***/ }), /***/ "../node_modules/react-redux/es/utils/Subscription.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/utils/Subscription.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSubscription: () => (/* binding */ createSubscription) /* harmony export */ }); /* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ "../node_modules/react-redux/es/utils/batch.js"); // encapsulates the subscription logic for connecting a component to the redux store, as // well as nesting subscriptions of descendant components, so that we can ensure the // ancestor components re-render before descendants function createListenerCollection() { const batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)(); let first = null; let last = null; return { clear() { first = null; last = null; }, notify() { batch(() => { let listener = first; while (listener) { listener.callback(); listener = listener.next; } }); }, get() { let listeners = []; let listener = first; while (listener) { listeners.push(listener); listener = listener.next; } return listeners; }, subscribe(callback) { let isSubscribed = true; let listener = last = { callback, next: null, prev: last }; if (listener.prev) { listener.prev.next = listener; } else { first = listener; } return function unsubscribe() { if (!isSubscribed || first === null) return; isSubscribed = false; if (listener.next) { listener.next.prev = listener.prev; } else { last = listener.prev; } if (listener.prev) { listener.prev.next = listener.next; } else { first = listener.next; } }; } }; } const nullListeners = { notify() {}, get: () => [] }; function createSubscription(store, parentSub) { let unsubscribe; let listeners = nullListeners; // Reasons to keep the subscription active let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?) let selfSubscribed = false; function addNestedSub(listener) { trySubscribe(); const cleanupListener = listeners.subscribe(listener); // cleanup nested sub let removed = false; return () => { if (!removed) { removed = true; cleanupListener(); tryUnsubscribe(); } }; } function notifyNestedSubs() { listeners.notify(); } function handleChangeWrapper() { if (subscription.onStateChange) { subscription.onStateChange(); } } function isSubscribed() { return selfSubscribed; } function trySubscribe() { subscriptionsAmount++; if (!unsubscribe) { unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper); listeners = createListenerCollection(); } } function tryUnsubscribe() { subscriptionsAmount--; if (unsubscribe && subscriptionsAmount === 0) { unsubscribe(); unsubscribe = undefined; listeners.clear(); listeners = nullListeners; } } function trySubscribeSelf() { if (!selfSubscribed) { selfSubscribed = true; trySubscribe(); } } function tryUnsubscribeSelf() { if (selfSubscribed) { selfSubscribed = false; tryUnsubscribe(); } } const subscription = { addNestedSub, notifyNestedSubs, handleChangeWrapper, isSubscribed, trySubscribe: trySubscribeSelf, tryUnsubscribe: tryUnsubscribeSelf, getListeners: () => listeners }; return subscription; } /***/ }), /***/ "../node_modules/react-redux/es/utils/batch.js": /*!*****************************************************!*\ !*** ../node_modules/react-redux/es/utils/batch.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ getBatch: () => (/* binding */ getBatch), /* harmony export */ setBatch: () => (/* binding */ setBatch) /* harmony export */ }); // Default to a dummy "batch" implementation that just runs the callback function defaultNoopBatch(callback) { callback(); } let batch = defaultNoopBatch; // Allow injecting another batching function later const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings const getBatch = () => batch; /***/ }), /***/ "../node_modules/react-redux/es/utils/bindActionCreators.js": /*!******************************************************************!*\ !*** ../node_modules/react-redux/es/utils/bindActionCreators.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ bindActionCreators) /* harmony export */ }); function bindActionCreators(actionCreators, dispatch) { const boundActionCreators = {}; for (const key in actionCreators) { const actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = (...args) => dispatch(actionCreator(...args)); } } return boundActionCreators; } /***/ }), /***/ "../node_modules/react-redux/es/utils/isPlainObject.js": /*!*************************************************************!*\ !*** ../node_modules/react-redux/es/utils/isPlainObject.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ isPlainObject) /* harmony export */ }); /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; let proto = Object.getPrototypeOf(obj); if (proto === null) return true; let baseProto = proto; while (Object.getPrototypeOf(baseProto) !== null) { baseProto = Object.getPrototypeOf(baseProto); } return proto === baseProto; } /***/ }), /***/ "../node_modules/react-redux/es/utils/reactBatchedUpdates.js": /*!*******************************************************************!*\ !*** ../node_modules/react-redux/es/utils/reactBatchedUpdates.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ unstable_batchedUpdates: () => (/* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates) /* harmony export */ }); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ "react-dom"); /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__); /***/ }), /***/ "../node_modules/react-redux/es/utils/shallowEqual.js": /*!************************************************************!*\ !*** ../node_modules/react-redux/es/utils/shallowEqual.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ shallowEqual) /* harmony export */ }); function is(x, y) { if (x === y) { return x !== 0 || y !== 0 || 1 / x === 1 / y; } else { return x !== x && y !== y; } } function shallowEqual(objA, objB) { if (is(objA, objB)) return true; if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { return false; } const keysA = Object.keys(objA); const keysB = Object.keys(objB); if (keysA.length !== keysB.length) return false; for (let i = 0; i < keysA.length; i++) { if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { return false; } } return true; } /***/ }), /***/ "../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js": /*!*************************************************************************!*\ !*** ../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ canUseDOM: () => (/* binding */ canUseDOM), /* harmony export */ useIsomorphicLayoutEffect: () => (/* binding */ useIsomorphicLayoutEffect) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); // React currently throws a warning when using useLayoutEffect on the server. // To get around it, we can conditionally useEffect on the server (no-op) and // useLayoutEffect in the browser. We need useLayoutEffect to ensure the store // subscription callback always has the selector from the latest render commit // available, otherwise a store update may happen between render and the effect, // which may cause missed updates; we also must ensure the store subscription // is created synchronously, otherwise a store update may occur before the // subscription is created and an inconsistent state may be observed // Matches logic in React's `shared/ExecutionEnvironment` file const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); const useIsomorphicLayoutEffect = canUseDOM ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect; /***/ }), /***/ "../node_modules/react-redux/es/utils/useSyncExternalStore.js": /*!********************************************************************!*\ !*** ../node_modules/react-redux/es/utils/useSyncExternalStore.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ notInitialized: () => (/* binding */ notInitialized) /* harmony export */ }); const notInitialized = () => { throw new Error('uSES not initialized!'); }; /***/ }), /***/ "../node_modules/react-redux/es/utils/verifyPlainObject.js": /*!*****************************************************************!*\ !*** ../node_modules/react-redux/es/utils/verifyPlainObject.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ verifyPlainObject) /* harmony export */ }); /* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ "../node_modules/react-redux/es/utils/isPlainObject.js"); /* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ "../node_modules/react-redux/es/utils/warning.js"); function verifyPlainObject(value, displayName, methodName) { if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(value)) { (0,_warning__WEBPACK_IMPORTED_MODULE_1__["default"])(`${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`); } } /***/ }), /***/ "../node_modules/react-redux/es/utils/warning.js": /*!*******************************************************!*\ !*** ../node_modules/react-redux/es/utils/warning.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ warning) /* harmony export */ }); /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); /* eslint-disable no-empty */ } catch (e) {} /* eslint-enable no-empty */ } /***/ }), /***/ "../node_modules/redux-thunk/es/index.js": /*!***********************************************!*\ !*** ../node_modules/redux-thunk/es/index.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** A function that accepts a potential "extra argument" value to be injected later, * and returns an instance of the thunk middleware that uses that value */ function createThunkMiddleware(extraArgument) { // Standard Redux middleware definition pattern: // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware var middleware = function middleware(_ref) { var dispatch = _ref.dispatch, getState = _ref.getState; return function (next) { return function (action) { // The thunk middleware looks for any functions that were passed to `store.dispatch`. // If this "action" is really a function, call it and return the result. if (typeof action === 'function') { // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" return action(dispatch, getState, extraArgument); } // Otherwise, pass the action down the middleware chain as usual return next(action); }; }; }; return middleware; } var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version // with whatever "extra arg" they want to inject into their thunks thunk.withExtraArgument = createThunkMiddleware; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (thunk); /***/ }), /***/ "../node_modules/redux/es/redux.js": /*!*****************************************!*\ !*** ../node_modules/redux/es/redux.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* binding */ ActionTypes), /* harmony export */ applyMiddleware: () => (/* binding */ applyMiddleware), /* harmony export */ bindActionCreators: () => (/* binding */ bindActionCreators), /* harmony export */ combineReducers: () => (/* binding */ combineReducers), /* harmony export */ compose: () => (/* binding */ compose), /* harmony export */ createStore: () => (/* binding */ createStore), /* harmony export */ legacy_createStore: () => (/* binding */ legacy_createStore) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js"); /** * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js * * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes * during build. * @param {number} code */ function formatProdErrorMessage(code) { return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. '; } // Inlined version of the `symbol-observable` polyfill var $$observable = (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })(); /** * These are private action types reserved by Redux. * For any unknown actions, you must return the current state. * If the current state is undefined, you must return the initial state. * Do not reference these action types directly in your code. */ var randomString = function randomString() { return Math.random().toString(36).substring(7).split('').join('.'); }; var ActionTypes = { INIT: "@@redux/INIT" + randomString(), REPLACE: "@@redux/REPLACE" + randomString(), PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() { return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); } }; /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; var proto = obj; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(obj) === proto; } // Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of function miniKindOf(val) { if (val === void 0) return 'undefined'; if (val === null) return 'null'; var type = typeof val; switch (type) { case 'boolean': case 'string': case 'number': case 'symbol': case 'function': { return type; } } if (Array.isArray(val)) return 'array'; if (isDate(val)) return 'date'; if (isError(val)) return 'error'; var constructorName = ctorName(val); switch (constructorName) { case 'Symbol': case 'Promise': case 'WeakMap': case 'WeakSet': case 'Map': case 'Set': return constructorName; } // other return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); } function ctorName(val) { return typeof val.constructor === 'function' ? val.constructor.name : null; } function isError(val) { return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; } function isDate(val) { if (val instanceof Date) return true; return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; } function kindOf(val) { var typeOfVal = typeof val; if (true) { typeOfVal = miniKindOf(val); } return typeOfVal; } /** * @deprecated * * **We recommend using the `configureStore` method * of the `@reduxjs/toolkit` package**, which replaces `createStore`. * * Redux Toolkit is our recommended approach for writing Redux logic today, * including store setup, reducers, data fetching, and more. * * **For more details, please read this Redux docs page:** * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * `configureStore` from Redux Toolkit is an improved version of `createStore` that * simplifies setup and helps avoid common bugs. * * You should not be using the `redux` core package by itself today, except for learning purposes. * The `createStore` method from the core `redux` package will not be removed, but we encourage * all users to migrate to using Redux Toolkit for all Redux code. * * If you want to use `createStore` without this visual deprecation warning, use * the `legacy_createStore` import instead: * * `import { legacy_createStore as createStore} from 'redux'` * */ function createStore(reducer, preloadedState, enhancer) { var _ref2; if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') { throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.'); } if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { enhancer = preloadedState; preloadedState = undefined; } if (typeof enhancer !== 'undefined') { if (typeof enhancer !== 'function') { throw new Error( false ? 0 : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'"); } return enhancer(createStore)(reducer, preloadedState); } if (typeof reducer !== 'function') { throw new Error( false ? 0 : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'"); } var currentReducer = reducer; var currentState = preloadedState; var currentListeners = []; var nextListeners = currentListeners; var isDispatching = false; /** * This makes a shallow copy of currentListeners so we can use * nextListeners as a temporary list while dispatching. * * This prevents any bugs around consumers calling * subscribe/unsubscribe in the middle of a dispatch. */ function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } /** * Reads the state tree managed by the store. * * @returns {any} The current state tree of your application. */ function getState() { if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.'); } return currentState; } /** * Adds a change listener. It will be called any time an action is dispatched, * and some part of the state tree may potentially have changed. You may then * call `getState()` to read the current state tree inside the callback. * * You may call `dispatch()` from a change listener, with the following * caveats: * * 1. The subscriptions are snapshotted just before every `dispatch()` call. * If you subscribe or unsubscribe while the listeners are being invoked, this * will not have any effect on the `dispatch()` that is currently in progress. * However, the next `dispatch()` call, whether nested or not, will use a more * recent snapshot of the subscription list. * * 2. The listener should not expect to see all state changes, as the state * might have been updated multiple times during a nested `dispatch()` before * the listener is called. It is, however, guaranteed that all subscribers * registered before the `dispatch()` started will be called with the latest * state by the time it exits. * * @param {Function} listener A callback to be invoked on every dispatch. * @returns {Function} A function to remove this change listener. */ function subscribe(listener) { if (typeof listener !== 'function') { throw new Error( false ? 0 : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'"); } if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function unsubscribe() { if (!isSubscribed) { return; } if (isDispatching) { throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); currentListeners = null; }; } /** * Dispatches an action. It is the only way to trigger a state change. * * The `reducer` function, used to create the store, will be called with the * current state tree and the given `action`. Its return value will * be considered the **next** state of the tree, and the change listeners * will be notified. * * The base implementation only supports plain object actions. If you want to * dispatch a Promise, an Observable, a thunk, or something else, you need to * wrap your store creating function into the corresponding middleware. For * example, see the documentation for the `redux-thunk` package. Even the * middleware will eventually dispatch plain object actions using this method. * * @param {Object} action A plain object representing “what changed”. It is * a good idea to keep actions serializable so you can record and replay user * sessions, or use the time travelling `redux-devtools`. An action must have * a `type` property which may not be `undefined`. It is a good idea to use * string constants for action types. * * @returns {Object} For convenience, the same action object you dispatched. * * Note that, if you use a custom middleware, it may wrap `dispatch()` to * return something else (for example, a Promise you can await). */ function dispatch(action) { if (!isPlainObject(action)) { throw new Error( false ? 0 : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples."); } if (typeof action.type === 'undefined') { throw new Error( false ? 0 : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.'); } if (isDispatching) { throw new Error( false ? 0 : 'Reducers may not dispatch actions.'); } try { isDispatching = true; currentState = currentReducer(currentState, action); } finally { isDispatching = false; } var listeners = currentListeners = nextListeners; for (var i = 0; i < listeners.length; i++) { var listener = listeners[i]; listener(); } return action; } /** * Replaces the reducer currently used by the store to calculate the state. * * You might need this if your app implements code splitting and you want to * load some of the reducers dynamically. You might also need this if you * implement a hot reloading mechanism for Redux. * * @param {Function} nextReducer The reducer for the store to use instead. * @returns {void} */ function replaceReducer(nextReducer) { if (typeof nextReducer !== 'function') { throw new Error( false ? 0 : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer)); } currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT. // Any reducers that existed in both the new and old rootReducer // will receive the previous state. This effectively populates // the new state tree with any relevant data from the old one. dispatch({ type: ActionTypes.REPLACE }); } /** * Interoperability point for observable/reactive libraries. * @returns {observable} A minimal observable of state changes. * For more information, see the observable proposal: * https://github.com/tc39/proposal-observable */ function observable() { var _ref; var outerSubscribe = subscribe; return _ref = { /** * The minimal observable subscription method. * @param {Object} observer Any object that can be used as an observer. * The observer object should have a `next` method. * @returns {subscription} An object with an `unsubscribe` method that can * be used to unsubscribe the observable from the store, and prevent further * emission of values from the observable. */ subscribe: function subscribe(observer) { if (typeof observer !== 'object' || observer === null) { throw new Error( false ? 0 : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'"); } function observeState() { if (observer.next) { observer.next(getState()); } } observeState(); var unsubscribe = outerSubscribe(observeState); return { unsubscribe: unsubscribe }; } }, _ref[$$observable] = function () { return this; }, _ref; } // When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT }); return _ref2 = { dispatch: dispatch, subscribe: subscribe, getState: getState, replaceReducer: replaceReducer }, _ref2[$$observable] = observable, _ref2; } /** * Creates a Redux store that holds the state tree. * * **We recommend using `configureStore` from the * `@reduxjs/toolkit` package**, which replaces `createStore`: * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * The only way to change the data in the store is to call `dispatch()` on it. * * There should only be a single store in your app. To specify how different * parts of the state tree respond to actions, you may combine several reducers * into a single reducer function by using `combineReducers`. * * @param {Function} reducer A function that returns the next state tree, given * the current state tree and the action to handle. * * @param {any} [preloadedState] The initial state. You may optionally specify it * to hydrate the state from the server in universal apps, or to restore a * previously serialized user session. * If you use `combineReducers` to produce the root reducer function, this must be * an object with the same shape as `combineReducers` keys. * * @param {Function} [enhancer] The store enhancer. You may optionally specify it * to enhance the store with third-party capabilities such as middleware, * time travel, persistence, etc. The only store enhancer that ships with Redux * is `applyMiddleware()`. * * @returns {Store} A Redux store that lets you read the state, dispatch actions * and subscribe to changes. */ var legacy_createStore = createStore; /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); } catch (e) {} // eslint-disable-line no-empty } function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) { var reducerKeys = Object.keys(reducers); var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; if (reducerKeys.length === 0) { return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; } if (!isPlainObject(inputState)) { return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\""); } var unexpectedKeys = Object.keys(inputState).filter(function (key) { return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; }); unexpectedKeys.forEach(function (key) { unexpectedKeyCache[key] = true; }); if (action && action.type === ActionTypes.REPLACE) return; if (unexpectedKeys.length > 0) { return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored."); } } function assertReducerShape(reducers) { Object.keys(reducers).forEach(function (key) { var reducer = reducers[key]; var initialState = reducer(undefined, { type: ActionTypes.INIT }); if (typeof initialState === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined."); } if (typeof reducer(undefined, { type: ActionTypes.PROBE_UNKNOWN_ACTION() }) === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null."); } }); } /** * Turns an object whose values are different reducer functions, into a single * reducer function. It will call every child reducer, and gather their results * into a single state object, whose keys correspond to the keys of the passed * reducer functions. * * @param {Object} reducers An object whose values correspond to different * reducer functions that need to be combined into one. One handy way to obtain * it is to use ES6 `import * as reducers` syntax. The reducers may never return * undefined for any action. Instead, they should return their initial state * if the state passed to them was undefined, and the current state for any * unrecognized action. * * @returns {Function} A reducer function that invokes every reducer inside the * passed object, and builds a state object with the same shape. */ function combineReducers(reducers) { var reducerKeys = Object.keys(reducers); var finalReducers = {}; for (var i = 0; i < reducerKeys.length; i++) { var key = reducerKeys[i]; if (true) { if (typeof reducers[key] === 'undefined') { warning("No reducer provided for key \"" + key + "\""); } } if (typeof reducers[key] === 'function') { finalReducers[key] = reducers[key]; } } var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same // keys multiple times. var unexpectedKeyCache; if (true) { unexpectedKeyCache = {}; } var shapeAssertionError; try { assertReducerShape(finalReducers); } catch (e) { shapeAssertionError = e; } return function combination(state, action) { if (state === void 0) { state = {}; } if (shapeAssertionError) { throw shapeAssertionError; } if (true) { var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); if (warningMessage) { warning(warningMessage); } } var hasChanged = false; var nextState = {}; for (var _i = 0; _i < finalReducerKeys.length; _i++) { var _key = finalReducerKeys[_i]; var reducer = finalReducers[_key]; var previousStateForKey = state[_key]; var nextStateForKey = reducer(previousStateForKey, action); if (typeof nextStateForKey === 'undefined') { var actionType = action && action.type; throw new Error( false ? 0 : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined."); } nextState[_key] = nextStateForKey; hasChanged = hasChanged || nextStateForKey !== previousStateForKey; } hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length; return hasChanged ? nextState : state; }; } function bindActionCreator(actionCreator, dispatch) { return function () { return dispatch(actionCreator.apply(this, arguments)); }; } /** * Turns an object whose values are action creators, into an object with the * same keys, but with every function wrapped into a `dispatch` call so they * may be invoked directly. This is just a convenience method, as you can call * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. * * For convenience, you can also pass an action creator as the first argument, * and get a dispatch wrapped function in return. * * @param {Function|Object} actionCreators An object whose values are action * creator functions. One handy way to obtain it is to use ES6 `import * as` * syntax. You may also pass a single function. * * @param {Function} dispatch The `dispatch` function available on your Redux * store. * * @returns {Function|Object} The object mimicking the original object, but with * every action creator wrapped into the `dispatch` call. If you passed a * function as `actionCreators`, the return value will also be a single * function. */ function bindActionCreators(actionCreators, dispatch) { if (typeof actionCreators === 'function') { return bindActionCreator(actionCreators, dispatch); } if (typeof actionCreators !== 'object' || actionCreators === null) { throw new Error( false ? 0 : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?"); } var boundActionCreators = {}; for (var key in actionCreators) { var actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); } } return boundActionCreators; } /** * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ function compose() { for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce(function (a, b) { return function () { return a(b.apply(void 0, arguments)); }; }); } /** * Creates a store enhancer that applies middleware to the dispatch method * of the Redux store. This is handy for a variety of tasks, such as expressing * asynchronous actions in a concise manner, or logging every action payload. * * See `redux-thunk` package as an example of the Redux middleware. * * Because middleware is potentially asynchronous, this should be the first * store enhancer in the composition chain. * * Note that each middleware will be given the `dispatch` and `getState` functions * as named arguments. * * @param {...Function} middlewares The middleware chain to be applied. * @returns {Function} A store enhancer applying the middleware. */ function applyMiddleware() { for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) { middlewares[_key] = arguments[_key]; } return function (createStore) { return function () { var store = createStore.apply(void 0, arguments); var _dispatch = function dispatch() { throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); }; var middlewareAPI = { getState: store.getState, dispatch: function dispatch() { return _dispatch.apply(void 0, arguments); } }; var chain = middlewares.map(function (middleware) { return middleware(middlewareAPI); }); _dispatch = compose.apply(void 0, chain)(store.dispatch); return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, { dispatch: _dispatch }); }; }; } /***/ }), /***/ "../node_modules/reselect/es/defaultMemoize.js": /*!*****************************************************!*\ !*** ../node_modules/reselect/es/defaultMemoize.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createCacheKeyComparator: () => (/* binding */ createCacheKeyComparator), /* harmony export */ defaultEqualityCheck: () => (/* binding */ defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* binding */ defaultMemoize) /* harmony export */ }); // Cache implementation based on Erik Rasmussen's `lru-memoize`: // https://github.com/erikras/lru-memoize var NOT_FOUND = 'NOT_FOUND'; function createSingletonCache(equals) { var entry; return { get: function get(key) { if (entry && equals(entry.key, key)) { return entry.value; } return NOT_FOUND; }, put: function put(key, value) { entry = { key: key, value: value }; }, getEntries: function getEntries() { return entry ? [entry] : []; }, clear: function clear() { entry = undefined; } }; } function createLruCache(maxSize, equals) { var entries = []; function get(key) { var cacheIndex = entries.findIndex(function (entry) { return equals(key, entry.key); }); // We found a cached entry if (cacheIndex > -1) { var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top if (cacheIndex > 0) { entries.splice(cacheIndex, 1); entries.unshift(entry); } return entry.value; } // No entry found in cache, return sentinel return NOT_FOUND; } function put(key, value) { if (get(key) === NOT_FOUND) { // TODO Is unshift slow? entries.unshift({ key: key, value: value }); if (entries.length > maxSize) { entries.pop(); } } } function getEntries() { return entries; } function clear() { entries = []; } return { get: get, put: put, getEntries: getEntries, clear: clear }; } var defaultEqualityCheck = function defaultEqualityCheck(a, b) { return a === b; }; function createCacheKeyComparator(equalityCheck) { return function areArgumentsShallowlyEqual(prev, next) { if (prev === null || next === null || prev.length !== next.length) { return false; } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible. var length = prev.length; for (var i = 0; i < length; i++) { if (!equalityCheck(prev[i], next[i])) { return false; } } return true; }; } // defaultMemoize now supports a configurable cache size with LRU behavior, // and optional comparison of the result value with existing values function defaultMemoize(func, equalityCheckOrOptions) { var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions }; var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck; var comparator = createCacheKeyComparator(equalityCheck); var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons function memoized() { var value = cache.get(arguments); if (value === NOT_FOUND) { // @ts-ignore value = func.apply(null, arguments); if (resultEqualityCheck) { var entries = cache.getEntries(); var matchingEntry = entries.find(function (entry) { return resultEqualityCheck(entry.value, value); }); if (matchingEntry) { value = matchingEntry.value; } } cache.put(arguments, value); } return value; } memoized.clearCache = function () { return cache.clear(); }; return memoized; } /***/ }), /***/ "../node_modules/reselect/es/index.js": /*!********************************************!*\ !*** ../node_modules/reselect/es/index.js ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSelector: () => (/* binding */ createSelector), /* harmony export */ createSelectorCreator: () => (/* binding */ createSelectorCreator), /* harmony export */ createStructuredSelector: () => (/* binding */ createStructuredSelector), /* harmony export */ defaultEqualityCheck: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize) /* harmony export */ }); /* harmony import */ var _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultMemoize */ "../node_modules/reselect/es/defaultMemoize.js"); function getDependencies(funcs) { var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs; if (!dependencies.every(function (dep) { return typeof dep === 'function'; })) { var dependencyTypes = dependencies.map(function (dep) { return typeof dep === 'function' ? "function " + (dep.name || 'unnamed') + "()" : typeof dep; }).join(', '); throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]"); } return dependencies; } function createSelectorCreator(memoize) { for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { memoizeOptionsFromArgs[_key - 1] = arguments[_key]; } var createSelector = function createSelector() { for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { funcs[_key2] = arguments[_key2]; } var _recomputations = 0; var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`. // So, start by declaring the default value here. // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.) var directlyPassedOptions = { memoizeOptions: undefined }; // Normally, the result func or "output selector" is the last arg var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object if (typeof resultFunc === 'object') { directlyPassedOptions = resultFunc; // and pop the real result func off resultFunc = funcs.pop(); } if (typeof resultFunc !== 'function') { throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]"); } // Determine which set of options we're using. Prefer options passed directly, // but fall back to options given to createSelectorCreator. var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer // is an array. In most libs I've looked at, it's an equality function or options object. // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full // user-provided array of options. Otherwise, it must be just the _first_ arg, and so // we wrap it in an array so we can apply it. var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions]; var dependencies = getDependencies(funcs); var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() { _recomputations++; // apply arguments instead of spreading for performance. return resultFunc.apply(null, arguments); }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again. var selector = memoize(function dependenciesChecker() { var params = []; var length = dependencies.length; for (var i = 0; i < length; i++) { // apply arguments instead of spreading and mutate a local list of params for performance. // @ts-ignore params.push(dependencies[i].apply(null, arguments)); } // apply arguments instead of spreading for performance. _lastResult = memoizedResultFunc.apply(null, params); return _lastResult; }); Object.assign(selector, { resultFunc: resultFunc, memoizedResultFunc: memoizedResultFunc, dependencies: dependencies, lastResult: function lastResult() { return _lastResult; }, recomputations: function recomputations() { return _recomputations; }, resetRecomputations: function resetRecomputations() { return _recomputations = 0; } }); return selector; }; // @ts-ignore return createSelector; } var createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize); // Manual definition of state and output arguments var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) { if (selectorCreator === void 0) { selectorCreator = createSelector; } if (typeof selectors !== 'object') { throw new Error('createStructuredSelector expects first argument to be an object ' + ("where each property is a selector, instead received a " + typeof selectors)); } var objectKeys = Object.keys(selectors); var resultSelector = selectorCreator( // @ts-ignore objectKeys.map(function (key) { return selectors[key]; }), function () { for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { values[_key3] = arguments[_key3]; } return values.reduce(function (composition, value, index) { composition[objectKeys[index]] = value; return composition; }, {}); }); return resultSelector; }; /***/ }), /***/ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js": /*!***********************************************************************************************!*\ !*** ../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***! \***********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * @license React * use-sync-external-store-shim.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ true && (function () { function is(x, y) { return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y); } function useSyncExternalStore$2(subscribe, getSnapshot) { didWarnOld18Alpha || void 0 === React.startTransition || ((didWarnOld18Alpha = !0), console.error( "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." )); var value = getSnapshot(); if (!didWarnUncachedGetSnapshot) { var cachedValue = getSnapshot(); objectIs(value, cachedValue) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), (didWarnUncachedGetSnapshot = !0)); } cachedValue = useState({ inst: { value: value, getSnapshot: getSnapshot } }); var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; useLayoutEffect( function () { inst.value = value; inst.getSnapshot = getSnapshot; checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); }, [subscribe, value, getSnapshot] ); useEffect( function () { checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); return subscribe(function () { checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst }); }); }, [subscribe] ); useDebugValue(value); return value; } function checkIfSnapshotChanged(inst) { var latestGetSnapshot = inst.getSnapshot; inst = inst.value; try { var nextValue = latestGetSnapshot(); return !objectIs(inst, nextValue); } catch (error) { return !0; } } function useSyncExternalStore$1(subscribe, getSnapshot) { return getSnapshot(); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var React = __webpack_require__(/*! react */ "react"), objectIs = "function" === typeof Object.is ? Object.is : is, useState = React.useState, useEffect = React.useEffect, useLayoutEffect = React.useLayoutEffect, useDebugValue = React.useDebugValue, didWarnOld18Alpha = !1, didWarnUncachedGetSnapshot = !1, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; exports.useSyncExternalStore = void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); /***/ }), /***/ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js": /*!*************************************************************************************************************!*\ !*** ../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***! \*************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /** * @license React * use-sync-external-store-shim/with-selector.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ true && (function () { function is(x, y) { return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var React = __webpack_require__(/*! react */ "react"), shim = __webpack_require__(/*! use-sync-external-store/shim */ "../node_modules/use-sync-external-store/shim/index.js"), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore = shim.useSyncExternalStore, useRef = React.useRef, useEffect = React.useEffect, useMemo = React.useMemo, useDebugValue = React.useDebugValue; exports.useSyncExternalStoreWithSelector = function ( subscribe, getSnapshot, getServerSnapshot, selector, isEqual ) { var instRef = useRef(null); if (null === instRef.current) { var inst = { hasValue: !1, value: null }; instRef.current = inst; } else inst = instRef.current; instRef = useMemo( function () { function memoizedSelector(nextSnapshot) { if (!hasMemo) { hasMemo = !0; memoizedSnapshot = nextSnapshot; nextSnapshot = selector(nextSnapshot); if (void 0 !== isEqual && inst.hasValue) { var currentSelection = inst.value; if (isEqual(currentSelection, nextSnapshot)) return (memoizedSelection = currentSelection); } return (memoizedSelection = nextSnapshot); } currentSelection = memoizedSelection; if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection; var nextSelection = selector(nextSnapshot); if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) return (memoizedSnapshot = nextSnapshot), currentSelection; memoizedSnapshot = nextSnapshot; return (memoizedSelection = nextSelection); } var hasMemo = !1, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; return [ function () { return memoizedSelector(getSnapshot()); }, null === maybeGetServerSnapshot ? void 0 : function () { return memoizedSelector(maybeGetServerSnapshot()); } ]; }, [getSnapshot, getServerSnapshot, selector, isEqual] ); var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]); useEffect( function () { inst.hasValue = !0; inst.value = value; }, [value] ); useDebugValue(value); return value; }; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); /***/ }), /***/ "../node_modules/use-sync-external-store/shim/index.js": /*!*************************************************************!*\ !*** ../node_modules/use-sync-external-store/shim/index.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"); } /***/ }), /***/ "../node_modules/use-sync-external-store/shim/with-selector.js": /*!*********************************************************************!*\ !*** ../node_modules/use-sync-external-store/shim/with-selector.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"); } /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = React; /***/ }), /***/ "react-dom": /*!***************************!*\ !*** external "ReactDOM" ***! \***************************/ /***/ ((module) => { "use strict"; module.exports = ReactDOM; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be in strict mode. (() => { "use strict"; /*!*************************************************!*\ !*** ../core/common/assets/js/vendors-redux.js ***! \*************************************************/ var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); var reduxToolkit = _interopRequireWildcard(__webpack_require__(/*! @reduxjs/toolkit */ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js")); var reactRedux = _interopRequireWildcard(__webpack_require__(/*! react-redux */ "../node_modules/react-redux/es/index.js")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } window.elementorVendors = window.elementorVendors || {}; window.elementorVendors.reduxToolkit = reduxToolkit; window.elementorVendors.reactRedux = reactRedux; })(); /******/ })() ; //# sourceMappingURL=vendors-redux.js.map "use strict";(self.webpackChunkelementorFrontend=self.webpackChunkelementorFrontend||[]).push([[215],{4328:(t,e,i)=>{var n=i(6784);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,i(4846),i(7458),i(6211);var s=n(i(7224)),a=i(7557);class NestedTabs extends s.default{getTabTitleFilterSelector(t){return`[${this.getSettings("dataAttributes").tabIndex}="${t}"]`}getTabContentFilterSelector(t){return`*:nth-child(${t})`}getTabIndex(t){return t.getAttribute(this.getSettings("dataAttributes").tabIndex)}getActiveTabIndex(){const t=this.getSettings(),e=t.ariaAttributes.activeTitleSelector,i=t.dataAttributes.tabIndex;return this.elements.$tabTitles.filter(e).attr(i)||null}getWidgetNumber(){return this.$element.find("> .elementor-widget-container > .e-n-tabs, > .e-n-tabs").attr("data-widget-number")}getDefaultSettings(){const t=this.getWidgetNumber();return{selectors:{widgetContainer:`[data-widget-number="${t}"]`,tabTitle:`[aria-controls*="e-n-tab-content-${t}"]`,tabTitleIcon:`[data-tab-title-id*="e-n-tab-title-${t}"] > .e-n-tab-icon`,tabTitleText:`[data-tab-title-id*="e-n-tab-title-${t}"] > .e-n-tab-title-text`,tabContent:`[data-widget-number="${t}"] > .e-n-tabs-content > .e-con`,headingContainer:`[data-widget-number="${t}"] > .e-n-tabs-heading`,activeTabContentContainers:`[id*="e-n-tab-content-${t}"].e-active`},classes:{active:"e-active"},dataAttributes:{tabIndex:"data-tab-index"},ariaAttributes:{titleStateAttribute:"aria-selected",activeTitleSelector:'[aria-selected="true"]'},showTabFn:"show",hideTabFn:"hide",toggleSelf:!1,hidePrevious:!0,autoExpand:!0}}getDefaultElements(){const t=this.getSettings("selectors");return{$widgetContainer:this.findElement(t.widgetContainer),$tabTitles:this.findElement(t.tabTitle),$tabContents:this.findElement(t.tabContent),$headingContainer:this.findElement(t.headingContainer)}}getKeyboardNavigationSettings(){return this.getSettings()}activateDefaultTab(){const t=this.getSettings(),e=this.getEditSettings("activeItemIndex")||1,i={showTabFn:t.showTabFn,hideTabFn:t.hideTabFn};this.setSettings({showTabFn:"show",hideTabFn:"hide"}),this.changeActiveTab(e),this.setSettings(i),this.elements.$widgetContainer.addClass("e-activated")}deactivateActiveTab(t){const e=this.getSettings(),i=e.classes.active,n=e.ariaAttributes.activeTitleSelector,s="."+i,a=this.elements.$tabTitles.filter(n),o=this.elements.$tabContents.filter(s);return this.setTabDeactivationAttributes(a,t),o.removeClass(i),o[e.hideTabFn](0,()=>this.onHideTabContent(o)),o}getTitleActivationAttributes(){const t=this.getSettings("ariaAttributes").titleStateAttribute;return{tabindex:"0",[t]:"true"}}setTabDeactivationAttributes(t){const e=this.getSettings("ariaAttributes").titleStateAttribute;t.attr({tabindex:"-1",[e]:"false"})}onHideTabContent(){}activateTab(t){const e=this.getSettings(),i=e.classes.active,n="show"===e.showTabFn?0:400;let s=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(t)),a=this.elements.$tabContents.filter(this.getTabContentFilterSelector(t));if(!s.length){const e=Math.max(t-1,1);s=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(e)),a=this.elements.$tabContents.filter(this.getTabContentFilterSelector(e))}s.attr(this.getTitleActivationAttributes()),a.addClass(i),a[e.showTabFn](n,()=>this.onShowTabContent(a))}onShowTabContent(t){elementorFrontend.elements.$window.trigger("elementor-pro/motion-fx/recalc"),elementorFrontend.elements.$window.trigger("elementor/nested-tabs/activate",t),elementorFrontend.elements.$window.trigger("elementor/bg-video/recalc")}isActiveTab(t){const e=this.getSettings(),i="true"===this.elements.$tabTitles.filter(`[${e.dataAttributes.tabIndex}="${t}"]`).attr(e.ariaAttributes.titleStateAttribute),n=this.elements.$tabContents.filter(this.getTabContentFilterSelector(t)).hasClass(this.getActiveClass());return i&&n}onTabClick(t){t.preventDefault(),this.changeActiveTab(t.currentTarget?.getAttribute(this.getSettings("dataAttributes").tabIndex),!0)}getTabEvents(){return{click:this.onTabClick.bind(this)}}getHeadingEvents(){const t=this.elements.$headingContainer[0];return{mousedown:a.changeScrollStatus.bind(this,t),mouseup:a.changeScrollStatus.bind(this,t),mouseleave:a.changeScrollStatus.bind(this,t),mousemove:a.setHorizontalTitleScrollValues.bind(this,t,this.getHorizontalScrollSetting())}}bindEvents(){this.elements.$tabTitles.on(this.getTabEvents()),this.elements.$headingContainer.on(this.getHeadingEvents()),elementorFrontend.elements.$window.on("resize",this.onResizeUpdateHorizontalScrolling.bind(this)),elementorFrontend.elements.$window.on("resize",this.setTouchMode.bind(this)),elementorFrontend.elements.$window.on("elementor/nested-tabs/activate",this.reInitSwipers),elementorFrontend.elements.$window.on("elementor/nested-elements/activate-by-keyboard",this.changeActiveTabByKeyboard.bind(this)),elementorFrontend.elements.$window.on("elementor/nested-container/atomic-repeater",this.linkContainer.bind(this))}unbindEvents(){this.elements.$tabTitles.off(),this.elements.$headingContainer.off(),this.elements.$tabContents.children().off(),elementorFrontend.elements.$window.off("resize",this.onResizeUpdateHorizontalScrolling.bind(this)),elementorFrontend.elements.$window.off("resize",this.setTouchMode.bind(this)),elementorFrontend.elements.$window.off("elementor/nested-tabs/activate",this.reInitSwipers),elementorFrontend.elements.$window.off("elementor/nested-elements/activate-by-keyboard",this.changeActiveTabByKeyboard.bind(this)),elementorFrontend.elements.$window.off("elementor/nested-container/atomic-repeater",this.linkContainer.bind(this))}reInitSwipers(t,e){const i=e.querySelectorAll(".swiper");for(const t of i){if(!t.swiper)return;t.swiper.initialized=!1,t.swiper.init()}}onInit(...t){super.onInit(...t),this.getSettings("autoExpand")&&this.activateDefaultTab(),(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings()),this.setTouchMode(),"nested-tabs.default"===this.getSettings("elementName")&&i.e(304).then(i.bind(i,7469)).then(({default:t})=>{new t(this.getKeyboardNavigationSettings())}).catch(t=>{console.error("Error importing module:",t)})}onEditSettingsChange(t,e){"activeItemIndex"===t&&this.changeActiveTab(e,!1)}onElementChange(t){this.checkSliderPropsToWatch(t)&&(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings())}checkSliderPropsToWatch(t){return 0===t.indexOf("horizontal_scroll")||"breakpoint_selector"===t||0===t.indexOf("tabs_justify_horizontal")||0===t.indexOf("tabs_title_space_between")}changeActiveTab(t,e=!1){if(e&&this.isEdit&&this.isElementInTheCurrentDocument())return window.top.$e.run("document/repeater/select",{container:elementor.getContainer(this.$element.attr("data-id")),index:parseInt(t)});const i=this.isActiveTab(t),n=this.getSettings();if(!n.toggleSelf&&i||!n.hidePrevious||this.deactivateActiveTab(t),!n.hidePrevious&&i&&this.deactivateActiveTab(t),!i){if(this.isAccordionVersion())return void this.activateMobileTab(t);this.activateTab(t)}}changeActiveTabByKeyboard(t,e){e.widgetId.toString()===this.getID().toString()&&this.changeActiveTab(e.titleIndex,!0)}activateMobileTab(t){setTimeout(()=>{this.activateTab(t),this.forceActiveTabToBeInViewport(t)},10)}forceActiveTabToBeInViewport(t){if(!elementorFrontend.isEditMode())return;const e=this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(t));elementor.helpers.isInViewport(e[0])||e[0].scrollIntoView({block:"center"})}getActiveClass(){return this.getSettings().classes.active}getTabsDirection(){const t=elementorFrontend.getCurrentDeviceMode();return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"tabs_justify_horizontal","",t)}getHorizontalScrollSetting(){const t=elementorFrontend.getCurrentDeviceMode();return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"horizontal_scroll","",t)}isAccordionVersion(){return"contents"===this.elements.$headingContainer.css("display")}setTouchMode(){const t=this.getSettings("selectors").widgetContainer;if(elementorFrontend.isEditMode()||"resize"===event?.type){const e=["mobile","mobile_extra","tablet","tablet_extra"],i=elementorFrontend.getCurrentDeviceMode();if(-1!==e.indexOf(i))return void this.$element.find(t).attr("data-touch-mode","true")}else if("ontouchstart"in window)return void this.$element.find(t).attr("data-touch-mode","true");this.$element.find(t).attr("data-touch-mode","false")}linkContainer(t){const{container:e}=t.detail,i=e.model.get("id"),n=this.$element.data("id"),s=e.view.$el;if(i===n&&(this.updateIndexValues(),this.updateListeners(s),elementor.$preview[0].contentWindow.dispatchEvent(new CustomEvent("elementor/elements/link-data-bindings"))),!this.getActiveTabIndex()){const e=t.detail.index+1||1;this.changeActiveTab(e)}}updateListeners(t){this.elements.$tabContents=t.find(this.getSettings("selectors.tabContent")),this.elements.$tabTitles=t.find(this.getSettings("selectors.tabTitle")),this.elements.$tabTitles.on(this.getTabEvents())}updateIndexValues(){const{$widgetContainer:t,$tabContents:e,$tabTitles:i}=this.getDefaultElements(),n=this.getSettings(),s=n.dataAttributes.tabIndex,a=t.data("widgetNumber");i.each((t,i)=>{const o=t+1,r=`e-n-tab-title-${a}${o}`,l=`e-n-tab-content-${a}${o}`;i.setAttribute("id",r),i.setAttribute("style",`--n-tabs-title-order: ${o}`),i.setAttribute(s,o),i.setAttribute("aria-controls",l),i.querySelector(n.selectors.tabTitleIcon)?.setAttribute("data-binding-index",o),i.querySelector(n.selectors.tabTitleText).setAttribute("data-binding-index",o),e[t].setAttribute("aria-labelledby",r),e[t].setAttribute(s,o),e[t].setAttribute("id",l),e[t].setAttribute("style",`--n-tabs-title-order: ${o}`)})}onResizeUpdateHorizontalScrolling(){(0,a.setHorizontalScrollAlignment)(this.getHorizontalScrollingSettings())}getHorizontalScrollingSettings(){return{element:this.elements.$headingContainer[0],direction:this.getTabsDirection(),justifyCSSVariable:"--n-tabs-heading-justify-content",horizontalScrollStatus:this.getHorizontalScrollSetting()}}}e.default=NestedTabs},7557:(t,e)=>{function getChildrenWidth(t){let e=0;const i=t[0].parentNode,n=getComputedStyle(i),s=parseFloat(n.gap)||0;for(let i=0;it.clientWidth;if(!n||!s||!a)return;i.preventDefault();const o=parseFloat(t.dataset.pageX),r=i.pageX-o;let l=0;l=20r?-5:r;t.scrollLeft=t.scrollLeft-l,t.classList.add("e-scroll-active")}}}]);

Blog

No posts found

Adoptamestizos.com https://adoptamestizos.com/ Protectora de animales en Sevilla y Córdoba ¡Salva una vida, adopta un amigo! Fri, 13 Nov 2026 17:28:19 +0000 es hourly 1 https://adoptamestizos.com/wp-content/uploads/2020/05/cropped-Logo-color-32x32.png Adoptamestizos.com https://adoptamestizos.com/ 32 32 BetScarab Casino France : un accès officiel aux jeux de casino et aux paris https://adoptamestizos.com/betscarab-casino-france-un-acces-officiel-aux-jeux-de-casino-et-aux-paris/ Fri, 13 Nov 2026 17:28:18 +0000 https://adoptamestizos.com/?p=78758 Les jeux de casino en ligne ont pris une ampleur considérable dans le monde du divertissement et des paris. BetScarab […]

La entrada BetScarab Casino France : un accès officiel aux jeux de casino et aux paris se publicó primero en Adoptamestizos.com.

]]>


Les jeux de casino en ligne ont pris une ampleur considérable dans le monde du divertissement et des paris. BetScarab Casino se positionne comme un acteur clé dans ce secteur, offrant une vaste gamme de jeux de casino et d’options de paris. Avec sa licence de l’Autorité de jeu de Curaçao, BetScarab assure à ses utilisateurs une expérience de jeu sécurisée et réglementée. Cet article explore les différentes facettes de BetScarab Casino, notamment les offres de paris et les promotions intéressantes, comme celles disponibles sur betscarab , qui attirent de nombreux joueurs.

Les bases qui façonnent des choix de casino judicieux

Choisir un casino en ligne peut sembler intimidant, surtout avec le grand nombre d’options disponibles. Cependant, il existe des critères clés à prendre en compte pour faire un choix éclairé. BetScarab Casino se démarque non seulement par sa sélection de jeux mais aussi par sa fiabilité et ses fonctionnalités. La variété des jeux, la rapidité des retraits, ainsi que la qualité du service client sont des éléments cruciaux à considérer. Comprendre ces aspects vous aidera à maximiser votre expérience de jeu.

De plus, la possibilité de parier sur des événements sportifs comme le football et le tennis enrichit l’expérience de BetScarab Casino. Cela permet aux utilisateurs de profiter d’une plateforme unique pour tous leurs besoins de divertissement. En vous inscrivant, vous avez également accès à des promotions intéressantes et à un pack de bienvenue attractif, qui peut inclure jusqu’à 4 000 € et 300 tours gratuits.

Comment commencer avec BetScarab Casino

S’inscrire et débuter sur BetScarab Casino est un processus simple et rapide. Voici les étapes essentielles pour vous lancer :

betscarab

  1. Créer un compte : Visitez le site de BetScarab et remplissez le formulaire d’inscription pour créer votre compte.
  2. Vérifier vos détails : Fournissez des documents d’identité pour valider votre compte et garantir la sécurité des transactions.
  3. Faire un dépôt : Choisissez une méthode de paiement, comme Bitcoin, pour des dépôts instantanés.
  4. Sélectionner votre jeu : Explorez la vaste gamme de jeux, y compris les machines à sous et les jeux de casino en direct.
  5. Commencer à jouer : Mettez vos compétences à l’épreuve et commencez à parier sur vos jeux favoris.
  • Inscription rapide et facile
  • Vérification sécurisée pour protéger vos informations
  • Dépôts instantanés pour un accès immédiat aux jeux

Détails pratiques pour BetScarab Casino

Une fois inscrit, il est important de connaître les spécificités de la plateforme pour en tirer le meilleur parti. BetScarab Casino propose une expérience de jeu fluide avec une interface conviviale qui permet une navigation intuitive. Les utilisateurs peuvent accéder à une multitude de jeux, allant des machines à sous classiques aux jeux de table, sans oublier les options de casino en direct qui replongent les joueurs dans l’atmosphère authentique d’un casino traditionnel.

En termes de transactions financières, BetScarab offre des retraits parmi les plus rapides du secteur, surtout avec les cryptomonnaies, où certains retraits peuvent être traités en moins d’une heure. Cette rapidité est cruciale pour les joueurs qui apprécient avoir un accès immédiat à leurs gains. Enfin, le service client est disponible 24/7 pour répondre à toutes les questions et résoudre les préoccupations des utilisateurs.

  • Large sélection de jeux incluant les derniers titres de machines à sous
  • Options de paris sportifs sur les événements populaires
  • Assistance clientèle réactive et disponible à tout moment

Cette combinaison de jeux variés et de rapidité de transaction fait de BetScarab une plateforme de choix pour les amateurs de jeux en ligne.

Avantages clés de BetScarab Casino

BetScarab Casino ne se contente pas d’offrir un large choix de jeux; plusieurs avantages en font une option privilégiée pour les joueurs :

  • Bonus de bienvenue généreux jusqu’à 4 000 € et 300 free spins, permettant aux nouveaux joueurs de démarrer en beauté.
  • Retraits très rapides, notamment pour les utilisateurs de Bitcoin, qui peuvent bénéficier de délais d’attente d’environ une heure.
  • Une licence délivrée par l’Autorité de jeu de Curaçao, garantissant une expérience de jeu sécurisée.
  • Une interface adaptable, accessible aussi bien sur ordinateur que sur mobile, pour jouer partout et à tout moment.

Ces caractéristiques contribuent à faire de BetScarab Casino une destination de choix pour les passionnés de jeux en ligne.

Sécurité et confiance chez BetScarab Casino

La sécurité est primordiale pour un casino en ligne, et BetScarab Casino le comprend parfaitement. Grâce à sa licence de l’Autorité de jeu de Curaçao, le casino respecte des normes strictes en matière de sécurité des données. Toutes les transactions sont cryptées, ce qui protège les informations personnelles et financières des utilisateurs contre les menaces potentielles.

De plus, la transparence dans les politiques de jeu assure une expérience équitable pour tous les joueurs. BetScarab Casino met également à disposition des outils de jeu responsable, permettant aux utilisateurs de contrôler leur expérience de jeu et de jouer dans des limites saines.

Pourquoi choisir BetScarab Casino

La décision de choisir un casino en ligne doit se baser sur plusieurs critères, et BetScarab Casino coche toutes les cases. Que ce soit pour son vaste choix de jeux, ses options de paris sportifs, ses bonus attractifs ou sa rapidité de retrait, cette plateforme a tout pour plaire. En choisissant BetScarab, vous optez pour une expérience de jeu complète dans un environnement sécurisé et divertissant.

Enfin, que vous soyez un joueur occasionnel ou un passionné de jeux de casino, BetScarab Casino vous offre l’opportunité de profiter de vos jeux préférés avec une grande tranquillité d’esprit.

La entrada BetScarab Casino France : un accès officiel aux jeux de casino et aux paris se publicó primero en Adoptamestizos.com.

]]>
Trino Casino Norge: Alt du trenger å vite om slots og jackpotspill https://adoptamestizos.com/trino-casino-norge-alt-du-trenger-a-vite-om-slots-og-jackpotspill/ Fri, 13 Nov 2026 15:48:33 +0000 https://adoptamestizos.com/?p=78753 Trino Casino er et spennende alternativ for norske spillere som leter etter et variert utvalg av casinospill. Med mer enn […]

La entrada Trino Casino Norge: Alt du trenger å vite om slots og jackpotspill se publicó primero en Adoptamestizos.com.

]]>


Trino Casino er et spennende alternativ for norske spillere som leter etter et variert utvalg av casinospill. Med mer enn 7.500 spill tilbyr Trino Casino en omfattende opplevelse fra klassiske slots til jackpotspill og live dealer-alternativer, og det er derfor mange velger å registrere seg hos trinocasino for å nyte en komplett spillopplevelse. Denne artikkelen gir deg all informasjonen du trenger for å komme i gang, inkludert bonuser, spilltyper og sikkerhetsaspekter.

En praktisk oversikt over bonuser, spill og kontooppsett

Når du velger et nettcasino, er det viktig å forstå hvordan bonuser og spill fungerer. Trino Casino tilbyr en imponerende velkomstbonus på 350%, opptil 36.500 kroner, samt 350 gratis spinn. Dette gir nye spillere en flott start og muligheten til å utforske et bredt spekter av spill. Videre er kontooppsettet enkelt, noe som gjør det lett for nybegynnere å komme i gang. Enten du er interessert i slots, jackpotspill eller live dealer-spill, har Trino Casino noe for alle.

Trino Casino er også kjent for sitt fokus på ansvarlig spilling, noe som er avgjørende for en trygg spillopplevelse. Med 24/7 kundestøtte via live chat og e-post, er hjelp alltid tilgjengelig for spillere som måtte trenge det.

Hvordan komme i gang med Trino Casino

Å begynne å spille på Trino Casino er en enkel prosess. Her er en trinn-for-trinn guide:

  1. Opprett en konto: Besøk Trino Casinos nettside og klikk på «Registrer deg» for å fylle ut ditt personlige informasjon.
  2. Verifiser detaljer: Bekreft identiteten din ved å sende inn nødvendig dokumentasjon for å sikre en trygg spillopplevelse.
  3. Sett inn penger: Velg en betalingsmetode og gjør et innskudd fra minst 100 kroner for å starte spillingen.
  4. Velg ditt spill: Utforsk biblioteket med over 7.500 spill for å finne akkurat det du liker.
  5. Begynn å spille: Plasser innsatsene dine og nyt spillopplevelsen!
  • Enkel registreringsprosess
  • Rask verifisering for trygghet
  • Fleksible betalingsmetoder tilgjengelig

Praktiske detaljer om Trino Casino

Trino Casino skiller seg ut med sitt enorme utvalg av spill, inkludert multiple kategorier som slots, jackpotspill og live dealer-alternativer. Med ledende programvareleverandører som Pragmatic Play, Evolution Gaming og NetEnt, kan spillere forvente høy kvalitet og spennende opplevelser. Spillsamlingen inneholder både klassiske favoritter og nye lanseringer, noe som gir noe for enhver smak.

  • Mer enn 7.500 spill tilgjengelig for ulike preferanser
  • Live dealer-spill for en autentisk casinoopplevelse
  • Rask tilgang til spill med umiddelbare gevinstspill

Med en slik variasjon er det lett å bli overveldet, men Trino Casino har designet sitt grensesnitt for å være brukervennlig, slik at du enkelt kan navigere mellom forskjellige spillkategorier og finne dine favoritter.

Nøkkelfordeler ved Trino Casino

Det er flere grunner til at spillere velger Trino Casino som sitt foretrukne nettcasino. Blant de viktigste fordelene finner vi:

  • Generøse bonuser og kampanjer, noe som gir mer verdi for pengene.
  • Et bredt utvalg av spill fra anerkjente programvareutviklere.
  • Et fokus på ansvarlig spilling med ulike verktøy for spillerbeskyttelse.
  • 24/7 kundestøtte for å hjelpe deg med eventuelle spørsmål eller bekymringer.

Disse fordelene gjør Trino Casino til et attraktivt valg for både nye og erfarne spillere i Norge.

Tillitt og sikkerhet hos Trino Casino

Sikkerhet er en topprioritet hos Trino Casino. Casinoet opererer under lisens fra Curaçao Gaming Authority, som sikrer at det overholder strenge forskrifter for rettferdig spill og spillerbeskyttelse. Dette gir spillere trygghet når de setter inn penger og spiller deres favorittspill.

Trino Casino implementerer også moderne sikkerhetstiltak, som SSL-kryptering, for å beskytte spillernes personlige og økonomiske informasjon. I tillegg tilbyr casinoet ansvarlige spillverktøy, slik at spillere kan sette grenser for spillene sine og opprettholde kontrollen.

Hvorfor velge Trino Casino?

Trino Casino tilbyr en omfattende spillopplevelse med et imponerende utvalg av spill, attraktive bonuser og en sikker plattform. Det er skreddersydd for norske spillere som verdsetter både underholdning og sikkerhet. Med sitt fokus på ansvarlig spilling og fremragende kundeservice, er Trino Casino et utmerket valg for alle som ønsker å oppleve spenningen ved nettcasino.

Så hvis du er klar til å utforske denne fantastiske casinoverdenen, hvorfor vente? Registrer deg hos Trino Casino i dag og finn ut hva som venter deg!

La entrada Trino Casino Norge: Alt du trenger å vite om slots og jackpotspill se publicó primero en Adoptamestizos.com.

]]>
Metodi di pagamento rapidi e sicuri per i casinò online nel 2026 https://adoptamestizos.com/metodi-di-pagamento-rapidi-e-sicuri-per-i-casino-online-nel-2026/ Fri, 13 Nov 2026 14:47:57 +0000 https://adoptamestizos.com/?p=78733 Negli ultimi anni, i casinò online hanno guadagnato una straordinaria popolarità, offrendo un’ampia gamma di giochi e opportunità di vincita. […]

La entrada Metodi di pagamento rapidi e sicuri per i casinò online nel 2026 se publicó primero en Adoptamestizos.com.

]]>


Negli ultimi anni, i casinò online hanno guadagnato una straordinaria popolarità, offrendo un’ampia gamma di giochi e opportunità di vincita. Tuttavia, uno degli aspetti più cruciali per migliorare l’esperienza del giocatore è la scelta di metodi di pagamento rapidi e sicuri. Nel 2026, i giocatori possono aspettarsi soluzioni innovative che rendono più facili e sicure le transazioni, come quelle offerte da https://scizino-it.net/ per semplificare anche il deposito e il prelievo. In questo articolo, esploreremo i vari metodi di pagamento disponibili, i loro vantaggi e come contribuire a un’esperienza di casinò online ottimale.

Cosa definisce un’esperienza di casinò utile

Un’esperienza di casinò online memorabile si basa su diversi fattori chiave, tra cui la varietà dei giochi, l’assistenza clienti, e soprattutto i metodi di pagamento. Avere opzioni di pagamento sicure, rapide e convenienti è fondamentale per attrarre e mantenere i giocatori. Nel 2026, l’attenzione si concentra su soluzioni digitali avanzate, che non solo garantiscono la sicurezza, ma anche la rapidità nelle transazioni finanziarie. La trasparenza è un altro aspetto cruciale; i giocatori devono essere informati sulle commissioni e sui tempi di attesa per i prelievi e i depositi.

Inoltre, l’accessibilità dei metodi di pagamento gioca un ruolo importante. I giocatori si aspettano di poter utilizzare le modalità che già conoscono e di cui si fidano, come carte di credito, portafogli elettronici, e persino criptovalute. La combinazione di questi fattori contribuisce a creare un ambiente di gioco soddisfacente e privo di stress.

Come iniziare con i metodi di pagamento nei casinò online

Iniziare a utilizzare i metodi di pagamento nei casinò online è semplice e intuitivo. Ecco i passaggi da seguire per garantire un’esperienza senza intoppi:

  1. Scegliere un Casinò Affidabile: Assicurati che il casinò scelto sia autorizzato e regolamentato.
  2. Crea un Account: Registrati sul sito fornendo i tuoi dati personali e creando un profilo sicuro.
  3. Selezionare il Metodo di Pagamento: Scegli tra le opzioni disponibili, considerando velocità e sicurezza.
  4. Effettuare un Deposito: Inserisci l’importo e conferma la transazione per iniziare a giocare.
  5. Controllare le Opzioni di Prelievo: Informati sui metodi disponibili per prelevare le tue vincite.
  • Facilità di accesso alle opzioni di pagamento.
  • Gestione rapida del denaro in entrata e in uscita.
  • Sicurezza nelle transazioni finanziarie.

Dettagli pratici sui metodi di pagamento nei casinò online

Esplorare i metodi di pagamento nei casinò online può rivelarsi un compito interessante. Nel 2026, i casinò offrono una gamma di opzioni per soddisfare le esigenze dei giocatori. Tra i metodi più comuni ci sono le carte di credito e debito, i portafogli elettronici come PayPal e Skrill, e le criptovalute. Le carte di credito, come Visa e Mastercard, sono molto richieste per la loro facilità d’uso e l’affidabilità. Tuttavia, i portafogli elettronici stanno guadagnando popolarità per la loro capacità di elaborare i pagamenti in modo rapido e sicuro.

Le criptovalute, come Bitcoin e Ethereum, stanno emergendo come opzioni innovative, permettendo transazioni anonime e veloci. Le piattaforme di casinò online, nel tentativo di rimanere competitive, stanno rapidamente adottando queste tecnologie per attrarre un pubblico più vasto. È fondamentale che i giocatori comprendano anche le politiche relative ai tempi di elaborazione e alle eventuali commissioni associate a ciascun metodo di pagamento.

  • Carte di credito e debito: immediate e sicure.
  • Portafogli elettronici: veloci con commissioni basse.
  • Criptovalute: anonime e in crescita per i pagamenti online.

Queste informazioni sono cruciali per i giocatori che desiderano ottimizzare la loro esperienza di gioco, contribuendo a una gestione più efficace delle proprie finanze durante il gioco online.

Vantaggi dei metodi di pagamento rapidi e sicuri

Utilizzare metodi di pagamento rapidi e sicuri nei casinò online offre numerosi vantaggi. Per prima cosa, la rapidità delle transazioni consente ai giocatori di iniziare a giocare quasi immediatamente dopo effettuato il deposito. Inoltre, la sicurezza è un fattore cruciale; i giocatori possono divertirsi senza preoccupazioni, sapendo che i loro dati finanziari sono protetti. Infine, l’ampia scelta di metodi di pagamento consente di soddisfare le preferenze di ogni singolo utente, contribuendo a una migliore esperienza complessiva.

  • Velocità di esecuzione delle transazioni.
  • Sicurezza dei dati e delle transazioni.
  • Scelta diversificata di opzioni di pagamento.
  • Facilità di gestione delle finanze.

Questi fattori lavorano insieme per rendere l’esperienza di gioco non solo più piacevole, ma anche più rassicurante per i giocatori di tutte le età.

Fiducia e sicurezza nei metodi di pagamento

La fiducia è fondamentale quando si tratta di metodi di pagamento nei casinò online. Nel 2026, i giocatori si aspettano uno standard elevato di sicurezza, inclusa la crittografia dei dati e la protezione contro le frodi. Le piattaforme sono obbligate a rispettare normative rigorose che garantiscono che le informazioni finanziarie degli utenti siano trattate con cura. È essenziale scegliere casinò che utilizzano tecnologie avanzate per il trasferimento sicuro delle informazioni e che siano stati auditati da enti indipendenti.

Oltre alla sicurezza, la trasparenza è una priorità. I casinò devono fornire informazioni chiare sui tempi di elaborazione dei pagamenti e sulle eventuali commissioni che potrebbero essere applicate. Questo approccio non solo costruisce fiducia, ma contribuisce anche a un ambiente di gioco più sicuro e garantito per tutti gli utenti.

Perché scegliere i metodi di pagamento nei casinò online

In conclusione, i metodi di pagamento rappresentano un elemento cruciale nell’ambito dei casinò online nel 2026. La scelta di metodi rapidi e sicuri non solo semplifica l’accesso ai giochi, ma migliora anche l’intera esperienza di gioco, rendendola più soddisfacente. Con la continua evoluzione delle tecnologie di pagamento, i giocatori possono aspettarsi di vedere ulteriori innovazioni che aumenteranno la sicurezza e la velocità delle transazioni, mantenendo sempre al centro le esigenze dei giocatori.

Investire tempo nella scelta dei metodi di pagamento giusti farà la differenza tra un’esperienza frustrante e una coinvolgente. Pertanto, informarsi e restare aggiornati è fondamentale per ogni giocatore online.

La entrada Metodi di pagamento rapidi e sicuri per i casinò online nel 2026 se publicó primero en Adoptamestizos.com.

]]>
Wie du die Freispiele im Trino Casino Schweiz optimal nutzen kannst https://adoptamestizos.com/wie-du-die-freispiele-im-trino-casino-schweiz-optimal-nutzen-kannst/ Fri, 13 Nov 2026 14:23:49 +0000 https://adoptamestizos.com/?p=78728 Das Trino Casino in der Schweiz bietet Spielern eine aufregende Plattform, um eine Vielzahl von Casino-Spielen zu erleben, von Slots […]

La entrada Wie du die Freispiele im Trino Casino Schweiz optimal nutzen kannst se publicó primero en Adoptamestizos.com.

]]>


Das Trino Casino in der Schweiz bietet Spielern eine aufregende Plattform, um eine Vielzahl von Casino-Spielen zu erleben, von Slots bis hin zu Tischspielen und Live-Dealer-Erlebnissen. Besonders attraktiv sind die Freispiele, die den Spielern ermöglichen, ohne zusätzliches Risiko zu spielen und gleichzeitig echte Gewinne zu erzielen. Um Zugang zu diesen Angeboten zu erhalten, benötigst du einen trinocasino login, mit dem du deine Gewinnchancen maximieren und das Beste aus deinem Spielerlebnis herauszuholen kannst.

Wie Anfänger das Trino Casino Schweiz angehen können

Als neuer Spieler im Trino Casino kann die Vielzahl an Spielmöglichkeiten überwältigend sein. Doch mit dem richtigen Ansatz kannst du deine Erfahrung verbessern und erfolgreich spielen. Das Casino bietet eine benutzerfreundliche Oberfläche und zahlreiche Spiele, die auf die Bedürfnisse der Spieler in der Schweiz zugeschnitten sind. Du hast Zugang zu über 7.500 Spielen, darunter aufregende Slots und das Live-Casino-Erlebnis. Indem du die richtigen Schritte unternimmst, kannst du das Spielangebot optimal nutzen und die verfügbaren Boni, wie Freispiele, gezielt einsetzen.

Das Trino Casino ist nicht nur für seine umfangreiche Auswahl bekannt, sondern auch für seine attraktiven Willkommensangebote, die neuen Spielern helfen, schnell in die Spiele einzutauchen. Ein durchdachter Einstieg und das Verständnis der Boni sind entscheidend, um das Beste aus deiner Zeit im Casino herauszuholen.

Wie du mit Trino Casino spielst

Der Einstieg im Trino Casino ist einfach und bietet dir die Möglichkeit, direkt mit dem Spielen zu beginnen. Hier sind die Schritte, die du befolgen solltest, um optimal zu starten:

  1. Konto erstellen: Registriere dich auf der Webseite des Trino Casinos, indem du ein einfaches Formular ausfüllst.
  2. Details verifizieren: Bestätige deine Identität, um dein Konto aktiv zu schalten und die Sicherheit zu gewährleisten.
  3. Einzahlung vornehmen: Wähle eine der akzeptierten Zahlungsmethoden und tätige deine erste Einzahlung. Der Mindestbetrag beträgt CHF 23.
  4. Spiele auswählen: Stöbere durch die umfangreiche Spielesammlung und wähle deine bevorzugten Spiele aus.
  5. Freispiele aktivieren: Nutze die Freispiele, die dir im Rahmen von Willkommensangeboten zur Verfügung stehen, um ohne Risiko zu spielen.
  • Erstellung deines Kontos ist unkompliziert und schnell.
  • Die Verifizierung sorgt für Sicherheit und Schutz deiner Daten.
  • Vielfältige Zahlungsmethoden für bequeme Einzahlungen.

Praktische Tipps für das Spiel im Trino Casino

Um im Trino Casino erfolgreich zu sein und die Freispiele optimal zu nutzen, solltest du einige praktische Tipps beachten. Zunächst ist es wichtig, die Regeln der Spiele, die du spielst, gut zu verstehen. Dazu gehören sowohl die allgemeinen Spielregeln als auch die spezifischen Bonusbedingungen, die für Freispiele gelten. Achte darauf, welche Spiele für die Umsatzbedingungen der Freispiele qualifiziert sind, um die besten Gewinnchancen zu erhalten.

Darüber hinaus ist es ratsam, deine Einsätze klug zu planen. Setze dir ein Budget für deinen Spieltag und halte dich daran. Viele Spieler machen den Fehler, impulsiv zu spielen, was zu unnötigen Verlusten führen kann. Nutze die Freispiele strategisch, um deine Verluste zu minimieren und deine Gewinne zu maximieren. Außerdem solltest du die verschiedenen Bonusaktionen und Promotionen regelmäßig überprüfen, da Trino Casino oft neue Angebote bereitstellt.

  • Kenne die Regeln deiner Lieblingsspiele.
  • Setze dir ein Budget und halte dich daran.
  • Nutze Freispiele strategisch, um Risiken zu minimieren.

Vorteile des Trino Casinos

Das Trino Casino bietet eine Vielzahl von Vorteilen, die es zu einer attraktiven Wahl für Spieler in der Schweiz machen. Die große Spielauswahl ist eines der bemerkenswertesten Merkmale, mit über 7.500 Spielen, die von mehr als 44 Softwareanbietern bereitgestellt werden. Dies gewährleistet eine breite Palette an Spieltypen, von klassischen Spielautomaten bis hin zu aufregenden Live-Casino-Erlebnissen.

  • Willkommensbonus von 300% bis zu CHF 4.100 und 300 Freispiele.
  • Schnelle Auszahlungen, die in nur 0 bis 48 Stunden erfolgen können.
  • Mobile Optimierung für das Spielen unterwegs.
  • Attraktive Boni und regelmäßige Promotionen.

Zusätzlich gewährleistet das Casino ein hohes Maß an Sicherheit für seine Spieler. Alle Transaktionen sind durch moderne Sicherheitsmaßnahmen geschützt, was bedeutet, dass du dich beim Spielen in einem sicheren Umfeld befindest. Diese Faktoren zusammen machen das Trino Casino zu einer hervorragenden Wahl für Online-Spieler.

Vertrauen und Sicherheit im Trino Casino

Die Sicherheit der Spieler hat im Trino Casino höchste Priorität. Das Casino hat zahlreiche Sicherheitsmaßnahmen implementiert, um sicherzustellen, dass deine Daten und finanziellen Transaktionen geschützt sind. Dazu gehören Verschlüsselungstechnologien sowie strenge Datenschutzrichtlinien, die dafür sorgen, dass deine persönlichen Informationen niemals an Dritte weitergegeben werden.

Das Trino Casino ist zudem berechtigt, in der Schweiz zu operieren, was zusätzliche Sicherheit bietet. Spieler können sicher sein, dass sie in einem fairen und transparenten Spielumfeld spielen. Regelmäßige Überprüfungen und Audits durch unabhängige Stellen garantieren die Integrität der Spiele, was das Vertrauen der Spieler weiter stärkt.

Warum das Trino Casino wählen?

Das Trino Casino ist eine ausgezeichnete Wahl für Spieler, die nach einem breiten Spektrum an Spielen und attraktiven Bonusangeboten suchen. Mit einer einfachen Registrierung und der Möglichkeit, große Gewinne zu erzielen, bietet es alles, was ein modernes Online-Casino bieten sollte. Die Kombination aus Sicherheit, schneller Auszahlung und einer benutzerfreundlichen Plattform macht das Spielen zu einem unvergesslichen Erlebnis.

Nutze die attraktiven Freispiele optimal, um dein Spielerlebnis noch spannender zu gestalten. Melde dich noch heute an, um von den Angeboten zu profitieren und erlebe, wie viel Spaß und Spannung das Trino Casino zu bieten hat.

La entrada Wie du die Freispiele im Trino Casino Schweiz optimal nutzen kannst se publicó primero en Adoptamestizos.com.

]]>
Die besten Online Casino Promotions: Was Spieler wirklich wissen sollten https://adoptamestizos.com/die-besten-online-casino-promotions-was-spieler-wirklich-wissen-sollten/ Fri, 13 Nov 2026 14:10:09 +0000 https://adoptamestizos.com/?p=78723 Online Casinos bieten Spielern eine aufregende Möglichkeit, unterhalten zu werden und die Chance auf Gewinne zu haben. Die Welt der […]

La entrada Die besten Online Casino Promotions: Was Spieler wirklich wissen sollten se publicó primero en Adoptamestizos.com.

]]>


Online Casinos bieten Spielern eine aufregende Möglichkeit, unterhalten zu werden und die Chance auf Gewinne zu haben. Die Welt der Online Casino Promotions ist ebenso vielfältig wie spannend und kann den Unterschied zwischen einem durchschnittlichen und einem herausragenden Spielerlebnis ausmachen. Wenn Sie sich für die besten Angebote interessieren, sollten Sie auch die Plattform von Crusino Online in Betracht ziehen, die zahlreiche attraktive Promotions bereitstellt und Ihnen hilft, das Beste daraus zu machen.

Wie Account-Einrichtung, Zahlungsmethoden und Spielabläufe zusammenpassen

Die nahtlose Integration von Kontoerstellung, Zahlungsmethoden und Spielabläufen ist entscheidend für ein positives Online-Casino-Erlebnis. Spieler müssen nicht nur ein Konto erstellen, sondern auch sicherstellen, dass die angebotenen Zahlungsmethoden bequem und sicher sind. Ein reibungsloser Spielablauf ist unerlässlich, um die Spannung und den Spaß beim Spielen aufrechtzuerhalten. Ein gut gestalteter Registrierungsprozess kann dazu beitragen, dass neue Spieler schnell einsteigen und von den Promotions profitieren können.

Ein weiterer wichtiger Aspekt ist die Benutzerfreundlichkeit der Plattform. Online Casinos, die eine intuitive Benutzeroberfläche bieten, erleichtern es den Spielern, schnell zu navigieren und die gewünschten Spiele zu finden. Zudem sollten Spieler darauf achten, dass die Zahlungsabwicklung schnell und sicher erfolgt, um ein frustfreies Spielerlebnis zu gewährleisten.

Wie man mit Online Casinos beginnt

Der Einstieg in die Welt der Online Casinos kann überwältigend sein, aber mit ein paar einfachen Schritten wird es zum Kinderspiel. Hier ist eine einfache Anleitung, die Ihnen hilft, schnell in die Action einzutauchen:

  1. Konto erstellen: Besuchen Sie die Website des Online Casinos und füllen Sie das Registrierungsformular aus, um Ihr Konto zu erstellen.
  2. Details verifizieren: Überprüfen Sie Ihre E-Mail-Adresse oder Telefonnummer, um die Registrierung abzuschließen.
  3. Einzahlung tätigen: Wählen Sie Ihre bevorzugte Zahlungsmethode und tätigen Sie eine erste Einzahlung, um mit dem Spielen zu beginnen.
  4. Spiel auswählen: Stöbern Sie durch das Spielangebot und wählen Sie Ihr Lieblingsspiel oder probieren Sie etwas Neues aus.
  5. Loslegen: Starten Sie das Spiel und genießen Sie das Spielerlebnis mit den verfügbaren Promotions!
  • Einfacher Einstieg in die Welt der Online Casinos
  • Schnelle Kontoerstellung und Verifizierung
  • Vielzahl von Spiele zur Auswahl

Praktische Details zu Online Casino Promotions

Die Welt der Online Casino Promotions bietet zahlreiche Möglichkeiten, von denen Spieler profitieren können. Promotions können in verschiedenen Formen auftreten, darunter Willkommensboni, Cashback-Angebote, Freispiele und Treueprogramme. Jeder dieser Boni hat seine eigenen Bedingungen, die Spieler beachten sollten, um das Beste daraus zu machen. Willkommensboni sind häufig eine attraktive Möglichkeit, um neue Spieler zu gewinnen, während Cashback-Angebote eine Rückvergütung für Verluste bieten.

Ein wichtiges Element bei Promotions ist die Durchspielbedingungen oder Wettanforderungen. Diese Anforderungen geben an, wie oft ein Spieler den Bonusbetrag setzen muss, bevor er eine Auszahlung vornehmen kann. Es ist wichtig, diese Bedingungen vor der Inanspruchnahme eines Angebots zu verstehen, um unangenehme Überraschungen zu vermeiden.

  • Willkommensboni: Erhalten Sie zusätzliche Mittel zur Verfügung für neue Spieler
  • Freispiele: Nutzen Sie die Chance, ohne eigenes Geld zu spielen
  • Cashback: Erhalten Sie einen Teil Ihrer Verluste zurück

Die Vielfalt an Promotions ermöglicht es Spielern, verschiedene Angebote auszuprobieren und die jeweiligen Vorteile zu nutzen, die ihnen am besten gefallen. Halten Sie Ausschau nach aktuellen Angeboten und nutzen Sie diese, um Ihr Spielerlebnis zu verbessern.

Wichtige Vorteile von Online Casino Promotions

Online Casino Promotions bieten den Spielern zahlreiche Vorteile, die über den reinen Spaß hinausgehen. Diese Promotions tragen nicht nur dazu bei, dass Spieler länger spielen, sondern sie erhöhen auch die Gewinnchancen. Hier sind einige der Hauptvorteile von Promotions:

  • Erhöhte Spielzeit: Boni ermöglichen es Spielern, länger zu spielen und verschiedene Spiele auszuprobieren.
  • Erhöhte Gewinnchancen: Promotions wie Freispiele bieten die Möglichkeit, Gewinne zu erzielen, ohne eigenes Geld zu riskieren.
  • Belohnungen für Loyalität: Treueprogramme belohnen regelmäßige Spieler mit zusätzlichen Vorteilen und Boni.
  • Flexibilität: Viele Promotions bieten Flexibilität in Bezug auf die Spiele, die gespielt werden können.

Diese Vorteile tragen dazu bei, dass das Spielen in Online Casinos nicht nur unterhaltsam, sondern auch potenziell lukrativ ist. Spieler sollten die verschiedenen verfügbaren Promotions nutzen, um das Beste aus ihren Spielerfahrungen herauszuholen.

Vertrauen und Sicherheit in Online Casinos

Vertrauen und Sicherheit sind entscheidende Faktoren beim Spielen in Online Casinos. Spieler sollten sicherstellen, dass das Casino über die erforderlichen Lizenzen und Zertifikate verfügt, um ein sicheres Spielumfeld zu gewährleisten. Seriöse Online Casinos verwenden fortschrittliche Verschlüsselungstechnologien, um die Daten der Spieler zu schützen und sicherzustellen, dass die finanziellen Transaktionen sicher sind.

Darüber hinaus ist ein verantwortungsvolles Spielverhalten von entscheidender Bedeutung. Spieler sollten sich der Risiken des Glücksspiels bewusst sein und sicherstellen, dass sie nur Geld einsetzen, dessen Verlust sie sich leisten können. Viele Casinos bieten Tools für verantwortungsvolles Spielen an, um Spieler zu unterstützen, die möglicherweise Schwierigkeiten haben.

  • Lizenzierte und regulierte Online-Casinos
  • Verwendung von fortschrittlicher Verschlüsselungstechnologie
  • Ressourcen für verantwortungsvolles Spielen

Warum Sie Online Casinos wählen sollten

Online Casinos bieten eine aufregende und abwechslungsreiche Möglichkeit, das Glücksspiel zu genießen. Durch die Vielzahl von Promotions haben Spieler die Möglichkeit, ihre Gewinne zu maximieren und gleichzeitig spannende Spiele zu entdecken. Mit einem klaren Verständnis für die angebotenen Promotions und deren Bedingungen können Spieler das Beste aus ihrer Zeit in Online Casinos herausholen.

Nutzen Sie die Gelegenheit, sich über die neuesten Angebote und Promotionen zu informieren und beginnen Sie Ihr Abenteuer in der Welt der Online Casinos. Es ist an der Zeit, die Vorteile zu nutzen und das volle Spielerlebnis zu genießen!

La entrada Die besten Online Casino Promotions: Was Spieler wirklich wissen sollten se publicó primero en Adoptamestizos.com.

]]>
PornPen AI en 2026: lo que debes saber sobre las imágenes NSFW y el https://adoptamestizos.com/pornpen-ai-en-2026-lo-que-debes-saber-sobre-las-imagenes-nsfw-y-el/ Fri, 13 Nov 2026 14:03:45 +0000 https://adoptamestizos.com/?p=78718 En 2026, el uso de chats de IA eróticos ha tomado un papel relevante en el entretenimiento adulto. Estas plataformas […]

La entrada PornPen AI en 2026: lo que debes saber sobre las imágenes NSFW y el se publicó primero en Adoptamestizos.com.

]]>

En 2026, el uso de chats de IA eróticos ha tomado un papel relevante en el entretenimiento adulto. Estas plataformas permiten a los usuarios interactuar con personajes ficticios a través de conversaciones personalizadas y crear contenido visual NSFW de forma innovadora. Con el avance de la tecnología de inteligencia artificial, los usuarios pueden explorar opciones como pornpen ia para disfrutar de experiencias más inmersivas y satisfactorias. En este artículo, exploraremos cómo funcionan estos chats, sus beneficios y lo que los distingue en el mercado actual.

¿Qué separa a las opciones más fuertes de chats de IA eróticos de las más débiles?

Los chats de IA eróticos han evolucionado significativamente en los últimos años. Lo que hace que algunas plataformas sean superiores a otras depende de varios factores críticos. Primero, la calidad de las respuestas generadas por la IA es fundamental. Las mejores opciones ofrecen diálogos fluidos y naturales, adaptándose a las preferencias del usuario. Además, la personalización y la variedad de personajes disponibles son aspectos que enriquecen la experiencia, permitiendo a los usuarios sumergirse en diferentes escenarios de rol.

Otro elemento clave es la seguridad y la privacidad que ofrecen estas plataformas. Un servicio que protege los datos de sus usuarios genera mayor confianza. Por último, la accesibilidad y la facilidad de uso son determinantes. Las mejores opciones deben funcionar sin necesidad de instalaciones complicadas y deben ser compatibles con múltiples dispositivos, facilitando el acceso a los usuarios.

Cómo empezar con chats de IA eróticos

Iniciar con un chat de IA erótico es un proceso sencillo que promete una experiencia única. Aquí te dejamos un paso a paso para que puedas comenzar:

  1. Crear una Cuenta: Regístrate en la plataforma proporcionando tus datos básicos.
  2. Verificar tus Datos: Completa la verificación de identidad para garantizar un entorno seguro.
  3. Seleccionar un Personaje: Escoge entre una variedad de personajes ficticios que más te atraigan.
  4. Iniciar la Conversación: Comienza a chatear y personalizar la experiencia según tus deseos.
  5. Explorar Contenido Adicional: Aprovecha la oportunidad de generar imágenes y vídeos personalizados.
  • Acceso rápido y sencillo a contenidos eróticos personalizados.
  • Interacción directa con personajes de tu elección.
  • Opciones de personalización que enriquecen la experiencia.

Detalles prácticos de chats de IA eróticos

La experiencia que ofrecen los chats de IA eróticos no se limita solo a las conversaciones. Actualmente, muchas plataformas permiten a los usuarios crear imágenes NSFW personalizadas, así como clips de video de corta duración, lo que agrega una capa extra de diversión. La posibilidad de generar contenido visual en segundos significa que los usuarios pueden ver y compartir sus fantasías de manera inmediata. Además, con más de 5.2 millones de modelos disponibles, las opciones nunca se acaban. Los usuarios pueden, así, experimentar diferentes escenarios y personajes en sus interacciones.

  • Creación de imágenes NSFW en tiempo real.
  • Interacción con personajes variados según el gusto del usuario.
  • Generación rápida de clips de video de 12 a 22 segundos.

Estos elementos no solo mejoran la calidad de la experiencia, sino que también brindan a los usuarios más control sobre su entretenimiento, creando un entorno que se ajusta a sus preferencias y deseos individuales.

Beneficios clave de chats de IA eróticos

Los chats de IA eróticos ofrecen una serie de beneficios que los hacen destacar en el ámbito del entretenimiento adulto. Uno de los mayores atractivos es la interacción personalizada que brindan. La capacidad de tener conversaciones fluidas y adaptadas a los intereses del usuario mejora la satisfacción general. Adicionalmente, la privacidad asegurada es un gran atractivo, ya que los datos de las sesiones se almacenan de manera segura en las cuentas de los usuarios, garantizando una experiencia confidencial.

  • Interacción personalizada con personajes atractivos.
  • Seguridad en la gestión de datos y privacidad del usuario.
  • Acceso a contenido visual de alta calidad.
  • Variedad de escenarios y personajes para explorar.

Estos beneficios no solo enriquecen la experiencia del usuario, sino que también fomentan un uso responsable y seguro de la tecnología.

Confianza y seguridad en chats de IA eróticos

La confianza es un aspecto fundamental al interactuar con plataformas de entretenimiento para adultos. Por ello, las mejores plataformas de chats de IA eróticos implementan medidas robustas para proteger la información de sus usuarios. Esto incluye políticas claras de privacidad y el almacenamiento seguro de datos. Además, muchas de estas plataformas ofrecen asistencia al cliente para resolver cualquier inquietud relacionada con la seguridad o la experiencia en general.

La transparencia en el manejo de la información y la atención al cliente son esenciales para generar una relación de confianza entre el usuario y la plataforma, lo que contribuye a una experiencia más positiva y placentera.

¿Por qué elegir chats de IA eróticos?

Elegir un chat de IA erótico puede ser una decisión emocionante y entretenida. Con la personalización, la variedad de contenido y la seguridad que ofrecen, estas plataformas están diseñadas para brindar una experiencia satisfactoria y única para cada usuario. La interacción continua y la posibilidad de crear contenidos personalizados permiten que cada sesión sea diferente, manteniendo la emoción y el interés a lo largo del tiempo.

Si buscas una manera innovadora de explorar fantasías y disfrutar de un entretenimiento adulto de calidad, los chats de IA eróticos son una opción que no puedes dejar pasar. Con la tecnología de hoy, la experiencia se ha vuelto más accesible, segura y emocionante que nunca.

La entrada PornPen AI en 2026: lo que debes saber sobre las imágenes NSFW y el se publicó primero en Adoptamestizos.com.

]]>
Online casino’s en hun bonussen: waar vind je de meeste voordelen? https://adoptamestizos.com/online-casino-s-en-hun-bonussen-waar-vind-je-de-meeste-voordelen/ Fri, 13 Nov 2026 13:09:09 +0000 https://adoptamestizos.com/?p=78713 De wereld van online casino’s is de afgelopen jaren exponentieel gegroeid, waarbij spelers een breed scala aan spellen en unieke […]

La entrada Online casino’s en hun bonussen: waar vind je de meeste voordelen? se publicó primero en Adoptamestizos.com.

]]>


De wereld van online casino’s is de afgelopen jaren exponentieel gegroeid, waarbij spelers een breed scala aan spellen en unieke bonussen kunnen ontdekken. In deze dynamische omgeving is het essentieel om de juiste casino’s te vinden die niet alleen een spannend spelaanbod hebben, maar ook aantrekkelijke voordelen bieden, zoals die van LuckyWave , die spelers helpt om de meeste voordelen te behalen uit hun bonussen.

Hoe accountinstellingen, betalingen en spelervaring samenkomen

Bij online casino’s begint alles met een gebruiksvriendelijk accountproces. Nieuwe spelers moeten eenvoudig een account aanmaken, hun betalingsinformatie invoeren en hun favoriete spellen kiezen. Dit proces moet naadloos verlopen om een positieve spelervaring te garanderen. Veel casino’s bieden nu een snelle registratie aan, waarbij spelers binnen enkele minuten aan de slag kunnen. Daarnaast is het belangrijk dat de betalingsmethoden veilig en divers zijn, zodat spelers gemakkelijk geld kunnen storten en opnemen. Dit alles draagt bij aan een complete en plezierige speelervaring.

Bij de keuze van een online casino is het dus cruciaal om op deze factoren te letten. Een gebruiksvriendelijke interface, veilige betalingsopties en een breed scala aan spellen zijn sleutelcomponenten die de algehele ervaring van de speler aanzienlijk kunnen verbeteren.

Hoe te beginnen met online gokken

Als je nieuw bent in de wereld van online gokken, is het belangrijk om te weten hoe je effectief kunt starten. Hier zijn enkele stappen om je op weg te helpen:

  1. Maak een Account aan: Ga naar de website van een betrouwbaar online casino en registreer je met een geldig e-mailadres en persoonlijke gegevens.
  2. Verifieer je Gegevens: Voltooi de verificatieprocedure om ervoor te zorgen dat je in aanmerking komt voor bonussen en veilig kunt spelen.
  3. Stort Geld: Kies een veilige betaalmethode en maak een eerste storting. Veel casino’s hebben aantrekkelijke welkomstbonussen.
  4. Kies je Spel: Blader door het spelaanbod en kies een spel dat je aanspreekt, zoals slots, poker of live casinospellen.
  5. Begin met Spelen: Plaats je inzetten en geniet van je speelsessie. Vergeet niet om verantwoord te gokken.
  • Gemakkelijke registratie via een gebruiksvriendelijke interface.
  • Toegang tot aantrekkelijke welkomstbonussen bij je eerste storting.
  • Een breed scala aan spellen om uit te kiezen.

Praktische details voor spelers

Een van de belangrijkste overwegingen bij het kiezen van een online casino is de kwaliteit van de klantenservice. Goede klantenservice is essentieel voor een positieve ervaring, vooral als er problemen optreden. Veel casino’s bieden 24/7 ondersteuning via chat, telefoon of e-mail, waardoor spelers altijd hulp kunnen krijgen wanneer dat nodig is. Verder is het belangrijk om de voorwaarden van bonussen en promoties goed door te lezen. Dit zorgt ervoor dat je weet wat je kunt verwachten en voorkomt misverstanden.

  • Uitgebreide klantenservice die altijd beschikbaar is.
  • Duidelijke bonusvoorwaarden om verrassingen te voorkomen.
  • Regelmatige promoties en evenementen om je speelsessies te verlevendigen.

Door deze praktische details in overweging te nemen, kunnen spelers een meer informatieve en plezierige speelervaring creëren.

Belangrijkste voordelen van online casino’s

Online casino’s bieden tal van voordelen die traditionele casino’s niet kunnen evenaren. Eén van de grootste voordelen is de mogelijkheid om te spelen vanuit het comfort van je eigen huis, wat niet alleen handig is maar ook de noodzaak voor reizen elimineert. Daarnaast hebben online casino’s vaak een breder scala aan spellen beschikbaar, variërend van klassiekers tot innovatieve nieuwe titels. Dit geeft spelers de kans om te experimenteren met verschillende spellen en ervaringen op te doen. Bovendien zijn er vaak betere bonussen beschikbaar, waardoor je meer waar voor je geld krijgt.

  • Gemak van spelen vanuit huis.
  • Een breder scala aan spellen dan traditionele casino’s.
  • Aantrekkelijke bonussen en promoties.
  • De mogelijkheid om in je eigen tempo te spelen.

Vertrouwen en veiligheid in online gokken

Veiligheid is een cruciaal aspect van online gokken. Het is essentieel om te spelen bij casino’s die gereguleerd zijn en gecontroleerd worden door erkende autoriteiten. Dit zorgt ervoor dat je gegevens en financiële transacties goed beveiligd zijn. De meeste gerenommeerde online casino’s maken gebruik van de nieuwste encryptietechnologieën om jouw informatie te beschermen. Het is ook belangrijk om te kiezen voor casino’s die eerlijke en transparante speelvoorwaarden hebben, zodat je altijd weet wat je kunt verwachten.

Daarnaast is het verstandig om te controleren of het casino verantwoordelijkheid neemt voor het bevorderen van verantwoord gokken door tools en hulpbronnen aan te bieden voor spelers die ondersteuning nodig hebben.

Waarom kiezen voor online casino’s

De keuze voor een online casino biedt een scala aan voordelen die de moeite waard zijn om te overwegen. De combinatie van gebruiksvriendelijkheid, aantrekkelijke bonussen, een breed scala aan spellen en de mogelijkheid om veilig te spelen maken het een aantrekkelijke optie voor veel spelers. Bovendien helpt de beschikbare ondersteuning en de focus op verantwoord gokken om een veilige en plezierige speelomgeving te waarborgen.

Of je nu een ervaren gokker bent of nieuw in de wereld van online gokken, het kiezen van het juiste online casino kan je speelervaring aanzienlijk verbeteren. Neem de tijd om je opties te verkennen en profiteer van de vele voordelen die beschikbaar zijn.

La entrada Online casino’s en hun bonussen: waar vind je de meeste voordelen? se publicó primero en Adoptamestizos.com.

]]>
Winspirit Casino Norge: Din guide til de mest populære spillene og gratis spinn https://adoptamestizos.com/winspirit-casino-norge-din-guide-til-de-mest-populaere-spillene-og-gratis-spinn/ Fri, 13 Nov 2026 13:08:01 +0000 https://adoptamestizos.com/?p=78708 Velkommen til verden av nettcasinoer! Winspirit Casino tilbyr et variert utvalg av spill og spennende muligheter for norske spillere. Med […]

La entrada Winspirit Casino Norge: Din guide til de mest populære spillene og gratis spinn se publicó primero en Adoptamestizos.com.

]]>


Velkommen til verden av nettcasinoer! Winspirit Casino tilbyr et variert utvalg av spill og spennende muligheter for norske spillere. Med over 7,000 spill fra 94 forskjellige leverandører, er det mye å utforske. I denne guiden vil vi gå gjennom hva nye spillere kan forvente, hvordan man kommer i gang, samt fordelene ved å velge win spirit casino som din spilleplattform for underholdning og gevinster.

Hva nye brukere kan forvente fra Winspirit Casino Norge

Når du registrerer deg hos Winspirit Casino, vil du bli møtt av en imponerende samling av spill og en brukervennlig plattform. Casinoet har et moderne design og en intuitiv navigasjon, noe som gjør det enkelt å finne frem til favorittspillene. Nykommere får muligheten til å dra nytte av en generøs velkomstbonus på opptil 4,200 NOK og 100 gratis spinn, noe som gir deg en fantastisk start på spillopplevelsen.

Winspirit Casino har et bredt spekter av spilltyper, inkludert klassiske spilleautomater, bordspill og live dealer alternativer. Det er også et solid sportsbok for de som ønsker å satse på sport. Med så mye å tilby, er det klar at Winspirit Casino vil gi deg en underholdende og variert spillopplevelse.

Slik kommer du i gang med Winspirit Casino

Å begynne med Winspirit Casino er en enkel prosess. Her er trinnene du trenger å følge for å komme i gang:

  1. Opprett en konto: Besøk Winspirit Casinos nettside og registrer deg ved å fylle ut det nødvendige skjemaet.
  2. Bekreft detaljene dine: Etter registreringen må du verifisere identiteten din for å sikre at kontoen din er trygg.
  3. Sett inn penger: Velg en betalingsmetode og gjør et innskudd. Minstekravet for innskudd er 210 NOK.
  4. Velg spillet ditt: Utforsk det brede utvalget av spill og finn dine favoritter.
  5. Start å spille: Begynn å spille og dra nytte av velkomstbonusen og gratis spinn!
  • Rask registrering og enkel kontoopprettelse
  • Brukervennlig grensesnitt som gjør det lett å navigere
  • Umiddelbar tilgang til et stort spillbibliotek

Praktiske detaljer for Winspirit Casino

Etter at du har registrert deg, vil du oppdage at Winspirit Casino tilbyr en rekke praktiske funksjoner. Casinoet har et imponerende spillutvalg med over 7,000 spill fra 94 leverandører, inkludert noen av de mest kjente i bransjen. Spillene inkluderer både klassiske og moderne spilleautomater, bordspill som blackjack, roulette og poker, samt et interaktivt live casino der du kan spille med ekte dealere i sanntid.

Utdrag av betalingsmetodene er også en stor fordel. Du kan bruke populære metoder som Visa, Mastercard, Bitcoin og Ethereum for innskudd og uttak. Uttaksbehandlingstiden er mellom 1-5 virkedager, noe som sikrer at du får pengene dine raskt. Det er også viktig å merke seg at maksimumsbeløpet for uttak er 130,000 NOK per uke, noe som gir gode muligheter for stor gevinst.

  • Over 7,000 spill fra 94 ledende leverandører
  • Rask bearbeiding av uttak (1-5 virkedager)
  • Støtte for populære betalingsmetoder, inkludert kryptovaluta

Med disse praktiske detaljene i bakhodet, kan du enkelt sette i gang med å utforske alt Winspirit Casino har å tilby.

Nøkkelfordeler ved å spille hos Winspirit Casino

Det er mange grunner til å velge Winspirit Casino som din foretrukne spilleplattform. Først og fremst er den generøse velkomstbonusen med 300% opptil 4,200 NOK og 100 gratis spinn en flott måte å øke bankroll’en din på. I tillegg tilbyr kasinoet regelmessige kampanjer og bonuser for etablerte spillere, som kan inkludere gratisspinn og innskuddsbonuser.

  • Store velkomstbonuser som gir en flott start
  • Regelmessige kampanjer for lojale spillere
  • Stort og variert utvalg av spilltyper
  • Brukervennlig plattform som er lett å navigere

I tillegg til bonusene, gir det omfattende spillutvalget deg muligheten til å prøve noe nytt hele tiden, og live casino-seksjonen gir en dynamisk opplevelse som ligner på et fysisk casino.

Troverdighet og sikkerhet hos Winspirit Casino

Når det kommer til nettspill, er sikkerhet en kritisk faktor. Winspirit Casino har implementert moderne sikkerhetstiltak som SSL-kryptering for å beskytte spillernes personlige og finansielle informasjon. Dette gir deg trygghet mens du spiller, og du kan være sikker på at dataene dine er godt beskyttet.

Casinoet er autorisert av Curaçao Gaming Control Board, noe som gir ytterligere trygghet når det gjelder rettferdig spill. Spillene er regelmessig testet for å sikre at de fungerer riktig og at utbetalingene er rettferdige. Dette gir spillerne en trygg plattform for å nyte spillopplevelsen.

Hvorfor velge Winspirit Casino?

Winspirit Casino er et utmerket valg for norske spillere som ønsker en trygg, spennende og variert spillopplevelse. Med et stort spillbibliotek og en generøs velkomstbonus, har dette casinoet mye å tilby. Rask behandling av uttak og støtte for flere betalingsmetoder gjør det enda mer attraktivt.

Enten du er en nybegynner eller en erfaren spiller, gir Winspirit Casino deg muligheten til å utforske, nyte og vinne. Besøk Winspirit Casino i dag og begynn reisen din mot spennende gevinster og uforglemmelige spillopplevelser!

La entrada Winspirit Casino Norge: Din guide til de mest populære spillene og gratis spinn se publicó primero en Adoptamestizos.com.

]]>
¿Vale la pena registrarse en Stake España en 2026? Pros y contras para nuevos https://adoptamestizos.com/vale-la-pena-registrarse-en-stake-espana-en-2026-pros-y-contras-para-nuevos/ Fri, 13 Nov 2026 12:44:54 +0000 https://adoptamestizos.com/?p=78703 En el mundo del juego online, los casinos criptográficos han ganado protagonismo, especialmente con la creciente popularidad de las criptomonedas. […]

La entrada ¿Vale la pena registrarse en Stake España en 2026? Pros y contras para nuevos se publicó primero en Adoptamestizos.com.

]]>


En el mundo del juego online, los casinos criptográficos han ganado protagonismo, especialmente con la creciente popularidad de las criptomonedas. Entre ellos, Stake España se destaca por su amplia oferta y su enfoque innovador, lo que hace que muchos opten por stake casino para disfrutar de una experiencia de juego única. Pero, ¿realmente vale la pena registrarse en esta plataforma en 2026? A continuación, exploraremos los pros y contras de Stake España, ayudando a los nuevos jugadores a tomar una decisión informada.

Cómo se pueden acercar los principiantes a Stake España

Para los nuevos jugadores, registrarse en un casino online como Stake España puede ser un desafío. Sin embargo, con la información correcta, el proceso puede ser bastante sencillo y emocionante. Este casino no solo ofrece una impresionante variedad de juegos, sino que también facilita un acceso amigable a las criptomonedas para realizar transacciones. En este contexto, es crucial que los jugadores comprendan cómo iniciar su experiencia de juego de forma segura y efectiva.

Además, Stake España destaca por sus características únicas, como los Stake Originals, que ofrecen un alto retorno al jugador (RTP). Esto, sumado a su licencia de Curaçao, proporciona un entorno de juego atractivo y confiable. A continuación, se detallan los pasos que un nuevo jugador debe seguir para comenzar su aventura en Stake España.

Cómo empezar en Stake España

Iniciar en Stake España es un proceso directo y emocionantemente simple. A continuación, se presenta una guía paso a paso que te ayudará a registrarte y comenzar a jugar.

  1. Crear una cuenta: Visita el sitio web de Stake España y selecciona la opción de registro. Proporciona la información requerida para crear tu perfil.
  2. Verificar tus datos: Asegúrate de que la información sea correcta y cumple con los requisitos de verificación para poder realizar depósitos y retiros sin problemas.
  3. Hacer un depósito: Stake España únicamente acepta criptomonedas, así que selecciona tu moneda preferida y realiza un depósito para empezar a jugar.
  4. Seleccionar tu juego: Explora la amplia variedad de más de 6,000 títulos disponibles y elige tus favoritos para comenzar a jugar.
  5. Comenzar a jugar: Disfruta de la experiencia de juego y aprovecha las diferentes promociones y bonificaciones que Stake España tiene para ofrecer.
  • Al registrarte, puedes acceder a la Carrera Diaria de $100,000 que ofrece grandes premios.
  • La plataforma permite transacciones rápidas y seguras utilizando más de 20 criptomonedas.
  • El soporte está disponible las 24 horas del día, lo que garantiza que siempre tendrás ayuda cuando la necesites.

Detalles prácticos sobre Stake España

Un aspecto fundamental de Stake España es su enfoque en la experiencia del usuario. Al ofrecer más de 6,000 juegos de más de 100 proveedores, los jugadores pueden disfrutar de una variedad que rara vez se encuentra en otros casinos. Los Stake Originals, en particular, están diseñados para brindar una experiencia única con un alto RTP, lo que significa que hay más posibilidades de ganar. Además, todos los juegos están optimizados para dispositivos móviles, lo que te permite jugar desde cualquier lugar con facilidad.

  • Más de 6,000 juegos, incluyendo tragamonedas, juegos de mesa y crupieres en vivo.
  • Licencia de la Curaçao Gaming Authority, que asegura un entorno de juego regulado.
  • Interfaz intuitiva que facilita la navegación y búsqueda de juegos.

Con todos estos detalles, Stake España no solo se posiciona como un líder en el mercado de casinos online, sino que también ofrece a los jugadores una experiencia de juego fluida y entretenida.

Beneficios clave de Stake España

Al considerar registrarse en un casino, es crucial entender los beneficios que ofrece. Stake España tiene múltiples ventajas que lo destacan en el competitivo mundo de los casinos online. La combinación de juegos innovadores y una atención al cliente excepcional hace que la plataforma sea atractiva para los nuevos jugadores y los veteranos por igual.

  • Increíbles bonificaciones y promociones, como la Carrera Diaria de $100,000.
  • Un entorno de juego seguro y regulado gracias a su licencia de Curaçao.
  • Opciones de pago diversificadas que incluyen más de 20 criptomonedas.
  • Disponibilidad de soporte al cliente 24/7 mediante chat en vivo.

Estos beneficios no solo atraen a los nuevos jugadores, sino que también ayudan a crear una comunidad sólida de entusiastas del juego.

Confianza y seguridad en Stake España

La seguridad es uno de los aspectos más importantes a considerar al jugar en un casino online. Stake España opera bajo una licencia otorgada por la Curaçao Gaming Authority, lo que garantiza que cumple con las regulaciones necesarias para ofrecer un entorno de juego justo y seguro. Además, la plataforma utiliza tecnologías avanzadas de encriptación para proteger la información personal y financiera de sus usuarios.

Esto significa que los jugadores pueden disfrutar de sus juegos favoritos sin preocuparse por problemas de seguridad. Stake España se compromete a ofrecer un entorno de juego responsable, promoviendo prácticas de juego seguras y asegurando que los jugadores tengan acceso a herramientas de autoexclusión y límites de depósito si es necesario.

¿Por qué elegir Stake España?

Elegir un casino online puede ser una tarea desalentadora, dado el número de opciones disponibles. Sin embargo, Stake España se destaca por su amplia gama de juegos, su enfoque en las criptomonedas y su compromiso con la seguridad del jugador. La plataforma ha sido diseñada para ofrecer una experiencia de juego fluida con un enfoque en la satisfacción del cliente.

Si buscas un casino que combine innovación, seguridad y una comunidad activa, Stake España es una excelente opción para comenzar tu aventura en el mundo del juego online en 2026. Con su amplia oferta de juegos y promociones atractivas, seguro encontrarás algo que se ajuste a tus preferencias de juego.

La entrada ¿Vale la pena registrarse en Stake España en 2026? Pros y contras para nuevos se publicó primero en Adoptamestizos.com.

]]>
De voordelen van de mobiele app van jouw favoriete online casino https://adoptamestizos.com/de-voordelen-van-de-mobiele-app-van-jouw-favoriete-online-casino/ Fri, 13 Nov 2026 12:03:49 +0000 https://adoptamestizos.com/?p=78698 In de wereld van online gokken zijn mobiele apps een cruciaal onderdeel geworden van de gebruikerservaring. Het biedt spelers de […]

La entrada De voordelen van de mobiele app van jouw favoriete online casino se publicó primero en Adoptamestizos.com.

]]>


In de wereld van online gokken zijn mobiele apps een cruciaal onderdeel geworden van de gebruikerservaring. Het biedt spelers de mogelijkheid om hun favoriete casinospellen waar en wanneer ze maar willen te spelen. Met de toenemende populariteit van smartphones, is de gebruiksvriendelijkheid en toegankelijkheid van deze apps essentieel voor zowel nieuwe als ervaren spelers. Een uitstekende bron voor informatie hierover is https://casino-highflybet-be.net/ , waar je kunt ontdekken hoe je het meeste uit deze technologie kunt halen.

Hoe beginners zich kunnen oriënteren in de wereld van online casino’s

De wereld van online casino’s kan overweldigend zijn, vooral voor beginners. Met een overvloed aan opties, spellen en promoties is het belangrijk om een goed begrip te krijgen van waar je moet beginnen. Mobiele apps zijn ontworpen om spelers te helpen deze overvloed aan keuzes te navigeren. Ze bieden een gebruiksvriendelijke interface en directe toegang tot verschillende spellen en functies, wat het gemakkelijker maakt om te beginnen met spelen.

In een mobiele app vind je vaak nuttige tutorials en klantondersteuning die beginners kunnen begeleiden bij hun eerste stappen. Dit maakt het niet alleen toegankelijk, maar ook leuk en spannend.

Hoe te beginnen met een mobiel casino

Om optimaal gebruik te maken van een mobiele casino-app, zijn er enkele eenvoudige stappen die je moet volgen. Hieronder vind je een praktische gids om je op weg te helpen:

  1. Download de app: Zoek de officiële app van het casino in de App Store of Google Play en download deze.
  2. Maak een account aan: Registreer je met je persoonlijke gegevens om toegang te krijgen tot het casino.
  3. Verifieer je identiteit: Voltooi de verificatie om ervoor te zorgen dat je veilig kunt spelen.
  4. Maak een storting: Kies een betaalmethode en voeg geld toe aan je account om te beginnen met spelen.
  5. Kies een spel: Blader door de beschikbare spellen en kies er een waarvan jij denkt dat het leuk zal zijn.
  6. Begin met spelen: Start het spel en geniet van de ervaring!
  • Snelle toegang tot je favoriete spellen.
  • Gemakkelijke registratie en storting.
  • Directe ondersteuning via de app.

Praktische details voor het gebruik van mobiele casino-apps

Mobiele casino-apps bieden verschillende praktische functies die de spelervaring verbeteren. Ten eerste zijn ze ontworpen met gebruiksgemak in gedachten. Dit betekent dat je kunt navigeren door de app zonder ingewikkelde stappen. Spelers kunnen eenvoudig door verschillende secties bladeren, zoals slots, tafelspellen en live casino’s. Bovendien worden updates en nieuwe spellen vaak automatisch toegevoegd, zodat je altijd toegang hebt tot de nieuwste aanbiedingen.

  • Real-time meldingen over nieuwe spellen en promoties.
  • De mogelijkheid om verantwoord te spelen met limieten en timers.
  • Ondersteuning voor verschillende betalingsmethoden.

Deze functies dragen bij aan een soepele en plezierige ervaring, waardoor spelers snel en eenvoudig hun favoriete spellen kunnen vinden.

Belangrijke voordelen van mobiele casino-apps

Mobiele apps van online casino’s bieden tal van voordelen die de traditionele desktopervaring vaak niet can bieden. Een van de grootste voordelen is de toegankelijkheid. Met een app kun je altijd en overal spelen, wat betekent dat je je favoriete spellen kunt spelen tijdens het wachten op de bus of tijdens een pauze op je werk. Daarnaast hebben veel mobiele apps exclusieve bonussen en promoties die alleen toegankelijk zijn via de app, waardoor het aantrekkelijker wordt om deze platformen te gebruiken.

  • Altijd en overal toegang tot je favoriete spellen.
  • Exclusieve bonussen en aanbiedingen voor mobiele spelers.
  • Een gebruikersvriendelijke interface die is ontworpen voor smartphones.
  • Snellere laadtijden en betere prestaties.

Dit alles draagt bij aan een aangenamere en meer lonende spelervaring.

Vertrouwen en veiligheid in mobiele casino-apps

Wanneer je speelt via een mobiele casino-app, is het van cruciaal belang dat je je veilig en beschermd voelt. Betrouwbare online casino’s zijn gelicentieerd en gereguleerd door erkende autoriteiten, wat betekent dat ze voldoen aan strenge normen voor eerlijkheid en veiligheid. Je persoonlijke en financiële informatie wordt bovendien vaak beschermd met geavanceerde versleutelingstechnologieën.

Het is ook belangrijk om te controleren of de app regelmatig wordt bijgewerkt om de nieuwste beveiligingsprotocollen te implementeren. Zo ben je verzekerd van een veilige speelervaring, wat een essentieel aspect is van online gokken.

Waarom kiezen voor een mobiele app van een online casino

Het kiezen van een mobiele app van een online casino is een slimme keuze voor zowel nieuwe als ervaren spelers. De voordelen van toegankelijkheid, gebruiksgemak en exclusieve aanbiedingen maken het een aantrekkelijke optie. Of je nu onderweg bent of gewoon thuis op de bank ligt, toegang tot je favoriete spellen is altijd binnen handbereik.

Aanmoediging om de app te downloaden en je eerste speelervaring te beleven, maakt het nog aantrekkelijker. Begin vandaag nog en ontdek de spannende wereld van online casino’s op je mobiele apparaat!

La entrada De voordelen van de mobiele app van jouw favoriete online casino se publicó primero en Adoptamestizos.com.

]]>