@nlabs/arkhamjs-utils-react 3.29.5 → 3.30.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/lib/FluxContext.js +2 -29
- package/lib/FluxProvider.d.ts +2 -2
- package/lib/FluxProvider.js +2 -58
- package/lib/FluxProvider.types.js +2 -16
- package/lib/ResizeObserver.d.js +1 -3
- package/lib/index.js +2 -63
- package/lib/useComponentSize.d.ts +1 -5
- 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.js +2 -32
- package/lib/useState.js +2 -54
- package/lib/useWindowSize.d.ts +0 -5
- package/lib/useWindowSize.js +2 -53
- package/lib/useWindowSize.types.js +2 -16
- package/package.json +12 -14
- 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/lib/FluxContext.js
CHANGED
@@ -1,29 +1,2 @@
|
|
1
|
-
var
|
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
|
+
var r=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var u=(o,t)=>{for(var n in t)r(o,n,{get:t[n],enumerable:!0})},C=(o,t,n,x)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of m(t))!p.call(o,e)&&e!==n&&r(o,e,{get:()=>t[e],enumerable:!(x=c(t,e))||x.enumerable});return o};var a=o=>C(r({},"__esModule",{value:!0}),o);var i={};u(i,{FluxContext:()=>f});module.exports=a(i);var l=require("react");const f=(0,l.createContext)(null);0&&(module.exports={FluxContext});
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhDb250ZXh0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IEZsdXhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcbiJdLAogICJtYXBwaW5ncyI6ICI0WkFBQSxJQUFBQSxFQUFBLEdBQUFDLEVBQUFELEVBQUEsaUJBQUFFLElBQUEsZUFBQUMsRUFBQUgsR0FBQSxJQUFBSSxFQUE0QixpQkFFckIsTUFBTUYsS0FBYyxpQkFBYyxJQUFJIiwKICAibmFtZXMiOiBbIkZsdXhDb250ZXh0X2V4cG9ydHMiLCAiX19leHBvcnQiLCAiRmx1eENvbnRleHQiLCAiX190b0NvbW1vbkpTIiwgImltcG9ydF9yZWFjdCJdCn0K
|
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
|
-
var
|
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
|
+
var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var c=(e,r)=>{for(var o in r)p(e,o,{get:r[o],enumerable:!0})},f=(e,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of F(r))!P.call(e,t)&&t!==o&&p(e,t,{get:()=>r[t],enumerable:!(i=v(r,t))||i.enumerable});return e};var l=e=>f(p({},"__esModule",{value:!0}),e);var C={};c(C,{FluxProvider:()=>x});module.exports=l(C);var a=require("@nlabs/utils/checks/isEqual"),s=require("react"),d=require("./FluxContext"),n=require("react/jsx-runtime");const x=({children:e,flux:r})=>{const[o,i]=(0,s.useState)(r.getState()),t=(0,s.useRef)(o);return(0,s.useEffect)(()=>{const u=m=>{(0,a.isEqual)(m,t.current)||(t.current=m,i(m))};return r.addListener("arkhamjs",u),()=>{r.removeListener("arkhamjs",u)}},[]),(0,n.jsx)(d.FluxContext.Provider,{value:{flux:r,state:o},children:e})};0&&(module.exports={FluxProvider});
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2lzRXF1YWx9IGZyb20gJ0BubGFicy91dGlscy9jaGVja3MvaXNFcXVhbCc7XG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge0ZsdXhDb250ZXh0fSBmcm9tICcuL0ZsdXhDb250ZXh0JztcblxuaW1wb3J0IHR5cGUge0ZDfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Rmx1eFByb3ZpZGVyUHJvcHN9IGZyb20gJy4vRmx1eFByb3ZpZGVyLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IEZsdXhQcm92aWRlcjogRkM8Rmx1eFByb3ZpZGVyUHJvcHM+ID0gKHtjaGlsZHJlbiwgZmx1eH0pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShmbHV4LmdldFN0YXRlKCkpO1xuICBjb25zdCByZWYgPSB1c2VSZWYoc3RhdGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlU3RhdGUgPSAobmV3U3RhdGUpID0+IHtcbiAgICAgIGlmKCFpc0VxdWFsKG5ld1N0YXRlLCByZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBuZXdTdGF0ZTtcbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgZmx1eC5hZGRMaXN0ZW5lcignYXJraGFtanMnLCB1cGRhdGVTdGF0ZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZmx1eC5yZW1vdmVMaXN0ZW5lcignYXJraGFtanMnLCB1cGRhdGVTdGF0ZSk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiA8Rmx1eENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3tmbHV4LCBzdGF0ZX19PntjaGlsZHJlbn08L0ZsdXhDb250ZXh0LlByb3ZpZGVyPjtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiNFpBQUEsSUFBQUEsRUFBQSxHQUFBQyxFQUFBRCxFQUFBLGtCQUFBRSxJQUFBLGVBQUFDLEVBQUFILEdBSUEsSUFBQUksRUFBc0IsdUNBQ3RCQyxFQUEwQyxpQkFFMUNDLEVBQTBCLHlCQXVCakJDLEVBQUEsNkJBbEJGLE1BQU1MLEVBQXNDLENBQUMsQ0FBQyxTQUFBTSxFQUFVLEtBQUFDLENBQUksSUFBTSxDQUN2RSxLQUFNLENBQUNDLEVBQU9DLENBQVEsS0FBSSxZQUFTRixFQUFLLFNBQVMsQ0FBQyxFQUM1Q0csS0FBTSxVQUFPRixDQUFLLEVBRXhCLHNCQUFVLElBQU0sQ0FDZCxNQUFNRyxFQUFlQyxHQUFhLElBQzVCLFdBQVFBLEVBQVVGLEVBQUksT0FBTyxJQUMvQkEsRUFBSSxRQUFVRSxFQUNkSCxFQUFTRyxDQUFRLEVBRXJCLEVBQ0EsT0FBQUwsRUFBSyxZQUFZLFdBQVlJLENBQVcsRUFFakMsSUFBTSxDQUNYSixFQUFLLGVBQWUsV0FBWUksQ0FBVyxDQUM3QyxDQUNGLEVBQUcsQ0FBQyxDQUFDLEtBRUUsT0FBQyxjQUFZLFNBQVosQ0FBcUIsTUFBTyxDQUFDLEtBQUFKLEVBQU0sTUFBQUMsQ0FBSyxFQUFJLFNBQUFGLEVBQVMsQ0FDL0QiLAogICJuYW1lcyI6IFsiRmx1eFByb3ZpZGVyX2V4cG9ydHMiLCAiX19leHBvcnQiLCAiRmx1eFByb3ZpZGVyIiwgIl9fdG9Db21tb25KUyIsICJpbXBvcnRfaXNFcXVhbCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X0ZsdXhDb250ZXh0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJjaGlsZHJlbiIsICJmbHV4IiwgInN0YXRlIiwgInNldFN0YXRlIiwgInJlZiIsICJ1cGRhdGVTdGF0ZSIsICJuZXdTdGF0ZSJdCn0K
|
@@ -1,16 +1,2 @@
|
|
1
|
-
var
|
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
|
+
var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var m=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of F(r))!i.call(e,o)&&o!==t&&l(e,o,{get:()=>r[o],enumerable:!(a=x(r,o))||a.enumerable});return e};var n=e=>m(l({},"__esModule",{value:!0}),e);var u={};module.exports=n(u);
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0ZsdXhQcm92aWRlci50eXBlcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBGbHV4UHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogYW55O1xuICBmbHV4OiBGbHV4RnJhbWV3b3JrO1xuICBzdGF0ZT86IGFueTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJrV0FBQSxJQUFBQSxFQUFBLGtCQUFBQyxFQUFBRCIsCiAgIm5hbWVzIjogWyJGbHV4UHJvdmlkZXJfdHlwZXNfZXhwb3J0cyIsICJfX3RvQ29tbW9uSlMiXQp9Cg==
|
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
|