cursedbelt 5.94.0 → 5.96.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 (71) hide show
  1. package/dist/react/canvas-hud/index.d.ts +2 -2
  2. package/dist/react/canvas-hud/index.d.ts.map +1 -1
  3. package/dist/react/canvas-hud/index.js +1 -1
  4. package/dist/react/canvas-hud/index.js.map +1 -1
  5. package/dist/react/canvas-hud/viewport.d.ts +32 -0
  6. package/dist/react/canvas-hud/viewport.d.ts.map +1 -1
  7. package/dist/react/canvas-hud/viewport.js +51 -0
  8. package/dist/react/canvas-hud/viewport.js.map +1 -1
  9. package/dist/react/components/AppShell.d.ts +12 -1
  10. package/dist/react/components/AppShell.d.ts.map +1 -1
  11. package/dist/react/components/AppShell.js +24 -5
  12. package/dist/react/components/AppShell.js.map +1 -1
  13. package/dist/react/components/ComboboxField.js +2 -2
  14. package/dist/react/components/ComboboxField.js.map +1 -1
  15. package/dist/react/components/DatePicker.d.ts +9 -5
  16. package/dist/react/components/DatePicker.d.ts.map +1 -1
  17. package/dist/react/components/DatePicker.js +192 -27
  18. package/dist/react/components/DatePicker.js.map +1 -1
  19. package/dist/react/components/InlineEditableText.d.ts +12 -2
  20. package/dist/react/components/InlineEditableText.d.ts.map +1 -1
  21. package/dist/react/components/InlineEditableText.js +11 -8
  22. package/dist/react/components/InlineEditableText.js.map +1 -1
  23. package/dist/react/components/Popover.d.ts +7 -1
  24. package/dist/react/components/Popover.d.ts.map +1 -1
  25. package/dist/react/components/Popover.js +54 -4
  26. package/dist/react/components/Popover.js.map +1 -1
  27. package/dist/react/components/suggestionList.js +2 -2
  28. package/dist/react/components/suggestionList.js.map +1 -1
  29. package/dist/react/lib/dateText.d.ts +21 -0
  30. package/dist/react/lib/dateText.d.ts.map +1 -0
  31. package/dist/react/lib/dateText.js +94 -0
  32. package/dist/react/lib/dateText.js.map +1 -0
  33. package/dist/react/lib/floatingSide.d.ts +42 -0
  34. package/dist/react/lib/floatingSide.d.ts.map +1 -0
  35. package/dist/react/lib/floatingSide.js +54 -0
  36. package/dist/react/lib/floatingSide.js.map +1 -0
  37. package/dist/react/lib/floatingStyles.d.ts +12 -0
  38. package/dist/react/lib/floatingStyles.d.ts.map +1 -1
  39. package/dist/react/lib/floatingStyles.js +12 -0
  40. package/dist/react/lib/floatingStyles.js.map +1 -1
  41. package/dist/styles-areas/analytics.css +11 -10
  42. package/dist/styles-areas/data-table.css +13 -12
  43. package/dist/styles-areas/fields.css +12 -10
  44. package/dist/styles-areas/stats.css +12 -11
  45. package/dist/styles-areas/wizard.css +6 -6
  46. package/dist/styles-utilities.css +15 -0
  47. package/package.json +3 -2
  48. package/src/react/canvas-hud/index.ts +10 -0
  49. package/src/react/canvas-hud/viewport.spec.ts +70 -0
  50. package/src/react/canvas-hud/viewport.ts +77 -0
  51. package/src/react/components/AppShell.spec.tsx +53 -0
  52. package/src/react/components/AppShell.tsx +79 -23
  53. package/src/react/components/ComboboxField.tsx +2 -2
  54. package/src/react/components/ControlHeightScale.spec.tsx +2 -2
  55. package/src/react/components/DatePicker.spec.tsx +186 -5
  56. package/src/react/components/DatePicker.tsx +416 -63
  57. package/src/react/components/InlineEditableText.spec.tsx +29 -0
  58. package/src/react/components/InlineEditableText.tsx +26 -10
  59. package/src/react/components/Popover.tsx +62 -5
  60. package/src/react/components/suggestionList.tsx +2 -2
  61. package/src/react/lib/dateText.ts +94 -0
  62. package/src/react/lib/floatingSide.spec.ts +37 -0
  63. package/src/react/lib/floatingSide.ts +73 -0
  64. package/src/react/lib/floatingStyles.spec.ts +36 -1
  65. package/src/react/lib/floatingStyles.ts +13 -0
  66. package/src/styles-areas/analytics.css +11 -10
  67. package/src/styles-areas/data-table.css +13 -12
  68. package/src/styles-areas/fields.css +12 -10
  69. package/src/styles-areas/stats.css +12 -11
  70. package/src/styles-areas/wizard.css +6 -6
  71. package/src/styles-utilities.css +15 -0
@@ -1,33 +1,160 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { DayPicker } from '@daypicker/react';
3
- import { Calendar } from 'lucide-react';
4
- import { useState } from 'react';
3
+ import { Calendar, ChevronDown, ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, } from 'lucide-react';
4
+ import { useEffect, useId, useState } from 'react';
5
5
  import { useMediaQuery } from '../hooks/useMediaQuery.js';
6
6
  import { cn } from '../lib/cn.js';
7
+ import { RAW_BUTTON } from '../lib/cn.js';
8
+ import { TAP_TARGET_HEIGHT } from '../lib/tapTarget.js';
9
+ import { parseDateText } from '../lib/dateText.js';
7
10
  import { DAY_PICKER_CLASS_NAMES, DayPickerChevron, formatDateDisplay, isoToLocalDate, localDateToIso, ThemedDayButton, } from '../lib/daypicker.js';
8
- import { declareFieldWidth, fieldControlClass } from '../lib/field.js';
11
+ import { declareFieldWidth } from '../lib/field.js';
9
12
  import { Drawer } from './Drawer.js';
13
+ import { Button } from './Button.js';
14
+ import { IconButton } from './IconButton.js';
15
+ import { Input } from './Input.js';
10
16
  import { Popover } from './Popover.js';
11
- import { RAW_BUTTON } from '../lib/cn.js';
17
+ import { ScrollArea } from './ScrollArea.js';
18
+ const monthStart = (d) => new Date(d.getFullYear(), d.getMonth(), 1);
19
+ const addMonths = (d, n) => new Date(d.getFullYear(), d.getMonth() + n, 1);
20
+ /** Keep a month inside the [min, max] months, if given. */
21
+ function clampMonth(d, min, max) {
22
+ const first = monthStart(d);
23
+ if (min && first < monthStart(min))
24
+ return monthStart(min);
25
+ if (max && first > monthStart(max))
26
+ return monthStart(max);
27
+ return first;
28
+ }
29
+ const sameMonth = (a, b) => a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
30
+ const CHOOSER_BUTTON = `flex h-[var(--control-h-sm)] ${TAP_TARGET_HEIGHT} w-full items-center justify-center rounded-md text-sm transition-colors hover:bg-accent/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:pointer-events-none disabled:opacity-30`;
31
+ const CHOOSER_SELECTED = 'bg-accent-solid text-white hover:bg-accent-solid-hover';
32
+ /** One cell of the year / month chooser grids. */
33
+ function ChooserCell({ current, disabled, tall, label, onPick, children, }) {
34
+ return (_jsx("button", {
35
+ // guardrails-ignore no-raw-action-button: task 3764 — a cell in the year/month chooser grid, a
36
+ // presentational selection like ThemedDayButton (STANDARDS.md §4a carve-out).
37
+ type: 'button', disabled: disabled, "aria-current": current ? 'date' : undefined, "aria-label": label, ref: (el) => {
38
+ // Bring the viewed year into view in the scrolling year grid.
39
+ if (el && current)
40
+ el.scrollIntoView?.({ block: 'center' });
41
+ }, className: cn(RAW_BUTTON, CHOOSER_BUTTON, tall && 'h-[var(--control-h-lg)]', current && CHOOSER_SELECTED), onClick: onPick, children: children }));
42
+ }
43
+ /**
44
+ * The calendar body: month + year steppers, a caption that opens a year/month chooser, and
45
+ * the day grid. PageUp/PageDown (month) and Shift+PageUp/PageDown (year) are DayPicker's own,
46
+ * per the WAI-ARIA date-picker dialog pattern; the month is controlled here so the steppers,
47
+ * the chooser and the keys all move the same view.
48
+ */
49
+ function DatePickerCalendar({ selected, month, onMonthChange, onSelect, minDate, maxDate, }) {
50
+ const [view, setView] = useState('days');
51
+ const [chosenYear, setChosenYear] = useState(month.getFullYear());
52
+ const disabledMatchers = [];
53
+ if (minDate)
54
+ disabledMatchers.push({ before: minDate });
55
+ if (maxDate)
56
+ disabledMatchers.push({ after: maxDate });
57
+ const step = (months) => onMonthChange(clampMonth(addMonths(month, months), minDate, maxDate));
58
+ const stepDisabled = (months) => sameMonth(clampMonth(addMonths(month, months), minDate, maxDate), month);
59
+ if (view === 'years') {
60
+ const thisYear = new Date().getFullYear();
61
+ const first = minDate ? minDate.getFullYear() : Math.min(1900, month.getFullYear());
62
+ const last = maxDate ? maxDate.getFullYear() : Math.max(thisYear + 30, month.getFullYear());
63
+ const years = Array.from({ length: last - first + 1 }, (_, i) => first + i);
64
+ return (_jsxs("div", { children: [_jsxs("div", { className: `flex h-[var(--control-h-lg)] ${TAP_TARGET_HEIGHT} items-center gap-1 pb-1`, children: [_jsx(IconButton, { label: 'Back to calendar', size: 'sm', onClick: () => setView('days'), children: _jsx(ChevronLeft, {}) }), _jsx("span", { className: 'flex-1 text-center text-sm font-semibold', children: "Choose a year" }), _jsx("span", { className: 'w-[var(--control-h-sm)]', "aria-hidden": true })] }), _jsx(ScrollArea, { className: 'max-h-60', space: 'none', safeArea: false, children: _jsx("fieldset", { "aria-label": 'Year', className: 'm-0 grid min-w-0 grid-cols-4 gap-1 border-0 p-0', children: years.map((year) => {
65
+ const isCurrent = year === month.getFullYear();
66
+ return (_jsx(ChooserCell, { current: isCurrent, onPick: () => {
67
+ setChosenYear(year);
68
+ setView('months');
69
+ }, children: year }, year));
70
+ }) }) })] }));
71
+ }
72
+ if (view === 'months') {
73
+ return (_jsxs("div", { children: [_jsxs("div", { className: `flex h-[var(--control-h-lg)] ${TAP_TARGET_HEIGHT} items-center gap-1 pb-1`, children: [_jsx(IconButton, { label: 'Choose another year', size: 'sm', onClick: () => setView('years'), children: _jsx(ChevronLeft, {}) }), _jsx("span", { className: 'flex-1 text-center text-sm font-semibold', children: chosenYear }), _jsx("span", { className: 'w-[var(--control-h-sm)]', "aria-hidden": true })] }), _jsx("fieldset", { "aria-label": 'Month', className: 'm-0 grid min-w-0 grid-cols-3 gap-1 border-0 p-0', children: Array.from({ length: 12 }, (_, i) => {
74
+ const start = new Date(chosenYear, i, 1);
75
+ const outOfRange = (minDate !== undefined && start < monthStart(minDate)) ||
76
+ (maxDate !== undefined && start > monthStart(maxDate));
77
+ const isCurrent = sameMonth(start, month);
78
+ return (_jsx(ChooserCell, { current: isCurrent, disabled: outOfRange, tall: true, label: start.toLocaleDateString(undefined, { month: 'long', year: 'numeric' }), onPick: () => {
79
+ onMonthChange(start);
80
+ setView('days');
81
+ }, children: start.toLocaleDateString(undefined, { month: 'short' }) }, start.getTime()));
82
+ }) })] }));
83
+ }
84
+ return (_jsxs("div", { children: [_jsxs("div", { className: 'flex items-center gap-0.5 pb-1', children: [_jsx(IconButton, { label: 'Previous year', size: 'sm', disabled: stepDisabled(-12), onClick: () => step(-12), children: _jsx(ChevronsLeft, {}) }), _jsx(IconButton, { label: 'Previous month', size: 'sm', disabled: stepDisabled(-1), onClick: () => step(-1), children: _jsx(ChevronLeft, {}) }), _jsxs(Button, { variant: 'ghost', size: 'sm', tooltip: 'Choose month and year', "aria-haspopup": 'dialog', "aria-label": `${month.toLocaleDateString(undefined, { month: 'long', year: 'numeric' })}, choose month and year`, className: `min-w-0 flex-1 gap-1 font-semibold ${TAP_TARGET_HEIGHT}`, onClick: () => {
85
+ setChosenYear(month.getFullYear());
86
+ setView('years');
87
+ }, children: [_jsx("span", { className: 'truncate', children: month.toLocaleDateString(undefined, { month: 'long', year: 'numeric' }) }), _jsx(ChevronDown, { className: 'h-3.5 w-3.5 shrink-0 opacity-60' })] }), _jsx(IconButton, { label: 'Next month', size: 'sm', disabled: stepDisabled(1), onClick: () => step(1), children: _jsx(ChevronRight, {}) }), _jsx(IconButton, { label: 'Next year', size: 'sm', disabled: stepDisabled(12), onClick: () => step(12), children: _jsx(ChevronsRight, {}) })] }), _jsx(DayPicker, { mode: 'single', selected: selected, onSelect: onSelect, month: month, onMonthChange: (next) => onMonthChange(clampMonth(next, minDate, maxDate)), hideNavigation: true, classNames: { ...DAY_PICKER_CLASS_NAMES, month_caption: 'hidden' }, components: { DayButton: ThemedDayButton, Chevron: DayPickerChevron }, disabled: disabledMatchers.length > 0 ? disabledMatchers : undefined, startMonth: minDate, endMonth: maxDate })] }));
88
+ }
12
89
  /**
13
- * Token-themed date picker on `@daypicker/react`. Replaces the bare
14
- * `<input type="date">` for the `FieldInput` `date` type — presents a calendar
15
- * popover on desktop and a bottom sheet on mobile (&lt;640 px), with full
16
- * keyboard navigation and screen-reader labels.
90
+ * Token-themed date picker on `@daypicker/react`. The field is a text input a person can
91
+ * TYPE a date into (`2015-12-05`, `12/5/2015`, `Dec 5 2015`, `December 5, 2015`, `5 Dec
92
+ * 2015`; a two-digit year reads as the nearest sensible century), normalized to ISO on
93
+ * blur or Enter — and a calendar button beside it opens a popover on desktop or a bottom
94
+ * sheet on mobile (&lt;640 px). In the calendar the month AND year step with buttons, the
95
+ * caption opens a year/month chooser, and PageUp/PageDown (Shift for a year) move the view.
17
96
  *
18
97
  * Value is an ISO date string (`'YYYY-MM-DD'`), matching what a native date
19
- * input produces, so it's drop-in compatible with existing RHF form schemas.
98
+ * input produces, so it's drop-in compatible with existing RHF form schemas. Typed text that
99
+ * does not parse, or falls outside `min`/`max`, never reaches `onChange`: the field turns
100
+ * invalid with a short reason, and Escape restores the last good value.
20
101
  */
21
102
  export function DatePicker({ value, onChange, onBlur, placeholder = 'Pick a date', disabled, id, name, min, max, 'aria-invalid': ariaInvalid, 'aria-describedby': ariaDescribedBy, size = 'md', ...rest }) {
22
103
  const [open, setOpen] = useState(false);
23
104
  const isMobile = useMediaQuery('(max-width: 639px)');
105
+ const [anchor, setAnchor] = useState(null);
106
+ const errorId = useId();
24
107
  const selectedDate = value ? isoToLocalDate(value) : undefined;
25
- const defaultMonth = selectedDate ?? new Date();
26
- const disabledMatchers = [];
27
- if (min)
28
- disabledMatchers.push({ before: isoToLocalDate(min) });
29
- if (max)
30
- disabledMatchers.push({ after: isoToLocalDate(max) });
108
+ const minDate = min ? isoToLocalDate(min) : undefined;
109
+ const maxDate = max ? isoToLocalDate(max) : undefined;
110
+ // The text being typed, or null while the field just shows the value.
111
+ const [draft, setDraft] = useState(null);
112
+ const [error, setError] = useState(null);
113
+ const [month, setMonth] = useState(() => clampMonth(selectedDate ?? new Date(), minDate, maxDate));
114
+ // A new value from outside (or a pick in the calendar) replaces whatever was being typed
115
+ // and moves the calendar's view to it. min/max only bound the clamp: the view moves when the
116
+ // value does, so they stay out of the dependency list.
117
+ // biome-ignore lint/correctness/useExhaustiveDependencies: see above
118
+ useEffect(() => {
119
+ setDraft(null);
120
+ setError(null);
121
+ if (value)
122
+ setMonth(clampMonth(isoToLocalDate(value), minDate, maxDate));
123
+ }, [value]);
124
+ const display = selectedDate ? formatDateDisplay(selectedDate) : '';
125
+ const inputText = draft ?? display;
126
+ const refuse = (reason) => {
127
+ setError(reason);
128
+ return false;
129
+ };
130
+ /** Parse the draft; on success call onChange once and return to the display form. */
131
+ const commitDraft = () => {
132
+ if (draft === null)
133
+ return true;
134
+ if (draft.trim() === '') {
135
+ setDraft(null);
136
+ setError(null);
137
+ if (value)
138
+ onChange?.(undefined);
139
+ return true;
140
+ }
141
+ const parsed = parseDateText(draft);
142
+ if (!parsed.ok)
143
+ return refuse(parsed.reason);
144
+ const date = isoToLocalDate(parsed.iso);
145
+ if (minDate && date < minDate) {
146
+ return refuse(`Pick a date on or after ${formatDateDisplay(minDate)}`);
147
+ }
148
+ if (maxDate && date > maxDate) {
149
+ return refuse(`Pick a date on or before ${formatDateDisplay(maxDate)}`);
150
+ }
151
+ setDraft(null);
152
+ setError(null);
153
+ setMonth(clampMonth(date, minDate, maxDate));
154
+ if (parsed.iso !== value)
155
+ onChange?.(parsed.iso);
156
+ return true;
157
+ };
31
158
  const handleSelect = (date) => {
32
159
  onChange?.(date ? localDateToIso(date) : undefined);
33
160
  setOpen(false);
@@ -35,21 +162,59 @@ export function DatePicker({ value, onChange, onBlur, placeholder = 'Pick a date
35
162
  };
36
163
  const handleOpenChange = (next) => {
37
164
  setOpen(next);
38
- if (!next)
165
+ if (next) {
166
+ // Open on the typed date when the text is valid, else on the value.
167
+ setMonth(clampMonth(selectedDate ?? new Date(), minDate, maxDate));
168
+ }
169
+ else
39
170
  onBlur?.();
40
171
  };
41
- const triggerLabel = selectedDate ? formatDateDisplay(selectedDate) : placeholder;
42
- const trigger = (_jsxs("button", { ...rest,
43
- // guardrails-ignore no-raw-action-button: presentational popover/drawer trigger for
44
- // the calendar (opens a picker, doesn't mutate) — styled as a field via
45
- // fieldControlClass and needs to be a plain <button> to work as both the Popover
46
- // and Drawer trigger.
47
- type: 'button', id: id, name: name, disabled: disabled, "aria-invalid": ariaInvalid, "aria-describedby": ariaDescribedBy, "aria-haspopup": 'dialog', "aria-expanded": open, "aria-label": selectedDate ? triggerLabel : placeholder, onClick: () => setOpen(true), className: cn(RAW_BUTTON, fieldControlClass(size), 'flex cursor-pointer items-center justify-between text-left', !selectedDate && 'text-field-placeholder', disabled && 'cursor-not-allowed'), children: [_jsx("span", { children: triggerLabel }), _jsx(Calendar, { className: 'h-4 w-4 shrink-0 opacity-50' })] }));
48
- const calendar = (_jsx(DayPicker, { mode: 'single', selected: selectedDate, onSelect: handleSelect, defaultMonth: defaultMonth, classNames: DAY_PICKER_CLASS_NAMES, components: { DayButton: ThemedDayButton, Chevron: DayPickerChevron }, disabled: disabledMatchers.length > 0 ? disabledMatchers : undefined, startMonth: min ? isoToLocalDate(min) : undefined, endMonth: max ? isoToLocalDate(max) : undefined }));
172
+ const openCalendar = () => {
173
+ if (disabled)
174
+ return;
175
+ if (draft !== null) {
176
+ const parsed = parseDateText(draft);
177
+ if (parsed.ok)
178
+ setMonth(clampMonth(isoToLocalDate(parsed.iso), minDate, maxDate));
179
+ }
180
+ setOpen(true);
181
+ };
182
+ const invalid = ariaInvalid || error !== null ? true : undefined;
183
+ const describedBy = [ariaDescribedBy, error ? errorId : undefined].filter(Boolean).join(' ');
184
+ const field = (_jsxs("div", { ref: setAnchor, className: 'relative w-full', children: [_jsx(Input, { ...rest, type: 'text', maxLength: 64, size: size, id: id, name: name, disabled: disabled, autoComplete: 'off', spellCheck: false, value: inputText, placeholder: placeholder, "aria-invalid": invalid, "aria-describedby": describedBy || undefined, onFocus: (e) => e.currentTarget.select(), onChange: (e) => {
185
+ setDraft(e.target.value);
186
+ setError(null);
187
+ }, onKeyDown: (e) => {
188
+ if (e.key === 'Enter') {
189
+ e.preventDefault();
190
+ commitDraft();
191
+ }
192
+ else if (e.key === 'Escape' && (draft !== null || error !== null)) {
193
+ e.preventDefault();
194
+ e.stopPropagation();
195
+ setDraft(null);
196
+ setError(null);
197
+ }
198
+ else if (e.key === 'ArrowDown' && e.altKey) {
199
+ e.preventDefault();
200
+ openCalendar();
201
+ }
202
+ }, onBlur: (e) => {
203
+ commitDraft();
204
+ // Focus moving to the calendar button (or into its panel) is not the field being left.
205
+ const next = e.relatedTarget;
206
+ if (!open && !(next && anchor?.contains(next)))
207
+ onBlur?.();
208
+ }, className: 'pr-11 pointer-coarse:pr-12' }), _jsx(IconButton, { size: size, label: selectedDate ? `Change date, ${display}` : placeholder, disabled: disabled, "aria-haspopup": 'dialog', "aria-expanded": open, onClick: () => (open ? handleOpenChange(false) : openCalendar()), className: 'absolute right-0 top-0 text-muted-foreground hover:text-foreground', children: _jsx(Calendar, { className: 'opacity-70' }) })] }));
209
+ const message = error ? (_jsx("p", { id: errorId, role: 'alert', className: 'mt-1 text-xs text-field-error', children: error })) : null;
210
+ const calendar = (_jsx(DatePickerCalendar, { selected: selectedDate, month: month, onMonthChange: setMonth, onSelect: handleSelect, minDate: minDate, maxDate: maxDate }));
49
211
  if (isMobile) {
50
- return (_jsxs(_Fragment, { children: [trigger, _jsx(Drawer, { open: open, onClose: () => handleOpenChange(false), side: 'bottom', size: 'md', children: _jsx("div", { className: 'flex justify-center py-2', children: calendar }) })] }));
212
+ return (_jsxs("div", { className: 'w-full', children: [field, message, _jsx(Drawer, { open: open, onClose: () => handleOpenChange(false), side: 'bottom', size: 'md', children: _jsx("div", { className: 'flex justify-center py-2', children: calendar }) })] }));
51
213
  }
52
- return (_jsx(Popover, { trigger: trigger, open: open, onOpenChange: handleOpenChange, align: 'start', arrow: false, width: 280, children: calendar }));
214
+ return (_jsxs("div", { className: 'w-full', children: [field, message, _jsx(Popover, { anchor: anchor, open: open, onOpenChange: handleOpenChange, align: 'start', arrow: false,
215
+ // 🔴 Wide enough for the longest caption beside its four steppers: at 296 "September 2026"
216
+ // truncated to "September 20…" (photos' lightbox, forge task 3764). 320 still fits a 390px phone.
217
+ width: 320, children: calendar })] }));
53
218
  }
54
219
  declareFieldWidth(DatePicker, 'sm');
55
220
  //# sourceMappingURL=DatePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../src/react/components/DatePicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../src/react/components/DatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAkB,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAoB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwB7C,MAAM,UAAU,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E,MAAM,SAAS,GAAG,CAAC,CAAO,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAEzF,2DAA2D;AAC3D,SAAS,UAAU,CAAC,CAAO,EAAE,GAAU,EAAE,GAAU;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO,EAAE,EAAE,CACrC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEvE,MAAM,cAAc,GAClB,gCAAgC,iBAAiB,wNAAwN,CAAC;AAC5Q,MAAM,gBAAgB,GAAG,wDAAwD,CAAC;AAElF,kDAAkD;AAClD,SAAS,WAAW,CAAC,EACnB,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,GAQT;IACC,OAAO,CACL;QACE,+FAA+F;QAC/F,8EAA8E;QAC9E,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,kBACJ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBAC9B,KAAK,EACjB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,8DAA8D;YAC9D,IAAI,EAAE,IAAI,OAAO;gBAAE,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC,EACD,SAAS,EAAE,EAAE,CACX,UAAU,EACV,cAAc,EACd,IAAI,IAAI,yBAAyB,EACjC,OAAO,IAAI,gBAAgB,CAC5B,EACD,OAAO,EAAE,MAAM,YAEd,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,aAAa,EACb,QAAQ,EACR,OAAO,EACP,OAAO,GAQR;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAe,MAAM,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAElE,MAAM,gBAAgB,GAAc,EAAE,CAAC;IACvC,IAAI,OAAO;QAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO;QAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvG,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CACtC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAE3E,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO,CACL,0BACE,eAAK,SAAS,EAAE,gCAAgC,iBAAiB,0BAA0B,aACzF,KAAC,UAAU,IAAC,KAAK,EAAC,kBAAkB,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAC3E,KAAC,WAAW,KAAG,GACJ,EACb,eAAM,SAAS,EAAC,0CAA0C,8BAAqB,EAC/E,eAAM,SAAS,EAAC,yBAAyB,wBAAe,IACpD,EACN,KAAC,UAAU,IAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAE,KAAK,YAC7D,iCAAqB,MAAM,EAAC,SAAS,EAAC,iDAAiD,YACpF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAClB,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;4BAC/C,OAAO,CACL,KAAC,WAAW,IAEV,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,GAAG,EAAE;oCACX,aAAa,CAAC,IAAI,CAAC,CAAC;oCACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;gCACpB,CAAC,YAEA,IAAI,IAPA,IAAI,CAQG,CACf,CAAC;wBACJ,CAAC,CAAC,GACO,GACE,IACT,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,CACL,0BACE,eAAK,SAAS,EAAE,gCAAgC,iBAAiB,0BAA0B,aACzF,KAAC,UAAU,IAAC,KAAK,EAAC,qBAAqB,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAC/E,KAAC,WAAW,KAAG,GACJ,EACb,eAAM,SAAS,EAAC,0CAA0C,YAAE,UAAU,GAAQ,EAC9E,eAAM,SAAS,EAAC,yBAAyB,wBAAe,IACpD,EACN,iCAAqB,OAAO,EAAC,SAAS,EAAC,iDAAiD,YACrF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACnC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACzC,MAAM,UAAU,GACd,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;4BACtD,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAC1C,OAAO,CACL,KAAC,WAAW,IAEV,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,EACpB,IAAI,QACJ,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC9E,MAAM,EAAE,GAAG,EAAE;gCACX,aAAa,CAAC,KAAK,CAAC,CAAC;gCACrB,OAAO,CAAC,MAAM,CAAC,CAAC;4BAClB,CAAC,YAEA,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAVnD,KAAK,CAAC,OAAO,EAAE,CAWR,CACf,CAAC;oBACJ,CAAC,CAAC,GACO,IACP,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,0BACE,eAAK,SAAS,EAAC,gCAAgC,aAC7C,KAAC,UAAU,IACT,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,YAExB,KAAC,YAAY,KAAG,GACL,EACb,KAAC,UAAU,IACT,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAEvB,KAAC,WAAW,KAAG,GACJ,EACb,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,uBAAuB,mBACjB,QAAQ,gBACV,GAAG,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,yBAAyB,EAC/G,SAAS,EAAE,sCAAsC,iBAAiB,EAAE,EACpE,OAAO,EAAE,GAAG,EAAE;4BACZ,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;4BACnC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACnB,CAAC,aAED,eAAM,SAAS,EAAC,UAAU,YACvB,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GACnE,EACP,KAAC,WAAW,IAAC,SAAS,EAAC,iCAAiC,GAAG,IACpD,EACT,KAAC,UAAU,IACT,KAAK,EAAC,YAAY,EAClB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAEtB,KAAC,YAAY,KAAG,GACL,EACb,KAAC,UAAU,IACT,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,YAEvB,KAAC,aAAa,KAAG,GACN,IACT,EACN,KAAC,SAAS,IACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAC1E,cAAc,QACd,UAAU,EAAE,EAAE,GAAG,sBAAsB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAClE,UAAU,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAyB,EAAE,EAC9E,QAAQ,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EACpE,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,IACE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAAW,GAAG,aAAa,EAC3B,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,GAAG,EACH,GAAG,EACH,cAAc,EAAE,WAAW,EAC3B,kBAAkB,EAAE,eAAe,EACnC,IAAI,GAAG,IAAI,EACX,GAAG,IAAI,EACS;IAChB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IAExB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtD,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnG,yFAAyF;IACzF,6FAA6F;IAC7F,uDAAuD;IACvD,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,KAAK;YAAE,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC;IAEnC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE;QAChC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,qFAAqF;IACrF,MAAM,WAAW,GAAG,GAAY,EAAE;QAChC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,IAAI,KAAK;gBAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,2BAA2B,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,4BAA4B,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK;YAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAAsB,EAAE,EAAE;QAC9C,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,MAAM,EAAE,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,EAAE;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,IAAI,EAAE,CAAC;YACT,oEAAoE;YACpE,QAAQ,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;;YAAM,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ;YAAE,OAAO;QACrB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,EAAE;gBAAE,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7F,MAAM,KAAK,GAAG,CACZ,eAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,iBAAiB,aAC9C,KAAC,KAAK,OACA,IAAI,EACR,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,EACb,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAC,KAAK,EAClB,UAAU,EAAE,KAAK,EACjB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,WAAW,kBACV,OAAO,sBACH,WAAW,IAAI,SAAS,EAC1C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,EACxC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;wBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,WAAW,EAAE,CAAC;oBAChB,CAAC;yBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;wBACpE,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;wBACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACf,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACjB,CAAC;yBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC7C,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,YAAY,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC,EACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,WAAW,EAAE,CAAC;oBACd,uFAAuF;oBACvF,MAAM,IAAI,GAAG,CAAC,CAAC,aAA4B,CAAC;oBAC5C,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAAE,MAAM,EAAE,EAAE,CAAC;gBAC7D,CAAC,EACD,SAAS,EAAC,4BAA4B,GACtC,EACF,KAAC,UAAU,IACT,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,EAC7D,QAAQ,EAAE,QAAQ,mBACJ,QAAQ,mBACP,IAAI,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAChE,SAAS,EAAC,oEAAoE,YAE9E,KAAC,QAAQ,IAAC,SAAS,EAAC,YAAY,GAAG,GACxB,IACT,CACP,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CACtB,YAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,+BAA+B,YACnE,KAAK,GACJ,CACL,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,QAAQ,GAAG,CACf,KAAC,kBAAkB,IACjB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,QAAQ,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,eAAK,SAAS,EAAC,QAAQ,aACpB,KAAK,EACL,OAAO,EACR,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,YACjF,cAAK,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAO,GACnD,IACL,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,QAAQ,aACpB,KAAK,EACL,OAAO,EACR,KAAC,OAAO,IACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,KAAK;gBACZ,2FAA2F;gBAC3F,kGAAkG;gBAClG,KAAK,EAAE,GAAG,YAET,QAAQ,GACD,IACN,CACP,CAAC;AACJ,CAAC;AAED,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC"}
@@ -27,6 +27,16 @@ export interface InlineEditableTextProps {
27
27
  * edit needs a separate, explicit affordance.
28
28
  */
29
29
  trigger?: 'text' | 'icon';
30
+ /**
31
+ * Where the caret lands when editing starts (default `'select-all'`):
32
+ * - `'select-all'` — the whole value is selected, so typing replaces it (a title, a name).
33
+ * - `'end'` — the caret goes after the last character and nothing is selected; for
34
+ * paragraphs someone ADDS to (notes, a description), where one stray keystroke
35
+ * would otherwise replace everything they wrote.
36
+ */
37
+ caret?: 'select-all' | 'end';
38
+ /** The editor's character ceiling (default 10,000) — the server's limit, so the editor stops where a save would be refused. */
39
+ maxLength?: number;
30
40
  ariaLabel?: string;
31
41
  }
32
42
  /**
@@ -35,7 +45,7 @@ export interface InlineEditableTextProps {
35
45
  * primitive, used anywhere a title/heading should be edited in place. Fully
36
46
  * token-driven (accent border + ring on the editor); the editor focuses and
37
47
  * selects its text on mount so typing replaces (and the cursor is never stranded
38
- * at position 0).
48
+ * at position 0) — or, with `caret='end'`, puts the caret after the text.
39
49
  */
40
- export declare function InlineEditableText({ value, onChange, canEdit, multiline, placeholder, className, inputClassName, trigger, wrap, ariaLabel, ...rest }: InlineEditableTextProps): import("react").JSX.Element | null;
50
+ export declare function InlineEditableText({ value, onChange, canEdit, multiline, placeholder, className, inputClassName, trigger, wrap, caret, maxLength, ariaLabel, ...rest }: InlineEditableTextProps): import("react").JSX.Element | null;
41
51
  //# sourceMappingURL=InlineEditableText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InlineEditableText.d.ts","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;gEAC4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;gEAC4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;sDAGkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,OAAc,EACd,SAAiB,EACjB,WAAyB,EACzB,SAAS,EACT,cAAc,EACd,OAAgB,EAChB,IAAW,EACX,SAAS,EACT,GAAG,IAAI,EACR,EAAE,uBAAuB,sCA4IzB"}
1
+ {"version":3,"file":"InlineEditableText.d.ts","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;gEAC4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;gEAC4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;sDAGkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAC7B,+HAA+H;IAC/H,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,OAAc,EACd,SAAiB,EACjB,WAAyB,EACzB,SAAS,EACT,cAAc,EACd,OAAgB,EAChB,IAAW,EACX,KAAoB,EACpB,SAAkB,EAClB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,uBAAuB,sCAgJzB"}
@@ -14,9 +14,9 @@ import { RAW_BUTTON } from '../lib/cn.js';
14
14
  * primitive, used anywhere a title/heading should be edited in place. Fully
15
15
  * token-driven (accent border + ring on the editor); the editor focuses and
16
16
  * selects its text on mount so typing replaces (and the cursor is never stranded
17
- * at position 0).
17
+ * at position 0) — or, with `caret='end'`, puts the caret after the text.
18
18
  */
19
- export function InlineEditableText({ value, onChange, canEdit = true, multiline = false, placeholder = 'Add text…', className, inputClassName, trigger = 'text', wrap = true, ariaLabel, ...rest }) {
19
+ export function InlineEditableText({ value, onChange, canEdit = true, multiline = false, placeholder = 'Add text…', className, inputClassName, trigger = 'text', wrap = true, caret = 'select-all', maxLength = 10_000, ariaLabel, ...rest }) {
20
20
  const [editing, setEditing] = useState(false);
21
21
  const [draft, setDraft] = useState(value);
22
22
  const begin = () => {
@@ -35,20 +35,23 @@ export function InlineEditableText({ value, onChange, canEdit = true, multiline
35
35
  setDraft(value);
36
36
  setEditing(false);
37
37
  };
38
- // Focus + select-all as soon as the editor mounts (it only renders while editing).
39
- // MUST be identity-stable: an inline ref callback gets detached/re-attached on every
38
+ // Focus + select-all (or caret-at-end) as soon as the editor mounts (it only renders while
39
+ // editing). MUST be identity-stable: an inline ref callback gets detached/re-attached on every
40
40
  // render, so each keystroke's setDraft re-render would re-run el.select() and the next
41
41
  // character would replace everything typed so far (one-character-survives bug).
42
42
  const focusOnMount = useCallback((el) => {
43
43
  if (!el)
44
44
  return;
45
45
  el.focus();
46
- el.select();
47
- }, []);
46
+ if (caret === 'end')
47
+ el.setSelectionRange(el.value.length, el.value.length);
48
+ else
49
+ el.select();
50
+ }, [caret]);
48
51
  if (editing) {
49
52
  const editorClass = cn('block w-full rounded-sm border border-accent bg-surface px-1 -mx-1 text-foreground outline-none ring-2 ring-accent/30', className, inputClassName);
50
53
  if (multiline) {
51
- return (_jsx(AutoGrowTextarea, { ...rest, ref: focusOnMount, "aria-label": ariaLabel, className: cn(editorClass, 'resize-none'), maxLength: 10_000, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: commit, onKeyDown: (e) => {
54
+ return (_jsx(AutoGrowTextarea, { ...rest, ref: focusOnMount, "aria-label": ariaLabel, className: cn(editorClass, 'resize-none'), maxLength: maxLength, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: commit, onKeyDown: (e) => {
52
55
  if (e.key === 'Escape') {
53
56
  // Escape cancels THIS edit only — never bubbles on to close a
54
57
  // surrounding Modal/Drawer in the same keystroke.
@@ -59,7 +62,7 @@ export function InlineEditableText({ value, onChange, canEdit = true, multiline
59
62
  commit();
60
63
  } }));
61
64
  }
62
- return (_jsx(Input, { ...rest, ref: focusOnMount, "aria-label": ariaLabel, className: editorClass, maxLength: 10_000, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: commit, onKeyDown: (e) => {
65
+ return (_jsx(Input, { ...rest, ref: focusOnMount, "aria-label": ariaLabel, className: editorClass, maxLength: maxLength, value: draft, onChange: (e) => setDraft(e.target.value), onBlur: commit, onKeyDown: (e) => {
63
66
  if (e.key === 'Escape') {
64
67
  // Escape cancels THIS edit only — never bubbles on to close a
65
68
  // surrounding Modal/Drawer in the same keystroke.
@@ -1 +1 @@
1
- {"version":3,"file":"InlineEditableText.js","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InlineEditableText.js","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
+ import { type FloatingSide } from '../lib/floatingSide.js';
2
3
  export { FloatingContainer } from '../lib/floatingContainer.js';
3
4
  export { type UseOutsidePressOptions, useOutsidePress } from '../hooks/useOutsidePress.js';
4
5
  /**
@@ -28,7 +29,12 @@ export interface PopoverProps {
28
29
  open?: boolean;
29
30
  onOpenChange?: (open: boolean) => void;
30
31
  align?: 'start' | 'center' | 'end';
31
- side?: 'top' | 'right' | 'bottom' | 'left';
32
+ /**
33
+ * The side to open on when the panel fits there. When it does not, the panel opens on the
34
+ * opposite side, else beside the anchor, else on the roomier of the two — see
35
+ * `floatingSideFor`. Default `bottom`.
36
+ */
37
+ side?: FloatingSide;
32
38
  sideOffset?: number;
33
39
  /** Width of the popover panel. Default: auto (sized to content). */
34
40
  width?: string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/react/components/Popover.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,OAAO,CAAC;AAgB/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE3F;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,KAAe,EACf,IAAe,EACf,UAAc,EACd,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAgB,EAChB,KAAa,EACb,MAAa,EACb,SAAgB,EAChB,KAAK,EACL,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,YAAY,+BAiGd;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAE1D"}
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../src/react/components/Popover.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;AAK1F,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,wBAAwB,CAAC;AAY5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,sBAAsB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE3F;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,KAAe,EACf,IAAe,EACf,UAAc,EACd,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAgB,EAChB,KAAa,EACb,MAAa,EACb,SAAgB,EAChB,KAAK,EACL,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,YAAY,+BAoJd;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAE1D"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as RPopover from '@radix-ui/react-popover';
3
- import { useCallback, useMemo, useRef, useState } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { useOutsidePress } from '../hooks/useOutsidePress.js';
5
5
  import { cn } from '../lib/cn.js';
6
6
  import { CardFrameContext } from './cardFrame.js';
7
7
  import { useFloatingContainer } from '../lib/floatingContainer.js';
8
+ import { floatingSideFor } from '../lib/floatingSide.js';
8
9
  import { FLOATING_ANIMATION, FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, } from '../lib/floatingStyles.js';
9
10
  /*
10
11
  * Re-exported so an app that imports only this subpath (desk, which has no Tailwind and
@@ -43,6 +44,57 @@ export function Popover({ trigger, anchor, children, open, onOpenChange, align =
43
44
  return { current: { getBoundingClientRect: measure } };
44
45
  }, [anchor]);
45
46
  const anchorTrigger = anchor ? (isPoint(anchor) ? anchor.trigger : anchor) : null;
47
+ // Typed as Radix types its Trigger; with `asChild` it is whatever element `trigger` is.
48
+ const triggerRef = useRef(null);
49
+ /*
50
+ * 🔴 The side, chosen from the panel's natural height — Radix's own flip never fires for a
51
+ * belt panel, because the height cap makes it always "fit" (`floatingSide.ts` has the
52
+ * measurement). Measured when the panel attaches, before it paints, and again whenever its
53
+ * content grows (a list that loads after the panel opens). It only ever moves AWAY from a
54
+ * side the panel no longer fits: a list that shrinks while you type never sends it back.
55
+ */
56
+ const [placed, setPlaced] = useState(null);
57
+ const placedRef = useRef(null);
58
+ const observerRef = useRef(null);
59
+ const measureAnchorRef = useRef(() => null);
60
+ measureAnchorRef.current = () => virtualRef?.current.getBoundingClientRect() ?? triggerRef.current?.getBoundingClientRect() ?? null;
61
+ const contentRef = useCallback((node) => {
62
+ observerRef.current?.disconnect();
63
+ observerRef.current = null;
64
+ if (!node) {
65
+ placedRef.current = null;
66
+ setPlaced(null);
67
+ return;
68
+ }
69
+ const choose = () => {
70
+ const rect = measureAnchorRef.current();
71
+ if (!rect)
72
+ return;
73
+ const current = placedRef.current ?? side;
74
+ const viewport = {
75
+ width: window.innerWidth,
76
+ height: window.visualViewport?.height ?? window.innerHeight,
77
+ };
78
+ const panel = { width: node.offsetWidth, height: node.scrollHeight };
79
+ const gap = { offset: sideOffset, padding: FLOATING_COLLISION_PADDING };
80
+ // Keep the side it is on while the panel still fits there.
81
+ if (placedRef.current && floatingSideFor(current, rect, viewport, panel, gap) === current)
82
+ return;
83
+ const next = floatingSideFor(side, rect, viewport, panel, gap);
84
+ if (next === placedRef.current)
85
+ return;
86
+ placedRef.current = next;
87
+ setPlaced(next);
88
+ };
89
+ choose();
90
+ if (typeof ResizeObserver === 'undefined')
91
+ return;
92
+ const observer = new ResizeObserver(choose);
93
+ for (const child of Array.from(node.children))
94
+ observer.observe(child);
95
+ observerRef.current = observer;
96
+ }, [side, sideOffset]);
97
+ useEffect(() => () => observerRef.current?.disconnect(), []);
46
98
  // Always controlled underneath, so the outside-press fallback below can close an
47
99
  // uncontrolled popover too.
48
100
  const [ownOpen, setOwnOpen] = useState(false);
@@ -61,8 +113,6 @@ export function Popover({ trigger, anchor, children, open, onOpenChange, align =
61
113
  * phase, before anything can stop it; when Radix has already closed the panel, its second
62
114
  * close is a no-op. Escape and `modal` stay Radix's.
63
115
  */
64
- // Typed as Radix types its Trigger; with `asChild` it is whatever element `trigger` is.
65
- const triggerRef = useRef(null);
66
116
  const pressInside = useOutsidePress({
67
117
  open: isOpen,
68
118
  onDismiss: () => setOpen(false),
@@ -72,7 +122,7 @@ export function Popover({ trigger, anchor, children, open, onOpenChange, align =
72
122
  // `decideOn` in useOutsidePress.
73
123
  decideOn: modal ? 'pointerdown' : 'click',
74
124
  });
75
- const content = (_jsxs(RPopover.Content, { ...rest, align: align, side: side, sideOffset: sideOffset, collisionPadding: FLOATING_COLLISION_PADDING, style: width != null ? { width } : undefined, "aria-label": label, "data-cb-prose": '', ...(role ? { role } : {}), onOpenAutoFocus: autoFocus ? undefined : (event) => event.preventDefault(), onInteractOutside: (event) => {
125
+ const content = (_jsxs(RPopover.Content, { ...rest, ref: contentRef, align: align, side: placed ?? side, sideOffset: sideOffset, collisionPadding: FLOATING_COLLISION_PADDING, style: width != null ? { width } : undefined, "aria-label": label, "data-cb-prose": '', ...(role ? { role } : {}), onOpenAutoFocus: autoFocus ? undefined : (event) => event.preventDefault(), onInteractOutside: (event) => {
76
126
  // The anchor's own control decides open/shut with its click — see PopoverPoint.
77
127
  if (anchorTrigger?.contains(event.target))
78
128
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../src/react/components/Popover.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAkB,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAA+B,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiE3F,SAAS,OAAO,CAAC,MAA8B;IAC7C,OAAO,OAAQ,MAAuB,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,uBAAuB,IAAI,MAAM,CAAC,CAAC;AAChG,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO,CAAC,EACtB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,CAAC,EACd,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,SAAS,GAAG,IAAI,EAChB,KAAK,EACL,IAAI,EACJ,GAAG,IAAI,EACM;IACb,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC;IAErC,8EAA8E;IAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7B,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC;IACzD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElF,iFAAiF;IACjF,4BAA4B;IAC5B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAAa,EAAE,EAAE;QAChB,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACjE,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAC7B,CAAC;IAEF;;;;;;;;OAQG;IACH,wFAAwF;IACxF,MAAM,UAAU,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,eAAe,CAAC;QAClC,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;QACnC,MAAM,EAAE,KAAK;QACb,qFAAqF;QACrF,iCAAiC;QACjC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;KAC1C,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CACd,MAAC,QAAQ,CAAC,OAAO,OACX,IAAI,EACR,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,0BAA0B,EAC5C,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,gBAChC,KAAK,mBACH,EAAE,KAGZ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1B,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC1E,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,gFAAgF;YAChF,IAAI,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5E,CAAC;QACD,iFAAiF;QACjF,qEAAqE;QACrE,cAAc,EAAE,WAAW,CAAC,cAAc,EAC1C,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,EACtD,SAAS,EAAE,EAAE,CACX,QAAQ;YACN,CAAC,CAAC,mCAAmC;YACrC,CAAC,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,CAAC,EACpC,kBAAkB;QAClB,iFAAiF;QACjF,yFAAyF;QACzF,iDAAiD,EACjD,SAAS,CACV,aAGD,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA6B,EAC9E,SAAS,IAAI,KAAC,QAAQ,CAAC,KAAK,IAAC,SAAS,EAAC,aAAa,GAAG,IACvC,CACpB,CAAC;IAEF,OAAO,CACL,MAAC,QAAQ,CAAC,IAAI,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,aAC7D,UAAU,CAAC,CAAC,CAAC,KAAC,QAAQ,CAAC,MAAM,IAAC,UAAU,EAAE,UAAU,GAAI,CAAC,CAAC,CAAC,IAAI,EAC/D,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,CAAC,OAAO,IAAC,OAAO,QAAC,GAAG,EAAE,UAAU,YACtC,OAAO,GACS,CACpB,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,CAAC,CAAC,KAAC,QAAQ,CAAC,MAAM,IAAC,SAAS,EAAE,SAAS,YAAG,OAAO,GAAmB,CAAC,CAAC,CAAC,OAAO,IACxE,CACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAA8B;IACzD,OAAO,KAAC,QAAQ,CAAC,KAAK,IAAC,OAAO,WAAK,KAAK,GAAI,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../src/react/components/Popover.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { Autocomplete } from '@base-ui/react/autocomplete';
4
4
  import { cn } from '../lib/cn.js';
5
- import { FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE } from '../lib/floatingStyles.js';
5
+ import { BASE_UI_POSITIONER, FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE } from '../lib/floatingStyles.js';
6
6
  /**
7
7
  * The dropdown of an Autocomplete root — every kit field that suggests as you type draws its list
8
8
  * with this one, so the list is the kit's in every theme (`TagsInput` as well as
@@ -12,7 +12,7 @@ import { FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE }
12
12
  */
13
13
  // no-attribute-forward: its root is Base UI's Portal — no element of its own; the popup is the kit's, not the caller's
14
14
  export function SuggestionList({ itemToString = (item) => String(item), renderSuggestion, }) {
15
- return (_jsx(Autocomplete.Portal, { children: _jsx(Autocomplete.Positioner, { sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, className: 'z-[var(--z-popover)]', children: _jsx(Autocomplete.Popup, { className: cn(FLOATING_CONTENT_BASE,
15
+ return (_jsx(Autocomplete.Portal, { children: _jsx(Autocomplete.Positioner, { sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, className: BASE_UI_POSITIONER, children: _jsx(Autocomplete.Popup, { className: cn(FLOATING_CONTENT_BASE,
16
16
  // guardrails-ignore no-raw-overflow: floating popover panel outside the page's ScrollArea, height-capped by max-h-64 — no keyboard-inset concern.
17
17
  'max-h-64 min-w-[var(--anchor-width)] overflow-y-auto p-0 py-1', 'transition-[transform,opacity] duration-100', 'data-[starting-style]:scale-95 data-[starting-style]:opacity-0', 'data-[ending-style]:scale-95 data-[ending-style]:opacity-0'), children: _jsx(Autocomplete.List, { children: (s, index) => (_jsx(Autocomplete.Item, { value: s, index: index, className: cn(FLOATING_ITEM_BASE, 'data-[highlighted]:bg-accent/10 data-[highlighted]:text-accent-strong'), children: renderSuggestion ? renderSuggestion(s) : itemToString(s) }, itemToString(s))) }) }) }) }));
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"suggestionList.js","sourceRoot":"","sources":["../../../src/react/components/suggestionList.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,0BAA0B,EACjC,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9E;;;;;;GAMG;AACH,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAI,EAChC,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACrC,gBAAgB,GAIjB;IACC,OAAO,CACL,KAAC,YAAY,CAAC,MAAM,cAOlB,KAAC,YAAY,CAAC,UAAU,IACtB,UAAU,EAAE,CAAC,EACb,gBAAgB,EAAE,0BAA0B,EAC5C,SAAS,EAAC,sBAAsB,YAEhC,KAAC,YAAY,CAAC,KAAK,IACjB,SAAS,EAAE,EAAE,CACX,qBAAqB;gBACrB,kJAAkJ;gBAClJ,+DAA+D,EAC/D,6CAA6C,EAC7C,gEAAgE,EAChE,4DAA4D,CAC7D,YAKD,KAAC,YAAY,CAAC,IAAI,cACf,CAAC,CAAI,EAAE,KAAa,EAAE,EAAE,CAAC,CACxB,KAAC,YAAY,CAAC,IAAI,IAEhB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,uEAAuE,CAAC,YAEzG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IALpD,YAAY,CAAC,CAAC,CAAC,CAMF,CACrB,GACiB,GACD,GACG,GACN,CACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"suggestionList.js","sourceRoot":"","sources":["../../../src/react/components/suggestionList.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EACrD,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9E;;;;;;GAMG;AACH,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAI,EAChC,YAAY,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACrC,gBAAgB,GAIjB;IACC,OAAO,CACL,KAAC,YAAY,CAAC,MAAM,cAOlB,KAAC,YAAY,CAAC,UAAU,IACtB,UAAU,EAAE,CAAC,EACb,gBAAgB,EAAE,0BAA0B,EAC5C,SAAS,EAAE,kBAAkB,YAE7B,KAAC,YAAY,CAAC,KAAK,IACjB,SAAS,EAAE,EAAE,CACX,qBAAqB;gBACrB,kJAAkJ;gBAClJ,+DAA+D,EAC/D,6CAA6C,EAC7C,gEAAgE,EAChE,4DAA4D,CAC7D,YAKD,KAAC,YAAY,CAAC,IAAI,cACf,CAAC,CAAI,EAAE,KAAa,EAAE,EAAE,CAAC,CACxB,KAAC,YAAY,CAAC,IAAI,IAEhB,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,uEAAuE,CAAC,YAEzG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IALpD,YAAY,CAAC,CAAC,CAAC,CAMF,CACrB,GACiB,GACD,GACG,GACN,CACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Typed-date parsing for {@link DatePicker} (forge task 3764).
3
+ *
4
+ * Accepts what a person actually types, American English first:
5
+ * `2015-12-05`, `12/5/2015` (month first), `12-5-2015`, `12.5.2015`, `Dec 5 2015`,
6
+ * `December 5, 2015`, `5 Dec 2015`, `Dec 5th, 2015`, `2015 Dec 5`. A two-digit year is
7
+ * read as the nearest sensible century: `15` is 2015, and `99` is 1999 (a year more than
8
+ * ten years ahead of today reads as the century before). Anything else — a day that does
9
+ * not exist, a three-digit year, stray words — is refused with a short reason, never
10
+ * guessed at.
11
+ */
12
+ export type DateTextResult = {
13
+ ok: true;
14
+ iso: string;
15
+ } | {
16
+ ok: false;
17
+ reason: string;
18
+ };
19
+ /** Parse typed text into an ISO `YYYY-MM-DD` day. Pure; `now` only picks the century of a 2-digit year. */
20
+ export declare function parseDateText(text: string, now?: Date): DateTextResult;
21
+ //# sourceMappingURL=dateText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateText.d.ts","sourceRoot":"","sources":["../../../src/react/lib/dateText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAkDvF,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,cAAc,CA8BlF"}