react-achievements 1.3.7 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +181 -146
  2. package/coverage/clover.xml +1 -1
  3. package/coverage/lcov-report/src/context/AchievementContext.tsx.html +6 -6
  4. package/coverage/lcov-report/src/context/index.html +1 -1
  5. package/coverage/lcov-report/src/index.ts.html +1 -1
  6. package/coverage/lcov.info +1 -1
  7. package/dist/assets/defaultIcons.d.ts +81 -0
  8. package/dist/components/AchievementModal.d.ts +3 -2
  9. package/dist/components/BadgesButton.d.ts +6 -1
  10. package/dist/components/BadgesModal.d.ts +3 -2
  11. package/dist/hooks/useAchievement.d.ts +8 -0
  12. package/dist/index.cjs.js +2100 -103
  13. package/dist/index.d.ts +5 -3
  14. package/dist/index.esm.js +2097 -120
  15. package/dist/providers/AchievementProvider.d.ts +11 -0
  16. package/dist/redux/achievementSlice.d.ts +25 -0
  17. package/dist/redux/notificationSlice.d.ts +7 -0
  18. package/dist/redux/store.d.ts +15 -0
  19. package/dist/types.d.ts +22 -13
  20. package/package.json +26 -18
  21. package/src/assets/defaultIcons.ts +100 -0
  22. package/src/components/AchievementModal.tsx +37 -8
  23. package/src/components/BadgesButton.tsx +33 -7
  24. package/src/components/BadgesModal.tsx +23 -9
  25. package/src/hooks/useAchievement.ts +20 -0
  26. package/src/index.ts +11 -7
  27. package/src/providers/AchievementProvider.tsx +185 -0
  28. package/src/redux/achievementSlice.ts +71 -0
  29. package/src/redux/notificationSlice.ts +26 -0
  30. package/src/redux/store.ts +20 -0
  31. package/src/types.ts +24 -13
  32. package/demo/src/stories/Button.jsx +0 -50
  33. package/demo/src/stories/Button.stories.js +0 -48
  34. package/demo/src/stories/Configure.mdx +0 -364
  35. package/demo/src/stories/Header.jsx +0 -59
  36. package/demo/src/stories/Header.stories.js +0 -28
  37. package/demo/src/stories/Page.jsx +0 -69
  38. package/demo/src/stories/Page.stories.js +0 -28
  39. package/demo/src/stories/assets/accessibility.png +0 -0
  40. package/demo/src/stories/assets/accessibility.svg +0 -1
  41. package/demo/src/stories/assets/addon-library.png +0 -0
  42. package/demo/src/stories/assets/assets.png +0 -0
  43. package/demo/src/stories/assets/avif-test-image.avif +0 -0
  44. package/demo/src/stories/assets/context.png +0 -0
  45. package/demo/src/stories/assets/discord.svg +0 -1
  46. package/demo/src/stories/assets/docs.png +0 -0
  47. package/demo/src/stories/assets/figma-plugin.png +0 -0
  48. package/demo/src/stories/assets/github.svg +0 -1
  49. package/demo/src/stories/assets/share.png +0 -0
  50. package/demo/src/stories/assets/styling.png +0 -0
  51. package/demo/src/stories/assets/testing.png +0 -0
  52. package/demo/src/stories/assets/theming.png +0 -0
  53. package/demo/src/stories/assets/tutorials.svg +0 -1
  54. package/demo/src/stories/assets/youtube.svg +0 -1
  55. package/demo/src/stories/button.css +0 -30
  56. package/demo/src/stories/header.css +0 -32
  57. package/demo/src/stories/page.css +0 -69
  58. package/dist/stories/Button.d.ts +0 -28
  59. package/dist/stories/Button.stories.d.ts +0 -23
  60. package/dist/stories/Header.d.ts +0 -13
  61. package/dist/stories/Header.stories.d.ts +0 -18
  62. package/dist/stories/Page.d.ts +0 -3
  63. package/dist/stories/Page.stories.d.ts +0 -12
  64. package/src/context/AchievementContext.tsx +0 -185
  65. package/src/stories/Button.stories.ts +0 -52
  66. package/src/stories/Button.tsx +0 -48
  67. package/src/stories/Configure.mdx +0 -364
  68. package/src/stories/Header.stories.ts +0 -33
  69. package/src/stories/Header.tsx +0 -56
  70. package/src/stories/Page.stories.ts +0 -32
  71. package/src/stories/Page.tsx +0 -73
  72. package/src/stories/assets/accessibility.png +0 -0
  73. package/src/stories/assets/accessibility.svg +0 -1
  74. package/src/stories/assets/addon-library.png +0 -0
  75. package/src/stories/assets/assets.png +0 -0
  76. package/src/stories/assets/avif-test-image.avif +0 -0
  77. package/src/stories/assets/context.png +0 -0
  78. package/src/stories/assets/discord.svg +0 -1
  79. package/src/stories/assets/docs.png +0 -0
  80. package/src/stories/assets/figma-plugin.png +0 -0
  81. package/src/stories/assets/github.svg +0 -1
  82. package/src/stories/assets/share.png +0 -0
  83. package/src/stories/assets/styling.png +0 -0
  84. package/src/stories/assets/testing.png +0 -0
  85. package/src/stories/assets/theming.png +0 -0
  86. package/src/stories/assets/tutorials.svg +0 -1
  87. package/src/stories/assets/youtube.svg +0 -1
  88. package/src/stories/button.css +0 -30
  89. package/src/stories/header.css +0 -32
  90. package/src/stories/page.css +0 -69
package/dist/index.cjs.js CHANGED
@@ -1,6 +1,1912 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ require('react-dom');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
24
+
25
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
26
+
27
+ function getDefaultExportFromCjs (x) {
28
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
29
+ }
30
+
31
+ var shim = {exports: {}};
32
+
33
+ var useSyncExternalStoreShim_production = {};
34
+
35
+ /**
36
+ * @license React
37
+ * use-sync-external-store-shim.production.js
38
+ *
39
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
40
+ *
41
+ * This source code is licensed under the MIT license found in the
42
+ * LICENSE file in the root directory of this source tree.
43
+ */
44
+
45
+ var hasRequiredUseSyncExternalStoreShim_production;
46
+
47
+ function requireUseSyncExternalStoreShim_production () {
48
+ if (hasRequiredUseSyncExternalStoreShim_production) return useSyncExternalStoreShim_production;
49
+ hasRequiredUseSyncExternalStoreShim_production = 1;
50
+ var React$1 = React;
51
+ function is(x, y) {
52
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
53
+ }
54
+ var objectIs = "function" === typeof Object.is ? Object.is : is,
55
+ useState = React$1.useState,
56
+ useEffect = React$1.useEffect,
57
+ useLayoutEffect = React$1.useLayoutEffect,
58
+ useDebugValue = React$1.useDebugValue;
59
+ function useSyncExternalStore$2(subscribe, getSnapshot) {
60
+ var value = getSnapshot(),
61
+ _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),
62
+ inst = _useState[0].inst,
63
+ forceUpdate = _useState[1];
64
+ useLayoutEffect(
65
+ function () {
66
+ inst.value = value;
67
+ inst.getSnapshot = getSnapshot;
68
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
69
+ },
70
+ [subscribe, value, getSnapshot]
71
+ );
72
+ useEffect(
73
+ function () {
74
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
75
+ return subscribe(function () {
76
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
77
+ });
78
+ },
79
+ [subscribe]
80
+ );
81
+ useDebugValue(value);
82
+ return value;
83
+ }
84
+ function checkIfSnapshotChanged(inst) {
85
+ var latestGetSnapshot = inst.getSnapshot;
86
+ inst = inst.value;
87
+ try {
88
+ var nextValue = latestGetSnapshot();
89
+ return !objectIs(inst, nextValue);
90
+ } catch (error) {
91
+ return true;
92
+ }
93
+ }
94
+ function useSyncExternalStore$1(subscribe, getSnapshot) {
95
+ return getSnapshot();
96
+ }
97
+ var shim =
98
+ "undefined" === typeof window ||
99
+ "undefined" === typeof window.document ||
100
+ "undefined" === typeof window.document.createElement
101
+ ? useSyncExternalStore$1
102
+ : useSyncExternalStore$2;
103
+ useSyncExternalStoreShim_production.useSyncExternalStore =
104
+ void 0 !== React$1.useSyncExternalStore ? React$1.useSyncExternalStore : shim;
105
+ return useSyncExternalStoreShim_production;
106
+ }
107
+
108
+ var useSyncExternalStoreShim_development = {};
109
+
110
+ /**
111
+ * @license React
112
+ * use-sync-external-store-shim.development.js
113
+ *
114
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
115
+ *
116
+ * This source code is licensed under the MIT license found in the
117
+ * LICENSE file in the root directory of this source tree.
118
+ */
119
+
120
+ var hasRequiredUseSyncExternalStoreShim_development;
121
+
122
+ function requireUseSyncExternalStoreShim_development () {
123
+ if (hasRequiredUseSyncExternalStoreShim_development) return useSyncExternalStoreShim_development;
124
+ hasRequiredUseSyncExternalStoreShim_development = 1;
125
+ "production" !== process.env.NODE_ENV &&
126
+ (function () {
127
+ function is(x, y) {
128
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
129
+ }
130
+ function useSyncExternalStore$2(subscribe, getSnapshot) {
131
+ didWarnOld18Alpha ||
132
+ void 0 === React$1.startTransition ||
133
+ ((didWarnOld18Alpha = true),
134
+ console.error(
135
+ "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."
136
+ ));
137
+ var value = getSnapshot();
138
+ if (!didWarnUncachedGetSnapshot) {
139
+ var cachedValue = getSnapshot();
140
+ objectIs(value, cachedValue) ||
141
+ (console.error(
142
+ "The result of getSnapshot should be cached to avoid an infinite loop"
143
+ ),
144
+ (didWarnUncachedGetSnapshot = true));
145
+ }
146
+ cachedValue = useState({
147
+ inst: { value: value, getSnapshot: getSnapshot }
148
+ });
149
+ var inst = cachedValue[0].inst,
150
+ forceUpdate = cachedValue[1];
151
+ useLayoutEffect(
152
+ function () {
153
+ inst.value = value;
154
+ inst.getSnapshot = getSnapshot;
155
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
156
+ },
157
+ [subscribe, value, getSnapshot]
158
+ );
159
+ useEffect(
160
+ function () {
161
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
162
+ return subscribe(function () {
163
+ checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });
164
+ });
165
+ },
166
+ [subscribe]
167
+ );
168
+ useDebugValue(value);
169
+ return value;
170
+ }
171
+ function checkIfSnapshotChanged(inst) {
172
+ var latestGetSnapshot = inst.getSnapshot;
173
+ inst = inst.value;
174
+ try {
175
+ var nextValue = latestGetSnapshot();
176
+ return !objectIs(inst, nextValue);
177
+ } catch (error) {
178
+ return true;
179
+ }
180
+ }
181
+ function useSyncExternalStore$1(subscribe, getSnapshot) {
182
+ return getSnapshot();
183
+ }
184
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
185
+ "function" ===
186
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&
187
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
188
+ var React$1 = React,
189
+ objectIs = "function" === typeof Object.is ? Object.is : is,
190
+ useState = React$1.useState,
191
+ useEffect = React$1.useEffect,
192
+ useLayoutEffect = React$1.useLayoutEffect,
193
+ useDebugValue = React$1.useDebugValue,
194
+ didWarnOld18Alpha = false,
195
+ didWarnUncachedGetSnapshot = false,
196
+ shim =
197
+ "undefined" === typeof window ||
198
+ "undefined" === typeof window.document ||
199
+ "undefined" === typeof window.document.createElement
200
+ ? useSyncExternalStore$1
201
+ : useSyncExternalStore$2;
202
+ useSyncExternalStoreShim_development.useSyncExternalStore =
203
+ void 0 !== React$1.useSyncExternalStore ? React$1.useSyncExternalStore : shim;
204
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
205
+ "function" ===
206
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
207
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
208
+ })();
209
+ return useSyncExternalStoreShim_development;
210
+ }
211
+
212
+ if (process.env.NODE_ENV === 'production') {
213
+ shim.exports = requireUseSyncExternalStoreShim_production();
214
+ } else {
215
+ shim.exports = requireUseSyncExternalStoreShim_development();
216
+ }
217
+
218
+ var shimExports = shim.exports;
219
+
220
+ var withSelector = {exports: {}};
221
+
222
+ var withSelector_production = {};
223
+
224
+ /**
225
+ * @license React
226
+ * use-sync-external-store-shim/with-selector.production.js
227
+ *
228
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
229
+ *
230
+ * This source code is licensed under the MIT license found in the
231
+ * LICENSE file in the root directory of this source tree.
232
+ */
233
+
234
+ var hasRequiredWithSelector_production;
235
+
236
+ function requireWithSelector_production () {
237
+ if (hasRequiredWithSelector_production) return withSelector_production;
238
+ hasRequiredWithSelector_production = 1;
239
+ var React$1 = React,
240
+ shim = shimExports;
241
+ function is(x, y) {
242
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
243
+ }
244
+ var objectIs = "function" === typeof Object.is ? Object.is : is,
245
+ useSyncExternalStore = shim.useSyncExternalStore,
246
+ useRef = React$1.useRef,
247
+ useEffect = React$1.useEffect,
248
+ useMemo = React$1.useMemo,
249
+ useDebugValue = React$1.useDebugValue;
250
+ withSelector_production.useSyncExternalStoreWithSelector = function (
251
+ subscribe,
252
+ getSnapshot,
253
+ getServerSnapshot,
254
+ selector,
255
+ isEqual
256
+ ) {
257
+ var instRef = useRef(null);
258
+ if (null === instRef.current) {
259
+ var inst = { hasValue: false, value: null };
260
+ instRef.current = inst;
261
+ } else inst = instRef.current;
262
+ instRef = useMemo(
263
+ function () {
264
+ function memoizedSelector(nextSnapshot) {
265
+ if (!hasMemo) {
266
+ hasMemo = true;
267
+ memoizedSnapshot = nextSnapshot;
268
+ nextSnapshot = selector(nextSnapshot);
269
+ if (void 0 !== isEqual && inst.hasValue) {
270
+ var currentSelection = inst.value;
271
+ if (isEqual(currentSelection, nextSnapshot))
272
+ return (memoizedSelection = currentSelection);
273
+ }
274
+ return (memoizedSelection = nextSnapshot);
275
+ }
276
+ currentSelection = memoizedSelection;
277
+ if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;
278
+ var nextSelection = selector(nextSnapshot);
279
+ if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
280
+ return (memoizedSnapshot = nextSnapshot), currentSelection;
281
+ memoizedSnapshot = nextSnapshot;
282
+ return (memoizedSelection = nextSelection);
283
+ }
284
+ var hasMemo = false,
285
+ memoizedSnapshot,
286
+ memoizedSelection,
287
+ maybeGetServerSnapshot =
288
+ void 0 === getServerSnapshot ? null : getServerSnapshot;
289
+ return [
290
+ function () {
291
+ return memoizedSelector(getSnapshot());
292
+ },
293
+ null === maybeGetServerSnapshot
294
+ ? void 0
295
+ : function () {
296
+ return memoizedSelector(maybeGetServerSnapshot());
297
+ }
298
+ ];
299
+ },
300
+ [getSnapshot, getServerSnapshot, selector, isEqual]
301
+ );
302
+ var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);
303
+ useEffect(
304
+ function () {
305
+ inst.hasValue = true;
306
+ inst.value = value;
307
+ },
308
+ [value]
309
+ );
310
+ useDebugValue(value);
311
+ return value;
312
+ };
313
+ return withSelector_production;
314
+ }
315
+
316
+ var withSelector_development = {};
317
+
318
+ /**
319
+ * @license React
320
+ * use-sync-external-store-shim/with-selector.development.js
321
+ *
322
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
323
+ *
324
+ * This source code is licensed under the MIT license found in the
325
+ * LICENSE file in the root directory of this source tree.
326
+ */
327
+
328
+ var hasRequiredWithSelector_development;
329
+
330
+ function requireWithSelector_development () {
331
+ if (hasRequiredWithSelector_development) return withSelector_development;
332
+ hasRequiredWithSelector_development = 1;
333
+ "production" !== process.env.NODE_ENV &&
334
+ (function () {
335
+ function is(x, y) {
336
+ return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
337
+ }
338
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
339
+ "function" ===
340
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&
341
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
342
+ var React$1 = React,
343
+ shim = shimExports,
344
+ objectIs = "function" === typeof Object.is ? Object.is : is,
345
+ useSyncExternalStore = shim.useSyncExternalStore,
346
+ useRef = React$1.useRef,
347
+ useEffect = React$1.useEffect,
348
+ useMemo = React$1.useMemo,
349
+ useDebugValue = React$1.useDebugValue;
350
+ withSelector_development.useSyncExternalStoreWithSelector = function (
351
+ subscribe,
352
+ getSnapshot,
353
+ getServerSnapshot,
354
+ selector,
355
+ isEqual
356
+ ) {
357
+ var instRef = useRef(null);
358
+ if (null === instRef.current) {
359
+ var inst = { hasValue: false, value: null };
360
+ instRef.current = inst;
361
+ } else inst = instRef.current;
362
+ instRef = useMemo(
363
+ function () {
364
+ function memoizedSelector(nextSnapshot) {
365
+ if (!hasMemo) {
366
+ hasMemo = true;
367
+ memoizedSnapshot = nextSnapshot;
368
+ nextSnapshot = selector(nextSnapshot);
369
+ if (void 0 !== isEqual && inst.hasValue) {
370
+ var currentSelection = inst.value;
371
+ if (isEqual(currentSelection, nextSnapshot))
372
+ return (memoizedSelection = currentSelection);
373
+ }
374
+ return (memoizedSelection = nextSnapshot);
375
+ }
376
+ currentSelection = memoizedSelection;
377
+ if (objectIs(memoizedSnapshot, nextSnapshot))
378
+ return currentSelection;
379
+ var nextSelection = selector(nextSnapshot);
380
+ if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
381
+ return (memoizedSnapshot = nextSnapshot), currentSelection;
382
+ memoizedSnapshot = nextSnapshot;
383
+ return (memoizedSelection = nextSelection);
384
+ }
385
+ var hasMemo = false,
386
+ memoizedSnapshot,
387
+ memoizedSelection,
388
+ maybeGetServerSnapshot =
389
+ void 0 === getServerSnapshot ? null : getServerSnapshot;
390
+ return [
391
+ function () {
392
+ return memoizedSelector(getSnapshot());
393
+ },
394
+ null === maybeGetServerSnapshot
395
+ ? void 0
396
+ : function () {
397
+ return memoizedSelector(maybeGetServerSnapshot());
398
+ }
399
+ ];
400
+ },
401
+ [getSnapshot, getServerSnapshot, selector, isEqual]
402
+ );
403
+ var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);
404
+ useEffect(
405
+ function () {
406
+ inst.hasValue = true;
407
+ inst.value = value;
408
+ },
409
+ [value]
410
+ );
411
+ useDebugValue(value);
412
+ return value;
413
+ };
414
+ "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
415
+ "function" ===
416
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
417
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
418
+ })();
419
+ return withSelector_development;
420
+ }
421
+
422
+ if (process.env.NODE_ENV === 'production') {
423
+ withSelector.exports = requireWithSelector_production();
424
+ } else {
425
+ withSelector.exports = requireWithSelector_development();
426
+ }
427
+
428
+ var withSelectorExports = withSelector.exports;
429
+
430
+ const ContextKey = Symbol.for(`react-redux-context`);
431
+ const gT = typeof globalThis !== "undefined" ? globalThis :
432
+ /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */
433
+ {};
434
+
435
+ function getContext() {
436
+ var _gT$ContextKey;
437
+
438
+ if (!React__namespace.createContext) return {};
439
+ const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();
440
+ let realContext = contextMap.get(React__namespace.createContext);
441
+
442
+ if (!realContext) {
443
+ realContext = React__namespace.createContext(null);
444
+
445
+ if (process.env.NODE_ENV !== 'production') {
446
+ realContext.displayName = 'ReactRedux';
447
+ }
448
+
449
+ contextMap.set(React__namespace.createContext, realContext);
450
+ }
451
+
452
+ return realContext;
453
+ }
454
+
455
+ const ReactReduxContext = /*#__PURE__*/getContext();
456
+
457
+ /**
458
+ * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level
459
+ * hook that you should usually not need to call directly.
460
+ *
461
+ * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
462
+ * @returns {Function} A `useReduxContext` hook bound to the specified context.
463
+ */
464
+ function createReduxContextHook(context = ReactReduxContext) {
465
+ return function useReduxContext() {
466
+ const contextValue = React.useContext(context);
467
+
468
+ if (process.env.NODE_ENV !== 'production' && !contextValue) {
469
+ throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
470
+ }
471
+
472
+ return contextValue;
473
+ };
474
+ }
475
+ /**
476
+ * A hook to access the value of the `ReactReduxContext`. This is a low-level
477
+ * hook that you should usually not need to call directly.
478
+ *
479
+ * @returns {any} the value of the `ReactReduxContext`
480
+ *
481
+ * @example
482
+ *
483
+ * import React from 'react'
484
+ * import { useReduxContext } from 'react-redux'
485
+ *
486
+ * export const CounterComponent = () => {
487
+ * const { store } = useReduxContext()
488
+ * return <div>{store.getState()}</div>
489
+ * }
490
+ */
491
+
492
+ const useReduxContext = /*#__PURE__*/createReduxContextHook();
493
+
494
+ const notInitialized = () => {
495
+ throw new Error('uSES not initialized!');
496
+ };
497
+
498
+ let useSyncExternalStoreWithSelector = notInitialized;
499
+ const initializeUseSelector = fn => {
500
+ useSyncExternalStoreWithSelector = fn;
501
+ };
502
+
503
+ const refEquality = (a, b) => a === b;
504
+ /**
505
+ * Hook factory, which creates a `useSelector` hook bound to a given context.
506
+ *
507
+ * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
508
+ * @returns {Function} A `useSelector` hook bound to the specified context.
509
+ */
510
+
511
+
512
+ function createSelectorHook(context = ReactReduxContext) {
513
+ const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);
514
+ return function useSelector(selector, equalityFnOrOptions = {}) {
515
+ const {
516
+ equalityFn = refEquality,
517
+ stabilityCheck = undefined,
518
+ noopCheck = undefined
519
+ } = typeof equalityFnOrOptions === 'function' ? {
520
+ equalityFn: equalityFnOrOptions
521
+ } : equalityFnOrOptions;
522
+
523
+ if (process.env.NODE_ENV !== 'production') {
524
+ if (!selector) {
525
+ throw new Error(`You must pass a selector to useSelector`);
526
+ }
527
+
528
+ if (typeof selector !== 'function') {
529
+ throw new Error(`You must pass a function as a selector to useSelector`);
530
+ }
531
+
532
+ if (typeof equalityFn !== 'function') {
533
+ throw new Error(`You must pass a function as an equality function to useSelector`);
534
+ }
535
+ }
536
+
537
+ const {
538
+ store,
539
+ subscription,
540
+ getServerState,
541
+ stabilityCheck: globalStabilityCheck,
542
+ noopCheck: globalNoopCheck
543
+ } = useReduxContext$1();
544
+ const firstRun = React.useRef(true);
545
+ const wrappedSelector = React.useCallback({
546
+ [selector.name](state) {
547
+ const selected = selector(state);
548
+
549
+ if (process.env.NODE_ENV !== 'production') {
550
+ const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;
551
+
552
+ if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {
553
+ const toCompare = selector(state);
554
+
555
+ if (!equalityFn(selected, toCompare)) {
556
+ let stack = undefined;
557
+
558
+ try {
559
+ throw new Error();
560
+ } catch (e) {
561
+ ({
562
+ stack
563
+ } = e);
564
+ }
565
+
566
+ 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', {
567
+ state,
568
+ selected,
569
+ selected2: toCompare,
570
+ stack
571
+ });
572
+ }
573
+ }
574
+
575
+ const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;
576
+
577
+ if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {
578
+ // @ts-ignore
579
+ if (selected === state) {
580
+ let stack = undefined;
581
+
582
+ try {
583
+ throw new Error();
584
+ } catch (e) {
585
+ ({
586
+ stack
587
+ } = e);
588
+ }
589
+
590
+ 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.', {
591
+ stack
592
+ });
593
+ }
594
+ }
595
+
596
+ if (firstRun.current) firstRun.current = false;
597
+ }
598
+
599
+ return selected;
600
+ }
601
+
602
+ }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);
603
+ const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);
604
+ React.useDebugValue(selectedState);
605
+ return selectedState;
606
+ };
607
+ }
608
+ /**
609
+ * A hook to access the redux store's state. This hook takes a selector function
610
+ * as an argument. The selector is called with the store state.
611
+ *
612
+ * This hook takes an optional equality comparison function as the second parameter
613
+ * that allows you to customize the way the selected state is compared to determine
614
+ * whether the component needs to be re-rendered.
615
+ *
616
+ * @param {Function} selector the selector function
617
+ * @param {Function=} equalityFn the function that will be used to determine equality
618
+ *
619
+ * @returns {any} the selected state
620
+ *
621
+ * @example
622
+ *
623
+ * import React from 'react'
624
+ * import { useSelector } from 'react-redux'
625
+ *
626
+ * export const CounterComponent = () => {
627
+ * const counter = useSelector(state => state.counter)
628
+ * return <div>{counter}</div>
629
+ * }
630
+ */
631
+
632
+ const useSelector = /*#__PURE__*/createSelectorHook();
633
+
634
+ var reactIs$1 = {exports: {}};
635
+
636
+ var reactIs_production_min$1 = {};
637
+
638
+ /** @license React v16.13.1
639
+ * react-is.production.min.js
640
+ *
641
+ * Copyright (c) Facebook, Inc. and its affiliates.
642
+ *
643
+ * This source code is licensed under the MIT license found in the
644
+ * LICENSE file in the root directory of this source tree.
645
+ */
646
+
647
+ var hasRequiredReactIs_production_min$1;
648
+
649
+ function requireReactIs_production_min$1 () {
650
+ if (hasRequiredReactIs_production_min$1) return reactIs_production_min$1;
651
+ hasRequiredReactIs_production_min$1 = 1;
652
+ var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?
653
+ Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119;
654
+ function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}reactIs_production_min$1.AsyncMode=l;reactIs_production_min$1.ConcurrentMode=m;reactIs_production_min$1.ContextConsumer=k;reactIs_production_min$1.ContextProvider=h;reactIs_production_min$1.Element=c;reactIs_production_min$1.ForwardRef=n;reactIs_production_min$1.Fragment=e;reactIs_production_min$1.Lazy=t;reactIs_production_min$1.Memo=r;reactIs_production_min$1.Portal=d;
655
+ reactIs_production_min$1.Profiler=g;reactIs_production_min$1.StrictMode=f;reactIs_production_min$1.Suspense=p;reactIs_production_min$1.isAsyncMode=function(a){return A(a)||z(a)===l};reactIs_production_min$1.isConcurrentMode=A;reactIs_production_min$1.isContextConsumer=function(a){return z(a)===k};reactIs_production_min$1.isContextProvider=function(a){return z(a)===h};reactIs_production_min$1.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};reactIs_production_min$1.isForwardRef=function(a){return z(a)===n};reactIs_production_min$1.isFragment=function(a){return z(a)===e};reactIs_production_min$1.isLazy=function(a){return z(a)===t};
656
+ reactIs_production_min$1.isMemo=function(a){return z(a)===r};reactIs_production_min$1.isPortal=function(a){return z(a)===d};reactIs_production_min$1.isProfiler=function(a){return z(a)===g};reactIs_production_min$1.isStrictMode=function(a){return z(a)===f};reactIs_production_min$1.isSuspense=function(a){return z(a)===p};
657
+ reactIs_production_min$1.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};reactIs_production_min$1.typeOf=z;
658
+ return reactIs_production_min$1;
659
+ }
660
+
661
+ var reactIs_development$1 = {};
662
+
663
+ /** @license React v16.13.1
664
+ * react-is.development.js
665
+ *
666
+ * Copyright (c) Facebook, Inc. and its affiliates.
667
+ *
668
+ * This source code is licensed under the MIT license found in the
669
+ * LICENSE file in the root directory of this source tree.
670
+ */
671
+
672
+ var hasRequiredReactIs_development$1;
673
+
674
+ function requireReactIs_development$1 () {
675
+ if (hasRequiredReactIs_development$1) return reactIs_development$1;
676
+ hasRequiredReactIs_development$1 = 1;
677
+
678
+
679
+
680
+ if (process.env.NODE_ENV !== "production") {
681
+ (function() {
682
+
683
+ // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
684
+ // nor polyfill, then a plain number is used for performance.
685
+ var hasSymbol = typeof Symbol === 'function' && Symbol.for;
686
+ var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
687
+ var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
688
+ var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
689
+ var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
690
+ var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
691
+ var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
692
+ var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
693
+ // (unstable) APIs that have been removed. Can we remove the symbols?
694
+
695
+ var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
696
+ var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
697
+ var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
698
+ var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
699
+ var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
700
+ var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
701
+ var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
702
+ var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
703
+ var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
704
+ var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
705
+ var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
706
+
707
+ function isValidElementType(type) {
708
+ return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
709
+ 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);
710
+ }
711
+
712
+ function typeOf(object) {
713
+ if (typeof object === 'object' && object !== null) {
714
+ var $$typeof = object.$$typeof;
715
+
716
+ switch ($$typeof) {
717
+ case REACT_ELEMENT_TYPE:
718
+ var type = object.type;
719
+
720
+ switch (type) {
721
+ case REACT_ASYNC_MODE_TYPE:
722
+ case REACT_CONCURRENT_MODE_TYPE:
723
+ case REACT_FRAGMENT_TYPE:
724
+ case REACT_PROFILER_TYPE:
725
+ case REACT_STRICT_MODE_TYPE:
726
+ case REACT_SUSPENSE_TYPE:
727
+ return type;
728
+
729
+ default:
730
+ var $$typeofType = type && type.$$typeof;
731
+
732
+ switch ($$typeofType) {
733
+ case REACT_CONTEXT_TYPE:
734
+ case REACT_FORWARD_REF_TYPE:
735
+ case REACT_LAZY_TYPE:
736
+ case REACT_MEMO_TYPE:
737
+ case REACT_PROVIDER_TYPE:
738
+ return $$typeofType;
739
+
740
+ default:
741
+ return $$typeof;
742
+ }
743
+
744
+ }
745
+
746
+ case REACT_PORTAL_TYPE:
747
+ return $$typeof;
748
+ }
749
+ }
750
+
751
+ return undefined;
752
+ } // AsyncMode is deprecated along with isAsyncMode
753
+
754
+ var AsyncMode = REACT_ASYNC_MODE_TYPE;
755
+ var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
756
+ var ContextConsumer = REACT_CONTEXT_TYPE;
757
+ var ContextProvider = REACT_PROVIDER_TYPE;
758
+ var Element = REACT_ELEMENT_TYPE;
759
+ var ForwardRef = REACT_FORWARD_REF_TYPE;
760
+ var Fragment = REACT_FRAGMENT_TYPE;
761
+ var Lazy = REACT_LAZY_TYPE;
762
+ var Memo = REACT_MEMO_TYPE;
763
+ var Portal = REACT_PORTAL_TYPE;
764
+ var Profiler = REACT_PROFILER_TYPE;
765
+ var StrictMode = REACT_STRICT_MODE_TYPE;
766
+ var Suspense = REACT_SUSPENSE_TYPE;
767
+ var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
768
+
769
+ function isAsyncMode(object) {
770
+ {
771
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
772
+ hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
773
+
774
+ 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.');
775
+ }
776
+ }
777
+
778
+ return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
779
+ }
780
+ function isConcurrentMode(object) {
781
+ return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
782
+ }
783
+ function isContextConsumer(object) {
784
+ return typeOf(object) === REACT_CONTEXT_TYPE;
785
+ }
786
+ function isContextProvider(object) {
787
+ return typeOf(object) === REACT_PROVIDER_TYPE;
788
+ }
789
+ function isElement(object) {
790
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
791
+ }
792
+ function isForwardRef(object) {
793
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
794
+ }
795
+ function isFragment(object) {
796
+ return typeOf(object) === REACT_FRAGMENT_TYPE;
797
+ }
798
+ function isLazy(object) {
799
+ return typeOf(object) === REACT_LAZY_TYPE;
800
+ }
801
+ function isMemo(object) {
802
+ return typeOf(object) === REACT_MEMO_TYPE;
803
+ }
804
+ function isPortal(object) {
805
+ return typeOf(object) === REACT_PORTAL_TYPE;
806
+ }
807
+ function isProfiler(object) {
808
+ return typeOf(object) === REACT_PROFILER_TYPE;
809
+ }
810
+ function isStrictMode(object) {
811
+ return typeOf(object) === REACT_STRICT_MODE_TYPE;
812
+ }
813
+ function isSuspense(object) {
814
+ return typeOf(object) === REACT_SUSPENSE_TYPE;
815
+ }
816
+
817
+ reactIs_development$1.AsyncMode = AsyncMode;
818
+ reactIs_development$1.ConcurrentMode = ConcurrentMode;
819
+ reactIs_development$1.ContextConsumer = ContextConsumer;
820
+ reactIs_development$1.ContextProvider = ContextProvider;
821
+ reactIs_development$1.Element = Element;
822
+ reactIs_development$1.ForwardRef = ForwardRef;
823
+ reactIs_development$1.Fragment = Fragment;
824
+ reactIs_development$1.Lazy = Lazy;
825
+ reactIs_development$1.Memo = Memo;
826
+ reactIs_development$1.Portal = Portal;
827
+ reactIs_development$1.Profiler = Profiler;
828
+ reactIs_development$1.StrictMode = StrictMode;
829
+ reactIs_development$1.Suspense = Suspense;
830
+ reactIs_development$1.isAsyncMode = isAsyncMode;
831
+ reactIs_development$1.isConcurrentMode = isConcurrentMode;
832
+ reactIs_development$1.isContextConsumer = isContextConsumer;
833
+ reactIs_development$1.isContextProvider = isContextProvider;
834
+ reactIs_development$1.isElement = isElement;
835
+ reactIs_development$1.isForwardRef = isForwardRef;
836
+ reactIs_development$1.isFragment = isFragment;
837
+ reactIs_development$1.isLazy = isLazy;
838
+ reactIs_development$1.isMemo = isMemo;
839
+ reactIs_development$1.isPortal = isPortal;
840
+ reactIs_development$1.isProfiler = isProfiler;
841
+ reactIs_development$1.isStrictMode = isStrictMode;
842
+ reactIs_development$1.isSuspense = isSuspense;
843
+ reactIs_development$1.isValidElementType = isValidElementType;
844
+ reactIs_development$1.typeOf = typeOf;
845
+ })();
846
+ }
847
+ return reactIs_development$1;
848
+ }
849
+
850
+ if (process.env.NODE_ENV === 'production') {
851
+ reactIs$1.exports = requireReactIs_production_min$1();
852
+ } else {
853
+ reactIs$1.exports = requireReactIs_development$1();
854
+ }
855
+
856
+ var reactIsExports = reactIs$1.exports;
857
+
858
+ var reactIs = reactIsExports;
859
+ var FORWARD_REF_STATICS = {
860
+ '$$typeof': true,
861
+ render: true,
862
+ defaultProps: true,
863
+ displayName: true,
864
+ propTypes: true
865
+ };
866
+ var MEMO_STATICS = {
867
+ '$$typeof': true,
868
+ compare: true,
869
+ defaultProps: true,
870
+ displayName: true,
871
+ propTypes: true,
872
+ type: true
873
+ };
874
+ var TYPE_STATICS = {};
875
+ TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
876
+ TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
877
+
878
+ var reactIs_production_min = {};
879
+
880
+ /**
881
+ * @license React
882
+ * react-is.production.min.js
883
+ *
884
+ * Copyright (c) Facebook, Inc. and its affiliates.
885
+ *
886
+ * This source code is licensed under the MIT license found in the
887
+ * LICENSE file in the root directory of this source tree.
888
+ */
889
+
890
+ var hasRequiredReactIs_production_min;
891
+
892
+ function requireReactIs_production_min () {
893
+ if (hasRequiredReactIs_production_min) return reactIs_production_min;
894
+ hasRequiredReactIs_production_min = 1;
895
+ var b=Symbol.for("react.element"),c=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),g=Symbol.for("react.provider"),h=Symbol.for("react.context"),k=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),n=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),t=Symbol.for("react.offscreen"),u;u=Symbol.for("react.module.reference");
896
+ function v(a){if("object"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}reactIs_production_min.ContextConsumer=h;reactIs_production_min.ContextProvider=g;reactIs_production_min.Element=b;reactIs_production_min.ForwardRef=l;reactIs_production_min.Fragment=d;reactIs_production_min.Lazy=q;reactIs_production_min.Memo=p;reactIs_production_min.Portal=c;reactIs_production_min.Profiler=f;reactIs_production_min.StrictMode=e;reactIs_production_min.Suspense=m;
897
+ reactIs_production_min.SuspenseList=n;reactIs_production_min.isAsyncMode=function(){return false};reactIs_production_min.isConcurrentMode=function(){return false};reactIs_production_min.isContextConsumer=function(a){return v(a)===h};reactIs_production_min.isContextProvider=function(a){return v(a)===g};reactIs_production_min.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===b};reactIs_production_min.isForwardRef=function(a){return v(a)===l};reactIs_production_min.isFragment=function(a){return v(a)===d};reactIs_production_min.isLazy=function(a){return v(a)===q};reactIs_production_min.isMemo=function(a){return v(a)===p};
898
+ reactIs_production_min.isPortal=function(a){return v(a)===c};reactIs_production_min.isProfiler=function(a){return v(a)===f};reactIs_production_min.isStrictMode=function(a){return v(a)===e};reactIs_production_min.isSuspense=function(a){return v(a)===m};reactIs_production_min.isSuspenseList=function(a){return v(a)===n};
899
+ reactIs_production_min.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||"object"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?true:false};reactIs_production_min.typeOf=v;
900
+ return reactIs_production_min;
901
+ }
902
+
903
+ var reactIs_development = {};
904
+
905
+ /**
906
+ * @license React
907
+ * react-is.development.js
908
+ *
909
+ * Copyright (c) Facebook, Inc. and its affiliates.
910
+ *
911
+ * This source code is licensed under the MIT license found in the
912
+ * LICENSE file in the root directory of this source tree.
913
+ */
914
+
915
+ var hasRequiredReactIs_development;
916
+
917
+ function requireReactIs_development () {
918
+ if (hasRequiredReactIs_development) return reactIs_development;
919
+ hasRequiredReactIs_development = 1;
920
+
921
+ if (process.env.NODE_ENV !== "production") {
922
+ (function() {
923
+
924
+ // ATTENTION
925
+ // When adding new symbols to this file,
926
+ // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
927
+ // The Symbol used to tag the ReactElement-like types.
928
+ var REACT_ELEMENT_TYPE = Symbol.for('react.element');
929
+ var REACT_PORTAL_TYPE = Symbol.for('react.portal');
930
+ var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
931
+ var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
932
+ var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
933
+ var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
934
+ var REACT_CONTEXT_TYPE = Symbol.for('react.context');
935
+ var REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');
936
+ var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
937
+ var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
938
+ var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
939
+ var REACT_MEMO_TYPE = Symbol.for('react.memo');
940
+ var REACT_LAZY_TYPE = Symbol.for('react.lazy');
941
+ var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
942
+
943
+ // -----------------------------------------------------------------------------
944
+
945
+ var enableScopeAPI = false; // Experimental Create Event Handle API.
946
+ var enableCacheElement = false;
947
+ var enableTransitionTracing = false; // No known bugs, but needs performance testing
948
+
949
+ var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
950
+ // stuff. Intended to enable React core members to more easily debug scheduling
951
+ // issues in DEV builds.
952
+
953
+ var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
954
+
955
+ var REACT_MODULE_REFERENCE;
956
+
957
+ {
958
+ REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
959
+ }
960
+
961
+ function isValidElementType(type) {
962
+ if (typeof type === 'string' || typeof type === 'function') {
963
+ return true;
964
+ } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
965
+
966
+
967
+ 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 ) {
968
+ return true;
969
+ }
970
+
971
+ if (typeof type === 'object' && type !== null) {
972
+ 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
973
+ // types supported by any Flight configuration anywhere since
974
+ // we don't know which Flight build this will end up being used
975
+ // with.
976
+ type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
977
+ return true;
978
+ }
979
+ }
980
+
981
+ return false;
982
+ }
983
+
984
+ function typeOf(object) {
985
+ if (typeof object === 'object' && object !== null) {
986
+ var $$typeof = object.$$typeof;
987
+
988
+ switch ($$typeof) {
989
+ case REACT_ELEMENT_TYPE:
990
+ var type = object.type;
991
+
992
+ switch (type) {
993
+ case REACT_FRAGMENT_TYPE:
994
+ case REACT_PROFILER_TYPE:
995
+ case REACT_STRICT_MODE_TYPE:
996
+ case REACT_SUSPENSE_TYPE:
997
+ case REACT_SUSPENSE_LIST_TYPE:
998
+ return type;
999
+
1000
+ default:
1001
+ var $$typeofType = type && type.$$typeof;
1002
+
1003
+ switch ($$typeofType) {
1004
+ case REACT_SERVER_CONTEXT_TYPE:
1005
+ case REACT_CONTEXT_TYPE:
1006
+ case REACT_FORWARD_REF_TYPE:
1007
+ case REACT_LAZY_TYPE:
1008
+ case REACT_MEMO_TYPE:
1009
+ case REACT_PROVIDER_TYPE:
1010
+ return $$typeofType;
1011
+
1012
+ default:
1013
+ return $$typeof;
1014
+ }
1015
+
1016
+ }
1017
+
1018
+ case REACT_PORTAL_TYPE:
1019
+ return $$typeof;
1020
+ }
1021
+ }
1022
+
1023
+ return undefined;
1024
+ }
1025
+ var ContextConsumer = REACT_CONTEXT_TYPE;
1026
+ var ContextProvider = REACT_PROVIDER_TYPE;
1027
+ var Element = REACT_ELEMENT_TYPE;
1028
+ var ForwardRef = REACT_FORWARD_REF_TYPE;
1029
+ var Fragment = REACT_FRAGMENT_TYPE;
1030
+ var Lazy = REACT_LAZY_TYPE;
1031
+ var Memo = REACT_MEMO_TYPE;
1032
+ var Portal = REACT_PORTAL_TYPE;
1033
+ var Profiler = REACT_PROFILER_TYPE;
1034
+ var StrictMode = REACT_STRICT_MODE_TYPE;
1035
+ var Suspense = REACT_SUSPENSE_TYPE;
1036
+ var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
1037
+ var hasWarnedAboutDeprecatedIsAsyncMode = false;
1038
+ var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated
1039
+
1040
+ function isAsyncMode(object) {
1041
+ {
1042
+ if (!hasWarnedAboutDeprecatedIsAsyncMode) {
1043
+ hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
1044
+
1045
+ console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
1046
+ }
1047
+ }
1048
+
1049
+ return false;
1050
+ }
1051
+ function isConcurrentMode(object) {
1052
+ {
1053
+ if (!hasWarnedAboutDeprecatedIsConcurrentMode) {
1054
+ hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint
1055
+
1056
+ console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');
1057
+ }
1058
+ }
1059
+
1060
+ return false;
1061
+ }
1062
+ function isContextConsumer(object) {
1063
+ return typeOf(object) === REACT_CONTEXT_TYPE;
1064
+ }
1065
+ function isContextProvider(object) {
1066
+ return typeOf(object) === REACT_PROVIDER_TYPE;
1067
+ }
1068
+ function isElement(object) {
1069
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1070
+ }
1071
+ function isForwardRef(object) {
1072
+ return typeOf(object) === REACT_FORWARD_REF_TYPE;
1073
+ }
1074
+ function isFragment(object) {
1075
+ return typeOf(object) === REACT_FRAGMENT_TYPE;
1076
+ }
1077
+ function isLazy(object) {
1078
+ return typeOf(object) === REACT_LAZY_TYPE;
1079
+ }
1080
+ function isMemo(object) {
1081
+ return typeOf(object) === REACT_MEMO_TYPE;
1082
+ }
1083
+ function isPortal(object) {
1084
+ return typeOf(object) === REACT_PORTAL_TYPE;
1085
+ }
1086
+ function isProfiler(object) {
1087
+ return typeOf(object) === REACT_PROFILER_TYPE;
1088
+ }
1089
+ function isStrictMode(object) {
1090
+ return typeOf(object) === REACT_STRICT_MODE_TYPE;
1091
+ }
1092
+ function isSuspense(object) {
1093
+ return typeOf(object) === REACT_SUSPENSE_TYPE;
1094
+ }
1095
+ function isSuspenseList(object) {
1096
+ return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
1097
+ }
1098
+
1099
+ reactIs_development.ContextConsumer = ContextConsumer;
1100
+ reactIs_development.ContextProvider = ContextProvider;
1101
+ reactIs_development.Element = Element;
1102
+ reactIs_development.ForwardRef = ForwardRef;
1103
+ reactIs_development.Fragment = Fragment;
1104
+ reactIs_development.Lazy = Lazy;
1105
+ reactIs_development.Memo = Memo;
1106
+ reactIs_development.Portal = Portal;
1107
+ reactIs_development.Profiler = Profiler;
1108
+ reactIs_development.StrictMode = StrictMode;
1109
+ reactIs_development.Suspense = Suspense;
1110
+ reactIs_development.SuspenseList = SuspenseList;
1111
+ reactIs_development.isAsyncMode = isAsyncMode;
1112
+ reactIs_development.isConcurrentMode = isConcurrentMode;
1113
+ reactIs_development.isContextConsumer = isContextConsumer;
1114
+ reactIs_development.isContextProvider = isContextProvider;
1115
+ reactIs_development.isElement = isElement;
1116
+ reactIs_development.isForwardRef = isForwardRef;
1117
+ reactIs_development.isFragment = isFragment;
1118
+ reactIs_development.isLazy = isLazy;
1119
+ reactIs_development.isMemo = isMemo;
1120
+ reactIs_development.isPortal = isPortal;
1121
+ reactIs_development.isProfiler = isProfiler;
1122
+ reactIs_development.isStrictMode = isStrictMode;
1123
+ reactIs_development.isSuspense = isSuspense;
1124
+ reactIs_development.isSuspenseList = isSuspenseList;
1125
+ reactIs_development.isValidElementType = isValidElementType;
1126
+ reactIs_development.typeOf = typeOf;
1127
+ })();
1128
+ }
1129
+ return reactIs_development;
1130
+ }
1131
+
1132
+ if (process.env.NODE_ENV === 'production') {
1133
+ requireReactIs_production_min();
1134
+ } else {
1135
+ requireReactIs_development();
1136
+ }
1137
+
1138
+ /**
1139
+ * Hook factory, which creates a `useStore` hook bound to a given context.
1140
+ *
1141
+ * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
1142
+ * @returns {Function} A `useStore` hook bound to the specified context.
1143
+ */
1144
+
1145
+ function createStoreHook(context = ReactReduxContext) {
1146
+ const useReduxContext$1 = // @ts-ignore
1147
+ context === ReactReduxContext ? useReduxContext : // @ts-ignore
1148
+ createReduxContextHook(context);
1149
+ return function useStore() {
1150
+ const {
1151
+ store
1152
+ } = useReduxContext$1(); // @ts-ignore
1153
+
1154
+ return store;
1155
+ };
1156
+ }
1157
+ /**
1158
+ * A hook to access the redux store.
1159
+ *
1160
+ * @returns {any} the redux store
1161
+ *
1162
+ * @example
1163
+ *
1164
+ * import React from 'react'
1165
+ * import { useStore } from 'react-redux'
1166
+ *
1167
+ * export const ExampleComponent = () => {
1168
+ * const store = useStore()
1169
+ * return <div>{store.getState()}</div>
1170
+ * }
1171
+ */
1172
+
1173
+ const useStore = /*#__PURE__*/createStoreHook();
1174
+
1175
+ /**
1176
+ * Hook factory, which creates a `useDispatch` hook bound to a given context.
1177
+ *
1178
+ * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
1179
+ * @returns {Function} A `useDispatch` hook bound to the specified context.
1180
+ */
1181
+
1182
+ function createDispatchHook(context = ReactReduxContext) {
1183
+ const useStore$1 = // @ts-ignore
1184
+ context === ReactReduxContext ? useStore : createStoreHook(context);
1185
+ return function useDispatch() {
1186
+ const store = useStore$1(); // @ts-ignore
1187
+
1188
+ return store.dispatch;
1189
+ };
1190
+ }
1191
+ /**
1192
+ * A hook to access the redux `dispatch` function.
1193
+ *
1194
+ * @returns {any|function} redux store's `dispatch` function
1195
+ *
1196
+ * @example
1197
+ *
1198
+ * import React, { useCallback } from 'react'
1199
+ * import { useDispatch } from 'react-redux'
1200
+ *
1201
+ * export const CounterComponent = ({ value }) => {
1202
+ * const dispatch = useDispatch()
1203
+ * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])
1204
+ * return (
1205
+ * <div>
1206
+ * <span>{value}</span>
1207
+ * <button onClick={increaseCounter}>Increase counter</button>
1208
+ * </div>
1209
+ * )
1210
+ * }
1211
+ */
1212
+
1213
+ const useDispatch = /*#__PURE__*/createDispatchHook();
1214
+
1215
+ // The primary entry point assumes we're working with standard ReactDOM/RN, but
1216
+ // older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).
1217
+ // Because of that, the useSyncExternalStore compat shim is needed.
1218
+ initializeUseSelector(withSelectorExports.useSyncExternalStoreWithSelector);
1219
+
1220
+ function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if("production"!==process.env.NODE_ENV){var i=Y[n],o=i?"function"==typeof i?i.apply(null,t):i:"unknown error nr: "+n;throw Error("[Immer] "+o)}throw Error("[Immer] minified error nr: "+n+(t.length?" "+t.map((function(n){return "'"+n+"'"})).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function r(n){return !!n&&!!n[Q]}function t(n){var r;return !!n&&(function(n){if(!n||"object"!=typeof n)return false;var r=Object.getPrototypeOf(n);if(null===r)return true;var t=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return t===Object||"function"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function i(n,r,t){ void 0===t&&(t=false),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&"symbol"==typeof e||r(e,n[e],n);})):n.forEach((function(t,e){return r(e,t,n)}));}function o(n){var r=n[Q];return r?r.i>3?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;e<t.length;e++){var i=t[e],o=r[i];false===o.writable&&(o.writable=true,o.configurable=true),(o.get||o.set)&&(r[i]={configurable:true,writable:true,enumerable:o.enumerable,value:n[i]});}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=false),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,true)}),true)),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 "production"===process.env.NODE_ENV||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:true,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=true;}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)}),true),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,true),e.t;if(!e.I){e.I=true,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=false;3===e.i&&(u=new Set(o),o.clear(),a=true),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,false),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("production"!==process.env.NODE_ENV&&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=false;}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=false),!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=true,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:false,I:false,R:{},l:r,t:n,k:null,o:null,j:null,C:false},i=e,o=en;t&&(i=[e],o=on$1);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=true,e=D(r,c),u.I=false;}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:true,enumerable:r,get:function(){var r=this[Q];return "production"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];"production"!==process.env.NODE_ENV&&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 true;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return true}}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 true;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return true;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return true;return false}function f(r){r.g&&n(3,JSON.stringify(p(r)));}var s={};m("ES5",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,""+i,t(i,true));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable);}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:false,I:false,R:{},l:r,t:n,k:i,o:null,g:false,C:false};return Object.defineProperty(i,Q,{value:o,writable:true}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&"object"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=true,k(t)));})),i(e,(function(n){ void 0!==o[n]||u(o,n)||(f[n]=false,k(t));}));else if(5===c){if(a(t)&&(k(t),f.length=true),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=false;else for(var v=e.length;v<o.length;v++)f[v]=true;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=true),void 0===f[l]&&n(o[l]);}}}}(n.p[0]),e(n.p));},K:function(n){return 4===n.i?o(n):a(n)}});}var G,U,W="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),X="undefined"!=typeof Map,q="undefined"!=typeof Set,B="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=W?Symbol.for("immer-nothing"):((G={})["immer-nothing"]=true,G),L=W?Symbol.for("immer-draftable"):"__$immer_draftable",Q=W?Symbol.for("immer-state"):"__$immer_state",Y={0:"Illegal state",1:"Immer drafts cannot have computed properties",2:"This object has been frozen and should not be mutated",3:function(n){return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+n},4:"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",5:"Immer forbids circular references",6:"The first or second argument to `produce` must be a function",7:"The third argument to `produce` must be a function or undefined",8:"First argument to `createDraft` must be a plain object, an array, or an immerable object",9:"First argument to `finishDraft` must be a draft returned by `createDraft`",10:"The given draft is already finalized",11:"Object.defineProperty() cannot be used on an Immer draft",12:"Object.setPrototypeOf() cannot be used on an Immer draft",13:"Immer only supports deleting array indices",14:"Immer only supports setting array indices and the 'length' property",15:function(n){return "Cannot apply patch, path doesn't resolve: "+n},16:'Sets cannot have "replace" patches.',17:function(n){return "Unsupported patch operation: "+n},18:function(n){return "The plugin for '"+n+"' has not been loaded into Immer. To enable the plugin, import and call `enable"+n+"()` when initializing your application."},20:"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",21:function(n){return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '"+n+"'"},22:function(n){return "'current' expects a draft, got: "+n},23:function(n){return "'original' expects a draft, got: "+n},24:"Patching reserved attributes like __proto__, prototype and constructor is not allowed"},Z=""+Object.prototype.constructor,nn="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t);})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?"value"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),true;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=false,true;if(c(t,i)&&(void 0!==t||u(n.t,r)))return true;E(n),k(n);}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=true),true},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=false,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],true},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:true,configurable:1!==n.i||"length"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11);},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12);}},on$1={};i(en,(function(n,r){on$1[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)};})),on$1.deleteProperty=function(r,t){return "production"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on$1.set.call(this,r,t,void 0)},on$1.set=function(r,t,e){return "production"!==process.env.NODE_ENV&&"length"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=true,this.produce=function(r,i,o){if("function"==typeof r&&"function"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return (t=i).call.apply(t,[r,n].concat(e))}))}}var f;if("function"!=typeof i&&n(6),void 0!==o&&"function"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=true;try{f=i(s),v=!1;}finally{v?g(c):O(c);}return "undefined"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||"object"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,true),o){var p=[],l=[];b("Patches").M(r,f,p,l),o(p,l);}return f}n(21,r);},this.produceWithPatches=function(n,r){if("function"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r;}));return "undefined"!=typeof Promise&&o instanceof Promise?o.then((function(n){return [n,t,i]})):[o,t,i]},"boolean"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),"boolean"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze);}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=true,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];"production"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n;},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r;},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=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;an.produceWithPatches.bind(an);an.setAutoFreeze.bind(an);an.setUseProxies.bind(an);an.applyPatches.bind(an);an.createDraft.bind(an);an.finishDraft.bind(an);
1221
+
1222
+ var __extends = (undefined && undefined.__extends) || (function () {
1223
+ var extendStatics = function (d, b) {
1224
+ extendStatics = Object.setPrototypeOf ||
1225
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1226
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
1227
+ return extendStatics(d, b);
1228
+ };
1229
+ return function (d, b) {
1230
+ if (typeof b !== "function" && b !== null)
1231
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1232
+ extendStatics(d, b);
1233
+ function __() { this.constructor = d; }
1234
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1235
+ };
1236
+ })();
1237
+ var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
1238
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1239
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1240
+ function verb(n) { return function (v) { return step([n, v]); }; }
1241
+ function step(op) {
1242
+ if (f) throw new TypeError("Generator is already executing.");
1243
+ while (_) try {
1244
+ 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;
1245
+ if (y = 0, t) op = [op[0] & 2, t.value];
1246
+ switch (op[0]) {
1247
+ case 0: case 1: t = op; break;
1248
+ case 4: _.label++; return { value: op[1], done: false };
1249
+ case 5: _.label++; y = op[1]; op = [0]; continue;
1250
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
1251
+ default:
1252
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1253
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1254
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1255
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1256
+ if (t[2]) _.ops.pop();
1257
+ _.trys.pop(); continue;
1258
+ }
1259
+ op = body.call(thisArg, _);
1260
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1261
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1262
+ }
1263
+ };
1264
+ var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) {
1265
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
1266
+ to[j] = from[i];
1267
+ return to;
1268
+ };
1269
+ var __defProp = Object.defineProperty;
1270
+ var __defProps = Object.defineProperties;
1271
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
1272
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
1273
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
1274
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
1275
+ var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };
1276
+ var __spreadValues = function (a, b) {
1277
+ for (var prop in b || (b = {}))
1278
+ if (__hasOwnProp.call(b, prop))
1279
+ __defNormalProp(a, prop, b[prop]);
1280
+ if (__getOwnPropSymbols)
1281
+ for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {
1282
+ var prop = _c[_i];
1283
+ if (__propIsEnum.call(b, prop))
1284
+ __defNormalProp(a, prop, b[prop]);
1285
+ }
1286
+ return a;
1287
+ };
1288
+ var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };
1289
+ var __async = function (__this, __arguments, generator) {
1290
+ return new Promise(function (resolve, reject) {
1291
+ var fulfilled = function (value) {
1292
+ try {
1293
+ step(generator.next(value));
1294
+ }
1295
+ catch (e) {
1296
+ reject(e);
1297
+ }
1298
+ };
1299
+ var rejected = function (value) {
1300
+ try {
1301
+ step(generator.throw(value));
1302
+ }
1303
+ catch (e) {
1304
+ reject(e);
1305
+ }
1306
+ };
1307
+ var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };
1308
+ step((generator = generator.apply(__this, __arguments)).next());
1309
+ });
1310
+ };
1311
+ // src/createAction.ts
1312
+ function createAction(type, prepareAction) {
1313
+ function actionCreator() {
1314
+ var args = [];
1315
+ for (var _i = 0; _i < arguments.length; _i++) {
1316
+ args[_i] = arguments[_i];
1317
+ }
1318
+ if (prepareAction) {
1319
+ var prepared = prepareAction.apply(void 0, args);
1320
+ if (!prepared) {
1321
+ throw new Error("prepareAction did not return an object");
1322
+ }
1323
+ return __spreadValues(__spreadValues({
1324
+ type: type,
1325
+ payload: prepared.payload
1326
+ }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error });
1327
+ }
1328
+ return { type: type, payload: args[0] };
1329
+ }
1330
+ actionCreator.toString = function () { return "" + type; };
1331
+ actionCreator.type = type;
1332
+ actionCreator.match = function (action) { return action.type === type; };
1333
+ return actionCreator;
1334
+ }
1335
+ /** @class */ ((function (_super) {
1336
+ __extends(MiddlewareArray, _super);
1337
+ function MiddlewareArray() {
1338
+ var args = [];
1339
+ for (var _i = 0; _i < arguments.length; _i++) {
1340
+ args[_i] = arguments[_i];
1341
+ }
1342
+ var _this = _super.apply(this, args) || this;
1343
+ Object.setPrototypeOf(_this, MiddlewareArray.prototype);
1344
+ return _this;
1345
+ }
1346
+ Object.defineProperty(MiddlewareArray, Symbol.species, {
1347
+ get: function () {
1348
+ return MiddlewareArray;
1349
+ },
1350
+ enumerable: false,
1351
+ configurable: true
1352
+ });
1353
+ MiddlewareArray.prototype.concat = function () {
1354
+ var arr = [];
1355
+ for (var _i = 0; _i < arguments.length; _i++) {
1356
+ arr[_i] = arguments[_i];
1357
+ }
1358
+ return _super.prototype.concat.apply(this, arr);
1359
+ };
1360
+ MiddlewareArray.prototype.prepend = function () {
1361
+ var arr = [];
1362
+ for (var _i = 0; _i < arguments.length; _i++) {
1363
+ arr[_i] = arguments[_i];
1364
+ }
1365
+ if (arr.length === 1 && Array.isArray(arr[0])) {
1366
+ return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();
1367
+ }
1368
+ return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();
1369
+ };
1370
+ return MiddlewareArray;
1371
+ })(Array));
1372
+ /** @class */ ((function (_super) {
1373
+ __extends(EnhancerArray, _super);
1374
+ function EnhancerArray() {
1375
+ var args = [];
1376
+ for (var _i = 0; _i < arguments.length; _i++) {
1377
+ args[_i] = arguments[_i];
1378
+ }
1379
+ var _this = _super.apply(this, args) || this;
1380
+ Object.setPrototypeOf(_this, EnhancerArray.prototype);
1381
+ return _this;
1382
+ }
1383
+ Object.defineProperty(EnhancerArray, Symbol.species, {
1384
+ get: function () {
1385
+ return EnhancerArray;
1386
+ },
1387
+ enumerable: false,
1388
+ configurable: true
1389
+ });
1390
+ EnhancerArray.prototype.concat = function () {
1391
+ var arr = [];
1392
+ for (var _i = 0; _i < arguments.length; _i++) {
1393
+ arr[_i] = arguments[_i];
1394
+ }
1395
+ return _super.prototype.concat.apply(this, arr);
1396
+ };
1397
+ EnhancerArray.prototype.prepend = function () {
1398
+ var arr = [];
1399
+ for (var _i = 0; _i < arguments.length; _i++) {
1400
+ arr[_i] = arguments[_i];
1401
+ }
1402
+ if (arr.length === 1 && Array.isArray(arr[0])) {
1403
+ return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))();
1404
+ }
1405
+ return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))();
1406
+ };
1407
+ return EnhancerArray;
1408
+ })(Array));
1409
+ function freezeDraftable(val) {
1410
+ return t(val) ? fn(val, function () {
1411
+ }) : val;
1412
+ }
1413
+ // src/immutableStateInvariantMiddleware.ts
1414
+ process.env.NODE_ENV === "production";
1415
+ // src/configureStore.ts
1416
+ process.env.NODE_ENV === "production";
1417
+ // src/mapBuilders.ts
1418
+ function executeReducerBuilderCallback(builderCallback) {
1419
+ var actionsMap = {};
1420
+ var actionMatchers = [];
1421
+ var defaultCaseReducer;
1422
+ var builder = {
1423
+ addCase: function (typeOrActionCreator, reducer) {
1424
+ if (process.env.NODE_ENV !== "production") {
1425
+ if (actionMatchers.length > 0) {
1426
+ throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");
1427
+ }
1428
+ if (defaultCaseReducer) {
1429
+ throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");
1430
+ }
1431
+ }
1432
+ var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type;
1433
+ if (!type) {
1434
+ throw new Error("`builder.addCase` cannot be called with an empty action type");
1435
+ }
1436
+ if (type in actionsMap) {
1437
+ throw new Error("`builder.addCase` cannot be called with two reducers for the same action type");
1438
+ }
1439
+ actionsMap[type] = reducer;
1440
+ return builder;
1441
+ },
1442
+ addMatcher: function (matcher, reducer) {
1443
+ if (process.env.NODE_ENV !== "production") {
1444
+ if (defaultCaseReducer) {
1445
+ throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");
1446
+ }
1447
+ }
1448
+ actionMatchers.push({ matcher: matcher, reducer: reducer });
1449
+ return builder;
1450
+ },
1451
+ addDefaultCase: function (reducer) {
1452
+ if (process.env.NODE_ENV !== "production") {
1453
+ if (defaultCaseReducer) {
1454
+ throw new Error("`builder.addDefaultCase` can only be called once");
1455
+ }
1456
+ }
1457
+ defaultCaseReducer = reducer;
1458
+ return builder;
1459
+ }
1460
+ };
1461
+ builderCallback(builder);
1462
+ return [actionsMap, actionMatchers, defaultCaseReducer];
1463
+ }
1464
+ // src/createReducer.ts
1465
+ function isStateFunction(x) {
1466
+ return typeof x === "function";
1467
+ }
1468
+ var hasWarnedAboutObjectNotation = false;
1469
+ function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {
1470
+ if (actionMatchers === void 0) { actionMatchers = []; }
1471
+ if (process.env.NODE_ENV !== "production") {
1472
+ if (typeof mapOrBuilderCallback === "object") {
1473
+ if (!hasWarnedAboutObjectNotation) {
1474
+ hasWarnedAboutObjectNotation = true;
1475
+ 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");
1476
+ }
1477
+ }
1478
+ }
1479
+ var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];
1480
+ var getInitialState;
1481
+ if (isStateFunction(initialState)) {
1482
+ getInitialState = function () { return freezeDraftable(initialState()); };
1483
+ }
1484
+ else {
1485
+ var frozenInitialState_1 = freezeDraftable(initialState);
1486
+ getInitialState = function () { return frozenInitialState_1; };
1487
+ }
1488
+ function reducer(state, action) {
1489
+ if (state === void 0) { state = getInitialState(); }
1490
+ var caseReducers = __spreadArray([
1491
+ actionsMap[action.type]
1492
+ ], finalActionMatchers.filter(function (_c) {
1493
+ var matcher = _c.matcher;
1494
+ return matcher(action);
1495
+ }).map(function (_c) {
1496
+ var reducer2 = _c.reducer;
1497
+ return reducer2;
1498
+ }));
1499
+ if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {
1500
+ caseReducers = [finalDefaultCaseReducer];
1501
+ }
1502
+ return caseReducers.reduce(function (previousState, caseReducer) {
1503
+ if (caseReducer) {
1504
+ if (r(previousState)) {
1505
+ var draft = previousState;
1506
+ var result = caseReducer(draft, action);
1507
+ if (result === void 0) {
1508
+ return previousState;
1509
+ }
1510
+ return result;
1511
+ }
1512
+ else if (!t(previousState)) {
1513
+ var result = caseReducer(previousState, action);
1514
+ if (result === void 0) {
1515
+ if (previousState === null) {
1516
+ return previousState;
1517
+ }
1518
+ throw Error("A case reducer on a non-draftable value must not return undefined");
1519
+ }
1520
+ return result;
1521
+ }
1522
+ else {
1523
+ return fn(previousState, function (draft) {
1524
+ return caseReducer(draft, action);
1525
+ });
1526
+ }
1527
+ }
1528
+ return previousState;
1529
+ }, state);
1530
+ }
1531
+ reducer.getInitialState = getInitialState;
1532
+ return reducer;
1533
+ }
1534
+ // src/createSlice.ts
1535
+ var hasWarnedAboutObjectNotation2 = false;
1536
+ function getType2(slice, actionKey) {
1537
+ return slice + "/" + actionKey;
1538
+ }
1539
+ function createSlice(options) {
1540
+ var name = options.name;
1541
+ if (!name) {
1542
+ throw new Error("`name` is a required option for createSlice");
1543
+ }
1544
+ if (typeof process !== "undefined" && process.env.NODE_ENV === "development") {
1545
+ if (options.initialState === void 0) {
1546
+ console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`");
1547
+ }
1548
+ }
1549
+ var initialState = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState);
1550
+ var reducers = options.reducers || {};
1551
+ var reducerNames = Object.keys(reducers);
1552
+ var sliceCaseReducersByName = {};
1553
+ var sliceCaseReducersByType = {};
1554
+ var actionCreators = {};
1555
+ reducerNames.forEach(function (reducerName) {
1556
+ var maybeReducerWithPrepare = reducers[reducerName];
1557
+ var type = getType2(name, reducerName);
1558
+ var caseReducer;
1559
+ var prepareCallback;
1560
+ if ("reducer" in maybeReducerWithPrepare) {
1561
+ caseReducer = maybeReducerWithPrepare.reducer;
1562
+ prepareCallback = maybeReducerWithPrepare.prepare;
1563
+ }
1564
+ else {
1565
+ caseReducer = maybeReducerWithPrepare;
1566
+ }
1567
+ sliceCaseReducersByName[reducerName] = caseReducer;
1568
+ sliceCaseReducersByType[type] = caseReducer;
1569
+ actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);
1570
+ });
1571
+ function buildReducer() {
1572
+ if (process.env.NODE_ENV !== "production") {
1573
+ if (typeof options.extraReducers === "object") {
1574
+ if (!hasWarnedAboutObjectNotation2) {
1575
+ hasWarnedAboutObjectNotation2 = true;
1576
+ 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");
1577
+ }
1578
+ }
1579
+ }
1580
+ 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;
1581
+ var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);
1582
+ return createReducer(initialState, function (builder) {
1583
+ for (var key in finalCaseReducers) {
1584
+ builder.addCase(key, finalCaseReducers[key]);
1585
+ }
1586
+ for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {
1587
+ var m = actionMatchers_1[_i];
1588
+ builder.addMatcher(m.matcher, m.reducer);
1589
+ }
1590
+ if (defaultCaseReducer) {
1591
+ builder.addDefaultCase(defaultCaseReducer);
1592
+ }
1593
+ });
1594
+ }
1595
+ var _reducer;
1596
+ return {
1597
+ name: name,
1598
+ reducer: function (state, action) {
1599
+ if (!_reducer)
1600
+ _reducer = buildReducer();
1601
+ return _reducer(state, action);
1602
+ },
1603
+ actions: actionCreators,
1604
+ caseReducers: sliceCaseReducersByName,
1605
+ getInitialState: function () {
1606
+ if (!_reducer)
1607
+ _reducer = buildReducer();
1608
+ return _reducer.getInitialState();
1609
+ }
1610
+ };
1611
+ }
1612
+ // src/nanoid.ts
1613
+ var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW";
1614
+ var nanoid = function (size) {
1615
+ if (size === void 0) { size = 21; }
1616
+ var id = "";
1617
+ var i = size;
1618
+ while (i--) {
1619
+ id += urlAlphabet[Math.random() * 64 | 0];
1620
+ }
1621
+ return id;
1622
+ };
1623
+ // src/createAsyncThunk.ts
1624
+ var commonProperties = [
1625
+ "name",
1626
+ "message",
1627
+ "stack",
1628
+ "code"
1629
+ ];
1630
+ var RejectWithValue = /** @class */ (function () {
1631
+ function RejectWithValue(payload, meta) {
1632
+ this.payload = payload;
1633
+ this.meta = meta;
1634
+ }
1635
+ return RejectWithValue;
1636
+ }());
1637
+ var FulfillWithMeta = /** @class */ (function () {
1638
+ function FulfillWithMeta(payload, meta) {
1639
+ this.payload = payload;
1640
+ this.meta = meta;
1641
+ }
1642
+ return FulfillWithMeta;
1643
+ }());
1644
+ var miniSerializeError = function (value) {
1645
+ if (typeof value === "object" && value !== null) {
1646
+ var simpleError = {};
1647
+ for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {
1648
+ var property = commonProperties_1[_i];
1649
+ if (typeof value[property] === "string") {
1650
+ simpleError[property] = value[property];
1651
+ }
1652
+ }
1653
+ return simpleError;
1654
+ }
1655
+ return { message: String(value) };
1656
+ };
1657
+ ((function () {
1658
+ function createAsyncThunk2(typePrefix, payloadCreator, options) {
1659
+ var fulfilled = createAction(typePrefix + "/fulfilled", function (payload, requestId, arg, meta) { return ({
1660
+ payload: payload,
1661
+ meta: __spreadProps(__spreadValues({}, meta || {}), {
1662
+ arg: arg,
1663
+ requestId: requestId,
1664
+ requestStatus: "fulfilled"
1665
+ })
1666
+ }); });
1667
+ var pending = createAction(typePrefix + "/pending", function (requestId, arg, meta) { return ({
1668
+ payload: void 0,
1669
+ meta: __spreadProps(__spreadValues({}, meta || {}), {
1670
+ arg: arg,
1671
+ requestId: requestId,
1672
+ requestStatus: "pending"
1673
+ })
1674
+ }); });
1675
+ var rejected = createAction(typePrefix + "/rejected", function (error, requestId, arg, payload, meta) { return ({
1676
+ payload: payload,
1677
+ error: (options && options.serializeError || miniSerializeError)(error || "Rejected"),
1678
+ meta: __spreadProps(__spreadValues({}, meta || {}), {
1679
+ arg: arg,
1680
+ requestId: requestId,
1681
+ rejectedWithValue: !!payload,
1682
+ requestStatus: "rejected",
1683
+ aborted: (error == null ? void 0 : error.name) === "AbortError",
1684
+ condition: (error == null ? void 0 : error.name) === "ConditionError"
1685
+ })
1686
+ }); });
1687
+ var displayedWarning = false;
1688
+ var AC = typeof AbortController !== "undefined" ? AbortController : /** @class */ (function () {
1689
+ function class_1() {
1690
+ this.signal = {
1691
+ aborted: false,
1692
+ addEventListener: function () {
1693
+ },
1694
+ dispatchEvent: function () {
1695
+ return false;
1696
+ },
1697
+ onabort: function () {
1698
+ },
1699
+ removeEventListener: function () {
1700
+ },
1701
+ reason: void 0,
1702
+ throwIfAborted: function () {
1703
+ }
1704
+ };
1705
+ }
1706
+ class_1.prototype.abort = function () {
1707
+ if (process.env.NODE_ENV !== "production") {
1708
+ if (!displayedWarning) {
1709
+ displayedWarning = true;
1710
+ 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'.");
1711
+ }
1712
+ }
1713
+ };
1714
+ return class_1;
1715
+ }());
1716
+ function actionCreator(arg) {
1717
+ return function (dispatch, getState, extra) {
1718
+ var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();
1719
+ var abortController = new AC();
1720
+ var abortReason;
1721
+ function abort(reason) {
1722
+ abortReason = reason;
1723
+ abortController.abort();
1724
+ }
1725
+ var promise2 = function () {
1726
+ return __async(this, null, function () {
1727
+ var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;
1728
+ return __generator(this, function (_c) {
1729
+ switch (_c.label) {
1730
+ case 0:
1731
+ _c.trys.push([0, 4, , 5]);
1732
+ conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });
1733
+ if (!isThenable(conditionResult)) return [3 /*break*/, 2];
1734
+ return [4 /*yield*/, conditionResult];
1735
+ case 1:
1736
+ conditionResult = _c.sent();
1737
+ _c.label = 2;
1738
+ case 2:
1739
+ if (conditionResult === false || abortController.signal.aborted) {
1740
+ throw {
1741
+ name: "ConditionError",
1742
+ message: "Aborted due to condition callback returning false."
1743
+ };
1744
+ }
1745
+ abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener("abort", function () { return reject({
1746
+ name: "AbortError",
1747
+ message: abortReason || "Aborted"
1748
+ }); }); });
1749
+ 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 })));
1750
+ return [4 /*yield*/, Promise.race([
1751
+ abortedPromise,
1752
+ Promise.resolve(payloadCreator(arg, {
1753
+ dispatch: dispatch,
1754
+ getState: getState,
1755
+ extra: extra,
1756
+ requestId: requestId,
1757
+ signal: abortController.signal,
1758
+ abort: abort,
1759
+ rejectWithValue: function (value, meta) {
1760
+ return new RejectWithValue(value, meta);
1761
+ },
1762
+ fulfillWithValue: function (value, meta) {
1763
+ return new FulfillWithMeta(value, meta);
1764
+ }
1765
+ })).then(function (result) {
1766
+ if (result instanceof RejectWithValue) {
1767
+ throw result;
1768
+ }
1769
+ if (result instanceof FulfillWithMeta) {
1770
+ return fulfilled(result.payload, requestId, arg, result.meta);
1771
+ }
1772
+ return fulfilled(result, requestId, arg);
1773
+ })
1774
+ ])];
1775
+ case 3:
1776
+ finalAction = _c.sent();
1777
+ return [3 /*break*/, 5];
1778
+ case 4:
1779
+ err_1 = _c.sent();
1780
+ finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);
1781
+ return [3 /*break*/, 5];
1782
+ case 5:
1783
+ skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;
1784
+ if (!skipDispatch) {
1785
+ dispatch(finalAction);
1786
+ }
1787
+ return [2 /*return*/, finalAction];
1788
+ }
1789
+ });
1790
+ });
1791
+ }();
1792
+ return Object.assign(promise2, {
1793
+ abort: abort,
1794
+ requestId: requestId,
1795
+ arg: arg,
1796
+ unwrap: function () {
1797
+ return promise2.then(unwrapResult);
1798
+ }
1799
+ });
1800
+ };
1801
+ }
1802
+ return Object.assign(actionCreator, {
1803
+ pending: pending,
1804
+ rejected: rejected,
1805
+ fulfilled: fulfilled,
1806
+ typePrefix: typePrefix
1807
+ });
1808
+ }
1809
+ createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };
1810
+ return createAsyncThunk2;
1811
+ }))();
1812
+ function unwrapResult(action) {
1813
+ if (action.meta && action.meta.rejectedWithValue) {
1814
+ throw action.payload;
1815
+ }
1816
+ if (action.error) {
1817
+ throw action.error;
1818
+ }
1819
+ return action.payload;
1820
+ }
1821
+ function isThenable(value) {
1822
+ return value !== null && typeof value === "object" && typeof value.then === "function";
1823
+ }
1824
+ var alm = "listenerMiddleware";
1825
+ createAction(alm + "/add");
1826
+ createAction(alm + "/removeAll");
1827
+ createAction(alm + "/remove");
1828
+ var promise;
1829
+ typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {
1830
+ throw err;
1831
+ }, 0); }); };
1832
+ // src/index.ts
1833
+ F();
1834
+
1835
+ const initialState$1 = {
1836
+ config: {},
1837
+ metrics: {},
1838
+ unlockedAchievements: [],
1839
+ storageKey: null,
1840
+ };
1841
+ const achievementSlice = createSlice({
1842
+ name: 'achievements',
1843
+ initialState: initialState$1,
1844
+ reducers: {
1845
+ initialize: (state, action) => {
1846
+ var _a, _b;
1847
+ state.config = action.payload.config;
1848
+ state.storageKey = action.payload.storageKey;
1849
+ const storedState = action.payload.storageKey ? localStorage.getItem(action.payload.storageKey) : null;
1850
+ if (storedState) {
1851
+ try {
1852
+ const parsedState = JSON.parse(storedState);
1853
+ state.metrics = ((_a = parsedState.achievements) === null || _a === void 0 ? void 0 : _a.metrics) || {};
1854
+ state.unlockedAchievements = ((_b = parsedState.achievements) === null || _b === void 0 ? void 0 : _b.unlockedAchievements) || [];
1855
+ }
1856
+ catch (error) {
1857
+ console.error('Error parsing stored achievement state:', error);
1858
+ state.metrics = action.payload.initialState ? Object.keys(action.payload.initialState).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: Array.isArray(action.payload.initialState[key]) ? action.payload.initialState[key] : [action.payload.initialState[key]] })), {}) : {};
1859
+ state.unlockedAchievements = [];
1860
+ }
1861
+ }
1862
+ else {
1863
+ state.metrics = action.payload.initialState ? Object.keys(action.payload.initialState).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: Array.isArray(action.payload.initialState[key]) ? action.payload.initialState[key] : [action.payload.initialState[key]] })), {}) : {};
1864
+ state.unlockedAchievements = [];
1865
+ }
1866
+ },
1867
+ setMetrics: (state, action) => {
1868
+ state.metrics = action.payload;
1869
+ if (state.storageKey) {
1870
+ localStorage.setItem(state.storageKey, JSON.stringify({ achievements: { metrics: state.metrics, unlockedAchievements: state.unlockedAchievements } }));
1871
+ }
1872
+ },
1873
+ unlockAchievement: (state, action) => {
1874
+ if (!state.unlockedAchievements.includes(action.payload)) {
1875
+ state.unlockedAchievements.push(action.payload);
1876
+ if (state.storageKey) {
1877
+ localStorage.setItem(state.storageKey, JSON.stringify({ achievements: { metrics: state.metrics, unlockedAchievements: state.unlockedAchievements } }));
1878
+ }
1879
+ }
1880
+ },
1881
+ resetAchievements: (state) => {
1882
+ state.metrics = {};
1883
+ state.unlockedAchievements = [];
1884
+ if (state.storageKey) {
1885
+ localStorage.removeItem(state.storageKey);
1886
+ }
1887
+ },
1888
+ },
1889
+ });
1890
+ const { initialize, setMetrics, unlockAchievement, resetAchievements } = achievementSlice.actions;
1891
+ var achievementSlice$1 = achievementSlice.reducer;
1892
+
1893
+ const initialState = {
1894
+ notifications: [],
1895
+ };
1896
+ const notificationSlice = createSlice({
1897
+ name: 'notifications',
1898
+ initialState,
1899
+ reducers: {
1900
+ addNotification: (state, action) => {
1901
+ state.notifications.push(action.payload);
1902
+ },
1903
+ clearNotifications: (state) => {
1904
+ state.notifications = [];
1905
+ },
1906
+ },
1907
+ });
1908
+ const { addNotification, clearNotifications } = notificationSlice.actions;
1909
+ var notificationSlice$1 = notificationSlice.reducer;
4
1910
 
5
1911
  const defaultStyles = {
6
1912
  achievementModal: {
@@ -113,51 +2019,154 @@ const defaultStyles = {
113
2019
  },
114
2020
  };
115
2021
 
116
- const AchievementModal = ({ isOpen, achievement, onClose, styles }) => {
2022
+ // src/defaultIcons.ts
2023
+ const defaultAchievementIcons = {
2024
+ // General Progress & Milestones
2025
+ levelUp: '🏆',
2026
+ questComplete: '📜',
2027
+ monsterDefeated: '⚔️',
2028
+ itemCollected: '📦',
2029
+ challengeCompleted: '🏁',
2030
+ milestoneReached: '🏅',
2031
+ firstStep: '👣',
2032
+ newBeginnings: '🌱',
2033
+ breakthrough: '💡',
2034
+ growth: '📈',
2035
+ // Social & Engagement
2036
+ shared: '🔗',
2037
+ liked: '❤️',
2038
+ commented: '💬',
2039
+ followed: '👥',
2040
+ invited: '🤝',
2041
+ communityMember: '🏘️',
2042
+ supporter: '🌟',
2043
+ connected: '🌐',
2044
+ participant: '🙋',
2045
+ influencer: '📣',
2046
+ // Time & Activity
2047
+ activeDay: '☀️',
2048
+ activeWeek: '📅',
2049
+ activeMonth: '🗓️',
2050
+ earlyBird: '⏰',
2051
+ nightOwl: '🌙',
2052
+ streak: '🔥',
2053
+ dedicated: '⏳',
2054
+ punctual: '⏱️',
2055
+ consistent: '🔄',
2056
+ marathon: '🏃',
2057
+ // Creativity & Skill
2058
+ artist: '🎨',
2059
+ writer: '✍️',
2060
+ innovator: '🔬',
2061
+ creator: '🛠️',
2062
+ expert: '🎓',
2063
+ master: '👑',
2064
+ pioneer: '🚀',
2065
+ performer: '🎭',
2066
+ thinker: '🧠',
2067
+ explorer: '🗺️',
2068
+ // Achievement Types
2069
+ bronze: '🥉',
2070
+ silver: '🥈',
2071
+ gold: '🥇',
2072
+ diamond: '💎',
2073
+ legendary: '✨',
2074
+ epic: '💥',
2075
+ rare: '🔮',
2076
+ common: '🔘',
2077
+ special: '🎁',
2078
+ hidden: '❓',
2079
+ // Numbers & Counters
2080
+ one: '1️⃣',
2081
+ ten: '🔟',
2082
+ hundred: '💯',
2083
+ thousand: '🔢',
2084
+ // Actions & Interactions
2085
+ clicked: '🖱️',
2086
+ used: '🔑',
2087
+ found: '🔍',
2088
+ built: '🧱',
2089
+ solved: '🧩',
2090
+ discovered: '🔭',
2091
+ unlocked: '🔓',
2092
+ upgraded: '⬆️',
2093
+ repaired: '🔧',
2094
+ defended: '🛡️',
2095
+ // Placeholders
2096
+ default: '⭐', // A fallback icon
2097
+ loading: '⏳',
2098
+ error: '⚠️',
2099
+ success: '✅',
2100
+ failure: '❌',
2101
+ // Miscellaneous
2102
+ trophy: '🏆',
2103
+ star: '⭐',
2104
+ flag: '🚩',
2105
+ puzzle: '🧩',
2106
+ gem: '💎',
2107
+ crown: '👑',
2108
+ medal: '🏅',
2109
+ ribbon: '🎗️',
2110
+ badge: '🎖️',
2111
+ shield: '🛡️',
2112
+ };
2113
+
2114
+ const AchievementModal = ({ isOpen, achievement, onClose, styles, icons = {} }) => {
117
2115
  if (!isOpen || !achievement)
118
2116
  return null;
119
- return (React.createElement("div", { style: styles.overlay },
120
- React.createElement("div", { style: styles.content },
2117
+ const mergedIcons = Object.assign(Object.assign({}, defaultAchievementIcons), icons);
2118
+ const iconToDisplay = (achievement === null || achievement === void 0 ? void 0 : achievement.achievementIconKey) ? (mergedIcons[achievement.achievementIconKey] || mergedIcons.default) : mergedIcons.default;
2119
+ return (React.createElement("div", { style: Object.assign(Object.assign({}, styles.overlay), { display: 'flex', justifyContent: 'center', alignItems: 'center', position: 'fixed', top: 0, left: 0, width: '100%', height: '100%', backgroundColor: 'rgba(0, 0, 0, 0.5)' }) },
2120
+ React.createElement("div", { style: Object.assign(Object.assign({}, styles.content), { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', padding: '20px', borderRadius: '8px', backgroundColor: 'white' }) },
121
2121
  React.createElement("h2", { style: styles.title }, "Achievement Unlocked!"),
122
- React.createElement("img", { src: achievement.icon, alt: achievement.title, style: styles.icon }),
123
- React.createElement("h3", { style: styles.title }, achievement.title),
124
- React.createElement("p", { style: styles.description }, achievement.description),
2122
+ iconToDisplay.startsWith('http') || iconToDisplay.startsWith('data:image') ? (React.createElement("img", { src: iconToDisplay, alt: achievement.achievementTitle, style: styles.icon })) : (React.createElement("p", { style: { fontSize: '3em' } }, iconToDisplay)),
2123
+ React.createElement("h3", { style: styles.title }, achievement.achievementTitle),
2124
+ React.createElement("p", { style: styles.description }, achievement.achievementDescription),
125
2125
  React.createElement("button", { onClick: onClose, style: styles.button }, "Okay"))));
126
2126
  };
127
2127
  var AchievementModal$1 = React.memo(AchievementModal);
128
2128
 
129
- const BadgesModal = ({ isOpen, achievements, onClose, styles }) => {
2129
+ const BadgesModal = ({ isOpen, achievements, onClose, styles, icons = {} }) => {
130
2130
  if (!isOpen)
131
2131
  return null;
132
2132
  return (React.createElement("div", { style: styles.overlay },
133
2133
  React.createElement("div", { style: styles.content },
134
2134
  React.createElement("h2", { style: styles.title }, "Your Achievements"),
135
- React.createElement("div", { style: styles.badgeContainer }, achievements.map((achievement) => (React.createElement("div", { key: achievement.id, style: styles.badge },
136
- React.createElement("img", { src: achievement.icon, alt: achievement.title, style: styles.badgeIcon }),
137
- React.createElement("span", { style: styles.badgeTitle }, achievement.title))))),
2135
+ React.createElement("div", { style: styles.badgeContainer }, achievements.map((achievement) => {
2136
+ const mergedIcons = Object.assign(Object.assign({}, defaultAchievementIcons), icons);
2137
+ let iconToDisplay = mergedIcons.default;
2138
+ if (achievement.achievementIconKey && mergedIcons[achievement.achievementIconKey]) {
2139
+ iconToDisplay = mergedIcons[achievement.achievementIconKey];
2140
+ }
2141
+ return (React.createElement("div", { key: achievement.achievementId, style: styles.badge },
2142
+ iconToDisplay.startsWith('http') || iconToDisplay.startsWith('data:image') ? (React.createElement("img", { src: iconToDisplay, alt: achievement.achievementTitle, style: styles.badgeIcon })) : (React.createElement("p", { style: { fontSize: '2em' } }, iconToDisplay) // Render Unicode as large text
2143
+ ),
2144
+ React.createElement("span", { style: styles.badgeTitle }, achievement.achievementTitle)));
2145
+ })),
138
2146
  React.createElement("button", { onClick: onClose, style: styles.button }, "Close"))));
139
2147
  };
140
2148
  var BadgesModal$1 = React.memo(BadgesModal);
141
2149
 
142
- const BadgesButton = ({ onClick, position, styles }) => {
143
- const positionStyle = {
144
- [position.split('-')[0]]: '20px',
145
- [position.split('-')[1]]: '20px',
2150
+ const BadgesButton = ({ onClick, position, styles, unlockedAchievements, icon, drawer = false, customStyles, }) => {
2151
+ const positionStyle = position
2152
+ ? {
2153
+ [position.split('-')[0]]: '20px',
2154
+ [position.split('-')[1]]: '20px',
2155
+ }
2156
+ : {};
2157
+ const handleButtonClick = () => {
2158
+ onClick();
146
2159
  };
147
- return (React.createElement("button", { onClick: onClick, style: Object.assign(Object.assign({}, styles), positionStyle) }, "View Achievements"));
2160
+ const achievementsText = 'View Achievements';
2161
+ const buttonContent = icon ? icon : achievementsText;
2162
+ return (React.createElement("button", { onClick: handleButtonClick, style: Object.assign(Object.assign(Object.assign({}, styles), positionStyle), customStyles) }, buttonContent));
148
2163
  };
149
2164
  var BadgesButton$1 = React.memo(BadgesButton);
150
2165
 
151
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
152
-
153
- function getDefaultExportFromCjs (x) {
154
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
155
- }
156
-
157
2166
  var reactConfetti_min = {exports: {}};
158
2167
 
159
2168
  (function (module, exports) {
160
- !function(t,e){module.exports=e(React);}("undefined"!=typeof self?self:commonjsGlobal,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r});},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0});},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(e,n){e.exports=t;},function(t,e,n){var r={linear:function(t,e,n,r){return (n-e)*t/r+e},easeInQuad:function(t,e,n,r){return (n-e)*(t/=r)*t+e},easeOutQuad:function(t,e,n,r){return -(n-e)*(t/=r)*(t-2)+e},easeInOutQuad:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e},easeInCubic:function(t,e,n,r){return (n-e)*(t/=r)*t*t+e},easeOutCubic:function(t,e,n,r){return (n-e)*((t=t/r-1)*t*t+1)+e},easeInOutCubic:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t+e:i/2*((t-=2)*t*t+2)+e},easeInQuart:function(t,e,n,r){return (n-e)*(t/=r)*t*t*t+e},easeOutQuart:function(t,e,n,r){return -(n-e)*((t=t/r-1)*t*t*t-1)+e},easeInOutQuart:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t*t+e:-i/2*((t-=2)*t*t*t-2)+e},easeInQuint:function(t,e,n,r){return (n-e)*(t/=r)*t*t*t*t+e},easeOutQuint:function(t,e,n,r){return (n-e)*((t=t/r-1)*t*t*t*t+1)+e},easeInOutQuint:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t*t*t+e:i/2*((t-=2)*t*t*t*t+2)+e},easeInSine:function(t,e,n,r){var i=n-e;return -i*Math.cos(t/r*(Math.PI/2))+i+e},easeOutSine:function(t,e,n,r){return (n-e)*Math.sin(t/r*(Math.PI/2))+e},easeInOutSine:function(t,e,n,r){return -(n-e)/2*(Math.cos(Math.PI*t/r)-1)+e},easeInExpo:function(t,e,n,r){return 0==t?e:(n-e)*Math.pow(2,10*(t/r-1))+e},easeOutExpo:function(t,e,n,r){var i=n-e;return t==r?e+i:i*(1-Math.pow(2,-10*t/r))+e},easeInOutExpo:function(t,e,n,r){var i=n-e;return 0===t?e:t===r?e+i:(t/=r/2)<1?i/2*Math.pow(2,10*(t-1))+e:i/2*(2-Math.pow(2,-10*--t))+e},easeInCirc:function(t,e,n,r){return -(n-e)*(Math.sqrt(1-(t/=r)*t)-1)+e},easeOutCirc:function(t,e,n,r){return (n-e)*Math.sqrt(1-(t=t/r-1)*t)+e},easeInOutCirc:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?-i/2*(Math.sqrt(1-t*t)-1)+e:i/2*(Math.sqrt(1-(t-=2)*t)+1)+e},easeInElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:1==(t/=r)?e+c:((o=0)||(o=.3*r),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)+e)},easeOutElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:1==(t/=r)?e+c:((o=0)||(o=.3*r),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),i*Math.pow(2,-10*t)*Math.sin((t*r-a)*(2*Math.PI)/o)+c+e)},easeInOutElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:2==(t/=r/2)?e+c:((o=0)||(o=r*(.3*1.5)),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*-.5+e:i*Math.pow(2,-10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*.5+c+e)},easeInBack:function(t,e,n,r,i){return void 0===i&&(i=1.70158),(n-e)*(t/=r)*t*((i+1)*t-i)+e},easeOutBack:function(t,e,n,r,i){return void 0===i&&(i=1.70158),(n-e)*((t=t/r-1)*t*((i+1)*t+i)+1)+e},easeInOutBack:function(t,e,n,r,i){var o=n-e;return void 0===i&&(i=1.70158),(t/=r/2)<1?o/2*(t*t*((1+(i*=1.525))*t-i))+e:o/2*((t-=2)*t*((1+(i*=1.525))*t+i)+2)+e},easeInBounce:function(t,e,n,i){var o=n-e;return o-r.easeOutBounce(i-t,0,o,i)+e},easeOutBounce:function(t,e,n,r){var i=n-e;return (t/=r)<1/2.75?i*(7.5625*t*t)+e:t<2/2.75?i*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?i*(7.5625*(t-=2.25/2.75)*t+.9375)+e:i*(7.5625*(t-=2.625/2.75)*t+.984375)+e},easeInOutBounce:function(t,e,n,i){var o=n-e;return t<i/2?.5*r.easeInBounce(2*t,0,o,i)+e:.5*r.easeOutBounce(2*t-i,0,o,i)+.5*o+e}};t.exports=r;},function(t,e,n){t.exports=n(3);},function(t,e,n){n.r(e),n.d(e,"ReactConfetti",(function(){return Q}));var r,i,o=n(0),a=n.n(o),c=n(1),s=n.n(c);function u(t,e){return t+Math.random()*(e-t)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r);}}function h(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}!function(t){t[t.Circle=0]="Circle",t[t.Square=1]="Square",t[t.Strip=2]="Strip";}(r||(r={})),function(t){t[t.Positive=1]="Positive",t[t.Negative=-1]="Negative";}(i||(i={}));var l=function(){function t(e,n,r,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),h(this,"context",void 0),h(this,"radius",void 0),h(this,"x",void 0),h(this,"y",void 0),h(this,"w",void 0),h(this,"h",void 0),h(this,"vx",void 0),h(this,"vy",void 0),h(this,"shape",void 0),h(this,"angle",void 0),h(this,"angularSpin",void 0),h(this,"color",void 0),h(this,"rotateY",void 0),h(this,"rotationDirection",void 0),h(this,"getOptions",void 0),this.getOptions=n;var a,c,s=this.getOptions(),f=s.colors,l=s.initialVelocityX,p=s.initialVelocityY;this.context=e,this.x=r,this.y=o,this.w=u(5,20),this.h=u(5,20),this.radius=u(5,10),this.vx="number"==typeof l?u(-l,l):u(l.min,l.max),this.vy="number"==typeof p?u(-p,0):u(p.min,p.max),this.shape=(a=0,c=2,Math.floor(a+Math.random()*(c-a+1))),this.angle=u(0,360)*Math.PI/180,this.angularSpin=u(-.2,.2),this.color=f[Math.floor(Math.random()*f.length)],this.rotateY=u(0,1),this.rotationDirection=u(0,1)?i.Positive:i.Negative;}var e,n;return e=t,(n=[{key:"update",value:function(){var t=this.getOptions(),e=t.gravity,n=t.wind,o=t.friction,a=t.opacity,c=t.drawShape;this.x+=this.vx,this.y+=this.vy,this.vy+=e,this.vx+=n,this.vx*=o,this.vy*=o,this.rotateY>=1&&this.rotationDirection===i.Positive?this.rotationDirection=i.Negative:this.rotateY<=-1&&this.rotationDirection===i.Negative&&(this.rotationDirection=i.Positive);var s=.1*this.rotationDirection;if(this.rotateY+=s,this.angle+=this.angularSpin,this.context.save(),this.context.translate(this.x,this.y),this.context.rotate(this.angle),this.context.scale(1,this.rotateY),this.context.rotate(this.angle),this.context.beginPath(),this.context.fillStyle=this.color,this.context.strokeStyle=this.color,this.context.globalAlpha=a,this.context.lineCap="round",this.context.lineWidth=2,c&&"function"==typeof c)c.call(this,this.context);else switch(this.shape){case r.Circle:this.context.beginPath(),this.context.arc(0,0,this.radius,0,2*Math.PI),this.context.fill();break;case r.Square:this.context.fillRect(-this.w/2,-this.h/2,this.w,this.h);break;case r.Strip:this.context.fillRect(-this.w/6,-this.h/2,this.w/3,this.h);}this.context.closePath(),this.context.restore();}}])&&f(e.prototype,n),t}();function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var v=function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),p(this,"canvas",void 0),p(this,"context",void 0),p(this,"getOptions",void 0),p(this,"x",0),p(this,"y",0),p(this,"w",0),p(this,"h",0),p(this,"lastNumberOfPieces",0),p(this,"tweenInitTime",Date.now()),p(this,"particles",[]),p(this,"particlesGenerated",0),p(this,"removeParticleAt",(function(t){r.particles.splice(t,1);})),p(this,"getParticle",(function(){var t=u(r.x,r.w+r.x),e=u(r.y,r.h+r.y);return new l(r.context,r.getOptions,t,e)})),p(this,"animate",(function(){var t=r.canvas,e=r.context,n=r.particlesGenerated,i=r.lastNumberOfPieces,o=r.getOptions(),a=o.run,c=o.recycle,s=o.numberOfPieces,u=o.debug,f=o.tweenFunction,h=o.tweenDuration;if(!a)return !1;var l=r.particles.length,p=c?l:n,v=Date.now();if(p<s){i!==s&&(r.tweenInitTime=v,r.lastNumberOfPieces=s);for(var y=r.tweenInitTime,d=f(v-y>h?h:Math.max(0,v-y),p,s,h),b=Math.round(d-p),g=0;g<b;g++)r.particles.push(r.getParticle());r.particlesGenerated+=b;}return u&&(e.font="12px sans-serif",e.fillStyle="#333",e.textAlign="right",e.fillText("Particles: ".concat(l),t.width-10,t.height-20)),r.particles.forEach((function(e,n){e.update(),(e.y>t.height||e.y<-100||e.x>t.width+100||e.x<-100)&&(c&&p<=s?r.particles[n]=r.getParticle():r.removeParticleAt(n));})),l>0||p<s})),this.canvas=e;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.getOptions=n;};function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r);}return n}function d(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?y(Object(n),!0).forEach((function(e){g(t,e,n[e]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e));}));}return t}function b(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r);}}function g(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var O={width:"undefined"!=typeof window?window.innerWidth:300,height:"undefined"!=typeof window?window.innerHeight:200,numberOfPieces:200,friction:.99,wind:0,gravity:.1,initialVelocityX:4,initialVelocityY:10,colors:["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4CAF50","#8BC34A","#CDDC39","#FFEB3B","#FFC107","#FF9800","#FF5722","#795548"],opacity:1,debug:!1,tweenFunction:s.a.easeInOutQuad,tweenDuration:5e3,recycle:!0,run:!0},w=function(){function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),g(this,"canvas",void 0),g(this,"context",void 0),g(this,"_options",void 0),g(this,"generator",void 0),g(this,"rafId",void 0),g(this,"setOptionsWithDefaults",(function(t){var e={confettiSource:{x:0,y:0,w:r.canvas.width,h:0}};r._options=d(d(d({},e),O),t),Object.assign(r,t.confettiSource);})),g(this,"update",(function(){var t=r.options,e=t.run,n=t.onConfettiComplete,i=r.canvas,o=r.context;e&&(o.fillStyle="white",o.clearRect(0,0,i.width,i.height)),r.generator.animate()?r.rafId=requestAnimationFrame(r.update):(n&&"function"==typeof n&&r.generator.particlesGenerated>0&&n.call(r,r),r._options.run=!1);})),g(this,"reset",(function(){r.generator&&r.generator.particlesGenerated>0&&(r.generator.particlesGenerated=0,r.generator.particles=[],r.generator.lastNumberOfPieces=0);})),g(this,"stop",(function(){r.options={run:!1},r.rafId&&(cancelAnimationFrame(r.rafId),r.rafId=void 0);})),this.canvas=e;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.generator=new v(this.canvas,(function(){return r.options})),this.options=n,this.update();}var e,n;return e=t,(n=[{key:"options",get:function(){return this._options},set:function(t){var e=this._options&&this._options.run,n=this._options&&this._options.recycle;this.setOptionsWithDefaults(t),this.generator&&(Object.assign(this.generator,this.options.confettiSource),"boolean"==typeof t.recycle&&t.recycle&&!1===n&&(this.generator.lastNumberOfPieces=this.generator.particles.length)),"boolean"==typeof t.run&&t.run&&!1===e&&this.update();}}])&&b(e.prototype,n),t}();function m(t){return function(t){if(Array.isArray(t))return C(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||S(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(t){return (x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function P(){return (P=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);}return t}).apply(this,arguments)}function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r);}return n}function M(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?j(Object(n),!0).forEach((function(e){T(t,e,n[e]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e));}));}return t}function I(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],r=!0,i=!1,o=void 0;try{for(var a,c=t[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t;}finally{try{r||null==c.return||c.return();}finally{if(i)throw o}}return n}(t,e)||S(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return "Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function D(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function E(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r);}}function _(t,e){return (_=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function R(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return !1;if(Reflect.construct.sham)return !1;if("function"==typeof Proxy)return !0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return !1}}();return function(){var n,r=F(t);if(e){var i=F(this).constructor;n=Reflect.construct(r,arguments,i);}else n=r.apply(this,arguments);return k(this,n)}}function k(t,e){return !e||"object"!==x(e)&&"function"!=typeof e?A(t):e}function A(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function F(t){return (F=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function T(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var B=a.a.createRef(),N=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_(t,e);}(o,t);var e,n,i=R(o);function o(t){var e;D(this,o);for(var n=arguments.length,r=new Array(n>1?n-1:0),c=1;c<n;c++)r[c-1]=arguments[c];return T(A(e=i.call.apply(i,[this,t].concat(r))),"canvas",a.a.createRef()),T(A(e),"confetti",void 0),e.canvas=t.canvasRef||B,e}return e=o,(n=[{key:"componentDidMount",value:function(){if(this.canvas.current){var t=q(this.props)[0];this.confetti=new w(this.canvas.current,t);}}},{key:"componentDidUpdate",value:function(){var t=q(this.props)[0];this.confetti&&(this.confetti.options=t);}},{key:"componentWillUnmount",value:function(){this.confetti&&this.confetti.stop(),this.confetti=void 0;}},{key:"render",value:function(){var t=I(q(this.props),2),e=t[0],n=t[1],r=M({zIndex:2,position:"absolute",pointerEvents:"none",top:0,left:0,bottom:0,right:0},n.style);return a.a.createElement("canvas",P({width:e.width,height:e.height,ref:this.canvas},n,{style:r}))}}])&&E(e.prototype,n),o}(o.Component);function q(t){var e={},n={},r=[].concat(m(Object.keys(O)),["confettiSource","drawShape","onConfettiComplete"]),i=["canvasRef"];for(var o in t){var a=t[o];r.includes(o)?e[o]=a:i.includes(o)?i[o]=a:n[o]=a;}return [e,n,{}]}T(N,"defaultProps",M({},O)),T(N,"displayName","ReactConfetti");var Q=a.a.forwardRef((function(t,e){return a.a.createElement(N,P({canvasRef:e},t))}));e.default=Q;}]).default}));
2169
+ !function(t,e){module.exports=e(React);}("undefined"!=typeof self?self:commonjsGlobal,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:false,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=true,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:true,get:r});},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:true});},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:true,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(e,n){e.exports=t;},function(t,e,n){var r={linear:function(t,e,n,r){return (n-e)*t/r+e},easeInQuad:function(t,e,n,r){return (n-e)*(t/=r)*t+e},easeOutQuad:function(t,e,n,r){return -(n-e)*(t/=r)*(t-2)+e},easeInOutQuad:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e},easeInCubic:function(t,e,n,r){return (n-e)*(t/=r)*t*t+e},easeOutCubic:function(t,e,n,r){return (n-e)*((t=t/r-1)*t*t+1)+e},easeInOutCubic:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t+e:i/2*((t-=2)*t*t+2)+e},easeInQuart:function(t,e,n,r){return (n-e)*(t/=r)*t*t*t+e},easeOutQuart:function(t,e,n,r){return -(n-e)*((t=t/r-1)*t*t*t-1)+e},easeInOutQuart:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t*t+e:-i/2*((t-=2)*t*t*t-2)+e},easeInQuint:function(t,e,n,r){return (n-e)*(t/=r)*t*t*t*t+e},easeOutQuint:function(t,e,n,r){return (n-e)*((t=t/r-1)*t*t*t*t+1)+e},easeInOutQuint:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?i/2*t*t*t*t*t+e:i/2*((t-=2)*t*t*t*t+2)+e},easeInSine:function(t,e,n,r){var i=n-e;return -i*Math.cos(t/r*(Math.PI/2))+i+e},easeOutSine:function(t,e,n,r){return (n-e)*Math.sin(t/r*(Math.PI/2))+e},easeInOutSine:function(t,e,n,r){return -(n-e)/2*(Math.cos(Math.PI*t/r)-1)+e},easeInExpo:function(t,e,n,r){return 0==t?e:(n-e)*Math.pow(2,10*(t/r-1))+e},easeOutExpo:function(t,e,n,r){var i=n-e;return t==r?e+i:i*(1-Math.pow(2,-10*t/r))+e},easeInOutExpo:function(t,e,n,r){var i=n-e;return 0===t?e:t===r?e+i:(t/=r/2)<1?i/2*Math.pow(2,10*(t-1))+e:i/2*(2-Math.pow(2,-10*--t))+e},easeInCirc:function(t,e,n,r){return -(n-e)*(Math.sqrt(1-(t/=r)*t)-1)+e},easeOutCirc:function(t,e,n,r){return (n-e)*Math.sqrt(1-(t=t/r-1)*t)+e},easeInOutCirc:function(t,e,n,r){var i=n-e;return (t/=r/2)<1?-i/2*(Math.sqrt(1-t*t)-1)+e:i/2*(Math.sqrt(1-(t-=2)*t)+1)+e},easeInElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:1==(t/=r)?e+c:((o=0)||(o=.3*r),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)+e)},easeOutElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:1==(t/=r)?e+c:((o=0)||(o=.3*r),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),i*Math.pow(2,-10*t)*Math.sin((t*r-a)*(2*Math.PI)/o)+c+e)},easeInOutElastic:function(t,e,n,r){var i,o,a,c=n-e;return a=1.70158,0===t?e:2==(t/=r/2)?e+c:((o=0)||(o=r*(.3*1.5)),(i=c)<Math.abs(c)?(i=c,a=o/4):a=o/(2*Math.PI)*Math.asin(c/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*-0.5+e:i*Math.pow(2,-10*(t-=1))*Math.sin((t*r-a)*(2*Math.PI)/o)*.5+c+e)},easeInBack:function(t,e,n,r,i){return void 0===i&&(i=1.70158),(n-e)*(t/=r)*t*((i+1)*t-i)+e},easeOutBack:function(t,e,n,r,i){return void 0===i&&(i=1.70158),(n-e)*((t=t/r-1)*t*((i+1)*t+i)+1)+e},easeInOutBack:function(t,e,n,r,i){var o=n-e;return void 0===i&&(i=1.70158),(t/=r/2)<1?o/2*(t*t*((1+(i*=1.525))*t-i))+e:o/2*((t-=2)*t*((1+(i*=1.525))*t+i)+2)+e},easeInBounce:function(t,e,n,i){var o=n-e;return o-r.easeOutBounce(i-t,0,o,i)+e},easeOutBounce:function(t,e,n,r){var i=n-e;return (t/=r)<1/2.75?i*(7.5625*t*t)+e:t<2/2.75?i*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?i*(7.5625*(t-=2.25/2.75)*t+.9375)+e:i*(7.5625*(t-=2.625/2.75)*t+.984375)+e},easeInOutBounce:function(t,e,n,i){var o=n-e;return t<i/2?.5*r.easeInBounce(2*t,0,o,i)+e:.5*r.easeOutBounce(2*t-i,0,o,i)+.5*o+e}};t.exports=r;},function(t,e,n){t.exports=n(3);},function(t,e,n){n.r(e),n.d(e,"ReactConfetti",(function(){return Q}));var r,i,o=n(0),a=n.n(o),c=n(1),s=n.n(c);function u(t,e){return t+Math.random()*(e-t)}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||false,r.configurable=true,"value"in r&&(r.writable=true),Object.defineProperty(t,r.key,r);}}function h(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:true,configurable:true,writable:true}):t[e]=n,t}!function(t){t[t.Circle=0]="Circle",t[t.Square=1]="Square",t[t.Strip=2]="Strip";}(r||(r={})),function(t){t[t.Positive=1]="Positive",t[t.Negative=-1]="Negative";}(i||(i={}));var l=function(){function t(e,n,r,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),h(this,"context",void 0),h(this,"radius",void 0),h(this,"x",void 0),h(this,"y",void 0),h(this,"w",void 0),h(this,"h",void 0),h(this,"vx",void 0),h(this,"vy",void 0),h(this,"shape",void 0),h(this,"angle",void 0),h(this,"angularSpin",void 0),h(this,"color",void 0),h(this,"rotateY",void 0),h(this,"rotationDirection",void 0),h(this,"getOptions",void 0),this.getOptions=n;var a,c,s=this.getOptions(),f=s.colors,l=s.initialVelocityX,p=s.initialVelocityY;this.context=e,this.x=r,this.y=o,this.w=u(5,20),this.h=u(5,20),this.radius=u(5,10),this.vx="number"==typeof l?u(-l,l):u(l.min,l.max),this.vy="number"==typeof p?u(-p,0):u(p.min,p.max),this.shape=(a=0,c=2,Math.floor(a+Math.random()*(c-a+1))),this.angle=u(0,360)*Math.PI/180,this.angularSpin=u(-0.2,.2),this.color=f[Math.floor(Math.random()*f.length)],this.rotateY=u(0,1),this.rotationDirection=u(0,1)?i.Positive:i.Negative;}var e,n;return e=t,(n=[{key:"update",value:function(){var t=this.getOptions(),e=t.gravity,n=t.wind,o=t.friction,a=t.opacity,c=t.drawShape;this.x+=this.vx,this.y+=this.vy,this.vy+=e,this.vx+=n,this.vx*=o,this.vy*=o,this.rotateY>=1&&this.rotationDirection===i.Positive?this.rotationDirection=i.Negative:this.rotateY<=-1&&this.rotationDirection===i.Negative&&(this.rotationDirection=i.Positive);var s=.1*this.rotationDirection;if(this.rotateY+=s,this.angle+=this.angularSpin,this.context.save(),this.context.translate(this.x,this.y),this.context.rotate(this.angle),this.context.scale(1,this.rotateY),this.context.rotate(this.angle),this.context.beginPath(),this.context.fillStyle=this.color,this.context.strokeStyle=this.color,this.context.globalAlpha=a,this.context.lineCap="round",this.context.lineWidth=2,c&&"function"==typeof c)c.call(this,this.context);else switch(this.shape){case r.Circle:this.context.beginPath(),this.context.arc(0,0,this.radius,0,2*Math.PI),this.context.fill();break;case r.Square:this.context.fillRect(-this.w/2,-this.h/2,this.w,this.h);break;case r.Strip:this.context.fillRect(-this.w/6,-this.h/2,this.w/3,this.h);}this.context.closePath(),this.context.restore();}}])&&f(e.prototype,n),t}();function p(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:true,configurable:true,writable:true}):t[e]=n,t}var v=function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),p(this,"canvas",void 0),p(this,"context",void 0),p(this,"getOptions",void 0),p(this,"x",0),p(this,"y",0),p(this,"w",0),p(this,"h",0),p(this,"lastNumberOfPieces",0),p(this,"tweenInitTime",Date.now()),p(this,"particles",[]),p(this,"particlesGenerated",0),p(this,"removeParticleAt",(function(t){r.particles.splice(t,1);})),p(this,"getParticle",(function(){var t=u(r.x,r.w+r.x),e=u(r.y,r.h+r.y);return new l(r.context,r.getOptions,t,e)})),p(this,"animate",(function(){var t=r.canvas,e=r.context,n=r.particlesGenerated,i=r.lastNumberOfPieces,o=r.getOptions(),a=o.run,c=o.recycle,s=o.numberOfPieces,u=o.debug,f=o.tweenFunction,h=o.tweenDuration;if(!a)return false;var l=r.particles.length,p=c?l:n,v=Date.now();if(p<s){i!==s&&(r.tweenInitTime=v,r.lastNumberOfPieces=s);for(var y=r.tweenInitTime,d=f(v-y>h?h:Math.max(0,v-y),p,s,h),b=Math.round(d-p),g=0;g<b;g++)r.particles.push(r.getParticle());r.particlesGenerated+=b;}return u&&(e.font="12px sans-serif",e.fillStyle="#333",e.textAlign="right",e.fillText("Particles: ".concat(l),t.width-10,t.height-20)),r.particles.forEach((function(e,n){e.update(),(e.y>t.height||e.y<-100||e.x>t.width+100||e.x<-100)&&(c&&p<=s?r.particles[n]=r.getParticle():r.removeParticleAt(n));})),l>0||p<s})),this.canvas=e;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.getOptions=n;};function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r);}return n}function d(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?y(Object(n),true).forEach((function(e){g(t,e,n[e]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e));}));}return t}function b(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||false,r.configurable=true,"value"in r&&(r.writable=true),Object.defineProperty(t,r.key,r);}}function g(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:true,configurable:true,writable:true}):t[e]=n,t}var O={width:"undefined"!=typeof window?window.innerWidth:300,height:"undefined"!=typeof window?window.innerHeight:200,numberOfPieces:200,friction:.99,wind:0,gravity:.1,initialVelocityX:4,initialVelocityY:10,colors:["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4CAF50","#8BC34A","#CDDC39","#FFEB3B","#FFC107","#FF9800","#FF5722","#795548"],opacity:1,debug:false,tweenFunction:s.a.easeInOutQuad,tweenDuration:5e3,recycle:true,run:true},w=function(){function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),g(this,"canvas",void 0),g(this,"context",void 0),g(this,"_options",void 0),g(this,"generator",void 0),g(this,"rafId",void 0),g(this,"setOptionsWithDefaults",(function(t){var e={confettiSource:{x:0,y:0,w:r.canvas.width,h:0}};r._options=d(d(d({},e),O),t),Object.assign(r,t.confettiSource);})),g(this,"update",(function(){var t=r.options,e=t.run,n=t.onConfettiComplete,i=r.canvas,o=r.context;e&&(o.fillStyle="white",o.clearRect(0,0,i.width,i.height)),r.generator.animate()?r.rafId=requestAnimationFrame(r.update):(n&&"function"==typeof n&&r.generator.particlesGenerated>0&&n.call(r,r),r._options.run=false);})),g(this,"reset",(function(){r.generator&&r.generator.particlesGenerated>0&&(r.generator.particlesGenerated=0,r.generator.particles=[],r.generator.lastNumberOfPieces=0);})),g(this,"stop",(function(){r.options={run:false},r.rafId&&(cancelAnimationFrame(r.rafId),r.rafId=void 0);})),this.canvas=e;var i=this.canvas.getContext("2d");if(!i)throw new Error("Could not get canvas context");this.context=i,this.generator=new v(this.canvas,(function(){return r.options})),this.options=n,this.update();}var e,n;return e=t,(n=[{key:"options",get:function(){return this._options},set:function(t){var e=this._options&&this._options.run,n=this._options&&this._options.recycle;this.setOptionsWithDefaults(t),this.generator&&(Object.assign(this.generator,this.options.confettiSource),"boolean"==typeof t.recycle&&t.recycle&&false===n&&(this.generator.lastNumberOfPieces=this.generator.particles.length)),"boolean"==typeof t.run&&t.run&&false===e&&this.update();}}])&&b(e.prototype,n),t}();function m(t){return function(t){if(Array.isArray(t))return C(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||S(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(t){return (x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function P(){return (P=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);}return t}).apply(this,arguments)}function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r);}return n}function M(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?j(Object(n),true).forEach((function(e){T(t,e,n[e]);})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e));}));}return t}function I(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],r=true,i=false,o=void 0;try{for(var a,c=t[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){i=true,o=t;}finally{try{r||null==c.return||c.return();}finally{if(i)throw o}}return n}(t,e)||S(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(t,e){if(t){if("string"==typeof t)return C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return "Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(t,e):void 0}}function C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function D(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function E(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||false,r.configurable=true,"value"in r&&(r.writable=true),Object.defineProperty(t,r.key,r);}}function _(t,e){return (_=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function R(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if("function"==typeof Proxy)return true;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return false}}();return function(){var n,r=F(t);if(e){var i=F(this).constructor;n=Reflect.construct(r,arguments,i);}else n=r.apply(this,arguments);return k(this,n)}}function k(t,e){return !e||"object"!==x(e)&&"function"!=typeof e?A(t):e}function A(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function F(t){return (F=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function T(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:true,configurable:true,writable:true}):t[e]=n,t}var B=a.a.createRef(),N=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:true,configurable:true}}),e&&_(t,e);}(o,t);var e,n,i=R(o);function o(t){var e;D(this,o);for(var n=arguments.length,r=new Array(n>1?n-1:0),c=1;c<n;c++)r[c-1]=arguments[c];return T(A(e=i.call.apply(i,[this,t].concat(r))),"canvas",a.a.createRef()),T(A(e),"confetti",void 0),e.canvas=t.canvasRef||B,e}return e=o,(n=[{key:"componentDidMount",value:function(){if(this.canvas.current){var t=q(this.props)[0];this.confetti=new w(this.canvas.current,t);}}},{key:"componentDidUpdate",value:function(){var t=q(this.props)[0];this.confetti&&(this.confetti.options=t);}},{key:"componentWillUnmount",value:function(){this.confetti&&this.confetti.stop(),this.confetti=void 0;}},{key:"render",value:function(){var t=I(q(this.props),2),e=t[0],n=t[1],r=M({zIndex:2,position:"absolute",pointerEvents:"none",top:0,left:0,bottom:0,right:0},n.style);return a.a.createElement("canvas",P({width:e.width,height:e.height,ref:this.canvas},n,{style:r}))}}])&&E(e.prototype,n),o}(o.Component);function q(t){var e={},n={},r=[].concat(m(Object.keys(O)),["confettiSource","drawShape","onConfettiComplete"]),i=["canvasRef"];for(var o in t){var a=t[o];r.includes(o)?e[o]=a:i.includes(o)?i[o]=a:n[o]=a;}return [e,n,{}]}T(N,"defaultProps",M({},O)),T(N,"displayName","ReactConfetti");var Q=a.a.forwardRef((function(t,e){return a.a.createElement(N,P({canvasRef:e},t))}));e.default=Q;}]).default}));
161
2170
 
162
2171
  } (reactConfetti_min));
163
2172
 
@@ -242,123 +2251,111 @@ const ConfettiWrapper = ({ show }) => {
242
2251
  };
243
2252
 
244
2253
  const AchievementContext = React.createContext(undefined);
245
- const AchievementProvider = ({ children, config, initialState = {}, storageKey = 'react-achievements', badgesButtonPosition = 'top-right', styles = {}, }) => {
2254
+ const useAchievementContext = () => {
2255
+ const context = React.useContext(AchievementContext);
2256
+ if (!context) {
2257
+ throw new Error('useAchievementContext must be used within an AchievementProvider');
2258
+ }
2259
+ return context;
2260
+ };
2261
+ const AchievementProvider = ({ children, config, initialState = {}, storageKey = 'react-achievements', badgesButtonPosition = 'top-right', styles = {}, icons = {}, }) => {
2262
+ const dispatch = useDispatch();
2263
+ const metrics = useSelector((state) => state.achievements.metrics);
2264
+ const unlockedAchievementIds = useSelector((state) => state.achievements.unlockedAchievements);
2265
+ const notifications = useSelector((state) => state.notifications.notifications);
246
2266
  const mergedStyles = React.useMemo(() => mergeDeep(defaultStyles, styles), [styles]);
247
- const [metrics, setMetrics] = React.useState(() => {
248
- const savedMetrics = localStorage.getItem(`${storageKey}-metrics`);
249
- return savedMetrics ? JSON.parse(savedMetrics) : initialState;
250
- });
251
- const [unlockedAchievements, setUnlockedAchievements] = React.useState(() => {
252
- const saved = localStorage.getItem(`${storageKey}-unlocked-achievements`);
253
- return saved ? JSON.parse(saved) : [];
254
- });
255
- const [newlyUnlockedAchievements, setNewlyUnlockedAchievements] = React.useState(() => {
256
- const saved = localStorage.getItem(`${storageKey}-newly-unlocked-achievements`);
257
- return saved ? JSON.parse(saved) : [];
258
- });
259
- const [achievementQueue, setAchievementQueue] = React.useState([]);
260
2267
  const [currentAchievement, setCurrentAchievement] = React.useState(null);
261
2268
  const [showBadges, setShowBadges] = React.useState(false);
262
2269
  const [showConfetti, setShowConfetti] = React.useState(false);
2270
+ const mergedIcons = React.useMemo(() => (Object.assign(Object.assign({}, defaultAchievementIcons), icons)), [icons]);
2271
+ const updateMetrics = React.useCallback((newMetrics) => {
2272
+ dispatch(setMetrics(typeof newMetrics === 'function' ? newMetrics(metrics) : newMetrics));
2273
+ }, [dispatch, metrics]);
2274
+ const resetStorage = React.useCallback(() => {
2275
+ localStorage.removeItem(storageKey);
2276
+ dispatch(resetAchievements());
2277
+ }, [dispatch, storageKey]);
2278
+ React.useEffect(() => {
2279
+ dispatch(initialize({ config, initialState, storageKey }));
2280
+ }, [dispatch, config, initialState, storageKey]);
263
2281
  const checkAchievements = React.useCallback(() => {
264
2282
  const newAchievements = [];
265
- Object.entries(config).forEach(([metricKey, conditions]) => {
266
- const metricValue = metrics[metricKey];
267
- conditions.forEach(condition => {
268
- if (condition.check(metricValue) && !unlockedAchievements.includes(condition.data.id)) {
269
- newAchievements.push(condition.data);
2283
+ if (!unlockedAchievementIds) {
2284
+ console.error('unlockedAchievements is undefined!');
2285
+ return;
2286
+ }
2287
+ Object.entries(config).forEach(([metricName, conditions]) => {
2288
+ const metricValues = metrics[metricName];
2289
+ if (!metricValues) {
2290
+ return;
2291
+ }
2292
+ conditions.forEach((condition) => {
2293
+ if (metricValues.some((value) => condition.isConditionMet(value)) &&
2294
+ !unlockedAchievementIds.includes(condition.achievementDetails.achievementId)) {
2295
+ newAchievements.push(condition.achievementDetails);
270
2296
  }
271
2297
  });
272
2298
  });
273
2299
  if (newAchievements.length > 0) {
274
- const newlyUnlockedIds = newAchievements.map(a => a.id);
275
- setUnlockedAchievements(prev => {
276
- const updated = [...prev, ...newlyUnlockedIds];
277
- localStorage.setItem(`${storageKey}-unlocked-achievements`, JSON.stringify(updated));
278
- return updated;
279
- });
280
- setNewlyUnlockedAchievements(prev => {
281
- const updated = [...prev, ...newlyUnlockedIds];
282
- localStorage.setItem(`${storageKey}-newly-unlocked-achievements`, JSON.stringify(updated));
283
- return updated;
2300
+ newAchievements.forEach((achievement) => {
2301
+ dispatch(unlockAchievement(achievement.achievementId));
2302
+ dispatch(addNotification(achievement));
284
2303
  });
285
- setAchievementQueue(prevQueue => [...prevQueue, ...newAchievements]);
286
2304
  setShowConfetti(true);
287
2305
  }
288
- }, [config, metrics, unlockedAchievements, storageKey]);
2306
+ }, [config, metrics, unlockedAchievementIds, dispatch]);
289
2307
  React.useEffect(() => {
290
2308
  checkAchievements();
291
2309
  }, [metrics, checkAchievements]);
292
2310
  React.useEffect(() => {
293
- if (achievementQueue.length > 0 && !currentAchievement) {
294
- const nextAchievement = achievementQueue[0];
295
- setCurrentAchievement(nextAchievement);
296
- setAchievementQueue(prevQueue => prevQueue.slice(1));
297
- setNewlyUnlockedAchievements(prev => {
298
- const updated = prev.filter(id => id !== nextAchievement.id);
299
- localStorage.setItem(`${storageKey}-newly-unlocked-achievements`, JSON.stringify(updated));
300
- return updated;
301
- });
2311
+ if (notifications.length > 0 && !currentAchievement) {
2312
+ setCurrentAchievement(notifications[0]);
302
2313
  }
303
- }, [achievementQueue, currentAchievement, storageKey]);
2314
+ }, [notifications, currentAchievement]);
304
2315
  const showBadgesModal = () => setShowBadges(true);
305
- const getAchievements = (achievedIds) => {
306
- return Object.values(config).flatMap(conditions => conditions.filter(c => achievedIds.includes(c.data.id)).map(c => c.data));
307
- };
308
- const contextValue = {
309
- metrics,
310
- setMetrics: (newMetrics) => {
311
- setMetrics(prevMetrics => {
312
- const updatedMetrics = typeof newMetrics === 'function' ? newMetrics(prevMetrics) : newMetrics;
313
- localStorage.setItem(`${storageKey}-metrics`, JSON.stringify(updatedMetrics));
314
- return updatedMetrics;
315
- });
316
- },
317
- unlockedAchievements,
318
- checkAchievements,
319
- showBadgesModal
320
- };
321
- return (React.createElement(AchievementContext.Provider, { value: contextValue },
2316
+ const getAchievements = React.useCallback((achievedIds) => {
2317
+ return Object.values(config).flatMap((conditions) => conditions
2318
+ .filter((c) => achievedIds.includes(c.achievementDetails.achievementId))
2319
+ .map((c) => c.achievementDetails));
2320
+ }, [config]);
2321
+ const unlockedAchievementsDetails = getAchievements(unlockedAchievementIds);
2322
+ return (React.createElement(AchievementContext.Provider, { value: { updateMetrics, unlockedAchievements: unlockedAchievementIds, resetStorage } },
322
2323
  children,
323
2324
  React.createElement(AchievementModal$1, { isOpen: !!currentAchievement, achievement: currentAchievement, onClose: () => {
324
2325
  setCurrentAchievement(null);
325
- if (achievementQueue.length === 0 && newlyUnlockedAchievements.length === 0) {
326
- setShowConfetti(false);
2326
+ if (currentAchievement) {
2327
+ dispatch(clearNotifications());
327
2328
  }
328
- }, styles: mergedStyles.achievementModal }),
329
- React.createElement(BadgesModal$1, { isOpen: showBadges, achievements: getAchievements(unlockedAchievements), onClose: () => setShowBadges(false), styles: mergedStyles.badgesModal }),
330
- React.createElement(BadgesButton$1, { onClick: showBadgesModal, position: badgesButtonPosition, styles: mergedStyles.badgesButton }),
331
- React.createElement(ConfettiWrapper, { show: showConfetti || achievementQueue.length > 0 })));
332
- };
333
- const useAchievement = () => {
334
- const context = React.useContext(AchievementContext);
335
- if (context === undefined) {
336
- throw new Error('useAchievement must be used within an AchievementProvider');
337
- }
338
- return context;
2329
+ }, styles: mergedStyles.achievementModal, icons: mergedIcons }),
2330
+ React.createElement(BadgesModal$1, { isOpen: showBadges, achievements: unlockedAchievementsDetails, onClose: () => setShowBadges(false), styles: mergedStyles.badgesModal, icons: mergedIcons }),
2331
+ React.createElement(BadgesButton$1, { onClick: showBadgesModal, position: badgesButtonPosition, styles: mergedStyles.badgesButton, unlockedAchievements: unlockedAchievementsDetails }),
2332
+ React.createElement(ConfettiWrapper, { show: showConfetti || notifications.length > 0 })));
339
2333
  };
340
- // Helper function to deep merge objects
2334
+ function isObject(item) {
2335
+ return item && typeof item === 'object' && !Array.isArray(item);
2336
+ }
341
2337
  function mergeDeep(target, source) {
342
2338
  const output = Object.assign({}, target);
343
2339
  if (isObject(target) && isObject(source)) {
344
- Object.keys(source).forEach(key => {
2340
+ Object.keys(source).forEach((key) => {
345
2341
  if (isObject(source[key])) {
346
- if (!(key in target))
347
- Object.assign(output, { [key]: source[key] });
348
- else
2342
+ if (!(key in target)) {
2343
+ output[key] = source[key];
2344
+ }
2345
+ else {
349
2346
  output[key] = mergeDeep(target[key], source[key]);
2347
+ }
350
2348
  }
351
2349
  else {
352
- Object.assign(output, { [key]: source[key] });
2350
+ output[key] = source[key];
353
2351
  }
354
2352
  });
355
2353
  }
356
2354
  return output;
357
2355
  }
358
- function isObject(item) {
359
- return (item && typeof item === 'object' && !Array.isArray(item));
360
- }
361
2356
 
362
2357
  exports.AchievementProvider = AchievementProvider;
363
2358
  exports.ConfettiWrapper = ConfettiWrapper;
364
- exports.useAchievement = useAchievement;
2359
+ exports.achievementReducer = achievementSlice$1;
2360
+ exports.notificationReducer = notificationSlice$1;
2361
+ exports.useAchievement = useAchievementContext;