tungsten 0.1.43 → 0.1.45
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/dist/__deproxy.d.ts.map +1 -1
- package/dist/__deproxy.js +6 -2
- package/dist/componentProxyHandlers.d.ts +2 -0
- package/dist/componentProxyHandlers.d.ts.map +1 -1
- package/dist/componentProxyHandlers.js +94 -26
- package/dist/components/bindable/BindableSelect.d.ts +7 -7
- package/dist/components/bindable/BindableSelect.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/__deproxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"__deproxy.d.ts","sourceRoot":"","sources":["../src/__deproxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"__deproxy.d.ts","sourceRoot":"","sources":["../src/__deproxy.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS,CAAC,aAAa,EAAE,OAAO,WAW/C;AAED,eAAO,MAAM,IAAI,kBAAY,CAAA"}
|
package/dist/__deproxy.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { $original } from "./componentProxyHandlers.js";
|
|
1
2
|
import { NoDeproxy } from "./NoDeproxy.js";
|
|
3
|
+
// doesn't this need to be deep?
|
|
2
4
|
export function __deproxy(possibleProxy) {
|
|
5
|
+
console.log('__deproxy called, this function may not be adequate');
|
|
3
6
|
if (possibleProxy instanceof NoDeproxy) {
|
|
4
7
|
return possibleProxy.value;
|
|
5
8
|
} else if (typeof possibleProxy === 'object' && possibleProxy !== null) {
|
|
6
|
-
if ('__original' in possibleProxy) {
|
|
7
|
-
|
|
9
|
+
//if ('__original' in possibleProxy) {
|
|
10
|
+
if ($original in possibleProxy) {
|
|
11
|
+
return possibleProxy[$original];
|
|
8
12
|
}
|
|
9
13
|
}
|
|
10
14
|
return possibleProxy;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TungstenStatefulComponent, TungstenComponent } from './Components.jsx';
|
|
2
2
|
type StatefulComponentWithState<State extends object> = TungstenStatefulComponent<any, State, any> | TungstenComponent<any, State, any>;
|
|
3
3
|
type StatefulComponentAny = TungstenStatefulComponent<any, any, any> | TungstenComponent<any, any, any>;
|
|
4
|
+
export declare const $original: unique symbol;
|
|
5
|
+
export declare const $ownerName: unique symbol;
|
|
4
6
|
export declare const getStateProxyHandler: <State extends object>(element: StatefulComponentWithState<State>) => {
|
|
5
7
|
get: (obj: State, key: string | symbol) => unknown;
|
|
6
8
|
set: (obj: State, key: string | symbol, value: unknown) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentProxyHandlers.d.ts","sourceRoot":"","sources":["../src/componentProxyHandlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"componentProxyHandlers.d.ts","sourceRoot":"","sources":["../src/componentProxyHandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAS/E,KAAK,0BAA0B,CAAC,KAAK,SAAS,MAAM,IAC9C,yBAAyB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAC1C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AAExC,KAAK,oBAAoB,GAAG,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEvG,eAAO,MAAM,SAAS,eAAqB,CAAA;AAC3C,eAAO,MAAM,UAAU,eAAsB,CAAA;AAE7C,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,WAC/C,0BAA0B,CAAC,KAAK,CAAC;eAC5B,KAAK,OAAO,MAAM,GAAG,MAAM;eAQ3B,KAAK,OAAO,MAAM,GAAG,MAAM,SAAS,OAAO;0BAkChC,KAAK,OAAO,MAAM,GAAG,MAAM;CAOnD,CAAA;AAGF,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,MAAM,WAAW,oBAAoB;eAC3E,CAAC,OAAO,MAAM,GAAG,MAAM;eAKvB,CAAC,OAAO,MAAM,GAAG,MAAM,SAAS,OAAO;0BAgC5B,CAAC,OAAO,MAAM,GAAG,MAAM;CAO/C,CAAA;AAGF,eAAO,MAAM,yBAAyB,YAAa,oBAAoB;eACxD,OAAO,EAAE,OAAO,MAAM,GAAG,MAAM;eAwB/B,OAAO,EAAE,OAAO,MAAM,GAAG,MAAM,SAAS,OAAO;CA6B5D,CAAA;AAIF,eAAO,MAAM,uBAAuB,YAAa,oBAAoB;eACtD,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,MAAM,GAAG,MAAM;CA8CxD,CAAA;AAIF,eAAO,MAAM,uBAAuB,YAAa,oBAAoB;eACtD,GAAG,CAAC,OAAO,CAAC,OAAO,MAAM,GAAG,MAAM;CAyC/C,CAAA;AAgCF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAiCnG;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAgCpG"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { KeyIsArrayMutatingFunction, KeyIsMapMutatingFunction, KeyIsSetMutatingFunction } from "./mutatingFunctions.js";
|
|
2
2
|
import { objectTypesToProxy } from "./objectTypesToProxy.js";
|
|
3
3
|
import { warn } from "./output.js";
|
|
4
|
+
import { throwError } from "./throwError.js";
|
|
5
|
+
export const $original = Symbol('original');
|
|
6
|
+
export const $ownerName = Symbol('ownerName');
|
|
4
7
|
export const getStateProxyHandler = element => ({
|
|
5
8
|
get: (obj, key) => {
|
|
6
9
|
if (key === '__original') return obj; // return the internal object if requested
|
|
10
|
+
if (key === $original) return obj; // return the internal object if requested
|
|
11
|
+
// owner?
|
|
12
|
+
if (key === $ownerName) return element.constructor.name;
|
|
7
13
|
return obj[key]; // Proxy typing allowed accessing keys outside of the type.
|
|
8
14
|
// So act on that obj as an object that accept all string | symbol keys
|
|
9
15
|
},
|
|
@@ -12,19 +18,28 @@ export const getStateProxyHandler = element => ({
|
|
|
12
18
|
//const isObject = (typeof value === 'object' && value !== null)
|
|
13
19
|
if (Array.isArray(value)) {
|
|
14
20
|
// arrays
|
|
15
|
-
obj[key]
|
|
21
|
+
obj[key]
|
|
22
|
+
//= new Proxy<unknown[]>(value, getStateArrayProxyHandler(element)) // if an array was set, proxy it too
|
|
23
|
+
= proxyArray(value, element);
|
|
16
24
|
} else if (typeof value === 'object' && value !== null && objectTypesToProxy.includes(value.constructor.name) // ensure that it is an object literal or otherwise an approved object type
|
|
17
25
|
) {
|
|
18
26
|
// plain objects
|
|
19
|
-
|
|
27
|
+
// if an plian object was set, proxy it too. If an object has a class other than Object, we'll leave it alone
|
|
28
|
+
obj[key]
|
|
29
|
+
//= new Proxy(value, getStateObjectProxyHandler(element))
|
|
30
|
+
= proxyObject(value, element);
|
|
20
31
|
} else if (value instanceof Map) {
|
|
21
32
|
// Maps
|
|
22
33
|
//console.log('found a Map in state');
|
|
23
|
-
obj[key]
|
|
34
|
+
obj[key];
|
|
35
|
+
//= new Proxy(value, getStateMapProxyHandler(element))
|
|
36
|
+
proxyMap(value, element);
|
|
24
37
|
} else if (value instanceof Set) {
|
|
25
38
|
// Sets
|
|
26
39
|
//console.log('found a Set in state');
|
|
27
|
-
obj[key]
|
|
40
|
+
obj[key]
|
|
41
|
+
//= new Proxy(value, getStateSetProxyHandler(element))
|
|
42
|
+
= proxySet(value, element);
|
|
28
43
|
} else {
|
|
29
44
|
obj[key] = value;
|
|
30
45
|
}
|
|
@@ -52,20 +67,28 @@ export const getStateObjectProxyHandler = element => ({
|
|
|
52
67
|
//console.log('proxied object set')
|
|
53
68
|
if (Array.isArray(value)) {
|
|
54
69
|
// arrays
|
|
55
|
-
obj[key]
|
|
70
|
+
obj[key]
|
|
71
|
+
//= new Proxy(value, getStateArrayProxyHandler(element)) // if an array was set, proxy it too
|
|
72
|
+
= proxyArray(value, element);
|
|
56
73
|
} else if (typeof value === 'object' && value !== null
|
|
57
74
|
// && value.constructor.name === 'Object'
|
|
58
75
|
&& objectTypesToProxy.includes(value.constructor.name) // ensure that it is an object literal or otherwise an approve object type
|
|
59
76
|
) {
|
|
60
77
|
// plain objects
|
|
61
|
-
obj[key]
|
|
78
|
+
obj[key]
|
|
79
|
+
//= new Proxy(value, getStateObjectProxyHandler(element)) // if an plan object was set, proxy it too. If an object has a class other than Object, we'll leave it alone
|
|
80
|
+
= proxyObject(value, element);
|
|
62
81
|
} else if (value instanceof Map) {
|
|
63
82
|
// Maps
|
|
64
83
|
//console.log('applying a map proxy is state');
|
|
65
|
-
obj[key]
|
|
84
|
+
obj[key]
|
|
85
|
+
//= new Proxy(value, getStateMapProxyHandler(element))
|
|
86
|
+
= proxyMap(value, element);
|
|
66
87
|
} else if (value instanceof Set) {
|
|
67
88
|
// Sets
|
|
68
|
-
obj[key]
|
|
89
|
+
obj[key]
|
|
90
|
+
//= new Proxy(value, getStateSetProxyHandler(element))
|
|
91
|
+
= proxySet(value, element);
|
|
69
92
|
} else {
|
|
70
93
|
obj[key] = value;
|
|
71
94
|
}
|
|
@@ -86,6 +109,9 @@ export const getStateObjectProxyHandler = element => ({
|
|
|
86
109
|
export const getStateArrayProxyHandler = element => ({
|
|
87
110
|
get: (arr, key) => {
|
|
88
111
|
//console.log('arr key', typeof key)
|
|
112
|
+
if (key === $original) return arr; // return the internal object if requested
|
|
113
|
+
// owner?
|
|
114
|
+
if (key === $ownerName) return element.constructor.name;
|
|
89
115
|
if (typeof key === 'string') {
|
|
90
116
|
if (key === '__original') return arr; // return the internal object if requested
|
|
91
117
|
if (KeyIsArrayMutatingFunction(key)) {
|
|
@@ -110,14 +136,18 @@ export const getStateArrayProxyHandler = element => ({
|
|
|
110
136
|
if (Array.isArray(value)) {
|
|
111
137
|
// arrays
|
|
112
138
|
// @ts-ignore // TS doesn't like us accessing array by string key
|
|
113
|
-
arr[key]
|
|
139
|
+
arr[key]
|
|
140
|
+
//= new Proxy(value, getStateArrayProxyHandler as ProxyHandler<unknown[]>) // if an array was set, proxy it too
|
|
141
|
+
= proxyArray(value, element);
|
|
114
142
|
} else if (typeof value === 'object' && value !== null
|
|
115
143
|
// && value.constructor.name === 'Object'
|
|
116
144
|
&& objectTypesToProxy.includes(value.constructor.name) // ensure that it is an object literal or otherwise an approve object type
|
|
117
145
|
) {
|
|
118
146
|
// plain objects
|
|
119
147
|
// @ts-ignore // TS doesn't like us accessing array by string key
|
|
120
|
-
arr[key]
|
|
148
|
+
arr[key]
|
|
149
|
+
//= new Proxy(value, getStateObjectProxyHandler) // if an plan object was set, proxy it too. If an object has a class other than Object, we'll leave it alone
|
|
150
|
+
= proxyObject(value, element);
|
|
121
151
|
} else {
|
|
122
152
|
// @ts-ignore // TS doesn't like us accessing array by string key
|
|
123
153
|
arr[key] = value;
|
|
@@ -134,6 +164,9 @@ export const getStateArrayProxyHandler = element => ({
|
|
|
134
164
|
export const getStateMapProxyHandler = element => ({
|
|
135
165
|
get: (map, key) => {
|
|
136
166
|
//console.log('map get', key)
|
|
167
|
+
if (key === $original) return map; // return the internal object if requested
|
|
168
|
+
// owner?
|
|
169
|
+
if (key === $ownerName) return element.constructor.name;
|
|
137
170
|
if (typeof key === 'string') {
|
|
138
171
|
if (key === '__original') return map; // return the internal object if requested
|
|
139
172
|
if (KeyIsMapMutatingFunction(key)) {
|
|
@@ -176,6 +209,9 @@ export const getStateMapProxyHandler = element => ({
|
|
|
176
209
|
export const getStateSetProxyHandler = element => ({
|
|
177
210
|
get: (set, key) => {
|
|
178
211
|
//console.log('arr key', typeof key)
|
|
212
|
+
if (key === $original) return set; // return the internal object if requested
|
|
213
|
+
// owner?
|
|
214
|
+
if (key === $ownerName) return element.constructor.name;
|
|
179
215
|
if (typeof key === 'string') {
|
|
180
216
|
if (key === '__original') return set; // return the internal object if requested
|
|
181
217
|
if (KeyIsSetMutatingFunction(key)) {
|
|
@@ -245,26 +281,30 @@ export function proxyObjectContent(element, object) {
|
|
|
245
281
|
// objects, including array
|
|
246
282
|
if (Array.isArray(value)) {
|
|
247
283
|
proxyArrayContent(element, value);
|
|
248
|
-
object[key]
|
|
249
|
-
|
|
250
|
-
|
|
284
|
+
object[key]
|
|
285
|
+
//= new Proxy(value, getStateObjectProxyHandler(element))
|
|
286
|
+
= proxyArray(value, element);
|
|
251
287
|
} else if (typeof value === 'object' && value !== null
|
|
252
288
|
// && value.constructor.name === 'Object'
|
|
253
289
|
&& objectTypesToProxy.includes(value.constructor.name) // ensure that it is an object literal or otherwise an approve object type
|
|
254
290
|
) {
|
|
255
291
|
// plain objects
|
|
256
292
|
proxyObjectContent(element, value);
|
|
257
|
-
object[key]
|
|
258
|
-
|
|
259
|
-
|
|
293
|
+
object[key]
|
|
294
|
+
//= new Proxy(value, getStateObjectProxyHandler(element))
|
|
295
|
+
= proxyObject(value, element);
|
|
260
296
|
} else if (value instanceof Map) {
|
|
261
297
|
// Maps
|
|
262
298
|
//console.log('proxying a Map in state');
|
|
263
|
-
object[key]
|
|
299
|
+
object[key]
|
|
300
|
+
//= new Proxy(value, getStateMapProxyHandler(element))
|
|
301
|
+
= proxyMap(value, element);
|
|
264
302
|
} else if (value instanceof Set) {
|
|
265
303
|
// Sets
|
|
266
304
|
//console.log('proxying a Set in state');
|
|
267
|
-
object[key]
|
|
305
|
+
object[key]
|
|
306
|
+
//= new Proxy(value, getStateSetProxyHandler(element))
|
|
307
|
+
= proxySet(value, element);
|
|
268
308
|
}
|
|
269
309
|
}
|
|
270
310
|
}
|
|
@@ -276,27 +316,55 @@ export function proxyArrayContent(element, array) {
|
|
|
276
316
|
// objects, including array
|
|
277
317
|
if (Array.isArray(value)) {
|
|
278
318
|
proxyArrayContent(element, value);
|
|
279
|
-
array[key]
|
|
280
|
-
|
|
281
|
-
|
|
319
|
+
array[key]
|
|
320
|
+
//= new Proxy(value, getStateObjectProxyHandler(element))
|
|
321
|
+
= proxyArray(value, element);
|
|
282
322
|
} else if (typeof value === 'object' && value !== null
|
|
283
323
|
// && value.constructor.name === 'Object'
|
|
284
324
|
&& objectTypesToProxy.includes(value.constructor.name) // ensure that it is an object literal or otherwise an approve object type
|
|
285
325
|
) {
|
|
286
326
|
// plain objects
|
|
287
327
|
proxyObjectContent(element, value);
|
|
288
|
-
array[key]
|
|
289
|
-
|
|
290
|
-
|
|
328
|
+
array[key]
|
|
329
|
+
//= new Proxy(value, getStateObjectProxyHandler(element))
|
|
330
|
+
= proxyObject(value, element);
|
|
291
331
|
} else if (value instanceof Map) {
|
|
292
332
|
// Maps
|
|
293
333
|
//console.log('proxying a Map in state');
|
|
294
|
-
array[key]
|
|
334
|
+
array[key]
|
|
335
|
+
//= new Proxy(value, getStateMapProxyHandler(element))
|
|
336
|
+
= proxyMap(value, element);
|
|
295
337
|
} else if (value instanceof Set) {
|
|
296
338
|
// Sets
|
|
297
339
|
//console.log('proxying a Set in state');
|
|
298
|
-
array[key]
|
|
340
|
+
array[key]
|
|
341
|
+
//= new Proxy(value, getStateSetProxyHandler(element))
|
|
342
|
+
= proxySet(value, element);
|
|
299
343
|
}
|
|
300
344
|
}
|
|
301
345
|
}
|
|
346
|
+
}
|
|
347
|
+
function proxyObject(obj, element) {
|
|
348
|
+
if ($original in obj && $ownerName in obj) {
|
|
349
|
+
throwError('proxyObject', `object in ${element.constructor.name} state is already in the state of a ${obj[$ownerName]}`);
|
|
350
|
+
}
|
|
351
|
+
return new Proxy(obj, getStateObjectProxyHandler(element)); // if an plan object was set, proxy it too. If an object has a class other than Object, we'll leave it alone
|
|
352
|
+
}
|
|
353
|
+
function proxyArray(arr, element) {
|
|
354
|
+
if ($original in arr && $ownerName in arr) {
|
|
355
|
+
throwError('proxyObject', `array in ${element.constructor.name} state is already in the state of a ${arr[$ownerName]}`);
|
|
356
|
+
}
|
|
357
|
+
return new Proxy(arr, getStateArrayProxyHandler(element));
|
|
358
|
+
}
|
|
359
|
+
function proxySet(set, element) {
|
|
360
|
+
if ($original in set && $ownerName in set) {
|
|
361
|
+
throwError('proxyObject', `Set in ${element.constructor.name} state is already in the state of a ${set[$ownerName]}`);
|
|
362
|
+
}
|
|
363
|
+
return new Proxy(set, getStateSetProxyHandler(element));
|
|
364
|
+
}
|
|
365
|
+
function proxyMap(map, element) {
|
|
366
|
+
if ($original in map && $ownerName in map) {
|
|
367
|
+
throwError('proxyObject', `Map in ${element.constructor.name} state is already in the state of a ${map[$ownerName]}`);
|
|
368
|
+
}
|
|
369
|
+
return new Proxy(map, getStateMapProxyHandler(element));
|
|
302
370
|
}
|
|
@@ -3,8 +3,8 @@ import type { FilterSelectFunc, HTMLInputTypeAttribute, SelectHTMLAttributes } f
|
|
|
3
3
|
import type { InputKeyboardEvent } from '../../../types/jsx/html.events.js';
|
|
4
4
|
import { TungstenSimpleComponent } from '../../Components.jsx';
|
|
5
5
|
import { DetailedHTMLProps } from '../../../types/jsx/jsx.js';
|
|
6
|
-
export type Option
|
|
7
|
-
value:
|
|
6
|
+
export type OptionStruct<Option> = {
|
|
7
|
+
value: Option;
|
|
8
8
|
text: string;
|
|
9
9
|
};
|
|
10
10
|
type BasicProps = {
|
|
@@ -16,14 +16,14 @@ type BasicProps = {
|
|
|
16
16
|
value?: string;
|
|
17
17
|
placeholder?: string;
|
|
18
18
|
};
|
|
19
|
-
export type BindableSelectProps<O extends object, K extends keyof O,
|
|
20
|
-
options: readonly Option
|
|
19
|
+
export type BindableSelectProps<O extends object, K extends keyof O, Option extends string> = DetailedHTMLProps<SelectHTMLAttributes<HTMLSelectElement, O>, HTMLSelectElement> & BasicProps & {
|
|
20
|
+
options: readonly OptionStruct<Option>[];
|
|
21
21
|
} & ({} | ({
|
|
22
22
|
bind: TypedBindVariable<O, K>;
|
|
23
|
-
} & (
|
|
24
|
-
filter?: FilterSelectFunc<InputKeyboardEvent,
|
|
23
|
+
} & (Option extends O[K] ? {
|
|
24
|
+
filter?: FilterSelectFunc<InputKeyboardEvent, Option, O[K]> | undefined;
|
|
25
25
|
} : {
|
|
26
|
-
filter: FilterSelectFunc<InputKeyboardEvent,
|
|
26
|
+
filter: FilterSelectFunc<InputKeyboardEvent, Option, O[K]>;
|
|
27
27
|
})));
|
|
28
28
|
export declare class BindableSelect<O extends object, K extends keyof O, Options extends string> extends TungstenSimpleComponent<BindableSelectProps<O, K, Options>> {
|
|
29
29
|
content: () => import("../../ContentNode.js").ContentNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BindableSelect.d.ts","sourceRoot":"","sources":["../../../src/components/bindable/BindableSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAChH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"BindableSelect.d.ts","sourceRoot":"","sources":["../../../src/components/bindable/BindableSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAChH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,UAAU,GAAG;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAaD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,SAAS,MAAM,IACpF,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAChF,UAAU,GACV;IACE,OAAO,EAAE,SAAS,YAAY,CAAC,MAAM,CAAC,EAAE,CAAA;CAC3C,GAAG,CACA,EAAE,GACA,CAAC;IAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE,GAAG,CACnC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,GACb;IAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CACvE,CAAC,CACL,CAAA;AAIL,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,OAAO,SAAS,MAAM,CAAE,SAAQ,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACxJ,OAAO,mDAQN;CACJ"}
|