@mappoh/nova 0.3.0 → 0.5.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 +180 -30
- package/dist/alert/alert.d.ts +32 -0
- package/dist/alert/alert.d.ts.map +1 -0
- package/dist/alert/alert.js +307 -0
- package/dist/alert/alert.js.map +1 -0
- package/dist/alert/index.d.ts +3 -0
- package/dist/alert/index.d.ts.map +1 -0
- package/dist/alert/index.js +2 -0
- package/dist/alert/index.js.map +1 -0
- package/dist/animation/flip.d.ts.map +1 -1
- package/dist/animation/flip.js +19 -12
- package/dist/animation/flip.js.map +1 -1
- package/dist/animation/stagger.d.ts +43 -0
- package/dist/animation/stagger.d.ts.map +1 -0
- package/dist/animation/stagger.js +150 -0
- package/dist/animation/stagger.js.map +1 -0
- package/dist/avatar/avatar.d.ts +27 -0
- package/dist/avatar/avatar.d.ts.map +1 -0
- package/dist/avatar/avatar.js +132 -0
- package/dist/avatar/avatar.js.map +1 -0
- package/dist/avatar/index.d.ts +3 -0
- package/dist/avatar/index.d.ts.map +1 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/index.js.map +1 -0
- package/dist/badge/badge.d.ts +27 -0
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/badge.js +118 -0
- package/dist/badge/badge.js.map +1 -0
- package/dist/badge/index.d.ts +3 -0
- package/dist/badge/index.d.ts.map +1 -0
- package/dist/badge/index.js +2 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/cache/cache.d.ts +28 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +67 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/chart/chart.d.ts +4 -0
- package/dist/chart/chart.d.ts.map +1 -1
- package/dist/chart/chart.js +89 -6
- package/dist/chart/chart.js.map +1 -1
- package/dist/command-palette/command-palette.d.ts +31 -0
- package/dist/command-palette/command-palette.d.ts.map +1 -0
- package/dist/command-palette/command-palette.js +590 -0
- package/dist/command-palette/command-palette.js.map +1 -0
- package/dist/command-palette/index.d.ts +3 -0
- package/dist/command-palette/index.d.ts.map +1 -0
- package/dist/command-palette/index.js +2 -0
- package/dist/command-palette/index.js.map +1 -0
- package/dist/component/component.d.ts +20 -2
- package/dist/component/component.d.ts.map +1 -1
- package/dist/component/component.js +115 -5
- package/dist/component/component.js.map +1 -1
- package/dist/component/connect.d.ts +50 -0
- package/dist/component/connect.d.ts.map +1 -1
- package/dist/component/connect.js +135 -0
- package/dist/component/connect.js.map +1 -1
- package/dist/component/directives.d.ts +20 -0
- package/dist/component/directives.d.ts.map +1 -0
- package/dist/component/directives.js +42 -0
- package/dist/component/directives.js.map +1 -0
- package/dist/component/html.d.ts +8 -0
- package/dist/component/html.d.ts.map +1 -1
- package/dist/component/html.js +11 -0
- package/dist/component/html.js.map +1 -1
- package/dist/component/index.d.ts +9 -3
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +6 -2
- package/dist/component/index.js.map +1 -1
- package/dist/component/portal.d.ts +32 -0
- package/dist/component/portal.d.ts.map +1 -0
- package/dist/component/portal.js +59 -0
- package/dist/component/portal.js.map +1 -0
- package/dist/component/ref.d.ts +18 -0
- package/dist/component/ref.d.ts.map +1 -0
- package/dist/component/ref.js +17 -0
- package/dist/component/ref.js.map +1 -0
- package/dist/component/slot-styles.d.ts +18 -0
- package/dist/component/slot-styles.d.ts.map +1 -0
- package/dist/component/slot-styles.js +47 -0
- package/dist/component/slot-styles.js.map +1 -0
- package/dist/component/template.d.ts +2 -0
- package/dist/component/template.d.ts.map +1 -1
- package/dist/component/template.js +122 -4
- package/dist/component/template.js.map +1 -1
- package/dist/context/context.d.ts +39 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +111 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/devtools/devtools.d.ts +54 -0
- package/dist/devtools/devtools.d.ts.map +1 -1
- package/dist/devtools/devtools.js +86 -0
- package/dist/devtools/devtools.js.map +1 -1
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +1 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/editor/editor.d.ts +40 -0
- package/dist/editor/editor.d.ts.map +1 -0
- package/dist/editor/editor.js +955 -0
- package/dist/editor/editor.js.map +1 -0
- package/dist/editor/index.d.ts +3 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +2 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/event-bus/event-bus.d.ts +20 -0
- package/dist/event-bus/event-bus.d.ts.map +1 -0
- package/dist/event-bus/event-bus.js +55 -0
- package/dist/event-bus/event-bus.js.map +1 -0
- package/dist/event-bus/index.d.ts +3 -0
- package/dist/event-bus/index.d.ts.map +1 -0
- package/dist/event-bus/index.js +2 -0
- package/dist/event-bus/index.js.map +1 -0
- package/dist/forms/form-engine.d.ts +1 -1
- package/dist/forms/form-engine.d.ts.map +1 -1
- package/dist/forms/wasm-validators.d.ts +19 -11
- package/dist/forms/wasm-validators.d.ts.map +1 -1
- package/dist/forms/wasm-validators.js +191 -31
- package/dist/forms/wasm-validators.js.map +1 -1
- package/dist/gesture/gesture.d.ts +2 -0
- package/dist/gesture/gesture.d.ts.map +1 -1
- package/dist/gesture/gesture.js +81 -0
- package/dist/gesture/gesture.js.map +1 -1
- package/dist/http/http.d.ts +8 -0
- package/dist/http/http.d.ts.map +1 -1
- package/dist/http/http.js +18 -4
- package/dist/http/http.js.map +1 -1
- package/dist/i18n/i18n.d.ts +6 -0
- package/dist/i18n/i18n.d.ts.map +1 -1
- package/dist/i18n/i18n.js +71 -9
- package/dist/i18n/i18n.js.map +1 -1
- package/dist/machine/index.d.ts +3 -0
- package/dist/machine/index.d.ts.map +1 -0
- package/dist/machine/index.js +2 -0
- package/dist/machine/index.js.map +1 -0
- package/dist/machine/machine.d.ts +26 -0
- package/dist/machine/machine.d.ts.map +1 -0
- package/dist/machine/machine.js +79 -0
- package/dist/machine/machine.js.map +1 -0
- package/dist/modal/modal.d.ts.map +1 -1
- package/dist/modal/modal.js +13 -29
- package/dist/modal/modal.js.map +1 -1
- package/dist/notification-center/index.d.ts +3 -0
- package/dist/notification-center/index.d.ts.map +1 -0
- package/dist/notification-center/index.js +2 -0
- package/dist/notification-center/index.js.map +1 -0
- package/dist/notification-center/notification-center.d.ts +55 -0
- package/dist/notification-center/notification-center.d.ts.map +1 -0
- package/dist/notification-center/notification-center.js +941 -0
- package/dist/notification-center/notification-center.js.map +1 -0
- package/dist/pagination/index.d.ts +3 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +2 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pagination/pagination.d.ts +31 -0
- package/dist/pagination/pagination.d.ts.map +1 -0
- package/dist/pagination/pagination.js +213 -0
- package/dist/pagination/pagination.js.map +1 -0
- package/dist/progress/progress.d.ts.map +1 -1
- package/dist/progress/progress.js +5 -7
- package/dist/progress/progress.js.map +1 -1
- package/dist/query/index.d.ts +3 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +2 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/query.d.ts +31 -0
- package/dist/query/query.d.ts.map +1 -0
- package/dist/query/query.js +150 -0
- package/dist/query/query.js.map +1 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.d.ts.map +1 -0
- package/dist/radio-group/index.js +2 -0
- package/dist/radio-group/index.js.map +1 -0
- package/dist/radio-group/radio-group.d.ts +37 -0
- package/dist/radio-group/radio-group.d.ts.map +1 -0
- package/dist/radio-group/radio-group.js +251 -0
- package/dist/radio-group/radio-group.js.map +1 -0
- package/dist/rating/index.d.ts +3 -0
- package/dist/rating/index.d.ts.map +1 -0
- package/dist/rating/index.js +2 -0
- package/dist/rating/index.js.map +1 -0
- package/dist/rating/rating.d.ts +31 -0
- package/dist/rating/rating.d.ts.map +1 -0
- package/dist/rating/rating.js +187 -0
- package/dist/rating/rating.js.map +1 -0
- package/dist/router/router.d.ts +16 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +88 -11
- package/dist/router/router.js.map +1 -1
- package/dist/skeleton/index.d.ts +3 -0
- package/dist/skeleton/index.d.ts.map +1 -0
- package/dist/skeleton/index.js +2 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/skeleton/skeleton.d.ts +24 -0
- package/dist/skeleton/skeleton.d.ts.map +1 -0
- package/dist/skeleton/skeleton.js +91 -0
- package/dist/skeleton/skeleton.js.map +1 -0
- package/dist/slider/index.d.ts +3 -0
- package/dist/slider/index.d.ts.map +1 -0
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/slider/slider.d.ts +33 -0
- package/dist/slider/slider.d.ts.map +1 -0
- package/dist/slider/slider.js +248 -0
- package/dist/slider/slider.js.map +1 -0
- package/dist/spinner/index.d.ts +3 -0
- package/dist/spinner/index.d.ts.map +1 -0
- package/dist/spinner/index.js +2 -0
- package/dist/spinner/index.js.map +1 -0
- package/dist/spinner/spinner.d.ts +23 -0
- package/dist/spinner/spinner.d.ts.map +1 -0
- package/dist/spinner/spinner.js +82 -0
- package/dist/spinner/spinner.js.map +1 -0
- package/dist/sw/sw.d.ts.map +1 -1
- package/dist/sw/sw.js +39 -7
- package/dist/sw/sw.js.map +1 -1
- package/dist/switch/index.d.ts +3 -0
- package/dist/switch/index.d.ts.map +1 -0
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/switch/switch.d.ts +27 -0
- package/dist/switch/switch.d.ts.map +1 -0
- package/dist/switch/switch.js +163 -0
- package/dist/switch/switch.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/scale.d.ts +40 -0
- package/dist/theme/scale.d.ts.map +1 -0
- package/dist/theme/scale.js +62 -0
- package/dist/theme/scale.js.map +1 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +114 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/websocket/index.d.ts +3 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +2 -0
- package/dist/websocket/index.js.map +1 -0
- package/dist/websocket/websocket.d.ts +31 -0
- package/dist/websocket/websocket.d.ts.map +1 -0
- package/dist/websocket/websocket.js +164 -0
- package/dist/websocket/websocket.js.map +1 -0
- package/package.json +85 -1
package/dist/modal/modal.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Accessible dialogs with focus trapping, scroll lock, and stacking.
|
|
5
5
|
*/
|
|
6
|
+
import { trapFocus } from '../a11y/index';
|
|
6
7
|
const STYLE_ID = 'nova-modal-styles';
|
|
7
8
|
let openCount = 0;
|
|
8
9
|
let savedOverflow = '';
|
|
@@ -48,7 +49,6 @@ function injectStyles() {
|
|
|
48
49
|
}`;
|
|
49
50
|
document.head.appendChild(s);
|
|
50
51
|
}
|
|
51
|
-
const FOCUSABLE = 'a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
52
52
|
/** Create a modal dialog instance. */
|
|
53
53
|
export function createModal(options) {
|
|
54
54
|
const { content, class: extraClass, closeOnBackdrop = true, closeOnEscape = true, focusTrap = true, lockScroll = true, onOpen, onClose, role = 'dialog', ariaLabel, } = options;
|
|
@@ -81,6 +81,7 @@ export function createModal(options) {
|
|
|
81
81
|
document.body.appendChild(dialog);
|
|
82
82
|
let previousFocus = null;
|
|
83
83
|
let isOpened = false;
|
|
84
|
+
let releaseFocusTrap = null;
|
|
84
85
|
// Backdrop click
|
|
85
86
|
function onDialogClick(e) {
|
|
86
87
|
if (!closeOnBackdrop)
|
|
@@ -96,29 +97,8 @@ export function createModal(options) {
|
|
|
96
97
|
}
|
|
97
98
|
instance.close();
|
|
98
99
|
}
|
|
99
|
-
// Focus trap
|
|
100
|
-
function onKeydown(e) {
|
|
101
|
-
if (!focusTrap || e.key !== 'Tab')
|
|
102
|
-
return;
|
|
103
|
-
const focusable = Array.from(dialog.querySelectorAll(FOCUSABLE));
|
|
104
|
-
if (focusable.length === 0) {
|
|
105
|
-
e.preventDefault();
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const first = focusable[0];
|
|
109
|
-
const last = focusable[focusable.length - 1];
|
|
110
|
-
if (e.shiftKey && document.activeElement === first) {
|
|
111
|
-
e.preventDefault();
|
|
112
|
-
last.focus();
|
|
113
|
-
}
|
|
114
|
-
else if (!e.shiftKey && document.activeElement === last) {
|
|
115
|
-
e.preventDefault();
|
|
116
|
-
first.focus();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
100
|
dialog.addEventListener('click', onDialogClick);
|
|
120
101
|
dialog.addEventListener('cancel', onCancel);
|
|
121
|
-
dialog.addEventListener('keydown', onKeydown);
|
|
122
102
|
const instance = {
|
|
123
103
|
element: body,
|
|
124
104
|
open() {
|
|
@@ -134,12 +114,13 @@ export function createModal(options) {
|
|
|
134
114
|
}
|
|
135
115
|
dialog.showModal();
|
|
136
116
|
onOpen?.();
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
117
|
+
// Activate focus trap from a11y module (defer to next frame so
|
|
118
|
+
// the browser finishes its own showModal() focus placement first)
|
|
119
|
+
if (focusTrap) {
|
|
120
|
+
requestAnimationFrame(() => {
|
|
121
|
+
releaseFocusTrap = trapFocus(dialog);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
143
124
|
},
|
|
144
125
|
close() {
|
|
145
126
|
if (!isOpened)
|
|
@@ -148,6 +129,10 @@ export function createModal(options) {
|
|
|
148
129
|
body.style.transform = 'scale(0.95)';
|
|
149
130
|
body.style.opacity = '0';
|
|
150
131
|
const finish = () => {
|
|
132
|
+
if (releaseFocusTrap) {
|
|
133
|
+
releaseFocusTrap();
|
|
134
|
+
releaseFocusTrap = null;
|
|
135
|
+
}
|
|
151
136
|
dialog.close();
|
|
152
137
|
body.style.transform = '';
|
|
153
138
|
body.style.opacity = '';
|
|
@@ -175,7 +160,6 @@ export function createModal(options) {
|
|
|
175
160
|
instance.close();
|
|
176
161
|
dialog.removeEventListener('click', onDialogClick);
|
|
177
162
|
dialog.removeEventListener('cancel', onCancel);
|
|
178
|
-
dialog.removeEventListener('keydown', onKeydown);
|
|
179
163
|
dialog.remove();
|
|
180
164
|
},
|
|
181
165
|
};
|
package/dist/modal/modal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notification-center/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nova Engine — Notification Center
|
|
3
|
+
*
|
|
4
|
+
* Persistent notification drawer with read/unread state, badge count,
|
|
5
|
+
* date grouping, and an accessible slide-out panel.
|
|
6
|
+
*/
|
|
7
|
+
export type NotificationType = 'info' | 'success' | 'warning' | 'error';
|
|
8
|
+
export interface Notification {
|
|
9
|
+
id: string;
|
|
10
|
+
type: NotificationType;
|
|
11
|
+
title: string;
|
|
12
|
+
message: string;
|
|
13
|
+
timestamp: Date;
|
|
14
|
+
read: boolean;
|
|
15
|
+
action?: {
|
|
16
|
+
label: string;
|
|
17
|
+
onClick: () => void;
|
|
18
|
+
};
|
|
19
|
+
icon?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface NotificationCenterOptions {
|
|
22
|
+
/** Where to mount the trigger button. If omitted, must call open()/close() manually */
|
|
23
|
+
trigger?: string | HTMLElement;
|
|
24
|
+
/** Position of the panel. Default: 'right' */
|
|
25
|
+
position?: 'right' | 'left';
|
|
26
|
+
/** Max notifications to keep. Default: 100 */
|
|
27
|
+
maxItems?: number;
|
|
28
|
+
/** Group notifications by date? Default: true */
|
|
29
|
+
groupByDate?: boolean;
|
|
30
|
+
/** Called when a notification is clicked */
|
|
31
|
+
onNotificationClick?: (notification: Notification) => void;
|
|
32
|
+
/** Called when unread count changes */
|
|
33
|
+
onUnreadChange?: (count: number) => void;
|
|
34
|
+
}
|
|
35
|
+
export interface NotificationCenterInstance {
|
|
36
|
+
add(notification: Omit<Notification, 'id' | 'timestamp' | 'read'>): Notification;
|
|
37
|
+
info(title: string, message: string): Notification;
|
|
38
|
+
success(title: string, message: string): Notification;
|
|
39
|
+
warning(title: string, message: string): Notification;
|
|
40
|
+
error(title: string, message: string): Notification;
|
|
41
|
+
markRead(id: string): void;
|
|
42
|
+
markAllRead(): void;
|
|
43
|
+
remove(id: string): void;
|
|
44
|
+
clear(): void;
|
|
45
|
+
getUnreadCount(): number;
|
|
46
|
+
getAll(): Notification[];
|
|
47
|
+
open(): void;
|
|
48
|
+
close(): void;
|
|
49
|
+
toggle(): void;
|
|
50
|
+
isOpen(): boolean;
|
|
51
|
+
destroy(): void;
|
|
52
|
+
}
|
|
53
|
+
/** Create a notification center with persistent notifications, badge, and slide-out panel. */
|
|
54
|
+
export declare function createNotificationCenter(options?: NotificationCenterOptions): NotificationCenterInstance;
|
|
55
|
+
//# sourceMappingURL=notification-center.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../../src/notification-center/notification-center.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3D,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,GAAG,YAAY,CAAC;IACjF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACnD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACtD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACtD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,IAAI,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,cAAc,IAAI,MAAM,CAAC;IACzB,MAAM,IAAI,YAAY,EAAE,CAAC;IACzB,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,IAAI,OAAO,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CACjB;AA6eD,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B,GACtC,0BAA0B,CA+gB5B"}
|