| [a762898] | 1 | "use strict";
|
|---|
| 2 |
|
|---|
| 3 | Object.defineProperty(exports, "__esModule", {
|
|---|
| 4 | value: true
|
|---|
| 5 | });
|
|---|
| 6 | exports.RechartsStoreProvider = RechartsStoreProvider;
|
|---|
| 7 | var _react = _interopRequireWildcard(require("react"));
|
|---|
| 8 | var React = _react;
|
|---|
| 9 | var _reactRedux = require("react-redux");
|
|---|
| 10 | var _store = require("./store");
|
|---|
| 11 | var _PanoramaContext = require("../context/PanoramaContext");
|
|---|
| 12 | var _RechartsReduxContext = require("./RechartsReduxContext");
|
|---|
| 13 | function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|---|
| 14 | function RechartsStoreProvider(_ref) {
|
|---|
| 15 | var {
|
|---|
| 16 | preloadedState,
|
|---|
| 17 | children,
|
|---|
| 18 | reduxStoreName
|
|---|
| 19 | } = _ref;
|
|---|
| 20 | var isPanorama = (0, _PanoramaContext.useIsPanorama)();
|
|---|
| 21 | /*
|
|---|
| 22 | * Why the ref? Redux official documentation recommends to use store as a singleton,
|
|---|
| 23 | * and reuse that everywhere: https://redux-toolkit.js.org/api/configureStore#basic-example
|
|---|
| 24 | *
|
|---|
| 25 | * Which is correct! Except that is considering deploying Redux in an app.
|
|---|
| 26 | * Recharts as a library supports multiple charts on the same page.
|
|---|
| 27 | * And each of these charts needs its own store independent of others!
|
|---|
| 28 | *
|
|---|
| 29 | * The alternative is to have everything in the store keyed by the chart id.
|
|---|
| 30 | * Which would make working with everything a little bit more painful because we need the chart id everywhere.
|
|---|
| 31 | */
|
|---|
| 32 | var storeRef = (0, _react.useRef)(null);
|
|---|
| 33 |
|
|---|
| 34 | /*
|
|---|
| 35 | * Panorama means that this chart is not its own chart, it's only a "preview"
|
|---|
| 36 | * being rendered as a child of Brush.
|
|---|
| 37 | * In such case, it should not have a store on its own - it should implicitly inherit
|
|---|
| 38 | * whatever data is in the "parent" or "root" chart.
|
|---|
| 39 | * Which here is represented by not having a Provider at all. All selectors will use the root store by default.
|
|---|
| 40 | */
|
|---|
| 41 | if (isPanorama) {
|
|---|
| 42 | return children;
|
|---|
| 43 | }
|
|---|
| 44 | if (storeRef.current == null) {
|
|---|
| 45 | storeRef.current = (0, _store.createRechartsStore)(preloadedState, reduxStoreName);
|
|---|
| 46 | }
|
|---|
| 47 |
|
|---|
| 48 | // @ts-expect-error React-Redux types demand that the context internal value is not null, but we have that as default.
|
|---|
| 49 | var nonNullContext = _RechartsReduxContext.RechartsReduxContext;
|
|---|
| 50 | return /*#__PURE__*/React.createElement(_reactRedux.Provider, {
|
|---|
| 51 | context: nonNullContext,
|
|---|
| 52 | store: storeRef.current
|
|---|
| 53 | }, children);
|
|---|
| 54 | } |
|---|