react-resize-detector-context 0.0.0 → 0.1.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/README.md +208 -69
- package/dist/index.js +1 -1
- package/package.json +3 -5
package/README.md
CHANGED
|
@@ -1,31 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
# React Resize Detector Context
|
|
1
|
+
# ⚛️ React Resize Detector Context
|
|
3
2
|
|
|
4
3
|

|
|
5
4
|
|
|
6
|
-
A lightweight React context that leverages [react-resize-detector](https://github.com/maslianok/react-resize-detector) to detect the
|
|
5
|
+
A lightweight React context that leverages [react-resize-detector](https://github.com/maslianok/react-resize-detector) to dynamically detect the
|
|
6
|
+
current breakpoint based on an element's width. It provides utility functions and helper components to conditionally render content based on
|
|
7
|
+
responsive breakpoints – all fully typed in TypeScript for excellent IDE support. 😎
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
##
|
|
11
|
+
## Table of Contents 📚
|
|
12
|
+
|
|
13
|
+
- [Features](#features)
|
|
14
|
+
- [Requirements](#requirements)
|
|
15
|
+
- [Installation](#installation)
|
|
16
|
+
- [Usage](#usage)
|
|
17
|
+
- [Basic Usage](#basic-usage)
|
|
18
|
+
- [Conditional Rendering with BreakpointConditional](#conditional-rendering-with-breakpointconditional)
|
|
19
|
+
- [Custom Breakpoints Example](#custom-breakpoints-example)
|
|
20
|
+
- [API Documentation](#api-documentation)
|
|
21
|
+
- [BreakpointProvider](#breakpointprovider)
|
|
22
|
+
- [BreakpointConditional](#breakpointconditional)
|
|
23
|
+
- [useBreakpoint Hook](#usebreakpoint-hook)
|
|
24
|
+
- [Available Scripts](#available-scripts)
|
|
25
|
+
- [Contribution Guidelines](#contribution-guidelines)
|
|
26
|
+
- [License](#license)
|
|
27
|
+
|
|
28
|
+
---
|
|
11
29
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
30
|
+
## Features ✨
|
|
31
|
+
|
|
32
|
+
- **Responsive Breakpoint Detection:** Dynamically calculates the active breakpoint from an element’s width.
|
|
33
|
+
- **Custom Breakpoints:** Define standard breakpoints like "XS", "SM", "MD", "LG", "XL" or any custom names (e.g. "Smart", "Mini", etc.).
|
|
34
|
+
- **Utility Methods:**
|
|
35
|
+
- `isAtLeast(breakpoint)`: Returns `true` if the active breakpoint is greater than or equal to the specified breakpoint.
|
|
36
|
+
- `isBelow(breakpoint)`: Returns `true` if the active breakpoint is lower than the specified breakpoint.
|
|
37
|
+
- `valueByBreakpoint(mapping)`: Retrieves a value from a mapping object based on the active breakpoint.
|
|
38
|
+
- **Conditional Rendering:** The `BreakpointConditional` component conditionally renders content based on breakpoint conditions.
|
|
39
|
+
- **Full TypeScript Support:** Enjoy robust type definitions and IDE hints for a seamless development experience.
|
|
21
40
|
|
|
22
41
|
---
|
|
23
42
|
|
|
24
43
|
## Requirements
|
|
25
44
|
|
|
26
|
-
- **Node.js
|
|
27
|
-
- **React
|
|
28
|
-
- **React-DOM
|
|
45
|
+
- **Node.js:** >= 18.0.0
|
|
46
|
+
- **React:** >= 17
|
|
47
|
+
- **React-DOM:** >= 17
|
|
29
48
|
|
|
30
49
|
---
|
|
31
50
|
|
|
@@ -33,8 +52,8 @@ A lightweight React context that leverages [react-resize-detector](https://githu
|
|
|
33
52
|
|
|
34
53
|
Install via npm:
|
|
35
54
|
|
|
36
|
-
```
|
|
37
|
-
npm install
|
|
55
|
+
``` bash
|
|
56
|
+
npm install my-breakpoint-package
|
|
38
57
|
```
|
|
39
58
|
|
|
40
59
|
---
|
|
@@ -43,11 +62,12 @@ npm install react-resize-detector-context
|
|
|
43
62
|
|
|
44
63
|
### Basic Usage
|
|
45
64
|
|
|
46
|
-
Wrap your component tree with the `BreakpointProvider` and
|
|
65
|
+
Wrap your component tree with the `BreakpointProvider` and supply your breakpoint configuration. Then, use the `useBreakpoint` hook to access context
|
|
66
|
+
values.
|
|
47
67
|
|
|
48
68
|
```typescript
|
|
49
69
|
import React from 'react';
|
|
50
|
-
import { BreakpointProvider, useBreakpoint } from '
|
|
70
|
+
import { BreakpointProvider, useBreakpoint } from 'my-breakpoint-package';
|
|
51
71
|
|
|
52
72
|
const breakpoints = {
|
|
53
73
|
XS: 0,
|
|
@@ -62,25 +82,25 @@ const ResponsiveComponent = () => {
|
|
|
62
82
|
return (
|
|
63
83
|
<div>
|
|
64
84
|
<p>Current width: {width}px</p>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
85
|
+
<p>Active breakpoint: {breakpoint}</p>
|
|
86
|
+
<p>Is at least MD: {isAtLeast('MD') ? '✅' : '❌'}</p>
|
|
87
|
+
<p>
|
|
88
|
+
Mapping: {valueByBreakpoint({
|
|
89
|
+
XS: 'Extra Small',
|
|
90
|
+
SM: 'Small',
|
|
91
|
+
MD: 'Medium',
|
|
92
|
+
LG: 'Large',
|
|
93
|
+
XL: 'Extra Large'
|
|
94
|
+
})}
|
|
95
|
+
</p>
|
|
96
|
+
</div>
|
|
97
|
+
);
|
|
78
98
|
};
|
|
79
99
|
|
|
80
100
|
const App = () => (
|
|
81
101
|
<BreakpointProvider breakpoints={breakpoints}>
|
|
82
102
|
<ResponsiveComponent />
|
|
83
|
-
|
|
103
|
+
</BreakpointProvider>
|
|
84
104
|
);
|
|
85
105
|
|
|
86
106
|
export default App;
|
|
@@ -90,11 +110,11 @@ export default App;
|
|
|
90
110
|
|
|
91
111
|
### Conditional Rendering with BreakpointConditional
|
|
92
112
|
|
|
93
|
-
|
|
113
|
+
Render content only when specific breakpoint conditions are met.
|
|
94
114
|
|
|
95
115
|
```typescript
|
|
96
116
|
import React from 'react';
|
|
97
|
-
import { BreakpointProvider, BreakpointConditional } from '
|
|
117
|
+
import { BreakpointProvider, BreakpointConditional } from 'my-breakpoint-package';
|
|
98
118
|
|
|
99
119
|
const breakpoints = {
|
|
100
120
|
XS: 0,
|
|
@@ -107,18 +127,18 @@ const breakpoints = {
|
|
|
107
127
|
const ConditionalComponent = () => (
|
|
108
128
|
<div>
|
|
109
129
|
<BreakpointConditional isAtLeast="MD">
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
130
|
+
<p>😊 This content is visible from MD and up.</p>
|
|
131
|
+
</BreakpointConditional>
|
|
132
|
+
<BreakpointConditional isBelow="LG">
|
|
133
|
+
<p>🚀 This content is visible for breakpoints below LG.</p>
|
|
134
|
+
</BreakpointConditional>
|
|
135
|
+
</div>
|
|
116
136
|
);
|
|
117
137
|
|
|
118
138
|
const App = () => (
|
|
119
139
|
<BreakpointProvider breakpoints={breakpoints}>
|
|
120
140
|
<ConditionalComponent />
|
|
121
|
-
|
|
141
|
+
</BreakpointProvider>
|
|
122
142
|
);
|
|
123
143
|
|
|
124
144
|
export default App;
|
|
@@ -128,11 +148,11 @@ export default App;
|
|
|
128
148
|
|
|
129
149
|
### Custom Breakpoints Example
|
|
130
150
|
|
|
131
|
-
|
|
151
|
+
Define your own custom breakpoints – for example, using car sizes:
|
|
132
152
|
|
|
133
153
|
```typescript
|
|
134
154
|
import React from 'react';
|
|
135
|
-
import { BreakpointProvider, useBreakpoint } from '
|
|
155
|
+
import { BreakpointProvider, useBreakpoint } from 'my-breakpoint-package';
|
|
136
156
|
|
|
137
157
|
const carBreakpoints = {
|
|
138
158
|
Smart: 0,
|
|
@@ -147,24 +167,116 @@ const CarComponent = () => {
|
|
|
147
167
|
return (
|
|
148
168
|
<div>
|
|
149
169
|
<p>Current width: {width}px</p>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
170
|
+
<p>Active car size: {breakpoint}</p>
|
|
171
|
+
<p>
|
|
172
|
+
Mapping: {valueByBreakpoint({
|
|
173
|
+
Smart: '🚗 Smart',
|
|
174
|
+
Mini: '🚙 Mini',
|
|
175
|
+
Sedan: '🚘 Sedan',
|
|
176
|
+
SUV: '🚐 SUV',
|
|
177
|
+
Ram: '🚚 Ram'
|
|
178
|
+
})}
|
|
179
|
+
</p>
|
|
180
|
+
</div>
|
|
181
|
+
);
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
const App = () => ( <BreakpointProvider breakpoints={carBreakpoints}>
|
|
185
|
+
<CarComponent />
|
|
186
|
+
</BreakpointProvider>
|
|
187
|
+
);
|
|
188
|
+
|
|
189
|
+
export default App;
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## API Documentation
|
|
195
|
+
|
|
196
|
+
### BreakpointProvider
|
|
197
|
+
|
|
198
|
+
The `BreakpointProvider` sets up the responsive context by measuring the width of an element and determining the active breakpoint based on the
|
|
199
|
+
provided configuration.
|
|
200
|
+
|
|
201
|
+
| Property | Type | Description | Default |
|
|
202
|
+
|-------------|-----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|
|
|
203
|
+
| breakpoints | `Record<Breakpoint, number>` | An object defining your breakpoints. The keys are the breakpoint names (e.g., "XS", "SM", "MD", etc.), and the values are the minimum widths (in pixels). | **Required** |
|
|
204
|
+
| children | `React.ReactNode` | Child components that consume the breakpoint context. | **Required** |
|
|
205
|
+
| targetRef | `{ current: HTMLElement \| null }` (optional) | A reference to the element whose width is observed. If not provided, an internal `<div>` is rendered to attach the ref. | Internal `<div>` is used |
|
|
206
|
+
|
|
207
|
+
**Notes:**
|
|
208
|
+
|
|
209
|
+
- If the measured width is `undefined` or `0`, an error is logged in the console.
|
|
210
|
+
- If duplicate breakpoint values are detected, a warning is logged.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
### BreakpointConditional
|
|
215
|
+
|
|
216
|
+
The `BreakpointConditional` component conditionally renders its children based on the active breakpoint.
|
|
217
|
+
|
|
218
|
+
| Property | Type | Description | Default |
|
|
219
|
+
|-----------|-------------------|------------------------------------------------------------------------------------------------------------------|--------------|
|
|
220
|
+
| show | `Breakpoint[]` | An array of breakpoint names. The children are rendered only if the active breakpoint is included in this array. | Not set |
|
|
221
|
+
| isAtLeast | `Breakpoint` | The children are rendered only if the active breakpoint is greater than or equal to this value. | Not set |
|
|
222
|
+
| isBelow | `Breakpoint` | The children are rendered only if the active breakpoint is lower than this value. | Not set |
|
|
223
|
+
| children | `React.ReactNode` | The content to render if the condition is met. | **Required** |
|
|
224
|
+
|
|
225
|
+
*Note:* Multiple conditions can be combined; all specified conditions must be met for the children to render.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
### useBreakpoint Hook
|
|
230
|
+
|
|
231
|
+
The `useBreakpoint` hook provides access to the responsive context. It returns an object with the following properties and methods:
|
|
232
|
+
|
|
233
|
+
| Property/Method | Type | Description |
|
|
234
|
+
|----------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
235
|
+
| **width** | `number` | The current width (in pixels) of the observed element. |
|
|
236
|
+
| **breakpoint** | `Breakpoint \| null` | The active breakpoint based on the current width. Returns `null` if no breakpoint is determined or if width is undefined. |
|
|
237
|
+
| **breakpoints** | `Record<Breakpoint, number>` | The breakpoint configuration provided to the `BreakpointProvider`. |
|
|
238
|
+
| **isAtLeast(breakpoint: Breakpoint): boolean** | `(breakpoint: Breakpoint) => boolean` | Returns `true` if the active breakpoint is greater than or equal to the specified breakpoint. |
|
|
239
|
+
| **isBelow(breakpoint: Breakpoint): boolean** | `(breakpoint: Breakpoint) => boolean` | Returns `true` if the active breakpoint is lower than the specified breakpoint. |
|
|
240
|
+
| **valueByBreakpoint<T>(values: Partial<Record<Breakpoint, T>>): T \| undefined** | `<T>(values: Partial<Record<Breakpoint, T>>) => T \| undefined` | Returns a value from the provided mapping based on the active breakpoint. If no value is mapped for the current breakpoint, returns `undefined`. |
|
|
241
|
+
|
|
242
|
+
#### Example Usage of `useBreakpoint`
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import React from 'react';
|
|
246
|
+
import { BreakpointProvider, useBreakpoint } from 'my-breakpoint-package';
|
|
247
|
+
|
|
248
|
+
const breakpoints = {
|
|
249
|
+
XS: 0,
|
|
250
|
+
SM: 500,
|
|
251
|
+
MD: 700,
|
|
252
|
+
LG: 900,
|
|
253
|
+
XL: 1100,
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
const ResponsiveComponent = () => {
|
|
257
|
+
const { width, breakpoint, isAtLeast, valueByBreakpoint } = useBreakpoint();
|
|
258
|
+
return (
|
|
259
|
+
<div>
|
|
260
|
+
<p>Current width: {width}px</p>
|
|
261
|
+
<p>Active breakpoint: {breakpoint}</p>
|
|
262
|
+
<p>Is at least MD: {isAtLeast('MD') ? '✅' : '❌'}</p>
|
|
263
|
+
<p>
|
|
264
|
+
Mapping: {valueByBreakpoint({
|
|
265
|
+
XS: 'Extra Small',
|
|
266
|
+
SM: 'Small',
|
|
267
|
+
MD: 'Medium',
|
|
268
|
+
LG: 'Large',
|
|
269
|
+
XL: 'Extra Large',
|
|
270
|
+
})}
|
|
271
|
+
</p>
|
|
272
|
+
</div>
|
|
273
|
+
);
|
|
162
274
|
};
|
|
163
275
|
|
|
164
276
|
const App = () => (
|
|
165
|
-
<BreakpointProvider breakpoints={
|
|
166
|
-
<
|
|
167
|
-
|
|
277
|
+
<BreakpointProvider breakpoints={breakpoints}>
|
|
278
|
+
<ResponsiveComponent />
|
|
279
|
+
</BreakpointProvider>
|
|
168
280
|
);
|
|
169
281
|
|
|
170
282
|
export default App;
|
|
@@ -172,18 +284,21 @@ export default App;
|
|
|
172
284
|
|
|
173
285
|
---
|
|
174
286
|
|
|
175
|
-
## Available Scripts
|
|
287
|
+
## Available Scripts 🚀
|
|
176
288
|
|
|
177
|
-
|
|
289
|
+
The following scripts are available in this package:
|
|
178
290
|
|
|
179
291
|
- **`npm run build`**
|
|
180
|
-
Builds the package
|
|
292
|
+
Builds the package using `tsup` (bundles and compiles your source code).
|
|
181
293
|
|
|
182
294
|
- **`npm run dev`**
|
|
183
295
|
Runs development mode concurrently with build watch, Storybook, and tests.
|
|
184
296
|
|
|
185
297
|
- **`npm run storybook`**
|
|
186
|
-
Launches Storybook for interactive component demos
|
|
298
|
+
Launches Storybook on port 6006 for interactive component demos.
|
|
299
|
+
|
|
300
|
+
- **`npm run storybook:build`**
|
|
301
|
+
Builds the Storybook static site.
|
|
187
302
|
|
|
188
303
|
- **`npm run test`**
|
|
189
304
|
Runs tests using Vitest.
|
|
@@ -192,15 +307,39 @@ You can use the following scripts from your command line:
|
|
|
192
307
|
Runs tests with coverage.
|
|
193
308
|
|
|
194
309
|
- **`npm run lint`**
|
|
195
|
-
Runs biome check
|
|
310
|
+
Runs biome to check (and optionally fix) your code style.
|
|
196
311
|
|
|
197
312
|
- **`npm run release`**
|
|
198
|
-
Builds and triggers the release process.
|
|
313
|
+
Builds the package and triggers the release process.
|
|
314
|
+
|
|
315
|
+
- **`npm run link:self`**
|
|
316
|
+
Creates a global link for local development/testing.
|
|
199
317
|
|
|
200
318
|
---
|
|
201
319
|
|
|
202
|
-
##
|
|
320
|
+
## Contribution Guidelines 🤝
|
|
321
|
+
|
|
322
|
+
Contributions are very welcome! If you would like to help improve this package, please follow these guidelines:
|
|
323
|
+
|
|
324
|
+
1. **Fork the Repository:**
|
|
325
|
+
Fork this repository to your own GitHub account.
|
|
203
326
|
|
|
204
|
-
|
|
327
|
+
2. **Create a Branch:**
|
|
328
|
+
Create a new branch for your feature or bug fix (e.g., `feature/awesome-improvement`).
|
|
329
|
+
|
|
330
|
+
3. **Make Your Changes:**
|
|
331
|
+
Ensure that your changes follow the coding style and that all tests pass.
|
|
332
|
+
|
|
333
|
+
4. **Submit a Pull Request:**
|
|
334
|
+
Once your changes are ready, open a pull request with a clear description of your modifications and the rationale behind them.
|
|
335
|
+
|
|
336
|
+
5. **Issues:**
|
|
337
|
+
If you find bugs or have suggestions, please open an issue to discuss before starting work on a pull request.
|
|
338
|
+
|
|
339
|
+
Let's build something awesome together! 🚀✨
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## License
|
|
205
344
|
|
|
206
|
-
|
|
345
|
+
This project is licensed under the MIT License.
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
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==
|
|
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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QWtCLFFBQVNDLENBQWUsRUFBSVIsRUFBYyxFQUV2RlMsRUFBZSxHQUVuQixPQUFJTixHQUFRRyxJQUNWRyxFQUFlQSxHQUFnQk4sRUFBSyxTQUFTRyxDQUFVLEdBRXJERixJQUNGSyxFQUFlQSxHQUFnQkYsRUFBaUJILENBQU8sR0FFckRDLElBQ0ZJLEVBQWVBLEdBQWdCRCxFQUFlSCxDQUFPLEdBR2hESSxLQUFlLG1CQUFHLFNBQUE1QixFQUFTLEVBQU0sSUFDMUMiLAogICJuYW1lcyI6IFsic3JjX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiQnJlYWtwb2ludENvbmRpdGlvbmFsIiwgIkJyZWFrcG9pbnRQcm92aWRlciIsICJ1c2VCcmVha3BvaW50IiwgIl9fdG9Db21tb25KUyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0X3Jlc2l6ZV9kZXRlY3RvciIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiQnJlYWtwb2ludENvbnRleHQiLCAiQnJlYWtwb2ludFByb3ZpZGVyIiwgImJyZWFrcG9pbnRzIiwgImNoaWxkcmVuIiwgInRhcmdldFJlZiIsICJ3aWR0aCIsICJyZWYiLCAic29ydGVkQnJlYWtwb2ludHMiLCAia2V5IiwgInZhbHVlIiwgImEiLCAiYiIsICJpbmRleCIsICJ2IiwgImN1cnJlbnRCcmVha3BvaW50IiwgImFjdGl2ZSIsICJnZXRCcmVha3BvaW50SW5kZXgiLCAic2l6ZSIsICJpc0F0TGVhc3QiLCAiaXNCZWxvdyIsICJ2YWx1ZUJ5QnJlYWtwb2ludCIsICJ2YWx1ZXMiLCAidXNlQnJlYWtwb2ludCIsICJjb250ZXh0IiwgIkJyZWFrcG9pbnRDb25kaXRpb25hbCIsICJzaG93IiwgIm1pblNpemUiLCAibWF4U2l6ZSIsICJicmVha3BvaW50IiwgImNvbnRleHRJc0F0TGVhc3QiLCAiY29udGV4dElzQmVsb3ciLCAic2hvdWxkUmVuZGVyIl0KfQo=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-resize-detector-context",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.1.0",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "",
|
|
7
7
|
"keywords": [],
|
|
@@ -30,9 +30,7 @@
|
|
|
30
30
|
"import": "./dist/index.mjs"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
"files": [
|
|
34
|
-
"dist"
|
|
35
|
-
],
|
|
33
|
+
"files": ["dist"],
|
|
36
34
|
"config": {
|
|
37
35
|
"commitizen": {
|
|
38
36
|
"path": "./node_modules/@ryansonshine/cz-conventional-changelog"
|
|
@@ -103,4 +101,4 @@
|
|
|
103
101
|
"@emotion/styled": "^11.14.0",
|
|
104
102
|
"react-resize-detector": "^12.0.2"
|
|
105
103
|
}
|
|
106
|
-
}
|
|
104
|
+
}
|