react-resize-detector-context 0.0.0
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/LICENSE +21 -0
- package/README.md +206 -0
- package/dist/index.d.mts +85 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +2 -0
- package/dist/index.mjs +2 -0
- package/package.json +106 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Christopher Schwarz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
|
|
2
|
+
# React Resize Detector Context
|
|
3
|
+
|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
A lightweight React context that leverages [react-resize-detector](https://github.com/maslianok/react-resize-detector) to detect the current breakpoint based on an element's width. It provides utility functions and helper components to conditionally render content based on responsive breakpoints.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- Dynamically detects the current breakpoint based on element width.
|
|
13
|
+
- Supports custom breakpoint names (e.g., "XS", "SM", "MD", "LG", "XL" or any arbitrary names like "Smart", "Mini", etc.).
|
|
14
|
+
- Utility functions:
|
|
15
|
+
- `isAtLeast(breakpoint)`: Returns `true` if the current breakpoint is greater than or equal to the provided one.
|
|
16
|
+
- `isBelow(breakpoint)`: Returns `true` if the current breakpoint is less than the provided one.
|
|
17
|
+
- `valueByBreakpoint(mapping)`: Returns a value from the provided mapping based on the current breakpoint.
|
|
18
|
+
- Helper component `BreakpointConditional` for conditional rendering.
|
|
19
|
+
- Error logging for invalid configurations (e.g. duplicate values, width not set, etc.).
|
|
20
|
+
- Fully typed in TypeScript with comprehensive IDE support.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
- **Node.js**: >= 18.0.0
|
|
27
|
+
- **React**: >= 17
|
|
28
|
+
- **React-DOM**: >= 17
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
Install via npm:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
npm install react-resize-detector-context
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Usage
|
|
43
|
+
|
|
44
|
+
### Basic Usage
|
|
45
|
+
|
|
46
|
+
Wrap your component tree with the `BreakpointProvider` and provide a breakpoint configuration. Then, access the current breakpoint and utility functions via the `useBreakpoint` hook.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import React from 'react';
|
|
50
|
+
import { BreakpointProvider, useBreakpoint } from 'react-resize-detector-context';
|
|
51
|
+
|
|
52
|
+
const breakpoints = {
|
|
53
|
+
XS: 0,
|
|
54
|
+
SM: 500,
|
|
55
|
+
MD: 700,
|
|
56
|
+
LG: 900,
|
|
57
|
+
XL: 1100,
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const ResponsiveComponent = () => {
|
|
61
|
+
const { width, breakpoint, isAtLeast, valueByBreakpoint } = useBreakpoint();
|
|
62
|
+
return (
|
|
63
|
+
<div>
|
|
64
|
+
<p>Current width: {width}px</p>
|
|
65
|
+
<p>Current breakpoint: {breakpoint}</p>
|
|
66
|
+
<p>Is at least MD: {isAtLeast('MD') ? '✅' : '❌'}</p>
|
|
67
|
+
<p>
|
|
68
|
+
Mapping: {valueByBreakpoint({
|
|
69
|
+
XS: 'Extra Small',
|
|
70
|
+
SM: 'Small',
|
|
71
|
+
MD: 'Medium',
|
|
72
|
+
LG: 'Large',
|
|
73
|
+
XL: 'Extra Large'
|
|
74
|
+
})}
|
|
75
|
+
</p>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const App = () => (
|
|
81
|
+
<BreakpointProvider breakpoints={breakpoints}>
|
|
82
|
+
<ResponsiveComponent />
|
|
83
|
+
</BreakpointProvider>
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
export default App;
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Conditional Rendering with BreakpointConditional
|
|
92
|
+
|
|
93
|
+
Use `BreakpointConditional` to render content only when certain breakpoint conditions are met.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import React from 'react';
|
|
97
|
+
import { BreakpointProvider, BreakpointConditional } from 'react-resize-detector-context';
|
|
98
|
+
|
|
99
|
+
const breakpoints = {
|
|
100
|
+
XS: 0,
|
|
101
|
+
SM: 500,
|
|
102
|
+
MD: 700,
|
|
103
|
+
LG: 900,
|
|
104
|
+
XL: 1100,
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const ConditionalComponent = () => (
|
|
108
|
+
<div>
|
|
109
|
+
<BreakpointConditional isAtLeast="MD">
|
|
110
|
+
<p>😊 This content is visible from MD and up.</p>
|
|
111
|
+
</BreakpointConditional>
|
|
112
|
+
<BreakpointConditional isBelow="LG">
|
|
113
|
+
<p>🚀 This content is visible for breakpoints below LG.</p>
|
|
114
|
+
</BreakpointConditional>
|
|
115
|
+
</div>
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
const App = () => (
|
|
119
|
+
<BreakpointProvider breakpoints={breakpoints}>
|
|
120
|
+
<ConditionalComponent />
|
|
121
|
+
</BreakpointProvider>
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
export default App;
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### Custom Breakpoints Example
|
|
130
|
+
|
|
131
|
+
You can define your own custom breakpoints with any names. For instance, using car sizes:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
import React from 'react';
|
|
135
|
+
import { BreakpointProvider, useBreakpoint } from 'react-resize-detector-context';
|
|
136
|
+
|
|
137
|
+
const carBreakpoints = {
|
|
138
|
+
Smart: 0,
|
|
139
|
+
Mini: 350,
|
|
140
|
+
Sedan: 600,
|
|
141
|
+
SUV: 900,
|
|
142
|
+
Ram: 1200,
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const CarComponent = () => {
|
|
146
|
+
const { width, breakpoint, valueByBreakpoint } = useBreakpoint();
|
|
147
|
+
return (
|
|
148
|
+
<div>
|
|
149
|
+
<p>Current width: {width}px</p>
|
|
150
|
+
<p>Current car size: {breakpoint}</p>
|
|
151
|
+
<p>
|
|
152
|
+
Mapping: {valueByBreakpoint({
|
|
153
|
+
Smart: '🚗 Smart',
|
|
154
|
+
Mini: '🚙 Mini',
|
|
155
|
+
Sedan: '🚘 Sedan',
|
|
156
|
+
SUV: '🚐 SUV',
|
|
157
|
+
Ram: '🚚 Ram'
|
|
158
|
+
})}
|
|
159
|
+
</p>
|
|
160
|
+
</div>
|
|
161
|
+
);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const App = () => (
|
|
165
|
+
<BreakpointProvider breakpoints={carBreakpoints}>
|
|
166
|
+
<CarComponent />
|
|
167
|
+
</BreakpointProvider>
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
export default App;
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Available Scripts
|
|
176
|
+
|
|
177
|
+
You can use the following scripts from your command line:
|
|
178
|
+
|
|
179
|
+
- **`npm run build`**
|
|
180
|
+
Builds the package (using [tsup](https://github.com/egoist/tsup)).
|
|
181
|
+
|
|
182
|
+
- **`npm run dev`**
|
|
183
|
+
Runs development mode concurrently with build watch, Storybook, and tests.
|
|
184
|
+
|
|
185
|
+
- **`npm run storybook`**
|
|
186
|
+
Launches Storybook for interactive component demos on port 6006.
|
|
187
|
+
|
|
188
|
+
- **`npm run test`**
|
|
189
|
+
Runs tests using Vitest.
|
|
190
|
+
|
|
191
|
+
- **`npm run test:ci`**
|
|
192
|
+
Runs tests with coverage.
|
|
193
|
+
|
|
194
|
+
- **`npm run lint`**
|
|
195
|
+
Runs biome check with auto-fix.
|
|
196
|
+
|
|
197
|
+
- **`npm run release`**
|
|
198
|
+
Builds and triggers the release process.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
This project is licensed under the MIT License.
|
|
205
|
+
|
|
206
|
+
---
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
type Breakpoint = string;
|
|
4
|
+
interface BreakpointContextType {
|
|
5
|
+
/** Current width of the observed element */
|
|
6
|
+
width: number;
|
|
7
|
+
/** Currently active breakpoint */
|
|
8
|
+
breakpoint: Breakpoint | null;
|
|
9
|
+
/** Defined breakpoints, e.g., { XS: 0, SM: 500, MD: 700, LG: 900, XL: 1100 } */
|
|
10
|
+
breakpoints: Record<Breakpoint, number>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns `true` if the current breakpoint is greater than or equal to the provided one.
|
|
13
|
+
* E.g.: isAtLeast('MD') returns true if the current breakpoint is MD, LG, or XL.
|
|
14
|
+
*/
|
|
15
|
+
isAtLeast: (size: Breakpoint) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Returns `true` if the current breakpoint is less than the provided one.
|
|
18
|
+
*/
|
|
19
|
+
isBelow: (size: Breakpoint) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a value from the mapping based on the current breakpoint.
|
|
22
|
+
* E.g.: valueByBreakpoint({ MD: 3, LG: 2 }) returns 3 for MD and 2 for LG.
|
|
23
|
+
*/
|
|
24
|
+
valueByBreakpoint: <T>(values: Partial<Record<Breakpoint, T>>) => T | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Instead of using React.RefObject<HTMLElement> (which is invariant),
|
|
28
|
+
* we use a structural type that accepts any object with a `current: HTMLElement | null` property.
|
|
29
|
+
*/
|
|
30
|
+
interface BreakpointProviderProps {
|
|
31
|
+
/** Defined breakpoints */
|
|
32
|
+
breakpoints: Record<Breakpoint, number>;
|
|
33
|
+
/** Child components that use the context */
|
|
34
|
+
children: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Optional: Provide a ref to the element to be observed.
|
|
37
|
+
* If not provided, an internal <div ref={...}> will be rendered.
|
|
38
|
+
*/
|
|
39
|
+
targetRef?: {
|
|
40
|
+
current: HTMLElement | null;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* BreakpointProvider 🚀
|
|
45
|
+
*
|
|
46
|
+
* Uses react-resize-detector to measure the width of an element and determine the current breakpoint
|
|
47
|
+
* based on the provided breakpoints. Additionally, it provides utility functions (isAtLeast, isBelow)
|
|
48
|
+
* and valueByBreakpoint.
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ **Edge Cases / Warnings:**
|
|
51
|
+
* - If the measured width is undefined or 0, an error is logged in the console.
|
|
52
|
+
* - If the current width is less than the smallest breakpoint (and width > 0), an error is logged.
|
|
53
|
+
* - If duplicate breakpoint values are detected, an error is logged.
|
|
54
|
+
*/
|
|
55
|
+
declare const BreakpointProvider: React.FC<BreakpointProviderProps>;
|
|
56
|
+
/**
|
|
57
|
+
* Hook for accessing the BreakpointContext.
|
|
58
|
+
* Throws an error if used outside of a BreakpointProvider. ⚠️
|
|
59
|
+
*/
|
|
60
|
+
declare const useBreakpoint: () => BreakpointContextType;
|
|
61
|
+
interface BreakpointConditionalProps {
|
|
62
|
+
/**
|
|
63
|
+
* Array of breakpoints at which the children should be displayed.
|
|
64
|
+
* E.g.: ['MD', 'LG'] renders children only if the current breakpoint is MD or LG.
|
|
65
|
+
*/
|
|
66
|
+
show?: Breakpoint[];
|
|
67
|
+
/**
|
|
68
|
+
* The children are displayed only if the current breakpoint is at least this value.
|
|
69
|
+
* E.g.: isAtLeast="MD" renders children for MD, LG, or XL.
|
|
70
|
+
*/
|
|
71
|
+
isAtLeast?: Breakpoint;
|
|
72
|
+
/**
|
|
73
|
+
* The children are displayed only if the current breakpoint is below this value.
|
|
74
|
+
*/
|
|
75
|
+
isBelow?: Breakpoint;
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* BreakpointConditional 🎨
|
|
80
|
+
*
|
|
81
|
+
* Renders its children only if all provided conditions regarding the current breakpoint are met.
|
|
82
|
+
*/
|
|
83
|
+
declare const BreakpointConditional: React.FC<BreakpointConditionalProps>;
|
|
84
|
+
|
|
85
|
+
export { type Breakpoint, BreakpointConditional, type BreakpointContextType, BreakpointProvider, type BreakpointProviderProps, useBreakpoint };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
type Breakpoint = string;
|
|
4
|
+
interface BreakpointContextType {
|
|
5
|
+
/** Current width of the observed element */
|
|
6
|
+
width: number;
|
|
7
|
+
/** Currently active breakpoint */
|
|
8
|
+
breakpoint: Breakpoint | null;
|
|
9
|
+
/** Defined breakpoints, e.g., { XS: 0, SM: 500, MD: 700, LG: 900, XL: 1100 } */
|
|
10
|
+
breakpoints: Record<Breakpoint, number>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns `true` if the current breakpoint is greater than or equal to the provided one.
|
|
13
|
+
* E.g.: isAtLeast('MD') returns true if the current breakpoint is MD, LG, or XL.
|
|
14
|
+
*/
|
|
15
|
+
isAtLeast: (size: Breakpoint) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Returns `true` if the current breakpoint is less than the provided one.
|
|
18
|
+
*/
|
|
19
|
+
isBelow: (size: Breakpoint) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a value from the mapping based on the current breakpoint.
|
|
22
|
+
* E.g.: valueByBreakpoint({ MD: 3, LG: 2 }) returns 3 for MD and 2 for LG.
|
|
23
|
+
*/
|
|
24
|
+
valueByBreakpoint: <T>(values: Partial<Record<Breakpoint, T>>) => T | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Instead of using React.RefObject<HTMLElement> (which is invariant),
|
|
28
|
+
* we use a structural type that accepts any object with a `current: HTMLElement | null` property.
|
|
29
|
+
*/
|
|
30
|
+
interface BreakpointProviderProps {
|
|
31
|
+
/** Defined breakpoints */
|
|
32
|
+
breakpoints: Record<Breakpoint, number>;
|
|
33
|
+
/** Child components that use the context */
|
|
34
|
+
children: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Optional: Provide a ref to the element to be observed.
|
|
37
|
+
* If not provided, an internal <div ref={...}> will be rendered.
|
|
38
|
+
*/
|
|
39
|
+
targetRef?: {
|
|
40
|
+
current: HTMLElement | null;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* BreakpointProvider 🚀
|
|
45
|
+
*
|
|
46
|
+
* Uses react-resize-detector to measure the width of an element and determine the current breakpoint
|
|
47
|
+
* based on the provided breakpoints. Additionally, it provides utility functions (isAtLeast, isBelow)
|
|
48
|
+
* and valueByBreakpoint.
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ **Edge Cases / Warnings:**
|
|
51
|
+
* - If the measured width is undefined or 0, an error is logged in the console.
|
|
52
|
+
* - If the current width is less than the smallest breakpoint (and width > 0), an error is logged.
|
|
53
|
+
* - If duplicate breakpoint values are detected, an error is logged.
|
|
54
|
+
*/
|
|
55
|
+
declare const BreakpointProvider: React.FC<BreakpointProviderProps>;
|
|
56
|
+
/**
|
|
57
|
+
* Hook for accessing the BreakpointContext.
|
|
58
|
+
* Throws an error if used outside of a BreakpointProvider. ⚠️
|
|
59
|
+
*/
|
|
60
|
+
declare const useBreakpoint: () => BreakpointContextType;
|
|
61
|
+
interface BreakpointConditionalProps {
|
|
62
|
+
/**
|
|
63
|
+
* Array of breakpoints at which the children should be displayed.
|
|
64
|
+
* E.g.: ['MD', 'LG'] renders children only if the current breakpoint is MD or LG.
|
|
65
|
+
*/
|
|
66
|
+
show?: Breakpoint[];
|
|
67
|
+
/**
|
|
68
|
+
* The children are displayed only if the current breakpoint is at least this value.
|
|
69
|
+
* E.g.: isAtLeast="MD" renders children for MD, LG, or XL.
|
|
70
|
+
*/
|
|
71
|
+
isAtLeast?: Breakpoint;
|
|
72
|
+
/**
|
|
73
|
+
* The children are displayed only if the current breakpoint is below this value.
|
|
74
|
+
*/
|
|
75
|
+
isBelow?: Breakpoint;
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* BreakpointConditional 🎨
|
|
80
|
+
*
|
|
81
|
+
* Renders its children only if all provided conditions regarding the current breakpoint are met.
|
|
82
|
+
*/
|
|
83
|
+
declare const BreakpointConditional: React.FC<BreakpointConditionalProps>;
|
|
84
|
+
|
|
85
|
+
export { type Breakpoint, BreakpointConditional, type BreakpointContextType, BreakpointProvider, type BreakpointProviderProps, useBreakpoint };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var k=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var R=(e,r)=>{for(var d in r)k(e,d,{get:r[d],enumerable:!0})},T=(e,r,d,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of w(r))!C.call(e,p)&&p!==d&&k(e,p,{get:()=>r[p],enumerable:!(t=P(r,p))||t.enumerable});return e};var g=e=>T(k({},"__esModule",{value:!0}),e);var A={};R(A,{BreakpointConditional:()=>L,BreakpointProvider:()=>y,useBreakpoint:()=>h});module.exports=g(A);var s=require("react"),B=require("react-resize-detector"),u=require("react/jsx-runtime"),f=(0,s.createContext)(void 0),y=({breakpoints:e,children:r,targetRef:d})=>{let{width:t,ref:p}=(0,B.useResizeDetector)({targetRef:d}),n=(0,s.useMemo)(()=>Object.entries(e).map(([o,l])=>[o,l]).sort(([,o],[,l])=>o-l),[e]);(0,s.useEffect)(()=>{n.filter(([,l],c)=>n.findIndex(([,m])=>m===l)!==c).length>0&&console.error("BreakpointProvider: Duplicate breakpoint values detected. This may lead to unexpected behavior.")},[n]);let a=(0,s.useMemo)(()=>{if(t===void 0)return null;let o=null;return n.forEach(([l,c])=>{t>=c&&(o=l)}),o},[t,n]);(0,s.useEffect)(()=>{t===void 0?console.error("BreakpointProvider: width is undefined. Ensure the target element is mounted and visible."):t===0&&console.error("BreakpointProvider: width is 0. The target element might be hidden or not mounted correctly.")},[t]),(0,s.useEffect)(()=>{t!==void 0&&t>0&&a===null&&(n.length>0&&t<n[0][1]?console.error(`BreakpointProvider: The current width (${t}px) is less than the smallest breakpoint value (${n[0][1]}px). Consider including a breakpoint with a value of 0 to cover all cases.`):console.error("BreakpointProvider: No breakpoint could be determined from the provided configuration. Check your breakpoints object."))},[t,a,n]);let i=o=>n.findIndex(([l])=>l===o),v=o=>a?i(a)>=i(o):!1,b=o=>a?i(a)<i(o):!1;function x(o){if(a)return o[a]}return(0,u.jsx)(f.Provider,{value:{width:t??0,breakpoint:a,breakpoints:e,isAtLeast:v,isBelow:b,valueByBreakpoint:x},children:d?r:(0,u.jsx)("div",{ref:p,children:r})})},h=()=>{let e=(0,s.useContext)(f);if(!e)throw new Error("useBreakpoint must be used within a BreakpointProvider");return e},L=({show:e,isAtLeast:r,isBelow:d,children:t})=>{let{breakpoint:p,isAtLeast:n,isBelow:a}=h(),i=!0;return e&&p&&(i=i&&e.includes(p)),r&&(i=i&&n(r)),d&&(i=i&&a(d)),i?(0,u.jsx)(u.Fragment,{children:t}):null};0&&(module.exports={BreakpointConditional,BreakpointProvider,useBreakpoint});
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9CcmVha3BvaW50Q29udGV4dC50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCAqIGZyb20gXCIuL0JyZWFrcG9pbnRDb250ZXh0XCI7IiwgImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VSZXNpemVEZXRlY3RvciB9IGZyb20gJ3JlYWN0LXJlc2l6ZS1kZXRlY3Rvcic7XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSBzdHJpbmc7IC8vIEFsbG93IGFyYml0cmFyeSBicmVha3BvaW50IG5hbWVzXG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludENvbnRleHRUeXBlIHtcbiAgLyoqIEN1cnJlbnQgd2lkdGggb2YgdGhlIG9ic2VydmVkIGVsZW1lbnQgKi9cbiAgd2lkdGg6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCAqL1xuICBicmVha3BvaW50OiBCcmVha3BvaW50IHwgbnVsbDtcbiAgLyoqIERlZmluZWQgYnJlYWtwb2ludHMsIGUuZy4sIHsgWFM6IDAsIFNNOiA1MDAsIE1EOiA3MDAsIExHOiA5MDAsIFhMOiAxMTAwIH0gKi9cbiAgYnJlYWtwb2ludHM6IFJlY29yZDxCcmVha3BvaW50LCBudW1iZXI+O1xuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS5cbiAgICogRS5nLjogaXNBdExlYXN0KCdNRCcpIHJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIE1ELCBMRywgb3IgWEwuXG4gICAqL1xuICBpc0F0TGVhc3Q6IChzaXplOiBCcmVha3BvaW50KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBpcyBsZXNzIHRoYW4gdGhlIHByb3ZpZGVkIG9uZS5cbiAgICovXG4gIGlzQmVsb3c6IChzaXplOiBCcmVha3BvaW50KSA9PiBib29sZWFuO1xuICAvKipcbiAgICogUmV0dXJucyBhIHZhbHVlIGZyb20gdGhlIG1hcHBpbmcgYmFzZWQgb24gdGhlIGN1cnJlbnQgYnJlYWtwb2ludC5cbiAgICogRS5nLjogdmFsdWVCeUJyZWFrcG9pbnQoeyBNRDogMywgTEc6IDIgfSkgcmV0dXJucyAzIGZvciBNRCBhbmQgMiBmb3IgTEcuXG4gICAqL1xuICB2YWx1ZUJ5QnJlYWtwb2ludDogPFQ+KHZhbHVlczogUGFydGlhbDxSZWNvcmQ8QnJlYWtwb2ludCwgVD4+KSA9PiBUIHwgdW5kZWZpbmVkO1xufVxuXG5jb25zdCBCcmVha3BvaW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QnJlYWtwb2ludENvbnRleHRUeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4vKipcbiAqIEluc3RlYWQgb2YgdXNpbmcgUmVhY3QuUmVmT2JqZWN0PEhUTUxFbGVtZW50PiAod2hpY2ggaXMgaW52YXJpYW50KSxcbiAqIHdlIHVzZSBhIHN0cnVjdHVyYWwgdHlwZSB0aGF0IGFjY2VwdHMgYW55IG9iamVjdCB3aXRoIGEgYGN1cnJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludFByb3ZpZGVyUHJvcHMge1xuICAvKiogRGVmaW5lZCBicmVha3BvaW50cyAqL1xuICBicmVha3BvaW50czogUmVjb3JkPEJyZWFrcG9pbnQsIG51bWJlcj47XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRoYXQgdXNlIHRoZSBjb250ZXh0ICovXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbDogUHJvdmlkZSBhIHJlZiB0byB0aGUgZWxlbWVudCB0byBiZSBvYnNlcnZlZC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhbiBpbnRlcm5hbCA8ZGl2IHJlZj17Li4ufT4gd2lsbCBiZSByZW5kZXJlZC5cbiAgICovXG4gIHRhcmdldFJlZj86IHsgY3VycmVudDogSFRNTEVsZW1lbnQgfCBudWxsIH07XG59XG5cbi8qKlxuICogQnJlYWtwb2ludFByb3ZpZGVyIFx1RDgzRFx1REU4MFxuICpcbiAqIFVzZXMgcmVhY3QtcmVzaXplLWRldGVjdG9yIHRvIG1lYXN1cmUgdGhlIHdpZHRoIG9mIGFuIGVsZW1lbnQgYW5kIGRldGVybWluZSB0aGUgY3VycmVudCBicmVha3BvaW50XG4gKiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYnJlYWtwb2ludHMuIEFkZGl0aW9uYWxseSwgaXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgKGlzQXRMZWFzdCwgaXNCZWxvdylcbiAqIGFuZCB2YWx1ZUJ5QnJlYWtwb2ludC5cbiAqXG4gKiBcdTI2QTBcdUZFMEYgKipFZGdlIENhc2VzIC8gV2FybmluZ3M6KipcbiAqIC0gSWYgdGhlIG1lYXN1cmVkIHdpZHRoIGlzIHVuZGVmaW5lZCBvciAwLCBhbiBlcnJvciBpcyBsb2dnZWQgaW4gdGhlIGNvbnNvbGUuXG4gKiAtIElmIHRoZSBjdXJyZW50IHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCAoYW5kIHdpZHRoID4gMCksIGFuIGVycm9yIGlzIGxvZ2dlZC5cbiAqIC0gSWYgZHVwbGljYXRlIGJyZWFrcG9pbnQgdmFsdWVzIGFyZSBkZXRlY3RlZCwgYW4gZXJyb3IgaXMgbG9nZ2VkLlxuICovXG5leHBvcnQgY29uc3QgQnJlYWtwb2ludFByb3ZpZGVyOiBSZWFjdC5GQzxCcmVha3BvaW50UHJvdmlkZXJQcm9wcz4gPSAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiB7XG4gIC8vIElmIGEgdGFyZ2V0UmVmIGlzIHByb3ZpZGVkLCB1c2VSZXNpemVEZXRlY3RvciBvYnNlcnZlcyB0aGF0IGVsZW1lbnQ7IG90aGVyd2lzZSwgYW4gaW50ZXJuYWwgcmVmIGlzIGNyZWF0ZWQuXG4gIGNvbnN0IHsgd2lkdGgsIHJlZiB9ID0gdXNlUmVzaXplRGV0ZWN0b3IoeyB0YXJnZXRSZWYgfSk7XG5cbiAgLy8gU29ydCB0aGUgYnJlYWtwb2ludHMgaW4gYXNjZW5kaW5nIG9yZGVyIGJhc2VkIG9uIHRoZWlyIG51bWVyaWMgdmFsdWVzLiBcdUQ4M0RcdUREMjJcbiAgY29uc3Qgc29ydGVkQnJlYWtwb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludHMpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIHZhbHVlXSBhcyBbQnJlYWtwb2ludCwgbnVtYmVyXSlcbiAgICAgIC5zb3J0KChbLCBhXSwgWywgYl0pID0+IGEgLSBiKTtcbiAgfSwgW2JyZWFrcG9pbnRzXSk7XG5cbiAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBicmVha3BvaW50IHZhbHVlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGR1cGxpY2F0ZXMgPSBzb3J0ZWRCcmVha3BvaW50cy5maWx0ZXIoXG4gICAgICAoWywgdmFsdWVdLCBpbmRleCkgPT5cbiAgICAgICAgc29ydGVkQnJlYWtwb2ludHMuZmluZEluZGV4KChbLCB2XSkgPT4gdiA9PT0gdmFsdWUpICE9PSBpbmRleFxuICAgICk7XG4gICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0JyZWFrcG9pbnRQcm92aWRlcjogRHVwbGljYXRlIGJyZWFrcG9pbnQgdmFsdWVzIGRldGVjdGVkLiBUaGlzIG1heSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuJ1xuICAgICAgKTtcbiAgICB9XG4gIH0sIFtzb3J0ZWRCcmVha3BvaW50c10pO1xuXG4gIC8vIERldGVybWluZSB0aGUgY3VycmVudCBicmVha3BvaW50IGJhc2VkIG9uIHRoZSBtZWFzdXJlZCB3aWR0aC4gXHVEODNEXHVEQ0NGXG4gIGNvbnN0IGN1cnJlbnRCcmVha3BvaW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHdpZHRoID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsO1xuICAgIGxldCBhY3RpdmU6IEJyZWFrcG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBzb3J0ZWRCcmVha3BvaW50cy5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh3aWR0aCA+PSB2YWx1ZSkge1xuICAgICAgICBhY3RpdmUgPSBrZXk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZTtcbiAgfSwgW3dpZHRoLCBzb3J0ZWRCcmVha3BvaW50c10pO1xuXG4gIC8vIExvZyBlcnJvciBpZiB3aWR0aCBpcyB1bmRlZmluZWQgb3IgMFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnQnJlYWtwb2ludFByb3ZpZGVyOiB3aWR0aCBpcyB1bmRlZmluZWQuIEVuc3VyZSB0aGUgdGFyZ2V0IGVsZW1lbnQgaXMgbW91bnRlZCBhbmQgdmlzaWJsZS4nXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAod2lkdGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdCcmVha3BvaW50UHJvdmlkZXI6IHdpZHRoIGlzIDAuIFRoZSB0YXJnZXQgZWxlbWVudCBtaWdodCBiZSBoaWRkZW4gb3Igbm90IG1vdW50ZWQgY29ycmVjdGx5LidcbiAgICAgICk7XG4gICAgfVxuICB9LCBbd2lkdGhdKTtcblxuICAvLyBMb2cgZXJyb3IgaWYgd2lkdGggPiAwIGJ1dCBubyBicmVha3BvaW50IGNvdWxkIGJlIGRldGVybWluZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2lkdGggIT09IHVuZGVmaW5lZCAmJiB3aWR0aCA+IDAgJiYgY3VycmVudEJyZWFrcG9pbnQgPT09IG51bGwpIHtcbiAgICAgIGlmIChzb3J0ZWRCcmVha3BvaW50cy5sZW5ndGggPiAwICYmIHdpZHRoIDwgc29ydGVkQnJlYWtwb2ludHNbMF1bMV0pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgQnJlYWtwb2ludFByb3ZpZGVyOiBUaGUgY3VycmVudCB3aWR0aCAoJHt3aWR0aH1weCkgaXMgbGVzcyB0aGFuIHRoZSBzbWFsbGVzdCBicmVha3BvaW50IHZhbHVlICgke3NvcnRlZEJyZWFrcG9pbnRzWzBdWzFdfXB4KS4gQ29uc2lkZXIgaW5jbHVkaW5nIGEgYnJlYWtwb2ludCB3aXRoIGEgdmFsdWUgb2YgMCB0byBjb3ZlciBhbGwgY2FzZXMuYFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnQnJlYWtwb2ludFByb3ZpZGVyOiBObyBicmVha3BvaW50IGNvdWxkIGJlIGRldGVybWluZWQgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi4gQ2hlY2sgeW91ciBicmVha3BvaW50cyBvYmplY3QuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3dpZHRoLCBjdXJyZW50QnJlYWtwb2ludCwgc29ydGVkQnJlYWtwb2ludHNdKTtcblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBpbmRleCBvZiBhIGJyZWFrcG9pbnQgaW4gdGhlIHNvcnRlZCBhcnJheS4gXHVEODNEXHVERDBEXG4gIGNvbnN0IGdldEJyZWFrcG9pbnRJbmRleCA9IChzaXplOiBCcmVha3BvaW50KTogbnVtYmVyID0+IHtcbiAgICByZXR1cm4gc29ydGVkQnJlYWtwb2ludHMuZmluZEluZGV4KChba2V5XSkgPT4ga2V5ID09PSBzaXplKTtcbiAgfTtcblxuICBjb25zdCBpc0F0TGVhc3QgPSAoc2l6ZTogQnJlYWtwb2ludCk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghY3VycmVudEJyZWFrcG9pbnQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZ2V0QnJlYWtwb2ludEluZGV4KGN1cnJlbnRCcmVha3BvaW50KSA+PSBnZXRCcmVha3BvaW50SW5kZXgoc2l6ZSk7XG4gIH07XG5cbiAgY29uc3QgaXNCZWxvdyA9IChzaXplOiBCcmVha3BvaW50KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCFjdXJyZW50QnJlYWtwb2ludCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBnZXRCcmVha3BvaW50SW5kZXgoY3VycmVudEJyZWFrcG9pbnQpIDwgZ2V0QnJlYWtwb2ludEluZGV4KHNpemUpO1xuICB9O1xuXG4gIC8vIERlZmluZSB2YWx1ZUJ5QnJlYWtwb2ludCBhcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRvIGF2b2lkIEpTWCBwYXJzaW5nIGlzc3VlcyBpbiBUU1ggZmlsZXMuIFx1RDgzQ1x1REZBOFxuICBmdW5jdGlvbiB2YWx1ZUJ5QnJlYWtwb2ludDxUPih2YWx1ZXM6IFBhcnRpYWw8UmVjb3JkPEJyZWFrcG9pbnQsIFQ+Pik6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghY3VycmVudEJyZWFrcG9pbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHZhbHVlc1tjdXJyZW50QnJlYWtwb2ludF07XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxCcmVha3BvaW50Q29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgd2lkdGg6IHdpZHRoID8/IDAsXG4gICAgICAgIGJyZWFrcG9pbnQ6IGN1cnJlbnRCcmVha3BvaW50LFxuICAgICAgICBicmVha3BvaW50cyxcbiAgICAgICAgaXNBdExlYXN0LFxuICAgICAgICBpc0JlbG93LFxuICAgICAgICB2YWx1ZUJ5QnJlYWtwb2ludCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgey8qIElmIGEgdGFyZ2V0UmVmIGlzIHByb3ZpZGVkLCB0aGF0IHJlZiBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGFuIGV4dGVybmFsIGVsZW1lbnQuXG4gICAgICAgICAgT3RoZXJ3aXNlLCByZW5kZXIgYSA8ZGl2IHJlZj17cmVmfT4gdG8gb2JzZXJ2ZSBpdHMgc2l6ZS4gXHVEODNEXHVEQ0QwICovfVxuICAgICAge3RhcmdldFJlZiA/IGNoaWxkcmVuIDogPGRpdiByZWY9e3JlZn0+e2NoaWxkcmVufTwvZGl2Pn1cbiAgICA8L0JyZWFrcG9pbnRDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuLyoqXG4gKiBIb29rIGZvciBhY2Nlc3NpbmcgdGhlIEJyZWFrcG9pbnRDb250ZXh0LlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBhIEJyZWFrcG9pbnRQcm92aWRlci4gXHUyNkEwXHVGRTBGXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VCcmVha3BvaW50ID0gKCk6IEJyZWFrcG9pbnRDb250ZXh0VHlwZSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEJyZWFrcG9pbnRDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VCcmVha3BvaW50IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBCcmVha3BvaW50UHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG5cbmludGVyZmFjZSBCcmVha3BvaW50Q29uZGl0aW9uYWxQcm9wcyB7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBicmVha3BvaW50cyBhdCB3aGljaCB0aGUgY2hpbGRyZW4gc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICogRS5nLjogWydNRCcsICdMRyddIHJlbmRlcnMgY2hpbGRyZW4gb25seSBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIE1EIG9yIExHLlxuICAgKi9cbiAgc2hvdz86IEJyZWFrcG9pbnRbXTtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZHJlbiBhcmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBpcyBhdCBsZWFzdCB0aGlzIHZhbHVlLlxuICAgKiBFLmcuOiBpc0F0TGVhc3Q9XCJNRFwiIHJlbmRlcnMgY2hpbGRyZW4gZm9yIE1ELCBMRywgb3IgWEwuXG4gICAqL1xuICBpc0F0TGVhc3Q/OiBCcmVha3BvaW50O1xuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIGFyZSBkaXNwbGF5ZWQgb25seSBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIGJlbG93IHRoaXMgdmFsdWUuXG4gICAqL1xuICBpc0JlbG93PzogQnJlYWtwb2ludDtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuLyoqXG4gKiBCcmVha3BvaW50Q29uZGl0aW9uYWwgXHVEODNDXHVERkE4XG4gKlxuICogUmVuZGVycyBpdHMgY2hpbGRyZW4gb25seSBpZiBhbGwgcHJvdmlkZWQgY29uZGl0aW9ucyByZWdhcmRpbmcgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBhcmUgbWV0LlxuICovXG5leHBvcnQgY29uc3QgQnJlYWtwb2ludENvbmRpdGlvbmFsOiBSZWFjdC5GQzxCcmVha3BvaW50Q29uZGl0aW9uYWxQcm9wcz4gPSAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQXRMZWFzdDogbWluU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQmVsb3c6IG1heFNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiB7XG4gIGNvbnN0IHsgYnJlYWtwb2ludCwgaXNBdExlYXN0OiBjb250ZXh0SXNBdExlYXN0LCBpc0JlbG93OiBjb250ZXh0SXNCZWxvdyB9ID0gdXNlQnJlYWtwb2ludCgpO1xuXG4gIGxldCBzaG91bGRSZW5kZXIgPSB0cnVlO1xuXG4gIGlmIChzaG93ICYmIGJyZWFrcG9pbnQpIHtcbiAgICBzaG91bGRSZW5kZXIgPSBzaG91bGRSZW5kZXIgJiYgc2hvdy5pbmNsdWRlcyhicmVha3BvaW50KTtcbiAgfVxuICBpZiAobWluU2l6ZSkge1xuICAgIHNob3VsZFJlbmRlciA9IHNob3VsZFJlbmRlciAmJiBjb250ZXh0SXNBdExlYXN0KG1pblNpemUpO1xuICB9XG4gIGlmIChtYXhTaXplKSB7XG4gICAgc2hvdWxkUmVuZGVyID0gc2hvdWxkUmVuZGVyICYmIGNvbnRleHRJc0JlbG93KG1heFNpemUpO1xuICB9XG5cbiAgcmV0dXJuIHNob3VsZFJlbmRlciA/IDw+e2NoaWxkcmVufTwvPiA6IG51bGw7XG59OyJdLAogICJtYXBwaW5ncyI6ICJ5YUFBQSxJQUFBQSxFQUFBLEdBQUFDLEVBQUFELEVBQUEsMkJBQUFFLEVBQUEsdUJBQUFDLEVBQUEsa0JBQUFD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QWtCLFFBQVNDLENBQWUsRUFBSVIsRUFBYyxFQUV2RlMsRUFBZSxHQUVuQixPQUFJTixHQUFRRyxJQUNWRyxFQUFlQSxHQUFnQk4sRUFBSyxTQUFTRyxDQUFVLEdBRXJERixJQUNGSyxFQUFlQSxHQUFnQkYsRUFBaUJILENBQU8sR0FFckRDLElBQ0ZJLEVBQWVBLEdBQWdCRCxFQUFlSCxDQUFPLEdBR2hESSxLQUFlLG1CQUFHLFNBQUE1QixFQUFTLEVBQU0sSUFDMUMiLAogICJuYW1lcyI6IFsiaW5kZXhfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJCcmVha3BvaW50Q29uZGl0aW9uYWwiLCAiQnJlYWtwb2ludFByb3ZpZGVyIiwgInVzZUJyZWFrcG9pbnQiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3RfcmVzaXplX2RldGVjdG9yIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJCcmVha3BvaW50Q29udGV4dCIsICJCcmVha3BvaW50UHJvdmlkZXIiLCAiYnJlYWtwb2ludHMiLCAiY2hpbGRyZW4iLCAidGFyZ2V0UmVmIiwgIndpZHRoIiwgInJlZiIsICJzb3J0ZWRCcmVha3BvaW50cyIsICJrZXkiLCAidmFsdWUiLCAiYSIsICJiIiwgImluZGV4IiwgInYiLCAiY3VycmVudEJyZWFrcG9pbnQiLCAiYWN0aXZlIiwgImdldEJyZWFrcG9pbnRJbmRleCIsICJzaXplIiwgImlzQXRMZWFzdCIsICJpc0JlbG93IiwgInZhbHVlQnlCcmVha3BvaW50IiwgInZhbHVlcyIsICJ1c2VCcmVha3BvaW50IiwgImNvbnRleHQiLCAiQnJlYWtwb2ludENvbmRpdGlvbmFsIiwgInNob3ciLCAibWluU2l6ZSIsICJtYXhTaXplIiwgImJyZWFrcG9pbnQiLCAiY29udGV4dElzQXRMZWFzdCIsICJjb250ZXh0SXNCZWxvdyIsICJzaG91bGRSZW5kZXIiXQp9Cg==
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createContext as x,useContext as m,useMemo as k,useEffect as u}from"react";import{useResizeDetector as P}from"react-resize-detector";import{Fragment as C,jsx as c}from"react/jsx-runtime";var B=x(void 0),y=({breakpoints:i,children:s,targetRef:d})=>{let{width:t,ref:p}=P({targetRef:d}),r=k(()=>Object.entries(i).map(([e,a])=>[e,a]).sort(([,e],[,a])=>e-a),[i]);u(()=>{r.filter(([,a],l)=>r.findIndex(([,b])=>b===a)!==l).length>0&&console.error("BreakpointProvider: Duplicate breakpoint values detected. This may lead to unexpected behavior.")},[r]);let n=k(()=>{if(t===void 0)return null;let e=null;return r.forEach(([a,l])=>{t>=l&&(e=a)}),e},[t,r]);u(()=>{t===void 0?console.error("BreakpointProvider: width is undefined. Ensure the target element is mounted and visible."):t===0&&console.error("BreakpointProvider: width is 0. The target element might be hidden or not mounted correctly.")},[t]),u(()=>{t!==void 0&&t>0&&n===null&&(r.length>0&&t<r[0][1]?console.error(`BreakpointProvider: The current width (${t}px) is less than the smallest breakpoint value (${r[0][1]}px). Consider including a breakpoint with a value of 0 to cover all cases.`):console.error("BreakpointProvider: No breakpoint could be determined from the provided configuration. Check your breakpoints object."))},[t,n,r]);let o=e=>r.findIndex(([a])=>a===e),f=e=>n?o(n)>=o(e):!1,h=e=>n?o(n)<o(e):!1;function v(e){if(n)return e[n]}return c(B.Provider,{value:{width:t??0,breakpoint:n,breakpoints:i,isAtLeast:f,isBelow:h,valueByBreakpoint:v},children:d?s:c("div",{ref:p,children:s})})},w=()=>{let i=m(B);if(!i)throw new Error("useBreakpoint must be used within a BreakpointProvider");return i},L=({show:i,isAtLeast:s,isBelow:d,children:t})=>{let{breakpoint:p,isAtLeast:r,isBelow:n}=w(),o=!0;return i&&p&&(o=o&&i.includes(p)),s&&(o=o&&r(s)),d&&(o=o&&n(d)),o?c(C,{children:t}):null};export{L as BreakpointConditional,y as BreakpointProvider,w as useBreakpoint};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0JyZWFrcG9pbnRDb250ZXh0LnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlc2l6ZURldGVjdG9yIH0gZnJvbSAncmVhY3QtcmVzaXplLWRldGVjdG9yJztcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9IHN0cmluZzsgLy8gQWxsb3cgYXJiaXRyYXJ5IGJyZWFrcG9pbnQgbmFtZXNcblxuZXhwb3J0IGludGVyZmFjZSBCcmVha3BvaW50Q29udGV4dFR5cGUge1xuICAvKiogQ3VycmVudCB3aWR0aCBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudCAqL1xuICB3aWR0aDogbnVtYmVyO1xuICAvKiogQ3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50ICovXG4gIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQgfCBudWxsO1xuICAvKiogRGVmaW5lZCBicmVha3BvaW50cywgZS5nLiwgeyBYUzogMCwgU006IDUwMCwgTUQ6IDcwMCwgTEc6IDkwMCwgWEw6IDExMDAgfSAqL1xuICBicmVha3BvaW50czogUmVjb3JkPEJyZWFrcG9pbnQsIG51bWJlcj47XG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvdmlkZWQgb25lLlxuICAgKiBFLmcuOiBpc0F0TGVhc3QoJ01EJykgcmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgTUQsIExHLCBvciBYTC5cbiAgICovXG4gIGlzQXRMZWFzdDogKHNpemU6IEJyZWFrcG9pbnQpID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIGxlc3MgdGhhbiB0aGUgcHJvdmlkZWQgb25lLlxuICAgKi9cbiAgaXNCZWxvdzogKHNpemU6IEJyZWFrcG9pbnQpID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdmFsdWUgZnJvbSB0aGUgbWFwcGluZyBiYXNlZCBvbiB0aGUgY3VycmVudCBicmVha3BvaW50LlxuICAgKiBFLmcuOiB2YWx1ZUJ5QnJlYWtwb2ludCh7IE1EOiAzLCBMRzogMiB9KSByZXR1cm5zIDMgZm9yIE1EIGFuZCAyIGZvciBMRy5cbiAgICovXG4gIHZhbHVlQnlCcmVha3BvaW50OiA8VD4odmFsdWVzOiBQYXJ0aWFsPFJlY29yZDxCcmVha3BvaW50LCBUPj4pID0+IFQgfCB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IEJyZWFrcG9pbnRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxCcmVha3BvaW50Q29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbi8qKlxuICogSW5zdGVhZCBvZiB1c2luZyBSZWFjdC5SZWZPYmplY3Q8SFRNTEVsZW1lbnQ+ICh3aGljaCBpcyBpbnZhcmlhbnQpLFxuICogd2UgdXNlIGEgc3RydWN0dXJhbCB0eXBlIHRoYXQgYWNjZXB0cyBhbnkgb2JqZWN0IHdpdGggYSBgY3VycmVudDogSFRNTEVsZW1lbnQgfCBudWxsYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmVha3BvaW50UHJvdmlkZXJQcm9wcyB7XG4gIC8qKiBEZWZpbmVkIGJyZWFrcG9pbnRzICovXG4gIGJyZWFrcG9pbnRzOiBSZWNvcmQ8QnJlYWtwb2ludCwgbnVtYmVyPjtcbiAgLyoqIENoaWxkIGNvbXBvbmVudHMgdGhhdCB1c2UgdGhlIGNvbnRleHQgKi9cbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsOiBQcm92aWRlIGEgcmVmIHRvIHRoZSBlbGVtZW50IHRvIGJlIG9ic2VydmVkLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGFuIGludGVybmFsIDxkaXYgcmVmPXsuLi59PiB3aWxsIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgdGFyZ2V0UmVmPzogeyBjdXJyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfTtcbn1cblxuLyoqXG4gKiBCcmVha3BvaW50UHJvdmlkZXIgXHVEODNEXHVERTgwXG4gKlxuICogVXNlcyByZWFjdC1yZXNpemUtZGV0ZWN0b3IgdG8gbWVhc3VyZSB0aGUgd2lkdGggb2YgYW4gZWxlbWVudCBhbmQgZGV0ZXJtaW5lIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcbiAqIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBicmVha3BvaW50cy4gQWRkaXRpb25hbGx5LCBpdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyAoaXNBdExlYXN0LCBpc0JlbG93KVxuICogYW5kIHZhbHVlQnlCcmVha3BvaW50LlxuICpcbiAqIFx1MjZBMFx1RkUwRiAqKkVkZ2UgQ2FzZXMgLyBXYXJuaW5nczoqKlxuICogLSBJZiB0aGUgbWVhc3VyZWQgd2lkdGggaXMgdW5kZWZpbmVkIG9yIDAsIGFuIGVycm9yIGlzIGxvZ2dlZCBpbiB0aGUgY29uc29sZS5cbiAqIC0gSWYgdGhlIGN1cnJlbnQgd2lkdGggaXMgbGVzcyB0aGFuIHRoZSBzbWFsbGVzdCBicmVha3BvaW50IChhbmQgd2lkdGggPiAwKSwgYW4gZXJyb3IgaXMgbG9nZ2VkLlxuICogLSBJZiBkdXBsaWNhdGUgYnJlYWtwb2ludCB2YWx1ZXMgYXJlIGRldGVjdGVkLCBhbiBlcnJvciBpcyBsb2dnZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmVha3BvaW50UHJvdmlkZXI6IFJlYWN0LkZDPEJyZWFrcG9pbnRQcm92aWRlclByb3BzPiA9ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IHtcbiAgLy8gSWYgYSB0YXJnZXRSZWYgaXMgcHJvdmlkZWQsIHVzZVJlc2l6ZURldGVjdG9yIG9ic2VydmVzIHRoYXQgZWxlbWVudDsgb3RoZXJ3aXNlLCBhbiBpbnRlcm5hbCByZWYgaXMgY3JlYXRlZC5cbiAgY29uc3QgeyB3aWR0aCwgcmVmIH0gPSB1c2VSZXNpemVEZXRlY3Rvcih7IHRhcmdldFJlZiB9KTtcblxuICAvLyBTb3J0IHRoZSBicmVha3BvaW50cyBpbiBhc2NlbmRpbmcgb3JkZXIgYmFzZWQgb24gdGhlaXIgbnVtZXJpYyB2YWx1ZXMuIFx1RDgzRFx1REQyMlxuICBjb25zdCBzb3J0ZWRCcmVha3BvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhicmVha3BvaW50cylcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgdmFsdWVdIGFzIFtCcmVha3BvaW50LCBudW1iZXJdKVxuICAgICAgLnNvcnQoKFssIGFdLCBbLCBiXSkgPT4gYSAtIGIpO1xuICB9LCBbYnJlYWtwb2ludHNdKTtcblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIGJyZWFrcG9pbnQgdmFsdWVzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHVwbGljYXRlcyA9IHNvcnRlZEJyZWFrcG9pbnRzLmZpbHRlcihcbiAgICAgIChbLCB2YWx1ZV0sIGluZGV4KSA9PlxuICAgICAgICBzb3J0ZWRCcmVha3BvaW50cy5maW5kSW5kZXgoKFssIHZdKSA9PiB2ID09PSB2YWx1ZSkgIT09IGluZGV4XG4gICAgKTtcbiAgICBpZiAoZHVwbGljYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnQnJlYWtwb2ludFByb3ZpZGVyOiBEdXBsaWNhdGUgYnJlYWtwb2ludCB2YWx1ZXMgZGV0ZWN0ZWQuIFRoaXMgbWF5IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvci4nXG4gICAgICApO1xuICAgIH1cbiAgfSwgW3NvcnRlZEJyZWFrcG9pbnRzXSk7XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgYmFzZWQgb24gdGhlIG1lYXN1cmVkIHdpZHRoLiBcdUQ4M0RcdURDQ0ZcbiAgY29uc3QgY3VycmVudEJyZWFrcG9pbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAod2lkdGggPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XG4gICAgbGV0IGFjdGl2ZTogQnJlYWtwb2ludCB8IG51bGwgPSBudWxsO1xuICAgIHNvcnRlZEJyZWFrcG9pbnRzLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHdpZHRoID49IHZhbHVlKSB7XG4gICAgICAgIGFjdGl2ZSA9IGtleTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlO1xuICB9LCBbd2lkdGgsIHNvcnRlZEJyZWFrcG9pbnRzXSk7XG5cbiAgLy8gTG9nIGVycm9yIGlmIHdpZHRoIGlzIHVuZGVmaW5lZCBvciAwXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdpZHRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdCcmVha3BvaW50UHJvdmlkZXI6IHdpZHRoIGlzIHVuZGVmaW5lZC4gRW5zdXJlIHRoZSB0YXJnZXQgZWxlbWVudCBpcyBtb3VudGVkIGFuZCB2aXNpYmxlLidcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh3aWR0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0JyZWFrcG9pbnRQcm92aWRlcjogd2lkdGggaXMgMC4gVGhlIHRhcmdldCBlbGVtZW50IG1pZ2h0IGJlIGhpZGRlbiBvciBub3QgbW91bnRlZCBjb3JyZWN0bHkuJ1xuICAgICAgKTtcbiAgICB9XG4gIH0sIFt3aWR0aF0pO1xuXG4gIC8vIExvZyBlcnJvciBpZiB3aWR0aCA+IDAgYnV0IG5vIGJyZWFrcG9pbnQgY291bGQgYmUgZGV0ZXJtaW5lZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3aWR0aCAhPT0gdW5kZWZpbmVkICYmIHdpZHRoID4gMCAmJiBjdXJyZW50QnJlYWtwb2ludCA9PT0gbnVsbCkge1xuICAgICAgaWYgKHNvcnRlZEJyZWFrcG9pbnRzLmxlbmd0aCA+IDAgJiYgd2lkdGggPCBzb3J0ZWRCcmVha3BvaW50c1swXVsxXSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBCcmVha3BvaW50UHJvdmlkZXI6IFRoZSBjdXJyZW50IHdpZHRoICgke3dpZHRofXB4KSBpcyBsZXNzIHRoYW4gdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQgdmFsdWUgKCR7c29ydGVkQnJlYWtwb2ludHNbMF1bMV19cHgpLiBDb25zaWRlciBpbmNsdWRpbmcgYSBicmVha3BvaW50IHdpdGggYSB2YWx1ZSBvZiAwIHRvIGNvdmVyIGFsbCBjYXNlcy5gXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdCcmVha3BvaW50UHJvdmlkZXI6IE5vIGJyZWFrcG9pbnQgY291bGQgYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLiBDaGVjayB5b3VyIGJyZWFrcG9pbnRzIG9iamVjdC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbd2lkdGgsIGN1cnJlbnRCcmVha3BvaW50LCBzb3J0ZWRCcmVha3BvaW50c10pO1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGluZGV4IG9mIGEgYnJlYWtwb2ludCBpbiB0aGUgc29ydGVkIGFycmF5LiBcdUQ4M0RcdUREMERcbiAgY29uc3QgZ2V0QnJlYWtwb2ludEluZGV4ID0gKHNpemU6IEJyZWFrcG9pbnQpOiBudW1iZXIgPT4ge1xuICAgIHJldHVybiBzb3J0ZWRCcmVha3BvaW50cy5maW5kSW5kZXgoKFtrZXldKSA9PiBrZXkgPT09IHNpemUpO1xuICB9O1xuXG4gIGNvbnN0IGlzQXRMZWFzdCA9IChzaXplOiBCcmVha3BvaW50KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCFjdXJyZW50QnJlYWtwb2ludCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBnZXRCcmVha3BvaW50SW5kZXgoY3VycmVudEJyZWFrcG9pbnQpID49IGdldEJyZWFrcG9pbnRJbmRleChzaXplKTtcbiAgfTtcblxuICBjb25zdCBpc0JlbG93ID0gKHNpemU6IEJyZWFrcG9pbnQpOiBib29sZWFuID0+IHtcbiAgICBpZiAoIWN1cnJlbnRCcmVha3BvaW50KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGdldEJyZWFrcG9pbnRJbmRleChjdXJyZW50QnJlYWtwb2ludCkgPCBnZXRCcmVha3BvaW50SW5kZXgoc2l6ZSk7XG4gIH07XG5cbiAgLy8gRGVmaW5lIHZhbHVlQnlCcmVha3BvaW50IGFzIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gYXZvaWQgSlNYIHBhcnNpbmcgaXNzdWVzIGluIFRTWCBmaWxlcy4gXHVEODNDXHVERkE4XG4gIGZ1bmN0aW9uIHZhbHVlQnlCcmVha3BvaW50PFQ+KHZhbHVlczogUGFydGlhbDxSZWNvcmQ8QnJlYWtwb2ludCwgVD4+KTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjdXJyZW50QnJlYWtwb2ludCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdmFsdWVzW2N1cnJlbnRCcmVha3BvaW50XTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEJyZWFrcG9pbnRDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICB3aWR0aDogd2lkdGggPz8gMCxcbiAgICAgICAgYnJlYWtwb2ludDogY3VycmVudEJyZWFrcG9pbnQsXG4gICAgICAgIGJyZWFrcG9pbnRzLFxuICAgICAgICBpc0F0TGVhc3QsXG4gICAgICAgIGlzQmVsb3csXG4gICAgICAgIHZhbHVlQnlCcmVha3BvaW50LFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7LyogSWYgYSB0YXJnZXRSZWYgaXMgcHJvdmlkZWQsIHRoYXQgcmVmIGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYW4gZXh0ZXJuYWwgZWxlbWVudC5cbiAgICAgICAgICBPdGhlcndpc2UsIHJlbmRlciBhIDxkaXYgcmVmPXtyZWZ9PiB0byBvYnNlcnZlIGl0cyBzaXplLiBcdUQ4M0RcdURDRDAgKi99XG4gICAgICB7dGFyZ2V0UmVmID8gY2hpbGRyZW4gOiA8ZGl2IHJlZj17cmVmfT57Y2hpbGRyZW59PC9kaXY+fVxuICAgIDwvQnJlYWtwb2ludENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG4vKipcbiAqIEhvb2sgZm9yIGFjY2Vzc2luZyB0aGUgQnJlYWtwb2ludENvbnRleHQuXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdXNlZCBvdXRzaWRlIG9mIGEgQnJlYWtwb2ludFByb3ZpZGVyLiBcdTI2QTBcdUZFMEZcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUJyZWFrcG9pbnQgPSAoKTogQnJlYWtwb2ludENvbnRleHRUeXBlID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQnJlYWtwb2ludENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUJyZWFrcG9pbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEJyZWFrcG9pbnRQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcblxuaW50ZXJmYWNlIEJyZWFrcG9pbnRDb25kaXRpb25hbFByb3BzIHtcbiAgLyoqXG4gICAqIEFycmF5IG9mIGJyZWFrcG9pbnRzIGF0IHdoaWNoIHRoZSBjaGlsZHJlbiBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKiBFLmcuOiBbJ01EJywgJ0xHJ10gcmVuZGVycyBjaGlsZHJlbiBvbmx5IGlmIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgTUQgb3IgTEcuXG4gICAqL1xuICBzaG93PzogQnJlYWtwb2ludFtdO1xuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIGFyZSBkaXNwbGF5ZWQgb25seSBpZiB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIGF0IGxlYXN0IHRoaXMgdmFsdWUuXG4gICAqIEUuZy46IGlzQXRMZWFzdD1cIk1EXCIgcmVuZGVycyBjaGlsZHJlbiBmb3IgTUQsIExHLCBvciBYTC5cbiAgICovXG4gIGlzQXRMZWFzdD86IEJyZWFrcG9pbnQ7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGRyZW4gYXJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgYmVsb3cgdGhpcyB2YWx1ZS5cbiAgICovXG4gIGlzQmVsb3c/OiBCcmVha3BvaW50O1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIEJyZWFrcG9pbnRDb25kaXRpb25hbCBcdUQ4M0NcdURGQThcbiAqXG4gKiBSZW5kZXJzIGl0cyBjaGlsZHJlbiBvbmx5IGlmIGFsbCBwcm92aWRlZCBjb25kaXRpb25zIHJlZ2FyZGluZyB0aGUgY3VycmVudCBicmVha3BvaW50IGFyZSBtZXQuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmVha3BvaW50Q29uZGl0aW9uYWw6IFJlYWN0LkZDPEJyZWFrcG9pbnRDb25kaXRpb25hbFByb3BzPiA9ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdExlYXN0OiBtaW5TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNCZWxvdzogbWF4U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IHtcbiAgY29uc3QgeyBicmVha3BvaW50LCBpc0F0TGVhc3Q6IGNvbnRleHRJc0F0TGVhc3QsIGlzQmVsb3c6IGNvbnRleHRJc0JlbG93IH0gPSB1c2VCcmVha3BvaW50KCk7XG5cbiAgbGV0IHNob3VsZFJlbmRlciA9IHRydWU7XG5cbiAgaWYgKHNob3cgJiYgYnJlYWtwb2ludCkge1xuICAgIHNob3VsZFJlbmRlciA9IHNob3VsZFJlbmRlciAmJiBzaG93LmluY2x1ZGVzKGJyZWFrcG9pbnQpO1xuICB9XG4gIGlmIChtaW5TaXplKSB7XG4gICAgc2hvdWxkUmVuZGVyID0gc2hvdWxkUmVuZGVyICYmIGNvbnRleHRJc0F0TGVhc3QobWluU2l6ZSk7XG4gIH1cbiAgaWYgKG1heFNpemUpIHtcbiAgICBzaG91bGRSZW5kZXIgPSBzaG91bGRSZW5kZXIgJiYgY29udGV4dElzQmVsb3cobWF4U2l6ZSk7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkUmVuZGVyID8gPD57Y2hpbGRyZW59PC8+IDogbnVsbDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBZ0IsaUJBQUFBLEVBQWUsY0FBQUMsRUFBWSxXQUFBQyxFQUFTLGFBQUFDLE1BQWlCLFFBQ3JFLE9BQVMscUJBQUFDLE1BQXlCLHdCQStKSixPQTRETixZQUFBQyxFQTVETSxPQUFBQyxNQUFBLG9CQXBJOUIsSUFBTUMsRUFBb0JQLEVBQWlELE1BQVMsRUE4QnZFUSxFQUF3RCxDQUFDLENBQ0UsWUFBQUMsRUFDQSxTQUFBQyxFQUNBLFVBQUFDLENBQ0YsSUFBTSxDQUUxRSxHQUFNLENBQUUsTUFBQUMsRUFBTyxJQUFBQyxDQUFJLEVBQUlULEVBQWtCLENBQUUsVUFBQU8sQ0FBVSxDQUFDLEVBR2hERyxFQUFvQlosRUFBUSxJQUN6QixPQUFPLFFBQVFPLENBQVcsRUFDOUIsSUFBSSxDQUFDLENBQUNNLEVBQUtDLENBQUssSUFBTSxDQUFDRCxFQUFLQyxDQUFLLENBQXlCLEVBQzFELEtBQUssQ0FBQyxDQUFDLENBQUVDLENBQUMsRUFBRyxDQUFDLENBQUVDLENBQUMsSUFBTUQsRUFBSUMsQ0FBQyxFQUM5QixDQUFDVCxDQUFXLENBQUMsRUFHaEJOLEVBQVUsSUFBTSxDQUNLVyxFQUFrQixPQUNuQyxDQUFDLENBQUMsQ0FBRUUsQ0FBSyxFQUFHRyxJQUNWTCxFQUFrQixVQUFVLENBQUMsQ0FBQyxDQUFFTSxDQUFDLElBQU1BLElBQU1KLENBQUssSUFBTUcsQ0FDNUQsRUFDZSxPQUFTLEdBQ3RCLFFBQVEsTUFDTixpR0FDRixDQUVKLEVBQUcsQ0FBQ0wsQ0FBaUIsQ0FBQyxFQUd0QixJQUFNTyxFQUFvQm5CLEVBQVEsSUFBTSxDQUN0QyxHQUFJVSxJQUFVLE9BQVcsT0FBTyxLQUNoQyxJQUFJVSxFQUE0QixLQUNoQyxPQUFBUixFQUFrQixRQUFRLENBQUMsQ0FBQ0MsRUFBS0MsQ0FBSyxJQUFNLENBQ3RDSixHQUFTSSxJQUNYTSxFQUFTUCxFQUViLENBQUMsRUFDTU8sQ0FDVCxFQUFHLENBQUNWLEVBQU9FLENBQWlCLENBQUMsRUFHN0JYLEVBQVUsSUFBTSxDQUNWUyxJQUFVLE9BQ1osUUFBUSxNQUNOLDJGQUNGLEVBQ1NBLElBQVUsR0FDbkIsUUFBUSxNQUNOLDhGQUNGLENBRUosRUFBRyxDQUFDQSxDQUFLLENBQUMsRUFHVlQsRUFBVSxJQUFNLENBQ1ZTLElBQVUsUUFBYUEsRUFBUSxHQUFLUyxJQUFzQixPQUN4RFAsRUFBa0IsT0FBUyxHQUFLRixFQUFRRSxFQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUNoRSxRQUFRLE1BQ04sMENBQTBDRixDQUFLLG1EQUFtREUsRUFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyw0RUFDM0gsRUFFQSxRQUFRLE1BQ04sdUhBQ0YsRUFHTixFQUFHLENBQUNGLEVBQU9TLEVBQW1CUCxDQUFpQixDQUFDLEVBR2hELElBQU1TLEVBQXNCQyxHQUNuQlYsRUFBa0IsVUFBVSxDQUFDLENBQUNDLENBQUcsSUFBTUEsSUFBUVMsQ0FBSSxFQUd0REMsRUFBYUQsR0FDWkgsRUFDRUUsRUFBbUJGLENBQWlCLEdBQUtFLEVBQW1CQyxDQUFJLEVBRHhDLEdBSTNCRSxFQUFXRixHQUNWSCxFQUNFRSxFQUFtQkYsQ0FBaUIsRUFBSUUsRUFBbUJDLENBQUksRUFEdkMsR0FLakMsU0FBU0csRUFBcUJDLEVBQXVELENBQ25GLEdBQUtQLEVBQ0wsT0FBT08sRUFBT1AsQ0FBaUIsQ0FDakMsQ0FFQSxPQUNFZixFQUFDQyxFQUFrQixTQUFsQixDQUNDLE1BQU8sQ0FDTCxNQUFPSyxHQUFTLEVBQ2hCLFdBQVlTLEVBQ1osWUFBQVosRUFDQSxVQUFBZ0IsRUFDQSxRQUFBQyxFQUNBLGtCQUFBQyxDQUNGLEVBSUMsU0FBQWhCLEVBQVlELEVBQVdKLEVBQUMsT0FBSSxJQUFLTyxFQUFNLFNBQUFILEVBQVMsRUFDbkQsQ0FFSixFQU1hbUIsRUFBZ0IsSUFBNkIsQ0FDeEQsSUFBTUMsRUFBVTdCLEVBQVdNLENBQWlCLEVBQzVDLEdBQUksQ0FBQ3VCLEVBQ0gsTUFBTSxJQUFJLE1BQU0sd0RBQXdELEVBRTFFLE9BQU9BLENBQ1QsRUF5QmFDLEVBQThELENBQUMsQ0FDRSxLQUFBQyxFQUNBLFVBQVdDLEVBQ1gsUUFBU0MsRUFDVCxTQUFBeEIsQ0FDRixJQUFNLENBQ2hGLEdBQU0sQ0FBRSxXQUFBeUIsRUFBWSxVQUFXQyxFQUFrQixRQUFTQyxDQUFlLEVBQUlSLEVBQWMsRUFFdkZTLEVBQWUsR0FFbkIsT0FBSU4sR0FBUUcsSUFDVkcsRUFBZUEsR0FBZ0JOLEVBQUssU0FBU0csQ0FBVSxHQUVyREYsSUFDRkssRUFBZUEsR0FBZ0JGLEVBQWlCSCxDQUFPLEdBRXJEQyxJQUNGSSxFQUFlQSxHQUFnQkQsRUFBZUgsQ0FBTyxHQUdoREksRUFBZWhDLEVBQUFELEVBQUEsQ0FBRyxTQUFBSyxFQUFTLEVBQU0sSUFDMUMiLAogICJuYW1lcyI6IFsiY3JlYXRlQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgInVzZU1lbW8iLCAidXNlRWZmZWN0IiwgInVzZVJlc2l6ZURldGVjdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJCcmVha3BvaW50Q29udGV4dCIsICJCcmVha3BvaW50UHJvdmlkZXIiLCAiYnJlYWtwb2ludHMiLCAiY2hpbGRyZW4iLCAidGFyZ2V0UmVmIiwgIndpZHRoIiwgInJlZiIsICJzb3J0ZWRCcmVha3BvaW50cyIsICJrZXkiLCAidmFsdWUiLCAiYSIsICJiIiwgImluZGV4IiwgInYiLCAiY3VycmVudEJyZWFrcG9pbnQiLCAiYWN0aXZlIiwgImdldEJyZWFrcG9pbnRJbmRleCIsICJzaXplIiwgImlzQXRMZWFzdCIsICJpc0JlbG93IiwgInZhbHVlQnlCcmVha3BvaW50IiwgInZhbHVlcyIsICJ1c2VCcmVha3BvaW50IiwgImNvbnRleHQiLCAiQnJlYWtwb2ludENvbmRpdGlvbmFsIiwgInNob3ciLCAibWluU2l6ZSIsICJtYXhTaXplIiwgImJyZWFrcG9pbnQiLCAiY29udGV4dElzQXRMZWFzdCIsICJjb250ZXh0SXNCZWxvdyIsICJzaG91bGRSZW5kZXIiXQp9Cg==
|
package/package.json
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-resize-detector-context",
|
|
3
|
+
"description": "",
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"author": "",
|
|
6
|
+
"license": "",
|
|
7
|
+
"keywords": [],
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": ""
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"dev": "concurrently \"pnpm build --watch\" \"pnpm storybook\" \"pnpm test\" ",
|
|
14
|
+
"build": "tsup",
|
|
15
|
+
"lint": "biome check --write --unsafe .",
|
|
16
|
+
"lint:ci": "biome check --unsafe .",
|
|
17
|
+
"test": "vitest",
|
|
18
|
+
"test:ci": "vitest run --coverage",
|
|
19
|
+
"commit": "cz",
|
|
20
|
+
"storybook": "storybook dev -p 6006",
|
|
21
|
+
"storybook:build": "storybook build",
|
|
22
|
+
"release": "pnpm build && pnpm release-it",
|
|
23
|
+
"link:self": "pnpm link --global",
|
|
24
|
+
"prepare": "lefthook install"
|
|
25
|
+
},
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"require": "./dist/index.js",
|
|
30
|
+
"import": "./dist/index.mjs"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"config": {
|
|
37
|
+
"commitizen": {
|
|
38
|
+
"path": "./node_modules/@ryansonshine/cz-conventional-changelog"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"release-it": {
|
|
42
|
+
"git": {
|
|
43
|
+
"commitMessage": "chore(release): v${version}"
|
|
44
|
+
},
|
|
45
|
+
"github": {
|
|
46
|
+
"release": true
|
|
47
|
+
},
|
|
48
|
+
"npm": {
|
|
49
|
+
"publish": false
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=18.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@biomejs/biome": "1.9.4",
|
|
57
|
+
"@mui/material": "^6.4.3",
|
|
58
|
+
"@ryansonshine/commitizen": "4.2.8",
|
|
59
|
+
"@ryansonshine/cz-conventional-changelog": "3.3.4",
|
|
60
|
+
"@storybook/addon-essentials": "8.4.7",
|
|
61
|
+
"@storybook/addon-interactions": "8.4.7",
|
|
62
|
+
"@storybook/addon-links": "8.4.7",
|
|
63
|
+
"@storybook/addon-webpack5-compiler-swc": "2.0.0",
|
|
64
|
+
"@storybook/blocks": "8.4.7",
|
|
65
|
+
"@storybook/react": "8.4.7",
|
|
66
|
+
"@storybook/react-webpack5": "8.4.7",
|
|
67
|
+
"@storybook/test": "8.4.7",
|
|
68
|
+
"@testing-library/jest-dom": "6.6.3",
|
|
69
|
+
"@testing-library/react": "^16.1.0",
|
|
70
|
+
"@types/node": "22.10.5",
|
|
71
|
+
"@types/react": "18.3.13",
|
|
72
|
+
"@types/react-dom": "18.3.1",
|
|
73
|
+
"@types/react-test-renderer": "18.3.0",
|
|
74
|
+
"@types/testing-library__jest-dom": "^5.14.9",
|
|
75
|
+
"@vitest/coverage-v8": "2.1.8",
|
|
76
|
+
"concurrently": "9.1.2",
|
|
77
|
+
"jsdom": "25.0.1",
|
|
78
|
+
"lefthook": "1.10.1",
|
|
79
|
+
"prop-types": "15.8.1",
|
|
80
|
+
"react": "18.3.1",
|
|
81
|
+
"react-dom": "18.3.1",
|
|
82
|
+
"react-test-renderer": "18.3.1",
|
|
83
|
+
"release-it": "17.11.0",
|
|
84
|
+
"storybook": "8.4.7",
|
|
85
|
+
"ts-node": "10.9.2",
|
|
86
|
+
"tsconfig-paths": "4.2.0",
|
|
87
|
+
"tsup": "8.3.5",
|
|
88
|
+
"tsx": "4.19.2",
|
|
89
|
+
"typescript": "5.7.2",
|
|
90
|
+
"vitest": "^2.1.8",
|
|
91
|
+
"@emotion/styled": "^11.14.0"
|
|
92
|
+
},
|
|
93
|
+
"peerDependencies": {
|
|
94
|
+
"react": ">=17",
|
|
95
|
+
"react-dom": ">=17"
|
|
96
|
+
},
|
|
97
|
+
"pnpm": {
|
|
98
|
+
"overrides": {
|
|
99
|
+
"micromatch@<4.0.8": ">=4.0.8"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"dependencies": {
|
|
103
|
+
"@emotion/styled": "^11.14.0",
|
|
104
|
+
"react-resize-detector": "^12.0.2"
|
|
105
|
+
}
|
|
106
|
+
}
|