@nlabs/arkhamjs-utils-react 3.29.6 → 3.31.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 +459 -0
- package/index.js +3 -3
- package/lib/FluxContext.d.ts +1 -1
- package/lib/FluxContext.js +2 -29
- package/lib/FluxProvider.d.ts +2 -2
- package/lib/FluxProvider.js +2 -58
- package/lib/FluxProvider.types.d.ts +4 -0
- package/lib/FluxProvider.types.js +2 -16
- package/lib/ResizeObserver.d.js +1 -3
- package/lib/index.d.ts +4 -0
- package/lib/index.js +2 -63
- package/lib/useComponentSize.d.ts +6 -4
- package/lib/useComponentSize.js +2 -63
- package/lib/useFlux.js +2 -33
- package/lib/useFluxDispatch.js +2 -33
- package/lib/useFluxListener.js +2 -39
- package/lib/useFluxState.js +2 -53
- package/lib/useFluxValue.js +2 -33
- package/lib/useRefSize.d.ts +8 -1
- package/lib/useRefSize.js +2 -32
- package/lib/useState.js +2 -54
- package/lib/useWindowSize.d.ts +1 -6
- package/lib/useWindowSize.js +2 -53
- package/lib/useWindowSize.types.d.ts +4 -0
- package/lib/useWindowSize.types.js +1 -16
- package/package.json +12 -13
- package/README +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
# @nlabs/arkhamjs-utils-react
|
|
2
|
+
|
|
3
|
+
> **React Hooks and Utilities for ArkhamJS** - Seamless React integration with powerful hooks for state management, component sizing, and window dimensions.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@nlabs/arkhamjs-utils-react)
|
|
6
|
+
[](https://www.npmjs.com/package/@nlabs/arkhamjs-utils-react)
|
|
7
|
+
[](https://travis-ci.org/nitrogenlabs/arkhamjs)
|
|
8
|
+
[](https://github.com/nitrogenlabs/arkhamjs/issues)
|
|
9
|
+
[](https://github.com/ellerbrock/typescript-badges/)
|
|
10
|
+
[](http://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://discord.gg/Ttgev58)
|
|
12
|
+
|
|
13
|
+
## 🚀 Features
|
|
14
|
+
|
|
15
|
+
- **🎯 Flux Integration Hooks** - `useFlux`, `useFluxState`, `useFluxDispatch`, `useFluxListener`
|
|
16
|
+
- **📏 Component Size Hooks** - `useComponentSize`, `useRefSize` for responsive components
|
|
17
|
+
- **🖥️ Window Size Hooks** - `useWindowSize` for viewport-aware components
|
|
18
|
+
- **🔧 FluxProvider** - React Context provider for ArkhamJS
|
|
19
|
+
- **⚡ TypeScript Support** - First-class TypeScript with full type safety
|
|
20
|
+
- **🌲 Tree-shakable** - Only import what you need
|
|
21
|
+
|
|
22
|
+
## 📦 Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @nlabs/arkhamjs-utils-react
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Peer Dependencies:**
|
|
29
|
+
|
|
30
|
+
- `@nlabs/arkhamjs` ^3.26.0
|
|
31
|
+
- `react` (any version)
|
|
32
|
+
|
|
33
|
+
## 🎯 Quick Start
|
|
34
|
+
|
|
35
|
+
### **Setup FluxProvider**
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import React from 'react';
|
|
39
|
+
import { Flux } from '@nlabs/arkhamjs';
|
|
40
|
+
import { FluxProvider } from '@nlabs/arkhamjs-utils-react';
|
|
41
|
+
|
|
42
|
+
// Initialize Flux
|
|
43
|
+
Flux.init({
|
|
44
|
+
name: 'my-app',
|
|
45
|
+
stores: [UserStore, CartStore]
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const App = (): JSX.Element => {
|
|
49
|
+
return (
|
|
50
|
+
<FluxProvider>
|
|
51
|
+
<UserList />
|
|
52
|
+
<CartSummary />
|
|
53
|
+
</FluxProvider>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### **Use Flux Hooks**
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
import React from 'react';
|
|
62
|
+
import { useFluxState, useFluxDispatch } from '@nlabs/arkhamjs-utils-react';
|
|
63
|
+
|
|
64
|
+
interface User {
|
|
65
|
+
id: number;
|
|
66
|
+
name: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const UserList = (): JSX.Element => {
|
|
70
|
+
// Get state with automatic re-renders
|
|
71
|
+
const users = useFluxState<User[]>('user.users', []);
|
|
72
|
+
|
|
73
|
+
// Get dispatch function
|
|
74
|
+
const dispatch = useFluxDispatch();
|
|
75
|
+
|
|
76
|
+
const addUser = (user: User): void => {
|
|
77
|
+
dispatch({ type: 'ADD_USER', user });
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<div>
|
|
82
|
+
{users.map(user => (
|
|
83
|
+
<div key={user.id}>{user.name}</div>
|
|
84
|
+
))}
|
|
85
|
+
<button onClick={() => addUser({ id: 1, name: 'John' })}>
|
|
86
|
+
Add User
|
|
87
|
+
</button>
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
};
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 🔧 API Reference
|
|
94
|
+
|
|
95
|
+
### **Flux Integration Hooks**
|
|
96
|
+
|
|
97
|
+
#### `useFlux()`
|
|
98
|
+
|
|
99
|
+
Get the Flux instance and dispatch function.
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { useFlux } from '@nlabs/arkhamjs-utils-react';
|
|
103
|
+
|
|
104
|
+
const MyComponent = (): JSX.Element => {
|
|
105
|
+
const { flux, dispatch } = useFlux();
|
|
106
|
+
|
|
107
|
+
// Access Flux methods
|
|
108
|
+
const state = flux.getState('user');
|
|
109
|
+
|
|
110
|
+
// Dispatch actions
|
|
111
|
+
dispatch({ type: 'UPDATE_USER', user });
|
|
112
|
+
};
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### `useFluxState(path, defaultValue?)`
|
|
116
|
+
|
|
117
|
+
Subscribe to state changes with automatic re-renders.
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import { useFluxState } from '@nlabs/arkhamjs-utils-react';
|
|
121
|
+
|
|
122
|
+
interface User {
|
|
123
|
+
name: string;
|
|
124
|
+
email: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const UserProfile = (): JSX.Element => {
|
|
128
|
+
// Subscribe to specific state path
|
|
129
|
+
const user = useFluxState<User | null>('user.current', null);
|
|
130
|
+
const isLoading = useFluxState<boolean>('user.loading', false);
|
|
131
|
+
|
|
132
|
+
if (isLoading) return <div>Loading...</div>;
|
|
133
|
+
if (!user) return <div>No user found</div>;
|
|
134
|
+
|
|
135
|
+
return <div>Welcome, {user.name}!</div>;
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### `useFluxDispatch()`
|
|
140
|
+
|
|
141
|
+
Get the dispatch function for dispatching actions.
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
import { useFluxDispatch } from '@nlabs/arkhamjs-utils-react';
|
|
145
|
+
|
|
146
|
+
interface UserData {
|
|
147
|
+
name: string;
|
|
148
|
+
email: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const AddUserForm = (): JSX.Element => {
|
|
152
|
+
const dispatch = useFluxDispatch();
|
|
153
|
+
|
|
154
|
+
const handleSubmit = (userData: UserData): void => {
|
|
155
|
+
dispatch({ type: 'ADD_USER', user: userData });
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
return <form onSubmit={handleSubmit}>...</form>;
|
|
159
|
+
};
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### `useFluxListener(event, callback)`
|
|
163
|
+
|
|
164
|
+
Listen to specific Flux events.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import { useFluxListener } from '@nlabs/arkhamjs-utils-react';
|
|
168
|
+
|
|
169
|
+
const NotificationComponent = (): JSX.Element => {
|
|
170
|
+
const [notifications, setNotifications] = useState<string[]>([]);
|
|
171
|
+
|
|
172
|
+
// Listen to user events
|
|
173
|
+
useFluxListener('USER_ADDED', (action: { type: string; user: { name: string } }) => {
|
|
174
|
+
setNotifications(prev => [...prev, `User ${action.user.name} added`]);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
return (
|
|
178
|
+
<div>
|
|
179
|
+
{notifications.map((msg, i) => (
|
|
180
|
+
<div key={i}>{msg}</div>
|
|
181
|
+
))}
|
|
182
|
+
</div>
|
|
183
|
+
);
|
|
184
|
+
};
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
#### `useFluxValue(path, defaultValue?)`
|
|
188
|
+
|
|
189
|
+
Get a single value from state without re-renders on other changes.
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
import { useFluxValue } from '@nlabs/arkhamjs-utils-react';
|
|
193
|
+
|
|
194
|
+
const UserCount = (): JSX.Element => {
|
|
195
|
+
const userCount = useFluxValue<number>('user.count', 0);
|
|
196
|
+
|
|
197
|
+
return <div>Total users: {userCount}</div>;
|
|
198
|
+
};
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### **Component Size Hooks**
|
|
202
|
+
|
|
203
|
+
#### `useComponentSize(ref)`
|
|
204
|
+
|
|
205
|
+
Track component dimensions with ResizeObserver.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
import React, { useRef } from 'react';
|
|
209
|
+
import { useComponentSize } from '@nlabs/arkhamjs-utils-react';
|
|
210
|
+
|
|
211
|
+
const ResponsiveComponent = (): JSX.Element => {
|
|
212
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
213
|
+
const { width, height } = useComponentSize(ref);
|
|
214
|
+
|
|
215
|
+
return (
|
|
216
|
+
<div ref={ref}>
|
|
217
|
+
<p>Width: {width}px, Height: {height}px</p>
|
|
218
|
+
</div>
|
|
219
|
+
);
|
|
220
|
+
};
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
#### `useRefSize(ref)`
|
|
224
|
+
|
|
225
|
+
Alternative size hook with different API.
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
import React, { useRef } from 'react';
|
|
229
|
+
import { useRefSize } from '@nlabs/arkhamjs-utils-react';
|
|
230
|
+
|
|
231
|
+
const SizeTracker = (): JSX.Element => {
|
|
232
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
233
|
+
const size = useRefSize(ref);
|
|
234
|
+
|
|
235
|
+
return (
|
|
236
|
+
<div ref={ref}>
|
|
237
|
+
<p>Size: {size.width} x {size.height}</p>
|
|
238
|
+
</div>
|
|
239
|
+
);
|
|
240
|
+
};
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### **Window Size Hooks**
|
|
244
|
+
|
|
245
|
+
#### `useWindowSize()`
|
|
246
|
+
|
|
247
|
+
Track window dimensions.
|
|
248
|
+
|
|
249
|
+
```typescript
|
|
250
|
+
import { useWindowSize } from '@nlabs/arkhamjs-utils-react';
|
|
251
|
+
|
|
252
|
+
const WindowInfo = (): JSX.Element => {
|
|
253
|
+
const { width, height } = useWindowSize();
|
|
254
|
+
|
|
255
|
+
return (
|
|
256
|
+
<div>
|
|
257
|
+
<p>Window: {width} x {height}</p>
|
|
258
|
+
<p>Is Mobile: {width < 768}</p>
|
|
259
|
+
</div>
|
|
260
|
+
);
|
|
261
|
+
};
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## 🎯 Advanced Usage
|
|
265
|
+
|
|
266
|
+
### **Custom Hook Composition**
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
import { useFluxState, useFluxDispatch } from '@nlabs/arkhamjs-utils-react';
|
|
270
|
+
|
|
271
|
+
interface User {
|
|
272
|
+
id: number;
|
|
273
|
+
name: string;
|
|
274
|
+
email: string;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const useUserManagement = () => {
|
|
278
|
+
const users = useFluxState<User[]>('user.users', []);
|
|
279
|
+
const currentUser = useFluxState<User | null>('user.current', null);
|
|
280
|
+
const dispatch = useFluxDispatch();
|
|
281
|
+
|
|
282
|
+
const addUser = (user: Omit<User, 'id'>): void => {
|
|
283
|
+
const newUser = { ...user, id: Date.now() };
|
|
284
|
+
dispatch({ type: 'ADD_USER', user: newUser });
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
const updateUser = (id: number, updates: Partial<User>): void => {
|
|
288
|
+
dispatch({ type: 'UPDATE_USER', id, updates });
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
const deleteUser = (id: number): void => {
|
|
292
|
+
dispatch({ type: 'DELETE_USER', id });
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
return {
|
|
296
|
+
users,
|
|
297
|
+
currentUser,
|
|
298
|
+
addUser,
|
|
299
|
+
updateUser,
|
|
300
|
+
deleteUser
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
const UserManagement = (): JSX.Element => {
|
|
305
|
+
const { users, addUser, updateUser, deleteUser } = useUserManagement();
|
|
306
|
+
|
|
307
|
+
return (
|
|
308
|
+
<div>
|
|
309
|
+
{users.map(user => (
|
|
310
|
+
<div key={user.id}>
|
|
311
|
+
{user.name}
|
|
312
|
+
<button onClick={() => updateUser(user.id, { name: 'Updated' })}>
|
|
313
|
+
Update
|
|
314
|
+
</button>
|
|
315
|
+
<button onClick={() => deleteUser(user.id)}>Delete</button>
|
|
316
|
+
</div>
|
|
317
|
+
))}
|
|
318
|
+
<button onClick={() => addUser({ name: 'New User', email: 'new@example.com' })}>
|
|
319
|
+
Add User
|
|
320
|
+
</button>
|
|
321
|
+
</div>
|
|
322
|
+
);
|
|
323
|
+
};
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### **Performance Optimization**
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
import React, { useCallback, useMemo } from 'react';
|
|
330
|
+
import { useFluxState, useFluxDispatch } from '@nlabs/arkhamjs-utils-react';
|
|
331
|
+
|
|
332
|
+
const OptimizedUserList = (): JSX.Element => {
|
|
333
|
+
const users = useFluxState<User[]>('user.users', []);
|
|
334
|
+
const dispatch = useFluxDispatch();
|
|
335
|
+
|
|
336
|
+
// Memoize expensive computations
|
|
337
|
+
const activeUsers = useMemo(() =>
|
|
338
|
+
users.filter(user => user.status === 'active'),
|
|
339
|
+
[users]
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
// Memoize callbacks
|
|
343
|
+
const handleUserClick = useCallback((userId: number) => {
|
|
344
|
+
dispatch({ type: 'SELECT_USER', id: userId });
|
|
345
|
+
}, [dispatch]);
|
|
346
|
+
|
|
347
|
+
return (
|
|
348
|
+
<div>
|
|
349
|
+
{activeUsers.map(user => (
|
|
350
|
+
<div key={user.id} onClick={() => handleUserClick(user.id)}>
|
|
351
|
+
{user.name}
|
|
352
|
+
</div>
|
|
353
|
+
))}
|
|
354
|
+
</div>
|
|
355
|
+
);
|
|
356
|
+
};
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## 🔧 Configuration
|
|
360
|
+
|
|
361
|
+
### **FluxProvider Options**
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
import { FluxProvider } from '@nlabs/arkhamjs-utils-react';
|
|
365
|
+
|
|
366
|
+
const App = (): JSX.Element => {
|
|
367
|
+
return (
|
|
368
|
+
<FluxProvider
|
|
369
|
+
debug={process.env.NODE_ENV === 'development'}
|
|
370
|
+
enableStrictMode={true}
|
|
371
|
+
>
|
|
372
|
+
<YourApp />
|
|
373
|
+
</FluxProvider>
|
|
374
|
+
);
|
|
375
|
+
};
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## 🎯 Use Cases
|
|
379
|
+
|
|
380
|
+
### **E-commerce Application**
|
|
381
|
+
|
|
382
|
+
```typescript
|
|
383
|
+
const ShoppingCart = (): JSX.Element => {
|
|
384
|
+
const cartItems = useFluxState<CartItem[]>('cart.items', []);
|
|
385
|
+
const total = useFluxState<number>('cart.total', 0);
|
|
386
|
+
const dispatch = useFluxDispatch();
|
|
387
|
+
|
|
388
|
+
const addToCart = (product: Product): void => {
|
|
389
|
+
dispatch({ type: 'ADD_TO_CART', product });
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
const removeFromCart = (productId: number): void => {
|
|
393
|
+
dispatch({ type: 'REMOVE_FROM_CART', productId });
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
return (
|
|
397
|
+
<div>
|
|
398
|
+
<h2>Shopping Cart ({cartItems.length} items)</h2>
|
|
399
|
+
{cartItems.map(item => (
|
|
400
|
+
<div key={item.id}>
|
|
401
|
+
{item.name} - ${item.price}
|
|
402
|
+
<button onClick={() => removeFromCart(item.id)}>Remove</button>
|
|
403
|
+
</div>
|
|
404
|
+
))}
|
|
405
|
+
<div>Total: ${total}</div>
|
|
406
|
+
</div>
|
|
407
|
+
);
|
|
408
|
+
};
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### **Real-time Dashboard**
|
|
412
|
+
|
|
413
|
+
```typescript
|
|
414
|
+
const Dashboard = (): JSX.Element => {
|
|
415
|
+
const metrics = useFluxState<Metrics>('dashboard.metrics', {});
|
|
416
|
+
const { width, height } = useWindowSize();
|
|
417
|
+
const isMobile = width < 768;
|
|
418
|
+
|
|
419
|
+
// Listen for real-time updates
|
|
420
|
+
useFluxListener('METRICS_UPDATED', (action) => {
|
|
421
|
+
console.log('Metrics updated:', action.metrics);
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
return (
|
|
425
|
+
<div className={isMobile ? 'mobile-dashboard' : 'desktop-dashboard'}>
|
|
426
|
+
<MetricCard title="Users" value={metrics.userCount} />
|
|
427
|
+
<MetricCard title="Revenue" value={metrics.revenue} />
|
|
428
|
+
<MetricCard title="Orders" value={metrics.orderCount} />
|
|
429
|
+
</div>
|
|
430
|
+
);
|
|
431
|
+
};
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
## 🔗 Related Packages
|
|
435
|
+
|
|
436
|
+
- **[@nlabs/arkhamjs](./packages/arkhamjs/README.md)** - Core Flux framework
|
|
437
|
+
- **[@nlabs/arkhamjs-middleware-logger](./packages/arkhamjs-middleware-logger/README.md)** - Logging middleware
|
|
438
|
+
- **[@nlabs/arkhamjs-middleware-devtools](./packages/arkhamjs-middleware-devtools/README.md)** - DevTools integration
|
|
439
|
+
- **[@nlabs/arkhamjs-storage-browser](./packages/arkhamjs-storage-browser/README.md)** - Browser storage
|
|
440
|
+
|
|
441
|
+
## 📚 Documentation
|
|
442
|
+
|
|
443
|
+
- **[ArkhamJS Documentation](https://arkhamjs.io)** - Complete API reference
|
|
444
|
+
- **[React Integration Guide](https://arkhamjs.io/docs/react)** - Detailed React setup
|
|
445
|
+
- **[TypeScript Guide](https://arkhamjs.io/docs/typescript)** - TypeScript best practices
|
|
446
|
+
|
|
447
|
+
## 🤝 Community & Support
|
|
448
|
+
|
|
449
|
+
- **💬 [Discord Community](https://discord.gg/Ttgev58)** - Chat with other developers
|
|
450
|
+
- **🐛 [GitHub Issues](https://github.com/nitrogenlabs/arkhamjs/issues)** - Report bugs and request features
|
|
451
|
+
- **📝 [Examples](./packages/arkhamjs-example-ts-react/README.md)** - Complete working examples
|
|
452
|
+
|
|
453
|
+
## 📄 License
|
|
454
|
+
|
|
455
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
**Start building reactive React applications with ArkhamJS today!** 🚀
|
package/index.js
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
4
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import * as lib from './lib/index.js';
|
|
7
|
+
export default lib;
|
|
8
|
+
export * from './lib/index.js';
|
package/lib/FluxContext.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const FluxContext: any
|
|
1
|
+
export declare const FluxContext: import("react").Context<any>;
|
package/lib/FluxContext.js
CHANGED
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var FluxContext_exports = {};
|
|
19
|
-
__export(FluxContext_exports, {
|
|
20
|
-
FluxContext: () => FluxContext
|
|
21
|
-
});
|
|
22
|
-
module.exports = __toCommonJS(FluxContext_exports);
|
|
23
|
-
var import_react = require("react");
|
|
24
|
-
const FluxContext = (0, import_react.createContext)(null);
|
|
25
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
-
0 && (module.exports = {
|
|
27
|
-
FluxContext
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhDb250ZXh0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IEZsdXhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUE0QjtBQUVyQixNQUFNLGtCQUFjLDRCQUFjLElBQUk7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
1
|
+
import{createContext as t}from"react";const n=t({flux:void 0});export{n as FluxContext};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhDb250ZXh0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IEZsdXhDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7Zmx1eDogdW5kZWZpbmVkfSBhcyBhbnkpO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxpQkFBQUEsTUFBb0IsUUFFckIsTUFBTUMsRUFBY0QsRUFBYyxDQUFDLEtBQU0sTUFBUyxDQUFRIiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHQiLCAiRmx1eENvbnRleHQiXQp9Cg==
|
package/lib/FluxProvider.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { FluxProviderProps } from './FluxProvider.types';
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import type { FluxProviderProps } from './FluxProvider.types';
|
|
3
3
|
export declare const FluxProvider: FC<FluxProviderProps>;
|
package/lib/FluxProvider.js
CHANGED
|
@@ -1,58 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var FluxProvider_exports = {};
|
|
29
|
-
__export(FluxProvider_exports, {
|
|
30
|
-
FluxProvider: () => FluxProvider
|
|
31
|
-
});
|
|
32
|
-
module.exports = __toCommonJS(FluxProvider_exports);
|
|
33
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
34
|
-
var import_isEqual = __toESM(require("lodash/isEqual"));
|
|
35
|
-
var import_react = require("react");
|
|
36
|
-
var import_FluxContext = require("./FluxContext");
|
|
37
|
-
const FluxProvider = ({ children, flux }) => {
|
|
38
|
-
const [state, setState] = (0, import_react.useState)(flux.getState());
|
|
39
|
-
const ref = (0, import_react.useRef)(state);
|
|
40
|
-
(0, import_react.useEffect)(() => {
|
|
41
|
-
const updateState = (newState) => {
|
|
42
|
-
if (!(0, import_isEqual.default)(newState, ref.current)) {
|
|
43
|
-
ref.current = newState;
|
|
44
|
-
setState(newState);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
flux.addListener("arkhamjs", updateState);
|
|
48
|
-
return () => {
|
|
49
|
-
flux.removeListener("arkhamjs", updateState);
|
|
50
|
-
};
|
|
51
|
-
}, []);
|
|
52
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_FluxContext.FluxContext.Provider, { value: { flux, state }, children });
|
|
53
|
-
};
|
|
54
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
55
|
-
0 && (module.exports = {
|
|
56
|
-
FluxProvider
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQge0ZDLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtGbHV4Q29udGV4dH0gZnJvbSAnLi9GbHV4Q29udGV4dCc7XG5pbXBvcnQge0ZsdXhQcm92aWRlclByb3BzfSBmcm9tICcuL0ZsdXhQcm92aWRlci50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBGbHV4UHJvdmlkZXI6IEZDPEZsdXhQcm92aWRlclByb3BzPiA9ICh7Y2hpbGRyZW4sIGZsdXh9KSA9PiB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoZmx1eC5nZXRTdGF0ZSgpKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKHN0YXRlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZVN0YXRlID0gKG5ld1N0YXRlKSA9PiB7XG4gICAgICBpZighaXNFcXVhbChuZXdTdGF0ZSwgcmVmLmN1cnJlbnQpKSB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gbmV3U3RhdGU7XG4gICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGZsdXguYWRkTGlzdGVuZXIoJ2Fya2hhbWpzJywgdXBkYXRlU3RhdGUpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZsdXgucmVtb3ZlTGlzdGVuZXIoJ2Fya2hhbWpzJywgdXBkYXRlU3RhdGUpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gPEZsdXhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7Zmx1eCwgc3RhdGV9fT57Y2hpbGRyZW59PC9GbHV4Q29udGV4dC5Qcm92aWRlcj47XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRCUztBQXhCVCxxQkFBb0I7QUFDcEIsbUJBQThDO0FBRTlDLHlCQUEwQjtBQUduQixNQUFNLGVBQXNDLENBQUMsRUFBQyxVQUFVLEtBQUksTUFBTTtBQUN2RSxRQUFNLENBQUMsT0FBTyxRQUFRLFFBQUksdUJBQVMsS0FBSyxTQUFTLENBQUM7QUFDbEQsUUFBTSxVQUFNLHFCQUFPLEtBQUs7QUFFeEIsOEJBQVUsTUFBTTtBQUNkLFVBQU0sY0FBYyxDQUFDLGFBQWE7QUFDaEMsVUFBRyxLQUFDLGVBQUFBLFNBQVEsVUFBVSxJQUFJLE9BQU8sR0FBRztBQUNsQyxZQUFJLFVBQVU7QUFDZCxpQkFBUyxRQUFRO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBQ0EsU0FBSyxZQUFZLFlBQVksV0FBVztBQUV4QyxXQUFPLE1BQU07QUFDWCxXQUFLLGVBQWUsWUFBWSxXQUFXO0FBQUEsSUFDN0M7QUFBQSxFQUNGLEdBQUcsQ0FBQyxDQUFDO0FBRUwsU0FBTyw0Q0FBQywrQkFBWSxVQUFaLEVBQXFCLE9BQU8sRUFBQyxNQUFNLE1BQUssR0FBSSxVQUFTO0FBQy9EOyIsCiAgIm5hbWVzIjogWyJpc0VxdWFsIl0KfQo=
|
|
1
|
+
import{isEqual as m}from"@nlabs/utils/checks/isEqual";import{useEffect as p,useRef as u,useState as n}from"react";import{FluxContext as d}from"./FluxContext";import{jsx as v}from"react/jsx-runtime";const f=({children:i,flux:r})=>{const[t,a]=n(r.getState()),o=u(t);return p(()=>{const s=e=>{m(e,o.current)||(o.current=e,a(e))};return r.addListener("arkhamjs",s),()=>{r.removeListener("arkhamjs",s)}},[r]),v(d.Provider,{value:{flux:r,state:t},children:i})};export{f as FluxProvider};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2lzRXF1YWx9IGZyb20gJ0BubGFicy91dGlscy9jaGVja3MvaXNFcXVhbCc7XG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge0ZsdXhDb250ZXh0fSBmcm9tICcuL0ZsdXhDb250ZXh0JztcblxuaW1wb3J0IHR5cGUge0ZDfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Rmx1eFByb3ZpZGVyUHJvcHN9IGZyb20gJy4vRmx1eFByb3ZpZGVyLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IEZsdXhQcm92aWRlcjogRkM8Rmx1eFByb3ZpZGVyUHJvcHM+ID0gKHtjaGlsZHJlbiwgZmx1eH0pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShmbHV4LmdldFN0YXRlKCkpO1xuICBjb25zdCByZWYgPSB1c2VSZWYoc3RhdGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlU3RhdGUgPSAobmV3U3RhdGU6IGFueSkgPT4ge1xuICAgICAgaWYoIWlzRXF1YWwobmV3U3RhdGUsIHJlZi5jdXJyZW50KSkge1xuICAgICAgICByZWYuY3VycmVudCA9IG5ld1N0YXRlO1xuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBmbHV4LmFkZExpc3RlbmVyKCdhcmtoYW1qcycsIHVwZGF0ZVN0YXRlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBmbHV4LnJlbW92ZUxpc3RlbmVyKCdhcmtoYW1qcycsIHVwZGF0ZVN0YXRlKTtcbiAgICB9O1xuICB9LCBbZmx1eF0pO1xuXG4gIHJldHVybiA8Rmx1eENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3tmbHV4LCBzdGF0ZX19PntjaGlsZHJlbn08L0ZsdXhDb250ZXh0LlByb3ZpZGVyPjtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLFdBQUFBLE1BQWMsOEJBQ3RCLE9BQVEsYUFBQUMsRUFBVyxVQUFBQyxFQUFRLFlBQUFDLE1BQWUsUUFFMUMsT0FBUSxlQUFBQyxNQUFrQixnQkF1QmpCLGNBQUFDLE1BQUEsb0JBbEJGLE1BQU1DLEVBQXNDLENBQUMsQ0FBQyxTQUFBQyxFQUFVLEtBQUFDLENBQUksSUFBTSxDQUN2RSxLQUFNLENBQUNDLEVBQU9DLENBQVEsRUFBSVAsRUFBU0ssRUFBSyxTQUFTLENBQUMsRUFDNUNHLEVBQU1ULEVBQU9PLENBQUssRUFFeEIsT0FBQVIsRUFBVSxJQUFNLENBQ2QsTUFBTVcsRUFBZUMsR0FBa0IsQ0FDakNiLEVBQVFhLEVBQVVGLEVBQUksT0FBTyxJQUMvQkEsRUFBSSxRQUFVRSxFQUNkSCxFQUFTRyxDQUFRLEVBRXJCLEVBQ0EsT0FBQUwsRUFBSyxZQUFZLFdBQVlJLENBQVcsRUFFakMsSUFBTSxDQUNYSixFQUFLLGVBQWUsV0FBWUksQ0FBVyxDQUM3QyxDQUNGLEVBQUcsQ0FBQ0osQ0FBSSxDQUFDLEVBRUZILEVBQUNELEVBQVksU0FBWixDQUFxQixNQUFPLENBQUMsS0FBQUksRUFBTSxNQUFBQyxDQUFLLEVBQUksU0FBQUYsRUFBUyxDQUMvRCIsCiAgIm5hbWVzIjogWyJpc0VxdWFsIiwgInVzZUVmZmVjdCIsICJ1c2VSZWYiLCAidXNlU3RhdGUiLCAiRmx1eENvbnRleHQiLCAianN4IiwgIkZsdXhQcm92aWRlciIsICJjaGlsZHJlbiIsICJmbHV4IiwgInN0YXRlIiwgInNldFN0YXRlIiwgInJlZiIsICJ1cGRhdGVTdGF0ZSIsICJuZXdTdGF0ZSJdCn0K
|
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
-
var FluxProvider_types_exports = {};
|
|
15
|
-
module.exports = __toCommonJS(FluxProvider_types_exports);
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50eXBlcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBGbHV4UHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogYW55O1xuICBmbHV4OiBGbHV4RnJhbWV3b3JrO1xuICBzdGF0ZT86IGFueTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
1
|
+
import"@nlabs/arkhamjs";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50eXBlcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBGbHV4UHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogYW55O1xuICBmbHV4OiBGbHV4RnJhbWV3b3JrO1xuICBzdGF0ZT86IGFueTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE1BQTRCIiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/lib/ResizeObserver.d.js
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL1Jlc2l6ZU9ic2VydmVyLmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogVGhlICoqUmVzaXplT2JzZXJ2ZXIqKiBpbnRlcmZhY2UgcmVwb3J0cyBjaGFuZ2VzIHRvIHRoZSBkaW1lbnNpb25zIG9mIGFuXG4gKiBbRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQpJ3MgY29udGVudFxuICogb3IgYm9yZGVyIGJveCwgb3IgdGhlIGJvdW5kaW5nIGJveCBvZiBhblxuICogW1NWR0VsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TVkdFbGVtZW50KS5cbiAqXG4gKiA+ICoqTm90ZSoqOiBUaGUgY29udGVudCBib3ggaXMgdGhlIGJveCBpbiB3aGljaCBjb250ZW50IGNhbiBiZSBwbGFjZWQsXG4gKiA+IG1lYW5pbmcgdGhlIGJvcmRlciBib3ggbWludXMgdGhlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aC4gVGhlIGJvcmRlciBib3hcbiAqID4gZW5jb21wYXNzZXMgdGhlIGNvbnRlbnQsIHBhZGRpbmcsIGFuZCBib3JkZXIuIFNlZVxuICogPiBbVGhlIGJveCBtb2RlbF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9DU1MvQnVpbGRpbmdfYmxvY2tzL1RoZV9ib3hfbW9kZWwpXG4gKiA+IGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9uLlxuICpcbiAqIGBSZXNpemVPYnNlcnZlcmAgYXZvaWRzIGluZmluaXRlIGNhbGxiYWNrIGxvb3BzIGFuZCBjeWNsaWMgZGVwZW5kZW5jaWVzIHRoYXRcbiAqIGFyZSBvZnRlbiBjcmVhdGVkIHdoZW4gcmVzaXppbmcgdmlhIGEgY2FsbGJhY2sgZnVuY3Rpb24uIEl0IGRvZXMgdGhpcyBieSBvbmx5XG4gKiBwcm9jZXNzaW5nIGVsZW1lbnRzIGRlZXBlciBpbiB0aGUgRE9NIGluIHN1YnNlcXVlbnQgZnJhbWVzLiBJbXBsZW1lbnRhdGlvbnNcbiAqIHNob3VsZCwgaWYgdGhleSBmb2xsb3cgdGhlIHNwZWNpZmljYXRpb24sIGludm9rZSByZXNpemUgZXZlbnRzIGJlZm9yZSBwYWludFxuICogYW5kIGFmdGVyIGxheW91dC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXNpemVPYnNlcnZlclxuICovXG5jbGFzcyBSZXNpemVPYnNlcnZlciB7XG4gIC8qKlxuICAgKiBUaGUgKipSZXNpemVPYnNlcnZlcioqIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgYFJlc2l6ZU9ic2VydmVyYCBvYmplY3QsXG4gICAqIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlcG9ydCBjaGFuZ2VzIHRvIHRoZSBjb250ZW50IG9yIGJvcmRlciBib3ggb2YgYW5cbiAgICogYEVsZW1lbnRgIG9yIHRoZSBib3VuZGluZyBib3ggb2YgYW4gYFNWR0VsZW1lbnRgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB2YXIgUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBUaGUgZnVuY3Rpb24gY2FsbGVkIHdoZW5ldmVyIGFuIG9ic2VydmVkIHJlc2l6ZSBvY2N1cnMuIFRoZSBmdW5jdGlvbiBpc1xuICAgKiBjYWxsZWQgd2l0aCB0d28gcGFyYW1ldGVyczpcbiAgICogKiAqKmVudHJpZXMqKlxuICAgKiAgIEFuIGFycmF5IG9mXG4gICAqICAgW1Jlc2l6ZU9ic2VydmVyRW50cnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXNpemVPYnNlcnZlckVudHJ5KVxuICAgKiAgIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIG5ldyBkaW1lbnNpb25zIG9mIHRoZSBlbGVtZW50XG4gICAqICAgYWZ0ZXIgZWFjaCBjaGFuZ2UuXG4gICAqICogKipvYnNlcnZlcioqXG4gICAqICAgQSByZWZlcmVuY2UgdG8gdGhlIGBSZXNpemVPYnNlcnZlcmAgaXRzZWxmLCBzbyBpdCB3aWxsIGRlZmluaXRlbHkgYmVcbiAgICogICBhY2Nlc3NpYmxlIGZyb20gaW5zaWRlIHRoZSBjYWxsYmFjaywgc2hvdWxkIHlvdSBuZWVkIGl0LiBUaGlzIGNvdWxkIGJlXG4gICAqICAgdXNlZCBmb3IgZXhhbXBsZSB0byBhdXRvbWF0aWNhbGx5IHVub2JzZXJ2ZSB0aGUgb2JzZXJ2ZXIgd2hlbiBhIGNlcnRhaW5cbiAgICogICBjb25kaXRpb24gaXMgcmVhY2hlZCwgYnV0IHlvdSBjYW4gb21pdCBpdCBpZiB5b3UgZG9uJ3QgbmVlZCBpdC5cbiAgICpcbiAgICogVGhlIGNhbGxiYWNrIHdpbGwgZ2VuZXJhbGx5IGZvbGxvdyBhIHBhdHRlcm4gYWxvbmcgdGhlIGxpbmVzIG9mOlxuICAgKiBgYGBqc1xuICAgKiBmdW5jdGlvbihlbnRyaWVzLCBvYnNlcnZlcikge1xuICAgKiAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICogICAgIC8vIERvIHNvbWV0aGluZyB0byBlYWNoIGVudHJ5XG4gICAqICAgICAvLyBhbmQgcG9zc2libHkgc29tZXRoaW5nIHRvIHRoZSBvYnNlcnZlciBpdHNlbGZcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBpcyB0YWtlbiBmcm9tIHRoZVxuICAgKiBbcmVzaXplLW9ic2VydmVyLXRleHQuaHRtbF0oaHR0cHM6Ly9tZG4uZ2l0aHViLmlvL2RvbS1leGFtcGxlcy9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLXRleHQuaHRtbClcbiAgICogKFtzZWUgc291cmNlXShodHRwczovL2dpdGh1Yi5jb20vbWRuL2RvbS1leGFtcGxlcy9ibG9iL21hc3Rlci9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLXRleHQuaHRtbCkpXG4gICAqIGV4YW1wbGU6XG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgKiAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICogICAgIGlmKGVudHJ5LmNvbnRlbnRCb3hTaXplKSB7XG4gICAqICAgICAgIGgxRWxlbS5zdHlsZS5mb250U2l6ZSA9IE1hdGgubWF4KDEuNSwgZW50cnkuY29udGVudEJveFNpemUuaW5saW5lU2l6ZS8yMDApICsgJ3JlbSc7XG4gICAqICAgICAgIHBFbGVtLnN0eWxlLmZvbnRTaXplID0gTWF0aC5tYXgoMSwgZW50cnkuY29udGVudEJveFNpemUuaW5saW5lU2l6ZS82MDApICsgJ3JlbSc7XG4gICAqICAgICB9IGVsc2Uge1xuICAgKiAgICAgICBoMUVsZW0uc3R5bGUuZm9udFNpemUgPSBNYXRoLm1heCgxLjUsIGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoLzIwMCkgKyAncmVtJztcbiAgICogICAgICAgcEVsZW0uc3R5bGUuZm9udFNpemUgPSBNYXRoLm1heCgxLCBlbnRyeS5jb250ZW50UmVjdC53aWR0aC82MDApICsgJ3JlbSc7XG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9KTtcbiAgICpcbiAgICogcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkaXZFbGVtKTtcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrKTtcblxuICAvKipcbiAgICogVGhlICoqZGlzY29ubmVjdCgpKiogbWV0aG9kIG9mIHRoZVxuICAgKiBbUmVzaXplT2JzZXJ2ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXNpemVPYnNlcnZlcilcbiAgICogaW50ZXJmYWNlIHVub2JzZXJ2ZXMgYWxsIG9ic2VydmVkXG4gICAqIFtFbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudCkgb3JcbiAgICogW1NWR0VsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TVkdFbGVtZW50KVxuICAgKiB0YXJnZXRzLlxuICAgKi9cbiAgZGlzY29ubmVjdDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlIGBvYnNlcnZlKClgIG1ldGhvZCBvZiB0aGVcbiAgICogW1Jlc2l6ZU9ic2VydmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzaXplT2JzZXJ2ZXIpXG4gICAqIGludGVyZmFjZSBzdGFydHMgb2JzZXJ2aW5nIHRoZSBzcGVjaWZpZWRcbiAgICogW0VsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50KSBvclxuICAgKiBbU1ZHRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NWR0VsZW1lbnQpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRhcmdldCwgb3B0aW9ucyk7XG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXRcbiAgICogQSByZWZlcmVuY2UgdG8gYW5cbiAgICogW0VsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50KSBvclxuICAgKiBbU1ZHRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NWR0VsZW1lbnQpXG4gICAqIHRvIGJlIG9ic2VydmVkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBBbiBvcHRpb25zIG9iamVjdCBhbGxvd2luZyB5b3UgdG8gc2V0IG9wdGlvbnMgZm9yIHRoZSBvYnNlcnZhdGlvbi5cbiAgICogQ3VycmVudGx5IHRoaXMgb25seSBoYXMgb25lIHBvc3NpYmxlIG9wdGlvbiB0aGF0IGNhbiBiZSBzZXQuXG4gICAqL1xuICBvYnNlcnZlOiAodGFyZ2V0OiBFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPYnNlcnZlT3B0aW9ucykgPT4gdm9pZDtcblxuICAvKipcbiAgICogVGhlICoqdW5vYnNlcnZlKCkqKiBtZXRob2Qgb2YgdGhlXG4gICAqIFtSZXNpemVPYnNlcnZlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1Jlc2l6ZU9ic2VydmVyKVxuICAgKiBpbnRlcmZhY2UgZW5kcyB0aGUgb2JzZXJ2aW5nIG9mIGEgc3BlY2lmaWVkXG4gICAqIFtFbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudCkgb3JcbiAgICogW1NWR0VsZW1lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TVkdFbGVtZW50KS5cbiAgICovXG4gIHVub2JzZXJ2ZTogKHRhcmdldDogRWxlbWVudCkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyT2JzZXJ2ZU9wdGlvbnMge1xuICAvKipcbiAgICogU2V0cyB3aGljaCBib3ggbW9kZWwgdGhlIG9ic2VydmVyIHdpbGwgb2JzZXJ2ZSBjaGFuZ2VzIHRvLiBQb3NzaWJsZSB2YWx1ZXNcbiAgICogYXJlIGBjb250ZW50LWJveGAgKHRoZSBkZWZhdWx0KSwgYW5kIGBib3JkZXItYm94YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb250ZW50LWJveFwiXG4gICAqL1xuICBib3g/OiBcImNvbnRlbnQtYm94XCIgfCBcImJvcmRlci1ib3hcIjtcbn1cblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gY2FsbGVkIHdoZW5ldmVyIGFuIG9ic2VydmVkIHJlc2l6ZSBvY2N1cnMuIFRoZSBmdW5jdGlvbiBpc1xuICogY2FsbGVkIHdpdGggdHdvIHBhcmFtZXRlcnM6XG4gKlxuICogQHBhcmFtIGVudHJpZXNcbiAqIEFuIGFycmF5IG9mXG4gKiBbUmVzaXplT2JzZXJ2ZXJFbnRyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1Jlc2l6ZU9ic2VydmVyRW50cnkpXG4gKiBvYmplY3RzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBuZXcgZGltZW5zaW9ucyBvZiB0aGUgZWxlbWVudCBhZnRlclxuICogZWFjaCBjaGFuZ2UuXG4gKlxuICogQHBhcmFtIG9ic2VydmVyXG4gKiBBIHJlZmVyZW5jZSB0byB0aGUgYFJlc2l6ZU9ic2VydmVyYCBpdHNlbGYsIHNvIGl0IHdpbGwgZGVmaW5pdGVseSBiZVxuICogYWNjZXNzaWJsZSBmcm9tIGluc2lkZSB0aGUgY2FsbGJhY2ssIHNob3VsZCB5b3UgbmVlZCBpdC4gVGhpcyBjb3VsZCBiZSB1c2VkXG4gKiBmb3IgZXhhbXBsZSB0byBhdXRvbWF0aWNhbGx5IHVub2JzZXJ2ZSB0aGUgb2JzZXJ2ZXIgd2hlbiBhIGNlcnRhaW4gY29uZGl0aW9uXG4gKiBpcyByZWFjaGVkLCBidXQgeW91IGNhbiBvbWl0IGl0IGlmIHlvdSBkb24ndCBuZWVkIGl0LlxuICpcbiAqIFRoZSBjYWxsYmFjayB3aWxsIGdlbmVyYWxseSBmb2xsb3cgYSBwYXR0ZXJuIGFsb25nIHRoZSBsaW5lcyBvZjpcbiAqIEBleGFtcGxlXG4gKiBmdW5jdGlvbihlbnRyaWVzLCBvYnNlcnZlcikge1xuICogICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gKiAgICAgLy8gRG8gc29tZXRoaW5nIHRvIGVhY2ggZW50cnlcbiAqICAgICAvLyBhbmQgcG9zc2libHkgc29tZXRoaW5nIHRvIHRoZSBvYnNlcnZlciBpdHNlbGZcbiAqICAgfVxuICogfVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAqICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICogICAgIGlmKGVudHJ5LmNvbnRlbnRCb3hTaXplKSB7XG4gKiAgICAgICBoMUVsZW0uc3R5bGUuZm9udFNpemUgPSBNYXRoLm1heCgxLjUsIGVudHJ5LmNvbnRlbnRCb3hTaXplLmlubGluZVNpemUvMjAwKSArICdyZW0nO1xuICogICAgICAgcEVsZW0uc3R5bGUuZm9udFNpemUgPSBNYXRoLm1heCgxLCBlbnRyeS5jb250ZW50Qm94U2l6ZS5pbmxpbmVTaXplLzYwMCkgKyAncmVtJztcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgaDFFbGVtLnN0eWxlLmZvbnRTaXplID0gTWF0aC5tYXgoMS41LCBlbnRyeS5jb250ZW50UmVjdC53aWR0aC8yMDApICsgJ3JlbSc7XG4gKiAgICAgICBwRWxlbS5zdHlsZS5mb250U2l6ZSA9IE1hdGgubWF4KDEsIGVudHJ5LmNvbnRlbnRSZWN0LndpZHRoLzYwMCkgKyAncmVtJztcbiAqICAgICB9XG4gKiAgIH1cbiAqIH0pO1xuICpcbiAqIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZGl2RWxlbSk7XG4gKi9cbnR5cGUgUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayA9IChcbiAgZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdLFxuICBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIsXG4pID0+IHZvaWQ7XG5cbi8qKlxuICogVGhlICoqUmVzaXplT2JzZXJ2ZXJFbnRyeSoqIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBvYmplY3QgcGFzc2VkIHRvIHRoZVxuICogW1Jlc2l6ZU9ic2VydmVyKCldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXNpemVPYnNlcnZlci9SZXNpemVPYnNlcnZlcilcbiAqIGNvbnN0cnVjdG9yJ3MgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIGFsbG93cyB5b3UgdG8gYWNjZXNzIHRoZSBuZXdcbiAqIGRpbWVuc2lvbnMgb2YgdGhlXG4gKiBbRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQpIG9yXG4gKiBbU1ZHRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NWR0VsZW1lbnQpXG4gKiBiZWluZyBvYnNlcnZlZC5cbiAqL1xuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyRW50cnkge1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5ldyBib3JkZXIgYm94IHNpemUgb2YgdGhlIG9ic2VydmVkIGVsZW1lbnQgd2hlblxuICAgKiB0aGUgY2FsbGJhY2sgaXMgcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9yZGVyQm94U2l6ZTogUmVzaXplT2JzZXJ2ZXJFbnRyeUJveFNpemU7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgY29udGVudCBib3ggc2l6ZSBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudCB3aGVuXG4gICAqIHRoZSBjYWxsYmFjayBpcyBydW4uXG4gICAqL1xuICByZWFkb25seSBjb250ZW50Qm94U2l6ZTogUmVzaXplT2JzZXJ2ZXJFbnRyeUJveFNpemU7XG5cbiAgLyoqXG4gICAqIEEgW0RPTVJlY3RSZWFkT25seV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVJlY3RSZWFkT25seSlcbiAgICogb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5ldyBzaXplIG9mIHRoZSBvYnNlcnZlZCBlbGVtZW50IHdoZW4gdGhlIGNhbGxiYWNrIGlzXG4gICAqIHJ1bi4gTm90ZSB0aGF0IHRoaXMgaXMgYmV0dGVyIHN1cHBvcnRlZCB0aGFuIHRoZSBhYm92ZSB0d28gcHJvcGVydGllcywgYnV0XG4gICAqIGl0IGlzIGxlZnQgb3ZlciBmcm9tIGFuIGVhcmxpZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJlc2l6ZSBPYnNlcnZlciBBUEksXG4gICAqIGlzIHN0aWxsIGluY2x1ZGVkIGluIHRoZSBzcGVjIGZvciB3ZWIgY29tcGF0IHJlYXNvbnMsIGFuZCBtYXkgYmUgZGVwcmVjYXRlZFxuICAgKiBpbiBmdXR1cmUgdmVyc2lvbnMuXG4gICAqL1xuICAvLyBub2RlX21vZHVsZXMvdHlwZXNjcmlwdC9saWIvbGliLmRvbS5kLnRzXG4gIHJlYWRvbmx5IGNvbnRlbnRSZWN0OiBET01SZWN0UmVhZE9ubHk7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZVxuICAgKiBbRWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQpIG9yXG4gICAqIFtTVkdFbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU1ZHRWxlbWVudClcbiAgICogYmVpbmcgb2JzZXJ2ZWQuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IEVsZW1lbnQ7XG59XG5cbi8qKlxuICogVGhlICoqYm9yZGVyQm94U2l6ZSoqIHJlYWQtb25seSBwcm9wZXJ0eSBvZiB0aGVcbiAqIFtSZXNpemVPYnNlcnZlckVudHJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzaXplT2JzZXJ2ZXJFbnRyeSlcbiAqIGludGVyZmFjZSByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgYm9yZGVyIGJveCBzaXplIG9mIHRoZVxuICogb2JzZXJ2ZWQgZWxlbWVudCB3aGVuIHRoZSBjYWxsYmFjayBpcyBydW4uXG4gKi9cbmludGVyZmFjZSBSZXNpemVPYnNlcnZlckVudHJ5Qm94U2l6ZSB7XG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBvYnNlcnZlZCBlbGVtZW50J3MgYm9yZGVyIGJveCBpbiB0aGUgYmxvY2sgZGltZW5zaW9uLiBGb3JcbiAgICogYm94ZXMgd2l0aCBhIGhvcml6b250YWxcbiAgICogW3dyaXRpbmctbW9kZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dyaXRpbmctbW9kZSksXG4gICAqIHRoaXMgaXMgdGhlIHZlcnRpY2FsIGRpbWVuc2lvbiwgb3IgaGVpZ2h0OyBpZiB0aGUgd3JpdGluZy1tb2RlIGlzIHZlcnRpY2FsLFxuICAgKiB0aGlzIGlzIHRoZSBob3Jpem9udGFsIGRpbWVuc2lvbiwgb3Igd2lkdGguXG4gICAqL1xuICBibG9ja1NpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudCdzIGJvcmRlciBib3ggaW4gdGhlIGlubGluZSBkaW1lbnNpb24uXG4gICAqIEZvciBib3hlcyB3aXRoIGEgaG9yaXpvbnRhbFxuICAgKiBbd3JpdGluZy1tb2RlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd3JpdGluZy1tb2RlKSxcbiAgICogdGhpcyBpcyB0aGUgaG9yaXpvbnRhbCBkaW1lbnNpb24sIG9yIHdpZHRoOyBpZiB0aGUgd3JpdGluZy1tb2RlIGlzXG4gICAqIHZlcnRpY2FsLCB0aGlzIGlzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb24sIG9yIGhlaWdodC5cbiAgICovXG4gIGlubGluZVNpemU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFdpbmRvdyB7XG4gIFJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFvQkEsTUFBTSxlQUFlO0FBOEZyQjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
1
5
|
export { FluxContext } from './FluxContext';
|
|
2
6
|
export { FluxProvider } from './FluxProvider';
|
|
3
7
|
export { useComponentSize } from './useComponentSize';
|