@hawiyah/react 0.0.0-stage → 0.2.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.
Files changed (77) hide show
  1. package/LICENSE +73 -0
  2. package/NOTICE +19 -0
  3. package/PORTAL.md +74 -0
  4. package/README.md +461 -2
  5. package/dist/calendar.d.ts +52 -0
  6. package/dist/calendar.d.ts.map +1 -0
  7. package/dist/calendar.js +148 -0
  8. package/dist/calendar.js.map +1 -0
  9. package/dist/content-navigation.d.ts +15 -0
  10. package/dist/content-navigation.d.ts.map +1 -0
  11. package/dist/content-navigation.js +29 -0
  12. package/dist/content-navigation.js.map +1 -0
  13. package/dist/display.d.ts +421 -0
  14. package/dist/display.d.ts.map +1 -0
  15. package/dist/display.js +208 -0
  16. package/dist/display.js.map +1 -0
  17. package/dist/expanded-content.d.ts +217 -0
  18. package/dist/expanded-content.d.ts.map +1 -0
  19. package/dist/expanded-content.js +124 -0
  20. package/dist/expanded-content.js.map +1 -0
  21. package/dist/expanded-controls.d.ts +107 -0
  22. package/dist/expanded-controls.d.ts.map +1 -0
  23. package/dist/expanded-controls.js +142 -0
  24. package/dist/expanded-controls.js.map +1 -0
  25. package/dist/expanded-interactive.d.ts +116 -0
  26. package/dist/expanded-interactive.d.ts.map +1 -0
  27. package/dist/expanded-interactive.js +204 -0
  28. package/dist/expanded-interactive.js.map +1 -0
  29. package/dist/expanded-layout.d.ts +80 -0
  30. package/dist/expanded-layout.d.ts.map +1 -0
  31. package/dist/expanded-layout.js +26 -0
  32. package/dist/expanded-layout.js.map +1 -0
  33. package/dist/expanded-shared.d.ts +3 -0
  34. package/dist/expanded-shared.d.ts.map +1 -0
  35. package/dist/expanded-shared.js +14 -0
  36. package/dist/expanded-shared.js.map +1 -0
  37. package/dist/file-upload-list.d.ts +10 -0
  38. package/dist/file-upload-list.d.ts.map +1 -0
  39. package/dist/file-upload-list.js +7 -0
  40. package/dist/file-upload-list.js.map +1 -0
  41. package/dist/forms.d.ts +34 -0
  42. package/dist/forms.d.ts.map +1 -0
  43. package/dist/forms.js +65 -0
  44. package/dist/forms.js.map +1 -0
  45. package/dist/index.d.ts +20 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +17 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/interactive.d.ts +60 -0
  50. package/dist/interactive.d.ts.map +1 -0
  51. package/dist/interactive.js +321 -0
  52. package/dist/interactive.js.map +1 -0
  53. package/dist/mobile-top-bar.d.ts +14 -0
  54. package/dist/mobile-top-bar.d.ts.map +1 -0
  55. package/dist/mobile-top-bar.js +8 -0
  56. package/dist/mobile-top-bar.js.map +1 -0
  57. package/dist/navigation-drawer.d.ts +20 -0
  58. package/dist/navigation-drawer.d.ts.map +1 -0
  59. package/dist/navigation-drawer.js +37 -0
  60. package/dist/navigation-drawer.js.map +1 -0
  61. package/dist/portal.d.ts +27 -0
  62. package/dist/portal.d.ts.map +1 -0
  63. package/dist/portal.js +16 -0
  64. package/dist/portal.js.map +1 -0
  65. package/dist/search-field.d.ts +15 -0
  66. package/dist/search-field.d.ts.map +1 -0
  67. package/dist/search-field.js +113 -0
  68. package/dist/search-field.js.map +1 -0
  69. package/dist/shared.d.ts +35 -0
  70. package/dist/shared.d.ts.map +1 -0
  71. package/dist/shared.js +78 -0
  72. package/dist/shared.js.map +1 -0
  73. package/dist/site-verification.d.ts +10 -0
  74. package/dist/site-verification.d.ts.map +1 -0
  75. package/dist/site-verification.js +16 -0
  76. package/dist/site-verification.js.map +1 -0
  77. package/package.json +54 -3
@@ -0,0 +1,52 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import type { CalendarSystem } from '@hawiyah/core';
3
+ import type { TextFieldProps } from './forms.js';
4
+ export interface CalendarProps extends Omit<ComponentPropsWithRef<'section'>, 'defaultValue' | 'onChange'> {
5
+ value?: string;
6
+ defaultValue?: string;
7
+ onValueChange?: (value: string) => void;
8
+ month?: string;
9
+ defaultMonth?: string;
10
+ onMonthChange?: (month: string) => void;
11
+ min?: string;
12
+ max?: string;
13
+ locale?: string;
14
+ calendar?: CalendarSystem;
15
+ weekStartsOn?: number;
16
+ isDateDisabled?: (value: string) => boolean;
17
+ disabled?: boolean;
18
+ readOnly?: boolean;
19
+ label?: string;
20
+ previousLabel?: string;
21
+ nextLabel?: string;
22
+ getDayLabel?: (value: string) => string;
23
+ name?: string;
24
+ form?: string;
25
+ }
26
+ export declare function Calendar({ value, defaultValue, onValueChange, month, defaultMonth, onMonthChange, min, max, locale, calendar, weekStartsOn, isDateDisabled, disabled, readOnly, label, previousLabel, nextLabel, getDayLabel, name, form, className, ...props }: CalendarProps): import("react").JSX.Element;
27
+ export interface DatePickerProps extends Omit<TextFieldProps, 'type' | 'value' | 'defaultValue' | 'onChange' | 'min' | 'max'> {
28
+ value?: string;
29
+ defaultValue?: string;
30
+ onValueChange?: (value: string) => void;
31
+ min?: string;
32
+ max?: string;
33
+ locale?: string;
34
+ calendar?: CalendarSystem;
35
+ defaultCalendar?: CalendarSystem;
36
+ onCalendarChange?: (calendar: CalendarSystem) => void;
37
+ calendarSystemLabel?: string;
38
+ gregorianLabel?: string;
39
+ hijriLabel?: string;
40
+ weekStartsOn?: number;
41
+ isDateDisabled?: (value: string) => boolean;
42
+ calendarLabel?: string;
43
+ buttonLabel?: string;
44
+ previousLabel?: string;
45
+ nextLabel?: string;
46
+ closeLabel?: string;
47
+ unavailableMessage?: string;
48
+ unsupportedCalendarMessage?: string;
49
+ invalidMessage?: string;
50
+ }
51
+ export declare function DatePicker({ value, defaultValue, onValueChange, min, max, locale, calendar: controlledCalendar, defaultCalendar, onCalendarChange, calendarSystemLabel, gregorianLabel, hijriLabel, weekStartsOn, isDateDisabled, calendarLabel, buttonLabel, previousLabel, nextLabel, closeLabel, unavailableMessage, invalidMessage, unsupportedCalendarMessage, label, hint, error, ref, className, name, onKeyDown, onFocus, onBlur, ...props }: DatePickerProps): import("react").JSX.Element;
52
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useId, useRef, useState } from 'react';
3
+ import { getCalendarLabels, formatCalendarDate, getCalendarMonth, getDirection, isCalendarDateSupported, isDateInRange, isDisabled, moveCalendarDate, UMALQURA_MIN_DATE, UMALQURA_MAX_DATE } from '@hawiyah/core';
4
+ import { Button, TextField } from './forms.js';
5
+ import { Dialog, Tooltip } from './interactive.js';
6
+ import { assignRef, cx, Field, useControllable } from './shared.js';
7
+ import { useFormReset } from './expanded-shared.js';
8
+ function dateMessage(message) {
9
+ return message.split(/([0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2})/u).map((part, index) => /^[0-9٠-٩]{4}-[0-9٠-٩]{2}-[0-9٠-٩]{2}$/u.test(part) ? _jsx("bdi", { dir: "ltr", children: part }, index) : part);
10
+ }
11
+ export function Calendar({ value, defaultValue = '', onValueChange, month, defaultMonth, onMonthChange, min, max, locale = 'ar-SA', calendar = 'gregory', weekStartsOn = 0, isDateDisabled, disabled, readOnly, label, previousLabel, nextLabel, getDayLabel, name, form, className, ...props }) {
12
+ const copy = getCalendarLabels(locale);
13
+ const id = useId();
14
+ const nativeValue = useRef(null);
15
+ const [selected, select] = useControllable(value, defaultValue, onValueChange);
16
+ const [visibleMonth, setMonth] = useControllable(month, defaultMonth ?? (isDateInRange(selected) ? selected : undefined), next => { if (next)
17
+ onMonthChange?.(next); });
18
+ const previousSelected = useRef(selected);
19
+ useEffect(() => {
20
+ if (previousSelected.current === selected)
21
+ return;
22
+ previousSelected.current = selected;
23
+ if (month === undefined && isDateInRange(selected)) {
24
+ setMonth(selected);
25
+ setFocused(selected);
26
+ }
27
+ }, [selected, month]);
28
+ const [focused, setFocused] = useState(isDateInRange(selected) ? selected : undefined);
29
+ const shouldFocus = useRef(false);
30
+ const buttons = useRef(new Map());
31
+ const model = getCalendarMonth({ month: visibleMonth && isDateInRange(visibleMonth) ? visibleMonth : undefined, value: isDateInRange(selected) ? selected : undefined, min, max, locale, calendar, weekStartsOn, fixedWeeks: true });
32
+ const unavailable = (day) => Boolean(disabled || !isCalendarDateSupported(day, calendar) || !isDateInRange(day, min, max) || isDateDisabled?.(day));
33
+ const focusValue = model.days.find(day => day.value === focused && !unavailable(day.value))?.value ?? model.days.find(day => day.selected && !unavailable(day.value))?.value ?? model.days.find(day => day.today && !unavailable(day.value))?.value ?? model.days.find(day => !day.outside && !unavailable(day.value))?.value ?? model.days.find(day => !unavailable(day.value))?.value;
34
+ useFormReset(nativeValue, () => { if (value === undefined)
35
+ select(defaultValue); if (month === undefined)
36
+ setMonth(defaultMonth ?? (defaultValue || undefined)); setFocused(defaultValue || undefined); }, form);
37
+ useEffect(() => { if (shouldFocus.current && focused) {
38
+ const button = buttons.current.get(focused);
39
+ if (button) {
40
+ button.focus();
41
+ shouldFocus.current = false;
42
+ }
43
+ } }, [focused, model.label]);
44
+ const first = model.days.find(day => !day.outside).value;
45
+ const fullLabel = (date) => getDayLabel?.(date) ?? (isCalendarDateSupported(date, calendar) ? formatCalendarDate(date, { locale, calendar, dateStyle: 'full' }) : date);
46
+ function navigate(current, key, shift, direction) {
47
+ try {
48
+ const column = model.days.findIndex(day => day.value === current) % 7;
49
+ let next;
50
+ let step = 1;
51
+ if (key === 'ArrowLeft' || key === 'ArrowRight') {
52
+ step = (key === 'ArrowRight' ? 1 : -1) * (direction === 'rtl' ? -1 : 1);
53
+ next = moveCalendarDate(current, step, 'day', calendar);
54
+ }
55
+ else if (key === 'ArrowUp' || key === 'ArrowDown') {
56
+ step = key === 'ArrowDown' ? 7 : -7;
57
+ next = moveCalendarDate(current, step, 'day', calendar);
58
+ }
59
+ else if (key === 'Home' || key === 'End') {
60
+ step = key === 'Home' ? 1 : -1;
61
+ next = moveCalendarDate(current, key === 'Home' ? -column : 6 - column, 'day', calendar);
62
+ }
63
+ else {
64
+ step = key === 'PageDown' ? 1 : -1;
65
+ next = moveCalendarDate(current, step, shift ? 'year' : 'month', calendar);
66
+ }
67
+ for (let attempts = 0; attempts < 366 && unavailable(next); attempts++) {
68
+ if ((min && next < min && step < 0) || (max && next > max && step > 0))
69
+ return;
70
+ next = moveCalendarDate(next, step, 'day', calendar);
71
+ }
72
+ if (unavailable(next))
73
+ return;
74
+ shouldFocus.current = true;
75
+ setFocused(next);
76
+ if (!model.days.some(day => day.value === next && !day.outside))
77
+ setMonth(next);
78
+ }
79
+ catch (error) {
80
+ if (!(error instanceof RangeError))
81
+ throw error;
82
+ }
83
+ }
84
+ return _jsxs("section", { ...props, className: cx('hw-calendar', className), "aria-label": props['aria-label'] ?? label ?? copy.calendar, "data-calendar": calendar, children: [_jsxs("header", { className: "hw-calendar-header", children: [_jsx(Button, { variant: "ghost", className: "hw-calendar-prev", "aria-label": previousLabel ?? copy.previous, disabled: disabled || model.previous === first || Boolean(min && moveCalendarDate(first, -1, 'day', 'gregory') < min), onClick: () => { setMonth(model.previous); setFocused(undefined); }, children: "\u2039" }), _jsxs("div", { className: "hw-calendar-heading", children: [_jsx("h3", { id: `${id}-month`, "aria-live": "polite", children: model.label }), calendar === 'islamic-umalqura' && _jsx(Tooltip, { className: "hw-calendar-info", content: `${copy.range}: \u2066${UMALQURA_MIN_DATE} – ${UMALQURA_MAX_DATE}\u2069`, children: _jsx("span", { tabIndex: 0, role: "img", className: "hw-calendar-info-icon hw-tooltip-trigger", "aria-label": copy.range, children: "i" }) })] }), _jsx(Button, { variant: "ghost", className: "hw-calendar-next", "aria-label": nextLabel ?? copy.next, disabled: disabled || model.next === first || Boolean(max && model.next > max), onClick: () => { setMonth(model.next); setFocused(undefined); }, children: "\u203A" })] }), _jsxs("table", { role: "grid", "aria-readonly": readOnly || undefined, "aria-labelledby": `${id}-month`, className: "hw-calendar-grid", children: [_jsx("thead", { children: _jsx("tr", { children: model.weekdays.map((day, index) => _jsx("th", { scope: "col", children: day }, index)) }) }), _jsx("tbody", { children: Array.from({ length: 6 }, (_, row) => _jsx("tr", { children: model.days.slice(row * 7, row * 7 + 7).map(day => _jsx("td", { role: "gridcell", "aria-selected": day.selected, children: _jsx("button", { type: "button", className: "hw-calendar-day", "data-date": day.value, "data-outside": day.outside || undefined, "aria-label": fullLabel(day.value), "aria-current": day.today ? 'date' : undefined, disabled: unavailable(day.value), tabIndex: focusValue === day.value ? 0 : -1, ref: node => { if (node)
85
+ buttons.current.set(day.value, node);
86
+ else
87
+ buttons.current.delete(day.value); }, onFocus: () => setFocused(day.value), onClick: () => { if (!readOnly) {
88
+ select(day.value);
89
+ setFocused(day.value);
90
+ if (day.outside)
91
+ setMonth(day.value);
92
+ } }, onKeyDown: event => { if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key)) {
93
+ event.preventDefault();
94
+ navigate(day.value, event.key, event.shiftKey, getDirection(event.currentTarget));
95
+ } }, children: day.label }) }, day.value)) }, row)) })] }), _jsx("input", { ref: nativeValue, type: "hidden", name: name, form: form, value: isCalendarDateSupported(selected, calendar) && isDateInRange(selected, min, max) && !isDateDisabled?.(selected) ? selected : '', disabled: disabled })] });
96
+ }
97
+ export function DatePicker({ value, defaultValue = '', onValueChange, min, max, locale = 'ar-SA', calendar: controlledCalendar, defaultCalendar = 'gregory', onCalendarChange, calendarSystemLabel, gregorianLabel, hijriLabel, weekStartsOn, isDateDisabled, calendarLabel, buttonLabel, previousLabel, nextLabel, closeLabel, unavailableMessage, invalidMessage, unsupportedCalendarMessage, label, hint, error, ref, className, name, onKeyDown, onFocus, onBlur, ...props }) {
98
+ const copy = getCalendarLabels(locale);
99
+ const [calendar, setCalendar] = useControllable(controlledCalendar, defaultCalendar, onCalendarChange);
100
+ const id = useId();
101
+ const input = useRef(null);
102
+ const [selected, select] = useControllable(value, defaultValue, onValueChange);
103
+ const [draft, setDraft] = useState(selected);
104
+ const previousValue = useRef(selected);
105
+ const [editing, setEditing] = useState(false);
106
+ const [open, setOpen] = useState(false);
107
+ const [month, setMonth] = useState(isDateInRange(selected) ? selected : undefined);
108
+ useEffect(() => { if (previousValue.current !== selected) {
109
+ previousValue.current = selected;
110
+ setDraft(selected);
111
+ } }, [selected]);
112
+ useEffect(() => { if (props.disabled || props.readOnly)
113
+ setOpen(false); }, [props.disabled, props.readOnly]);
114
+ useFormReset(input, () => { if (value === undefined)
115
+ select(defaultValue); setDraft(value ?? defaultValue); setOpen(false); setMonth(isDateInRange(value ?? defaultValue) ? (value ?? defaultValue) : undefined); }, props.form);
116
+ const formatted = selected && isCalendarDateSupported(selected, calendar) ? formatCalendarDate(selected, { locale, calendar, dateStyle: 'full' }) : '';
117
+ const formattedId = `${props.id ?? id}-formatted`;
118
+ const dialogId = `${props.id ?? id}-dialog`;
119
+ const malformed = Boolean(draft && !isDateInRange(draft));
120
+ const unsupported = Boolean(draft && !malformed && calendar === 'islamic-umalqura' && !isCalendarDateSupported(draft, calendar));
121
+ const unavailable = Boolean(draft && !malformed && isDateDisabled?.(draft));
122
+ const outside = Boolean(draft && !malformed && !isDateInRange(draft, min, max));
123
+ const message = malformed || outside ? (invalidMessage ?? copy.invalid) : unsupported ? (unsupportedCalendarMessage ?? copy.unsupported) : unavailable ? (unavailableMessage ?? copy.unavailable) : '';
124
+ const displayed = !editing && draft && !message && isCalendarDateSupported(draft, calendar) ? formatCalendarDate(draft, { locale, calendar, dateStyle: 'medium' }) : draft;
125
+ useEffect(() => { input.current?.setCustomValidity(message); }, [message]);
126
+ const blocked = () => props.disabled || props.readOnly || !input.current || isDisabled(input.current);
127
+ const show = () => { if (!blocked()) {
128
+ setMonth(isDateInRange(selected) ? selected : undefined);
129
+ setOpen(true);
130
+ } };
131
+ const commit = (date) => { const canonical = !date || isDateInRange(date); setDraft(canonical && value !== undefined ? value : date); if (canonical)
132
+ select(date); };
133
+ return _jsxs(Field, { label: label ?? (props['aria-label'] || props['aria-labelledby'] ? undefined : copy.date), hint: hint, error: error ?? (message ? dateMessage(message) : undefined), required: props.required, controlId: props.id ?? id, className: cx('hw-date-picker', className), children: [_jsxs("div", { className: "hw-date-picker-control", children: [_jsx(TextField, { ...props, ref: node => { input.current = node; assignRef(ref, node); }, type: "text", min: min, max: max, inputMode: "text", placeholder: props.placeholder ?? 'YYYY-MM-DD', "aria-haspopup": "dialog", "aria-controls": dialogId, "aria-invalid": message ? true : props['aria-invalid'], "aria-describedby": [props['aria-describedby'], formatted ? formattedId : undefined].filter(Boolean).join(' ') || undefined, value: displayed, onFocus: event => { if (!blocked()) {
134
+ event.currentTarget.value = draft;
135
+ event.currentTarget.select();
136
+ setEditing(true);
137
+ } onFocus?.(event); }, onBlur: event => { setEditing(false); onBlur?.(event); }, onChange: event => { if (!blocked())
138
+ commit(event.currentTarget.value); }, onKeyDown: event => { onKeyDown?.(event); if (!event.defaultPrevented && !event.nativeEvent.isComposing && !event.ctrlKey && !event.metaKey && !event.shiftKey && event.key === 'ArrowDown' && !blocked()) {
139
+ event.preventDefault();
140
+ show();
141
+ } } }), _jsxs(Dialog, { id: dialogId, open: open, onOpenChange: next => { if (!next || !blocked())
142
+ setOpen(next); }, title: calendarLabel ?? copy.choose, closeLabel: closeLabel ?? copy.close, trigger: _jsx(Button, { className: "hw-date-picker-trigger", variant: "ghost", disabled: props.disabled || props.readOnly, "aria-label": buttonLabel ?? copy.open, "aria-controls": dialogId, "aria-expanded": open, onClick: show, children: _jsx("span", { className: "hw-date-picker-icon", "aria-hidden": "true" }) }), children: [_jsx("div", { className: "hw-calendar-options", children: _jsx("div", { className: "hw-calendar-system hw-calendar-switch", role: "radiogroup", "aria-label": calendarSystemLabel ?? copy.system, "data-calendar": calendar, children: ['gregory', 'islamic-umalqura'].map(system => _jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-calendar-system`, form: "", value: system, checked: calendar === system, disabled: props.disabled || props.readOnly, onChange: () => { setCalendar(system); if (isDateInRange(selected))
143
+ setMonth(selected); } }), _jsx("span", { children: system === 'gregory' ? (gregorianLabel ?? copy.gregorian) : (hijriLabel ?? copy.hijri) })] }, system)) }) }), unsupported && _jsx("p", { role: "status", className: "hw-sr-only", children: dateMessage(unsupportedCalendarMessage ?? copy.unsupported) }), _jsx(Calendar, { disabled: props.disabled, readOnly: props.readOnly, value: isDateInRange(selected) ? selected : '', onValueChange: date => { if (!blocked()) {
144
+ commit(date);
145
+ setOpen(false);
146
+ } }, month: month, onMonthChange: setMonth, min: min, max: max, calendar: calendar, locale: locale, weekStartsOn: weekStartsOn, isDateDisabled: isDateDisabled, label: calendarLabel ?? copy.choose, previousLabel: previousLabel, nextLabel: nextLabel })] })] }), _jsx("input", { type: "hidden", name: name, form: props.form, disabled: props.disabled, value: isDateInRange(selected) ? selected : '' }), _jsx("output", { id: formattedId, htmlFor: props.id ?? id, className: "hw-sr-only hw-date-picker-value", "aria-live": "polite", "aria-atomic": "true", hidden: !formatted, children: formatted })] });
147
+ }
148
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElN,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjF,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAiB,GAAG,EAAC,KAAK,YAAE,IAAI,IAAtB,KAAK,CAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1G,CAAC;AAUD,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,GAAG,SAAS,EAAE,YAAY,GAAG,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiB;IAC5S,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAAC,MAAM,WAAW,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAC9J,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAqB,KAAK,EAAE,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI;QAAE,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5L,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO;QAClD,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;IACnG,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAqB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAA6B,CAAC,CAAC;IAC5M,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACrO,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5J,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;IACxX,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,SAAS;QAAE,QAAQ,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjN,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;QAAC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAAC,CAAC;IAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/L,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChL,SAAS,QAAQ,CAAC,OAAe,EAAE,GAAW,EAAE,KAAc,EAAE,SAAiB;QAC/E,IAAI,CAAC;YACL,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,IAAY,CAAC;YAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBAAC,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;iBACjL,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBAAC,IAAI,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;iBAC/I,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAAC,IAAI,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;iBAClK,CAAC;gBAAC,IAAI,GAAG,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAAC,CAAC;YACxH,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;gBACvE,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC;oBAAE,OAAO;gBAC/E,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC9B,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;IACtE,CAAC;IACD,OAAO,sBAAa,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,gBAAc,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,mBAAiB,QAAQ,aACpJ,kBAAQ,SAAS,EAAC,oBAAoB,aAAC,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,kBAAkB,gBAAa,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uBAAY,EAAA,eAAK,SAAS,EAAC,qBAAqB,aAAC,aAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,eAAY,QAAQ,YAAE,KAAK,CAAC,KAAK,GAAM,EAAC,QAAQ,KAAK,kBAAkB,IAAI,KAAC,OAAO,IAAC,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,WAAW,iBAAiB,MAAM,iBAAiB,QAAQ,YAAE,eAAM,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,0CAA0C,gBAAa,IAAI,CAAC,KAAK,kBAAU,GAAU,IAAO,EAAA,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,kBAAkB,gBAAa,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uBAAY,IAAS,EAC78B,iBAAO,IAAI,EAAC,MAAM,mBAAgB,QAAQ,IAAI,SAAS,qBAAmB,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,aAAC,0BAAO,uBAAK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,aAAgB,KAAK,EAAC,KAAK,YAAE,GAAG,IAAvB,KAAK,CAAwB,CAAC,GAAM,GAAQ,EAAA,0BAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,uBAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAoB,IAAI,EAAC,UAAU,mBAAgB,GAAG,CAAC,QAAQ,YAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,eAAY,GAAG,CAAC,KAAK,kBAAgB,GAAG,CAAC,OAAO,IAAI,SAAS,gBAAc,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI;wCAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;wCAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;wCAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wCAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wCAAC,IAAI,GAAG,CAAC,OAAO;4CAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wCAAC,KAAK,CAAC,cAAc,EAAE,CAAC;wCAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oCAAC,CAAC,CAAC,CAAC,YAAG,GAAG,CAAC,KAAK,GAAU,IAA51B,GAAG,CAAC,KAAK,CAAw1B,CAAC,IAAn6B,GAAG,CAAs6B,CAAC,GAAS,IAAQ,EAC5sC,gBAAO,GAAG,EAAE,WAAW,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAI,IACrN,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,GAAG,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,EAAmB;IAC/d,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACvG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAAC,MAAM,KAAK,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChJ,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAAC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7G,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjO,MAAM,SAAS,GAAG,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvJ,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAC/F,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,kBAAkB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjI,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvM,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3K,SAAS,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtG,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,GAAG,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7K,OAAO,MAAC,KAAK,IAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,aAChR,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,SAAS,OAAK,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAC,MAAM,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,MAAM,EAAC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,YAAY,mBAAgB,QAAQ,mBAAgB,QAAQ,kBAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,sBAAoB,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;4BAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;4BAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;4BAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;4BAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;4BAAC,KAAK,CAAC,cAAc,EAAE,CAAC;4BAAC,IAAI,EAAE,CAAC;wBAAC,CAAC,CAAC,CAAC,GAAI,EACn7B,MAAC,MAAM,IAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;4BAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,gBAAc,WAAW,IAAI,IAAI,CAAC,IAAI,mBAAiB,QAAQ,mBAAiB,IAAI,EAAE,OAAO,EAAE,IAAI,YAAE,eAAM,SAAS,EAAC,qBAAqB,iBAAa,MAAM,GAAG,GAAS,aACrc,cAAK,SAAS,EAAC,qBAAqB,YAAC,cAAK,SAAS,EAAC,uCAAuC,EAAC,IAAI,EAAC,YAAY,gBAAa,mBAAmB,IAAI,IAAI,CAAC,MAAM,mBAAiB,QAAQ,YAAI,CAAC,SAAS,EAAE,kBAAkB,CAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,4BAAoB,gBAAO,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;oDAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAI,EAAA,yBAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAQ,KAA9V,MAAM,CAAgW,CAAC,GAAO,GACrmB,EACL,WAAW,IAAI,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,YAAE,WAAW,CAAC,0BAA0B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAK,EACzH,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;oCAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oCAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gCAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAI,IAC3a,IACH,EACN,gBAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAI,EAC/H,iBAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAC,iCAAiC,eAAW,QAAQ,iBAAa,MAAM,EAAC,MAAM,EAAE,CAAC,SAAS,YAAG,SAAS,GAAU,IACtK,CAAC;AACX,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import type { ContentNavigationItem } from '@hawiyah/core';
3
+ export type { ContentNavigationItem } from '@hawiyah/core';
4
+ export interface ContentNavigationProps extends Omit<ComponentPropsWithRef<'nav'>, 'children'> {
5
+ items: readonly ContentNavigationItem[];
6
+ label?: string;
7
+ showHeading?: boolean;
8
+ sticky?: boolean;
9
+ scrollRoot?: HTMLElement | null;
10
+ offset?: number;
11
+ onCurrentChange?: (id: string) => void;
12
+ }
13
+ /** Local section navigation; the application owns section elements and their IDs. */
14
+ export declare function ContentNavigation({ items, label, showHeading, sticky, scrollRoot, offset, onCurrentChange, className, ref, ...props }: ContentNavigationProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=content-navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-navigation.d.ts","sourceRoot":"","sources":["../src/content-navigation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,qBAAqB,EAAwB,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AAGzD,YAAY,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACzD,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5F,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAC,KAAK,EAAE,KAAuB,EAAE,WAAkB,EAAE,MAAc,EAAE,UAAiB,EAAE,MAAW,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,sBAAsB,+BAuBxM"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useImperativeHandle, useRef, useState } from 'react';
3
+ import { observeContentNavigation } from '@hawiyah/core';
4
+ import { cx } from './shared.js';
5
+ /** Local section navigation; the application owns section elements and their IDs. */
6
+ export function ContentNavigation({ items, label = 'في هذه الصفحة', showHeading = true, sticky = false, scrollRoot = null, offset = 80, onCurrentChange, className, ref, ...props }) {
7
+ const navigation = useRef(null);
8
+ const observer = useRef(undefined);
9
+ const latest = useRef({ items, scrollRoot, offset, onCurrentChange });
10
+ latest.current = { items, scrollRoot, offset, onCurrentChange };
11
+ const [current, setCurrent] = useState('');
12
+ useImperativeHandle(ref, () => navigation.current, []);
13
+ useEffect(() => {
14
+ if (!navigation.current)
15
+ return;
16
+ observer.current = observeContentNavigation({ navigation: navigation.current, getItems: () => latest.current.items, getScrollRoot: () => latest.current.scrollRoot, offset: () => latest.current.offset, onCurrentChange: id => { setCurrent(id); latest.current.onCurrentChange?.(id); } });
17
+ return () => observer.current?.destroy();
18
+ }, []);
19
+ useEffect(() => { observer.current?.refresh(); }, [items, scrollRoot, offset]);
20
+ const activate = (event, id) => {
21
+ if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
22
+ return;
23
+ event.preventDefault();
24
+ observer.current?.navigate(id, { focus: event.detail === 0 });
25
+ };
26
+ const renderItems = (entries, nested = false) => _jsx("ul", { className: nested ? 'hw-content-nav-sublist' : 'hw-content-nav-list', children: entries.map(item => _jsxs("li", { children: [item.disabled ? _jsxs("span", { className: "hw-content-nav-link", role: "link", "aria-disabled": "true", "data-hw-section": item.id, children: [_jsx("span", { className: "hw-content-nav-marker", "aria-hidden": "true" }), _jsx("span", { className: "hw-content-nav-label", children: item.label })] }) : _jsxs("a", { className: "hw-content-nav-link", href: `#${encodeURIComponent(item.id)}`, "data-hw-section": item.id, "aria-current": current === item.id ? 'location' : undefined, onClick: event => activate(event, item.id), children: [_jsx("span", { className: "hw-content-nav-marker", "aria-hidden": "true" }), _jsx("span", { className: "hw-content-nav-label", children: item.label })] }), !!item.children?.length && renderItems(item.children, true)] }, item.id)) });
27
+ return _jsxs("nav", { ...props, ref: navigation, className: cx('hw-content-nav', className), "aria-label": label, "data-sticky": sticky || undefined, children: [showHeading && _jsx("h2", { className: "hw-content-nav-heading", children: label }), renderItems(items)] });
28
+ }
29
+ //# sourceMappingURL=content-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-navigation.js","sourceRoot":"","sources":["../src/content-navigation.tsx"],"names":[],"mappings":"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"}