@mui/x-internals 8.5.1 → 8.5.2

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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,98 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.5.2
9
+
10
+ _Jun 12, 2025_
11
+
12
+ We'd like to extend a big thank you to the 15 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 📊 Improve Data Grid selectors performance
15
+ - 🐞 Fix `useSyncExternalStore` import error in React 17
16
+
17
+ Special thanks go out to the community members for their valuable contributions:
18
+ @alisasanib, @noobyogi0010.
19
+
20
+ The following are all team members who have contributed to this release:
21
+ @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @JCQuintas, @KenanYusuf, @LukasTy, @mapache-salvaje, @michelengelen, @noraleonte, @oliviertassinari, @prakhargupta1, @romgrk.
22
+
23
+ ### Data Grid
24
+
25
+ #### `@mui/x-data-grid@8.5.2`
26
+
27
+ - [DataGrid] Improve selectors performance (#18234) @romgrk
28
+ - [DataGrid] Fix data grid palette when using CSS vars (#18310) @KenanYusuf
29
+ - [DataGrid] Ignore data source request if the grid got unmounted (#18268) @arminmeh
30
+
31
+ #### `@mui/x-data-grid-pro@8.5.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
32
+
33
+ Same changes as in `@mui/x-data-grid@8.5.2`, plus:
34
+
35
+ - [DataGridPro] Fix flex column width if it is a pinned column (#18293) @alisasanib
36
+ - [DataGridPro] Fix inconsistent filtering results with aggregation (#17954) @cherniavskii
37
+
38
+ #### `@mui/x-data-grid-premium@8.5.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
39
+
40
+ Same changes as in `@mui/x-data-grid-pro@8.5.2`.
41
+
42
+ ### Date and Time Pickers
43
+
44
+ #### `@mui/x-date-pickers@8.5.2`
45
+
46
+ - [pickers] Add `PickerDay2` and `DateRangePickerDay2` components (#15921) @noraleonte
47
+ - [pickers] Fix `hiddenLabel` prop propagation (#18195) @noobyogi0010
48
+
49
+ #### `@mui/x-date-pickers-pro@8.5.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
50
+
51
+ Same changes as in `@mui/x-date-pickers@8.5.2`.
52
+
53
+ ### Charts
54
+
55
+ #### `@mui/x-charts@8.5.2`
56
+
57
+ - [charts] Add a default value formatter for continuous scales (#18178) @bernardobelchior
58
+ - [charts] Add margin-bottom to charts toolbar (#18326) @bernardobelchior
59
+ - [charts] Fix grid with band scale (#18295) @alexfauquette
60
+ - [charts] Remove unnecessary style changes in tests (#18317) @JCQuintas
61
+ - [charts] Remove `sx` prop merging from `useComponentRenderer` (#18235) @bernardobelchior
62
+ - [charts] Fix `useSyncExternalStore` import error in React 17 (#18314) @bernardobelchior
63
+
64
+ #### `@mui/x-charts-pro@8.5.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
65
+
66
+ Same changes as in `@mui/x-charts@8.5.2`, plus:
67
+
68
+ - [charts-pro] Document zoom slider tooltip value formatting (#18261) @bernardobelchior
69
+ - [charts-pro] Funnel `gap` prop does not impact the drawing area (#18233) @JCQuintas
70
+ - [charts-pro] Use `ChartsToolbarPro` types in pro charts (#18243) @bernardobelchior
71
+
72
+ ### Tree View
73
+
74
+ #### `@mui/x-tree-view@8.5.2`
75
+
76
+ - [tree-view] Fix `useSyncExternalStore` import error in React 17 (#18314) @bernardobelchior
77
+
78
+ #### `@mui/x-tree-view-pro@8.5.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
79
+
80
+ Same changes as in `@mui/x-tree-view@8.5.2`.
81
+
82
+ ### Docs
83
+
84
+ - [docs] Add toolbar custom trigger and panel recipe (#18297) @KenanYusuf
85
+ - [docs] Copyedit the Priority support page (#18311) @mapache-salvaje
86
+ - [docs] Remove confusing opt-out mention in telemetry docs (#18257) @prakhargupta1
87
+ - [docs] Revise the Master Detail doc (#17927) @mapache-salvaje
88
+ - [docs] Revise the list view doc (#17928) @mapache-salvaje
89
+ - [docs] Audit and revise the Pro column docs (#17844) @mapache-salvaje
90
+ - [docs] Add some more context on Heatmap (#18256) @oliviertassinari
91
+ - [x-telemetry] Reduce Telemetry overhead (#18292) @oliviertassinari
92
+ - [code-infra] Align Node version used in CI to v22 (#18319) @LukasTy
93
+ - [code-infra] Fix pkg.pr.new publishing (#18316) @bernardobelchior
94
+ - [code-infra] Revert `React` to `19.0.0` (#18265) @LukasTy
95
+ - [code-infra] Use `catalog` for reused dependencies (#18302) @LukasTy
96
+ - [infra] Remove unused karma/mocha deps and files (#18340) @JCQuintas
97
+ - [infra] Update github label references to use 'scope' instead of 'component' (#18260) @michelengelen
98
+ - [infra] Use a single browser server in CI (#18230) @JCQuintas
99
+
8
100
  ## 8.5.1
9
101
 
10
102
  <!-- generated comparing v8.5.0..master -->
@@ -0,0 +1 @@
1
+ export { lruMemoize } from 'reselect';
@@ -0,0 +1 @@
1
+ export { lruMemoize } from 'reselect';
@@ -0,0 +1,13 @@
1
+ type Listener<T> = (value: T) => void;
2
+ export declare class Store<State> {
3
+ state: State;
4
+ private listeners;
5
+ static create<T>(state: T): Store<T>;
6
+ constructor(state: State);
7
+ subscribe: (fn: Listener<State>) => () => void;
8
+ getSnapshot: () => State;
9
+ update: (newState: State) => void;
10
+ apply(changes: Partial<State>): void;
11
+ set<T>(key: keyof State, value: T): void;
12
+ }
13
+ export {};
@@ -0,0 +1,42 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ export class Store {
3
+ static create(state) {
4
+ return new Store(state);
5
+ }
6
+ constructor(state) {
7
+ this.state = void 0;
8
+ this.listeners = void 0;
9
+ this.subscribe = fn => {
10
+ this.listeners.add(fn);
11
+ return () => {
12
+ this.listeners.delete(fn);
13
+ };
14
+ };
15
+ this.getSnapshot = () => {
16
+ return this.state;
17
+ };
18
+ this.update = newState => {
19
+ if (this.state !== newState) {
20
+ this.state = newState;
21
+ this.listeners.forEach(l => l(newState));
22
+ }
23
+ };
24
+ this.state = state;
25
+ this.listeners = new Set();
26
+ }
27
+ apply(changes) {
28
+ for (const key in changes) {
29
+ if (!Object.is(this.state[key], changes[key])) {
30
+ this.update(_extends({}, this.state, changes));
31
+ return;
32
+ }
33
+ }
34
+ }
35
+ set(key, value) {
36
+ if (!Object.is(this.state[key], value)) {
37
+ this.update(_extends({}, this.state, {
38
+ [key]: value
39
+ }));
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,4 @@
1
+ import type { CreateSelectorFunction } from "./createSelectorType.js";
2
+ export type { CreateSelectorFunction } from "./createSelectorType.js";
3
+ export declare const createSelector: CreateSelectorFunction;
4
+ export declare const createSelectorMemoized: CreateSelectorFunction;
@@ -0,0 +1,138 @@
1
+ import { lruMemoize, createSelectorCreator } from 'reselect';
2
+ /* eslint-disable no-underscore-dangle */ // __cacheKey__
3
+
4
+ const reselectCreateSelector = createSelectorCreator({
5
+ memoize: lruMemoize,
6
+ memoizeOptions: {
7
+ maxSize: 1,
8
+ equalityCheck: Object.is
9
+ }
10
+ });
11
+ /* eslint-disable id-denylist */
12
+ export const createSelector = (a, b, c, d, e, f, ...other) => {
13
+ if (other.length > 0) {
14
+ throw new Error('Unsupported number of selectors');
15
+ }
16
+ let selector;
17
+ if (a && b && c && d && e && f) {
18
+ selector = (state, a1, a2, a3) => {
19
+ const va = a(state, a1, a2, a3);
20
+ const vb = b(state, a1, a2, a3);
21
+ const vc = c(state, a1, a2, a3);
22
+ const vd = d(state, a1, a2, a3);
23
+ const ve = e(state, a1, a2, a3);
24
+ return f(va, vb, vc, vd, ve, a1, a2, a3);
25
+ };
26
+ } else if (a && b && c && d && e) {
27
+ selector = (state, a1, a2, a3) => {
28
+ const va = a(state, a1, a2, a3);
29
+ const vb = b(state, a1, a2, a3);
30
+ const vc = c(state, a1, a2, a3);
31
+ const vd = d(state, a1, a2, a3);
32
+ return e(va, vb, vc, vd, a1, a2, a3);
33
+ };
34
+ } else if (a && b && c && d) {
35
+ selector = (state, a1, a2, a3) => {
36
+ const va = a(state, a1, a2, a3);
37
+ const vb = b(state, a1, a2, a3);
38
+ const vc = c(state, a1, a2, a3);
39
+ return d(va, vb, vc, a1, a2, a3);
40
+ };
41
+ } else if (a && b && c) {
42
+ selector = (state, a1, a2, a3) => {
43
+ const va = a(state, a1, a2, a3);
44
+ const vb = b(state, a1, a2, a3);
45
+ return c(va, vb, a1, a2, a3);
46
+ };
47
+ } else if (a && b) {
48
+ selector = (state, a1, a2, a3) => {
49
+ const va = a(state, a1, a2, a3);
50
+ return b(va, a1, a2, a3);
51
+ };
52
+ } else if (a) {
53
+ selector = a;
54
+ } else {
55
+ throw new Error('Missing arguments');
56
+ }
57
+ return selector;
58
+ };
59
+ /* eslint-enable id-denylist */
60
+
61
+ export const createSelectorMemoized = (...selectors) => {
62
+ const cache = new WeakMap();
63
+ let nextCacheId = 1;
64
+ const combiner = selectors[selectors.length - 1];
65
+ const nSelectors = selectors.length - 1 || 1;
66
+ // (s1, s2, ..., sN, a1, a2, a3) => { ... }
67
+ const argsLength = Math.max(combiner.length - nSelectors, 0);
68
+ if (argsLength > 3) {
69
+ throw new Error('Unsupported number of arguments');
70
+ }
71
+
72
+ // prettier-ignore
73
+ const selector = (state, a1, a2, a3) => {
74
+ let cacheKey = state.__cacheKey__;
75
+ if (!cacheKey) {
76
+ cacheKey = {
77
+ id: nextCacheId
78
+ };
79
+ state.__cacheKey__ = cacheKey;
80
+ nextCacheId += 1;
81
+ }
82
+ let fn = cache.get(cacheKey);
83
+ if (!fn) {
84
+ let reselectArgs = selectors;
85
+ const selectorArgs = [undefined, undefined, undefined];
86
+ switch (argsLength) {
87
+ case 0:
88
+ break;
89
+ case 1:
90
+ {
91
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], combiner];
92
+ break;
93
+ }
94
+ case 2:
95
+ {
96
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], combiner];
97
+ break;
98
+ }
99
+ case 3:
100
+ {
101
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], () => selectorArgs[2], combiner];
102
+ break;
103
+ }
104
+ default:
105
+ throw new Error('Unsupported number of arguments');
106
+ }
107
+ fn = reselectCreateSelector(...reselectArgs);
108
+ fn.selectorArgs = selectorArgs;
109
+ cache.set(cacheKey, fn);
110
+ }
111
+
112
+ /* eslint-disable no-fallthrough */
113
+
114
+ switch (argsLength) {
115
+ case 3:
116
+ fn.selectorArgs[2] = a3;
117
+ case 2:
118
+ fn.selectorArgs[1] = a2;
119
+ case 1:
120
+ fn.selectorArgs[0] = a1;
121
+ case 0:
122
+ default:
123
+ }
124
+ switch (argsLength) {
125
+ case 0:
126
+ return fn(state);
127
+ case 1:
128
+ return fn(state, a1);
129
+ case 2:
130
+ return fn(state, a1, a2);
131
+ case 3:
132
+ return fn(state, a1, a2, a3);
133
+ default:
134
+ throw new Error('unreachable');
135
+ }
136
+ };
137
+ return selector;
138
+ };
@@ -0,0 +1,9 @@
1
+ import type { Selector } from 'reselect';
2
+ export type CreateSelectorFunction = <const Args extends any[], const Selectors extends ReadonlyArray<Selector<any>>, const Combiner extends (...args: readonly [...ReturnTypes<Selectors>, ...Args]) => any>(...items: [...Selectors, Combiner]) => (...args: Selectors['length'] extends 0 ? MergeParams<ReturnTypes<Selectors>, Parameters<Combiner>> : [StateFromSelectorList<Selectors>, ...MergeParams<ReturnTypes<Selectors>, Parameters<Combiner>>]) => ReturnType<Combiner>;
3
+ type StateFromSelectorList<Selectors extends readonly any[]> = Selectors extends [f: infer F, ...other: infer R] ? StateFromSelector<F> extends StateFromSelectorList<R> ? StateFromSelector<F> : StateFromSelectorList<R> : {};
4
+ type StateFromSelector<T> = T extends ((first: infer F, ...args: any[]) => any) ? F : never;
5
+ type Fn = (...args: any[]) => any;
6
+ type ReturnTypes<FunctionsArray extends readonly Fn[]> = { [Index in keyof FunctionsArray]: FunctionsArray[Index] extends FunctionsArray[number] ? ReturnType<FunctionsArray[Index]> : never };
7
+ type MergeParams<STypes extends readonly unknown[], CTypes extends readonly unknown[]> = STypes['length'] extends 0 ? CTypes : MergeParams<DropFirst<STypes>, DropFirst<CTypes>>;
8
+ type DropFirst<T> = T extends [any, ...infer Xs] ? Xs : [];
9
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from "./createSelector.js";
2
+ export * from "./Store.js";
@@ -0,0 +1,2 @@
1
+ export * from "./createSelector.js";
2
+ export * from "./Store.js";
@@ -20,9 +20,6 @@ export function useComponentRenderer(defaultElement, render, props, state = {})
20
20
  if (render.props.style || props.style) {
21
21
  props.style = _extends({}, props.style, render.props.style);
22
22
  }
23
- if (render.props.sx || props.sx) {
24
- props.sx = mergeSx(props.sx, render.props.sx);
25
- }
26
23
  return /*#__PURE__*/React.cloneElement(render, props);
27
24
  }
28
25
  return /*#__PURE__*/React.createElement(defaultElement, props);
@@ -32,10 +29,4 @@ function mergeClassNames(className, otherClassName) {
32
29
  return className || otherClassName;
33
30
  }
34
31
  return `${className} ${otherClassName}`;
35
- }
36
- function mergeSx(sx1, sx2) {
37
- if (!sx1 || !sx2) {
38
- return sx1 || sx2;
39
- }
40
- return (Array.isArray(sx1) ? sx1 : [sx1]).concat(Array.isArray(sx2) ? sx2 : [sx2]);
41
32
  }
@@ -0,0 +1 @@
1
+ export { lruMemoize } from 'reselect';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "lruMemoize", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _reselect.lruMemoize;
10
+ }
11
+ });
12
+ var _reselect = require("reselect");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-internals",
3
- "version": "8.5.1",
3
+ "version": "8.5.2",
4
4
  "author": "MUI Team",
5
5
  "description": "Utility functions for the MUI X packages (internal use only).",
6
6
  "license": "MIT",
@@ -31,8 +31,9 @@
31
31
  "directory": "packages/x-internals"
32
32
  },
33
33
  "dependencies": {
34
- "@babel/runtime": "^7.27.4",
35
- "@mui/utils": "^7.1.1"
34
+ "@babel/runtime": "^7.27.6",
35
+ "@mui/utils": "^7.1.1",
36
+ "reselect": "^5.1.1"
36
37
  },
37
38
  "peerDependencies": {
38
39
  "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0",
@@ -0,0 +1,13 @@
1
+ type Listener<T> = (value: T) => void;
2
+ export declare class Store<State> {
3
+ state: State;
4
+ private listeners;
5
+ static create<T>(state: T): Store<T>;
6
+ constructor(state: State);
7
+ subscribe: (fn: Listener<State>) => () => void;
8
+ getSnapshot: () => State;
9
+ update: (newState: State) => void;
10
+ apply(changes: Partial<State>): void;
11
+ set<T>(key: keyof State, value: T): void;
12
+ }
13
+ export {};
package/store/Store.js ADDED
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Store = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ class Store {
10
+ static create(state) {
11
+ return new Store(state);
12
+ }
13
+ constructor(state) {
14
+ this.state = void 0;
15
+ this.listeners = void 0;
16
+ this.subscribe = fn => {
17
+ this.listeners.add(fn);
18
+ return () => {
19
+ this.listeners.delete(fn);
20
+ };
21
+ };
22
+ this.getSnapshot = () => {
23
+ return this.state;
24
+ };
25
+ this.update = newState => {
26
+ if (this.state !== newState) {
27
+ this.state = newState;
28
+ this.listeners.forEach(l => l(newState));
29
+ }
30
+ };
31
+ this.state = state;
32
+ this.listeners = new Set();
33
+ }
34
+ apply(changes) {
35
+ for (const key in changes) {
36
+ if (!Object.is(this.state[key], changes[key])) {
37
+ this.update((0, _extends2.default)({}, this.state, changes));
38
+ return;
39
+ }
40
+ }
41
+ }
42
+ set(key, value) {
43
+ if (!Object.is(this.state[key], value)) {
44
+ this.update((0, _extends2.default)({}, this.state, {
45
+ [key]: value
46
+ }));
47
+ }
48
+ }
49
+ }
50
+ exports.Store = Store;
@@ -0,0 +1,4 @@
1
+ import type { CreateSelectorFunction } from "./createSelectorType.js";
2
+ export type { CreateSelectorFunction } from "./createSelectorType.js";
3
+ export declare const createSelector: CreateSelectorFunction;
4
+ export declare const createSelectorMemoized: CreateSelectorFunction;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSelectorMemoized = exports.createSelector = void 0;
7
+ var _reselect = require("reselect");
8
+ /* eslint-disable no-underscore-dangle */ // __cacheKey__
9
+
10
+ const reselectCreateSelector = (0, _reselect.createSelectorCreator)({
11
+ memoize: _reselect.lruMemoize,
12
+ memoizeOptions: {
13
+ maxSize: 1,
14
+ equalityCheck: Object.is
15
+ }
16
+ });
17
+ /* eslint-disable id-denylist */
18
+ const createSelector = (a, b, c, d, e, f, ...other) => {
19
+ if (other.length > 0) {
20
+ throw new Error('Unsupported number of selectors');
21
+ }
22
+ let selector;
23
+ if (a && b && c && d && e && f) {
24
+ selector = (state, a1, a2, a3) => {
25
+ const va = a(state, a1, a2, a3);
26
+ const vb = b(state, a1, a2, a3);
27
+ const vc = c(state, a1, a2, a3);
28
+ const vd = d(state, a1, a2, a3);
29
+ const ve = e(state, a1, a2, a3);
30
+ return f(va, vb, vc, vd, ve, a1, a2, a3);
31
+ };
32
+ } else if (a && b && c && d && e) {
33
+ selector = (state, a1, a2, a3) => {
34
+ const va = a(state, a1, a2, a3);
35
+ const vb = b(state, a1, a2, a3);
36
+ const vc = c(state, a1, a2, a3);
37
+ const vd = d(state, a1, a2, a3);
38
+ return e(va, vb, vc, vd, a1, a2, a3);
39
+ };
40
+ } else if (a && b && c && d) {
41
+ selector = (state, a1, a2, a3) => {
42
+ const va = a(state, a1, a2, a3);
43
+ const vb = b(state, a1, a2, a3);
44
+ const vc = c(state, a1, a2, a3);
45
+ return d(va, vb, vc, a1, a2, a3);
46
+ };
47
+ } else if (a && b && c) {
48
+ selector = (state, a1, a2, a3) => {
49
+ const va = a(state, a1, a2, a3);
50
+ const vb = b(state, a1, a2, a3);
51
+ return c(va, vb, a1, a2, a3);
52
+ };
53
+ } else if (a && b) {
54
+ selector = (state, a1, a2, a3) => {
55
+ const va = a(state, a1, a2, a3);
56
+ return b(va, a1, a2, a3);
57
+ };
58
+ } else if (a) {
59
+ selector = a;
60
+ } else {
61
+ throw new Error('Missing arguments');
62
+ }
63
+ return selector;
64
+ };
65
+ /* eslint-enable id-denylist */
66
+ exports.createSelector = createSelector;
67
+ const createSelectorMemoized = (...selectors) => {
68
+ const cache = new WeakMap();
69
+ let nextCacheId = 1;
70
+ const combiner = selectors[selectors.length - 1];
71
+ const nSelectors = selectors.length - 1 || 1;
72
+ // (s1, s2, ..., sN, a1, a2, a3) => { ... }
73
+ const argsLength = Math.max(combiner.length - nSelectors, 0);
74
+ if (argsLength > 3) {
75
+ throw new Error('Unsupported number of arguments');
76
+ }
77
+
78
+ // prettier-ignore
79
+ const selector = (state, a1, a2, a3) => {
80
+ let cacheKey = state.__cacheKey__;
81
+ if (!cacheKey) {
82
+ cacheKey = {
83
+ id: nextCacheId
84
+ };
85
+ state.__cacheKey__ = cacheKey;
86
+ nextCacheId += 1;
87
+ }
88
+ let fn = cache.get(cacheKey);
89
+ if (!fn) {
90
+ let reselectArgs = selectors;
91
+ const selectorArgs = [undefined, undefined, undefined];
92
+ switch (argsLength) {
93
+ case 0:
94
+ break;
95
+ case 1:
96
+ {
97
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], combiner];
98
+ break;
99
+ }
100
+ case 2:
101
+ {
102
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], combiner];
103
+ break;
104
+ }
105
+ case 3:
106
+ {
107
+ reselectArgs = [...selectors.slice(0, -1), () => selectorArgs[0], () => selectorArgs[1], () => selectorArgs[2], combiner];
108
+ break;
109
+ }
110
+ default:
111
+ throw new Error('Unsupported number of arguments');
112
+ }
113
+ fn = reselectCreateSelector(...reselectArgs);
114
+ fn.selectorArgs = selectorArgs;
115
+ cache.set(cacheKey, fn);
116
+ }
117
+
118
+ /* eslint-disable no-fallthrough */
119
+
120
+ switch (argsLength) {
121
+ case 3:
122
+ fn.selectorArgs[2] = a3;
123
+ case 2:
124
+ fn.selectorArgs[1] = a2;
125
+ case 1:
126
+ fn.selectorArgs[0] = a1;
127
+ case 0:
128
+ default:
129
+ }
130
+ switch (argsLength) {
131
+ case 0:
132
+ return fn(state);
133
+ case 1:
134
+ return fn(state, a1);
135
+ case 2:
136
+ return fn(state, a1, a2);
137
+ case 3:
138
+ return fn(state, a1, a2, a3);
139
+ default:
140
+ throw new Error('unreachable');
141
+ }
142
+ };
143
+ return selector;
144
+ };
145
+ exports.createSelectorMemoized = createSelectorMemoized;
@@ -0,0 +1,9 @@
1
+ import type { Selector } from 'reselect';
2
+ export type CreateSelectorFunction = <const Args extends any[], const Selectors extends ReadonlyArray<Selector<any>>, const Combiner extends (...args: readonly [...ReturnTypes<Selectors>, ...Args]) => any>(...items: [...Selectors, Combiner]) => (...args: Selectors['length'] extends 0 ? MergeParams<ReturnTypes<Selectors>, Parameters<Combiner>> : [StateFromSelectorList<Selectors>, ...MergeParams<ReturnTypes<Selectors>, Parameters<Combiner>>]) => ReturnType<Combiner>;
3
+ type StateFromSelectorList<Selectors extends readonly any[]> = Selectors extends [f: infer F, ...other: infer R] ? StateFromSelector<F> extends StateFromSelectorList<R> ? StateFromSelector<F> : StateFromSelectorList<R> : {};
4
+ type StateFromSelector<T> = T extends ((first: infer F, ...args: any[]) => any) ? F : never;
5
+ type Fn = (...args: any[]) => any;
6
+ type ReturnTypes<FunctionsArray extends readonly Fn[]> = { [Index in keyof FunctionsArray]: FunctionsArray[Index] extends FunctionsArray[number] ? ReturnType<FunctionsArray[Index]> : never };
7
+ type MergeParams<STypes extends readonly unknown[], CTypes extends readonly unknown[]> = STypes['length'] extends 0 ? CTypes : MergeParams<DropFirst<STypes>, DropFirst<CTypes>>;
8
+ type DropFirst<T> = T extends [any, ...infer Xs] ? Xs : [];
9
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,2 @@
1
+ export * from "./createSelector.js";
2
+ export * from "./Store.js";
package/store/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _createSelector = require("./createSelector");
7
+ Object.keys(_createSelector).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _createSelector[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _createSelector[key];
14
+ }
15
+ });
16
+ });
17
+ var _Store = require("./Store");
18
+ Object.keys(_Store).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _Store[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _Store[key];
25
+ }
26
+ });
27
+ });
@@ -28,9 +28,6 @@ function useComponentRenderer(defaultElement, render, props, state = {}) {
28
28
  if (render.props.style || props.style) {
29
29
  props.style = (0, _extends2.default)({}, props.style, render.props.style);
30
30
  }
31
- if (render.props.sx || props.sx) {
32
- props.sx = mergeSx(props.sx, render.props.sx);
33
- }
34
31
  return /*#__PURE__*/React.cloneElement(render, props);
35
32
  }
36
33
  return /*#__PURE__*/React.createElement(defaultElement, props);
@@ -40,10 +37,4 @@ function mergeClassNames(className, otherClassName) {
40
37
  return className || otherClassName;
41
38
  }
42
39
  return `${className} ${otherClassName}`;
43
- }
44
- function mergeSx(sx1, sx2) {
45
- if (!sx1 || !sx2) {
46
- return sx1 || sx2;
47
- }
48
- return (Array.isArray(sx1) ? sx1 : [sx1]).concat(Array.isArray(sx2) ? sx2 : [sx2]);
49
40
  }