@apipass/design-system 7.4.7 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/embedded-styles.js +2 -2
- package/dist/lib/lib.index.cjs +1 -1
- package/dist/lib/lib.index.js +809 -795
- package/dist/lib/lib.index.js.map +1 -1
- package/dist/lib/style.css +1 -1
- package/dist/lib/ui/components/ConfirmDialog/ConfirmDialog.cjs +1 -1
- package/dist/lib/ui/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/lib/ui/components/ConfirmDialog/ConfirmDialog.js +27 -25
- package/dist/lib/ui/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/lib/ui/components/DataTable/DataTable.cjs +1 -1
- package/dist/lib/ui/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/lib/ui/components/DataTable/DataTable.js +210 -174
- package/dist/lib/ui/components/DataTable/DataTable.js.map +1 -1
- package/dist/lib/ui/components/FormModal/FormModal.cjs +1 -1
- package/dist/lib/ui/components/FormModal/FormModal.cjs.map +1 -1
- package/dist/lib/ui/components/FormModal/FormModal.js +22 -21
- package/dist/lib/ui/components/FormModal/FormModal.js.map +1 -1
- package/dist/lib/ui/components/LoadingOverlay/LoadingOverlay.cjs +2 -0
- package/dist/lib/ui/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -0
- package/dist/lib/ui/components/LoadingOverlay/LoadingOverlay.js +36 -0
- package/dist/lib/ui/components/LoadingOverlay/LoadingOverlay.js.map +1 -0
- package/dist/lib/ui/components/PageLoadingState/PageLoadingState.cjs +2 -0
- package/dist/lib/ui/components/PageLoadingState/PageLoadingState.cjs.map +1 -0
- package/dist/lib/ui/components/PageLoadingState/PageLoadingState.js +18 -0
- package/dist/lib/ui/components/PageLoadingState/PageLoadingState.js.map +1 -0
- package/dist/lib/ui/hooks/useAnimationFrame.cjs +2 -0
- package/dist/lib/ui/hooks/useAnimationFrame.cjs.map +1 -0
- package/dist/lib/ui/hooks/useAnimationFrame.js +24 -0
- package/dist/lib/ui/hooks/useAnimationFrame.js.map +1 -0
- package/dist/lib/ui/hooks/useLoadingVisibility.cjs +2 -0
- package/dist/lib/ui/hooks/useLoadingVisibility.cjs.map +1 -0
- package/dist/lib/ui/hooks/useLoadingVisibility.js +34 -0
- package/dist/lib/ui/hooks/useLoadingVisibility.js.map +1 -0
- package/dist/lib/ui/hooks/useMediaQuery.cjs +1 -1
- package/dist/lib/ui/hooks/useMediaQuery.cjs.map +1 -1
- package/dist/lib/ui/hooks/useMediaQuery.js +5 -2
- package/dist/lib/ui/hooks/useMediaQuery.js.map +1 -1
- package/dist/lib/ui/primitives/BrandLoader/BrandLoader.cjs +2 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoader.cjs.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoader.js +165 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoader.js.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoaderProvider.cjs +2 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoaderProvider.cjs.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoaderProvider.js +9 -0
- package/dist/lib/ui/primitives/BrandLoader/BrandLoaderProvider.js.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderSymbolContext.cjs +2 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderSymbolContext.cjs.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderSymbolContext.js +10 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderSymbolContext.js.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderVariants.cjs +2 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderVariants.cjs.map +1 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderVariants.js +166 -0
- package/dist/lib/ui/primitives/BrandLoader/brandLoaderVariants.js.map +1 -0
- package/dist/lib/ui/primitives/Button/Button.cjs +1 -1
- package/dist/lib/ui/primitives/Button/Button.cjs.map +1 -1
- package/dist/lib/ui/primitives/Button/Button.js +72 -49
- package/dist/lib/ui/primitives/Button/Button.js.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.cjs +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.js +235 -229
- package/dist/lib/ui/primitives/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.cjs +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.cjs.map +1 -1
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.js +26 -21
- package/dist/lib/ui/primitives/DateRangePicker/dateRangePresets.js.map +1 -1
- package/dist/lib/ui/primitives/IconButton/IconButton.cjs +1 -1
- package/dist/lib/ui/primitives/IconButton/IconButton.cjs.map +1 -1
- package/dist/lib/ui/primitives/IconButton/IconButton.js +11 -11
- package/dist/lib/ui/primitives/IconButton/IconButton.js.map +1 -1
- package/dist/lib/ui/primitives/LoadingState/LoadingState.cjs +2 -0
- package/dist/lib/ui/primitives/LoadingState/LoadingState.cjs.map +1 -0
- package/dist/lib/ui/primitives/LoadingState/LoadingState.js +33 -0
- package/dist/lib/ui/primitives/LoadingState/LoadingState.js.map +1 -0
- package/dist/lib/ui/primitives/PermissionGate/PermissionGate.cjs +1 -1
- package/dist/lib/ui/primitives/PermissionGate/PermissionGate.cjs.map +1 -1
- package/dist/lib/ui/primitives/PermissionGate/PermissionGate.js +14 -9
- package/dist/lib/ui/primitives/PermissionGate/PermissionGate.js.map +1 -1
- package/dist/lib/ui/primitives/Tree/Tree.cjs +1 -1
- package/dist/lib/ui/primitives/Tree/Tree.cjs.map +1 -1
- package/dist/lib/ui/primitives/Tree/Tree.js +31 -24
- package/dist/lib/ui/primitives/Tree/Tree.js.map +1 -1
- package/dist/types/ui/components/DataTable/DataTable.d.ts +31 -8
- package/dist/types/ui/components/LoadingOverlay/LoadingOverlay.d.ts +13 -0
- package/dist/types/ui/components/PageLoadingState/PageLoadingState.d.ts +4 -0
- package/dist/types/ui/components/index.d.ts +2 -1
- package/dist/types/ui/hooks/index.d.ts +1 -0
- package/dist/types/ui/hooks/useAnimationFrame.d.ts +3 -0
- package/dist/types/ui/hooks/useLoadingVisibility.d.ts +7 -0
- package/dist/types/ui/primitives/BrandLoader/BrandLoader.d.ts +25 -0
- package/dist/types/ui/primitives/BrandLoader/BrandLoaderProvider.d.ts +7 -0
- package/dist/types/ui/primitives/BrandLoader/brandLoaderSymbolContext.d.ts +3 -0
- package/dist/types/ui/primitives/BrandLoader/brandLoaderVariants.d.ts +33 -0
- package/dist/types/ui/primitives/Button/Button.d.ts +1 -0
- package/dist/types/ui/primitives/DateRangePicker/DateRangePicker.d.ts +3 -2
- package/dist/types/ui/primitives/DateRangePicker/dateRangePresets.d.ts +5 -0
- package/dist/types/ui/primitives/LoadingState/LoadingState.d.ts +10 -0
- package/dist/types/ui/primitives/PermissionGate/PermissionGate.d.ts +16 -6
- package/dist/types/ui/primitives/index.d.ts +2 -0
- package/package.json +4 -2
- package/dist/lib/ui/components/WidgetLoadingState/WidgetLoadingState.cjs +0 -2
- package/dist/lib/ui/components/WidgetLoadingState/WidgetLoadingState.cjs.map +0 -1
- package/dist/lib/ui/components/WidgetLoadingState/WidgetLoadingState.js +0 -27
- package/dist/lib/ui/components/WidgetLoadingState/WidgetLoadingState.js.map +0 -1
- package/dist/types/ui/components/WidgetLoadingState/WidgetLoadingState.d.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","sources":["../../../../../src/ui/primitives/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n Time,\n getLocalTimeZone,\n toCalendarDate,\n toCalendarDateTime,\n type DateValue,\n} from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport {\n IconCalendar,\n IconCheck,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from \"icons\";\nimport {\n Button,\n Description,\n Field,\n Label,\n ListBox,\n ListBoxItem,\n Text,\n TextSmallStrong,\n} from \"primitives\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n Button as RACButton,\n CalendarCell as RACCalendarCell,\n CalendarGrid as RACCalendarGrid,\n DateField as RACDateField,\n DateInput as RACDateInput,\n DateSegment as RACDateSegment,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Group as RACGroup,\n Heading as RACHeading,\n I18nProvider as RACI18nProvider,\n Label as RACLabel,\n Popover as RACPopover,\n RangeCalendar as RACRangeCalendar,\n RangeCalendarStateContext,\n useLocale,\n type TimeValue,\n} from \"react-aria-components\";\nimport {\n createDateRangePresets,\n type DateRangePresetKey,\n} from \"./dateRangePresets\";\nimport \"./daterangepicker.css\";\n\nconst dayStartTime = () => new Time(0, 0, 0);\nconst dayEndTime = () => new Time(23, 59, 59);\n\nfunction CalendarAnchorSync({\n onAnchorChange,\n}: {\n onAnchorChange: (anchor: DateValue | null) => void;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const anchor = state?.anchorDate ?? null;\n const anchorKey = anchor?.toString();\n useEffect(() => {\n onAnchorChange(anchor);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorKey]);\n return null;\n}\n\nexport interface DateRangePreset {\n id: string;\n label: string;\n getValue: () => { start: DateValue; end: DateValue };\n}\n\nexport interface DateRangePickerValue {\n preset?: DateRangePreset;\n start: DateValue | null;\n end: DateValue | null;\n}\n\nexport interface DateRangePickerLabels {\n placeholder: string;\n relativeLabel: string;\n absoluteLabel: string;\n startDateLabel: string;\n endDateLabel: string;\n cancelLabel?: string | null;\n applyLabel?: string | null;\n}\n\nexport interface DateRangePickerProps {\n className?: string;\n locale?: string;\n label?: string;\n \"aria-label\"?: string;\n description?: string;\n errorMessage?: string;\n labels: DateRangePickerLabels;\n intervals?: DateRangePreset[];\n presetKeys?: DateRangePresetKey[];\n presetLabels?: Record<DateRangePresetKey, string>;\n hideTime?: boolean;\n minValue?: DateValue;\n maxValue?: DateValue;\n timezone?: string;\n isDisabled?: boolean;\n isRequired?: boolean;\n value?: DateRangePickerValue;\n defaultValue?: DateRangePickerValue;\n onChange?: (value: DateRangePickerValue) => void;\n}\n\ntype DateRange = { start: DateValue; end: DateValue };\n\ntype DraftState = {\n range: DateRange | null;\n startTime: TimeValue | null;\n endTime: TimeValue | null;\n preset?: DateRangePreset;\n};\n\nconst timeFromDateValue = (date: DateValue | null): TimeValue | null =>\n date && \"hour\" in date ? new Time(date.hour, date.minute, date.second) : null;\n\nconst toDraftState = (value?: DateRangePickerValue): DraftState => {\n if (!value || (!value.start && !value.end)) {\n return { range: null, startTime: null, endTime: null, preset: value?.preset };\n }\n const range =\n value.start && value.end\n ? { start: toCalendarDate(value.start), end: toCalendarDate(value.end) }\n : null;\n return {\n range,\n startTime: timeFromDateValue(value.start),\n endTime: timeFromDateValue(value.end),\n preset: value.preset,\n };\n};\n\nconst combineDateAndTime = (\n date: DateValue | undefined,\n time: TimeValue | null,\n hideTime: boolean,\n): DateValue | null => {\n if (!date) return null;\n const calendarDate = toCalendarDate(date);\n if (hideTime || !time) return calendarDate;\n return toCalendarDateTime(calendarDate, time);\n};\n\nconst draftToValue = (\n draft: DraftState,\n hideTime: boolean,\n): DateRangePickerValue => ({\n preset: draft.preset,\n start: combineDateAndTime(draft.range?.start, draft.startTime, hideTime),\n end: combineDateAndTime(draft.range?.end, draft.endTime, hideTime),\n});\n\nexport function DateRangePicker({\n className,\n locale: localeProp,\n label,\n \"aria-label\": ariaLabel,\n description,\n errorMessage,\n labels,\n intervals: intervalsProp,\n presetKeys,\n presetLabels,\n hideTime = false,\n minValue,\n maxValue,\n timezone: timezoneProp,\n isDisabled = false,\n isRequired = false,\n value,\n defaultValue,\n onChange,\n}: DateRangePickerProps) {\n // Sem container explícito o popover faz portal no document.body — fora da\n // shadow root do MFE, sem CSS. Ver ui/hooks/useOverlayPortal.\n const portalContainer = useOverlayPortalContainer();\n const { locale: ambientLocale } = useLocale();\n const locale = localeProp ?? ambientLocale ?? \"pt-BR\";\n const timezone = timezoneProp ?? getLocalTimeZone();\n const {\n placeholder,\n relativeLabel,\n absoluteLabel,\n startDateLabel,\n endDateLabel,\n cancelLabel,\n applyLabel,\n } = labels;\n\n const intervals = useMemo(() => {\n if (intervalsProp) return intervalsProp;\n if (!presetKeys) return undefined;\n if (!presetLabels) {\n throw new Error(\n \"DateRangePicker: `presetLabels` is required when `presetKeys` is provided.\",\n );\n }\n return createDateRangePresets({\n locale,\n timezone,\n include: presetKeys,\n labels: presetLabels,\n });\n }, [intervalsProp, presetKeys, presetLabels, locale, timezone]);\n\n const [committed, setCommitted] = useState<DraftState>(() =>\n toDraftState(value ?? defaultValue),\n );\n const [draft, setDraft] = useState<DraftState>(committed);\n const [previewStart, setPreviewStart] = useState<DateValue | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (value !== undefined) setCommitted(toDraftState(value));\n }, [value]);\n\n const clearPreset = (next: DraftState): DraftState => ({\n ...next,\n preset: undefined,\n });\n\n const withDefaultTimes = (next: DraftState): DraftState =>\n hideTime\n ? next\n : {\n ...next,\n startTime: next.startTime ?? dayStartTime(),\n endTime: next.endTime ?? dayEndTime(),\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setDraft(committed);\n setPreviewStart(null);\n }\n setIsOpen(open);\n };\n\n const selectPreset = (preset: DateRangePreset) => {\n setPreviewStart(null);\n const { start, end } = preset.getValue();\n setDraft({\n range: { start: toCalendarDate(start), end: toCalendarDate(end) },\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset,\n });\n };\n\n const handleAnchorChange = (anchor: DateValue | null) => {\n setPreviewStart(anchor);\n if (anchor && !hideTime) {\n setDraft((current) =>\n clearPreset({\n ...current,\n startTime: current.startTime ?? dayStartTime(),\n }),\n );\n }\n };\n\n const setRange = (range: DateRange | null) => {\n setPreviewStart(null);\n setDraft((current) => withDefaultTimes(clearPreset({ ...current, range })));\n };\n\n const setStartField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n setPreviewStart(null);\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextStartTime = hideTime\n ? current.startTime\n : (time ?? current.startTime ?? dayStartTime());\n const start = combineDateAndTime(date, nextStartTime, hideTime);\n const currentEnd = combineDateAndTime(\n current.range?.end,\n current.endTime,\n hideTime,\n );\n const pushEnd = Boolean(start && currentEnd && currentEnd.compare(start) < 0);\n return clearPreset({\n ...current,\n range: {\n start: date,\n end: pushEnd || !current.range?.end ? date : current.range.end,\n },\n startTime: nextStartTime,\n endTime: pushEnd ? nextStartTime : current.endTime,\n });\n });\n };\n\n const setEndField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextEndTime = hideTime\n ? current.endTime\n : (time ?? current.endTime ?? dayEndTime());\n const end = combineDateAndTime(date, nextEndTime, hideTime);\n const start = combineDateAndTime(\n current.range?.start,\n current.startTime,\n hideTime,\n );\n if (start && end && end.compare(start) < 0) return current;\n return clearPreset({\n ...current,\n range: { start: current.range?.start ?? date, end: date },\n endTime: nextEndTime,\n });\n });\n };\n\n const apply = () => {\n setCommitted(draft);\n onChange?.(draftToValue(draft, hideTime));\n setIsOpen(false);\n };\n\n const cancel = () => setIsOpen(false);\n\n const showFooter = Boolean(cancelLabel || applyLabel);\n\n const triggerText = () => {\n if (committed.preset) return committed.preset.label;\n if (committed.range) {\n const format = (date: DateValue) =>\n date\n .toDate(timezone)\n .toLocaleString(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n ...(hideTime\n ? {}\n : { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n });\n const start = combineDateAndTime(\n committed.range.start,\n committed.startTime,\n hideTime,\n );\n const end = combineDateAndTime(\n committed.range.end,\n committed.endTime,\n hideTime,\n );\n if (start && end) return `${format(start)} — ${format(end)}`;\n }\n return null;\n };\n\n const selectedText = triggerText();\n const hasPresets = Boolean(intervals && intervals.length > 0);\n const fieldGranularity = hideTime ? \"day\" : \"second\";\n const startFieldValue = combineDateAndTime(\n draft.range?.start ?? previewStart ?? undefined,\n draft.startTime,\n hideTime,\n );\n const endFieldValue = combineDateAndTime(\n draft.range?.end ?? undefined,\n draft.endTime,\n hideTime,\n );\n\n const content = (\n <Field className={clsx(className, \"date-range-picker\")}>\n {label && <Label>{label}</Label>}\n <RACDialogTrigger isOpen={isOpen} onOpenChange={handleOpenChange}>\n <RACButton\n className=\"date-range-picker-trigger\"\n isDisabled={isDisabled}\n aria-label={label ? undefined : (ariaLabel ?? placeholder)}\n aria-required={isRequired || undefined}\n data-invalid={errorMessage ? true : undefined}\n >\n {committed.preset ? (\n <span className=\"date-range-picker-preset-badge\">\n <IconCalendar aria-hidden=\"true\" />\n {committed.preset.label}\n </span>\n ) : (\n <span\n className=\"date-range-picker-value\"\n data-placeholder={selectedText ? undefined : true}\n >\n {selectedText ?? placeholder}\n </span>\n )}\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"date-range-picker-popover\"\n placement=\"bottom start\"\n UNSTABLE_portalContainer={portalContainer}\n >\n <RACDialog className=\"date-range-picker-dialog\">\n <div className=\"date-range-picker-body\">\n {hasPresets && (\n <div className=\"date-range-picker-presets\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {relativeLabel}\n </TextSmallStrong>\n <ListBox\n aria-label={relativeLabel}\n className=\"date-range-picker-presets-list\"\n selectionMode=\"single\"\n selectedKeys={draft.preset ? [draft.preset.id] : []}\n items={intervals}\n onSelectionChange={(keys) => {\n const [id] = [...keys];\n const preset = intervals?.find((item) => item.id === id);\n if (preset) selectPreset(preset);\n }}\n >\n {(item) => (\n <ListBoxItem\n id={item.id}\n textValue={item.label}\n className=\"date-range-picker-preset-item\"\n >\n <span>{item.label}</span>\n <IconCheck\n aria-hidden=\"true\"\n className=\"date-range-picker-preset-check\"\n />\n </ListBoxItem>\n )}\n </ListBox>\n </div>\n )}\n\n <div className=\"date-range-picker-absolute\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {absoluteLabel}\n </TextSmallStrong>\n\n <div className=\"date-range-picker-fields\">\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={startFieldValue}\n minValue={minValue}\n maxValue={endFieldValue ?? maxValue}\n onChange={setStartField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {startDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={endFieldValue}\n minValue={startFieldValue ?? minValue}\n maxValue={maxValue}\n onChange={setEndField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {endDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n </div>\n\n <RACRangeCalendar\n className=\"date-range-picker-calendar\"\n aria-label={absoluteLabel}\n value={draft.range}\n minValue={minValue}\n maxValue={maxValue}\n onChange={setRange}\n >\n <CalendarAnchorSync onAnchorChange={handleAnchorChange} />\n <header className=\"date-range-picker-calendar-header\">\n <RACButton\n slot=\"previous\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronLeft aria-hidden=\"true\" />\n </RACButton>\n <RACHeading className=\"date-range-picker-calendar-heading\" />\n <RACButton\n slot=\"next\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronRight aria-hidden=\"true\" />\n </RACButton>\n </header>\n <RACCalendarGrid className=\"date-range-picker-calendar-grid\">\n {(date) => (\n <RACCalendarCell\n date={date}\n className=\"date-range-picker-calendar-cell\"\n />\n )}\n </RACCalendarGrid>\n </RACRangeCalendar>\n </div>\n </div>\n\n {showFooter && (\n <div className=\"date-range-picker-actions\">\n {cancelLabel && (\n <Button variant=\"neutral\" size=\"small\" onPress={cancel}>\n {cancelLabel}\n </Button>\n )}\n {applyLabel && (\n <Button variant=\"primary\" size=\"small\" onPress={apply}>\n {applyLabel}\n </Button>\n )}\n </div>\n )}\n </RACDialog>\n </RACPopover>\n </RACDialogTrigger>\n {description && <Description>{description}</Description>}\n {errorMessage && (\n <Text className=\"date-range-picker-error\" elementType=\"span\">\n {errorMessage}\n </Text>\n )}\n </Field>\n );\n\n return localeProp ? (\n <RACI18nProvider locale={localeProp}>{content}</RACI18nProvider>\n ) : (\n content\n );\n}\n"],"names":["dayStartTime","Time","dayEndTime","CalendarAnchorSync","onAnchorChange","state","useContext","RangeCalendarStateContext","anchor","anchorKey","useEffect","timeFromDateValue","date","toDraftState","value","toCalendarDate","combineDateAndTime","time","hideTime","calendarDate","toCalendarDateTime","draftToValue","draft","_a","_b","DateRangePicker","className","localeProp","label","ariaLabel","description","errorMessage","labels","intervalsProp","presetKeys","presetLabels","minValue","maxValue","timezoneProp","isDisabled","isRequired","defaultValue","onChange","portalContainer","useOverlayPortalContainer","ambientLocale","useLocale","locale","timezone","getLocalTimeZone","placeholder","relativeLabel","absoluteLabel","startDateLabel","endDateLabel","cancelLabel","applyLabel","intervals","useMemo","createDateRangePresets","committed","setCommitted","useState","setDraft","previewStart","setPreviewStart","isOpen","setIsOpen","clearPreset","next","withDefaultTimes","handleOpenChange","open","selectPreset","preset","start","end","handleAnchorChange","current","setRange","range","setStartField","dateTime","nextStartTime","currentEnd","pushEnd","setEndField","nextEndTime","apply","cancel","showFooter","selectedText","format","hasPresets","fieldGranularity","startFieldValue","endFieldValue","content","jsxs","Field","clsx","jsx","Label","RACDialogTrigger","RACButton","IconCalendar","IconChevronDown","RACPopover","RACDialog","TextSmallStrong","ListBox","keys","id","item","ListBoxItem","IconCheck","RACDateField","RACLabel","RACGroup","RACDateInput","segment","RACDateSegment","RACRangeCalendar","IconChevronLeft","RACHeading","IconChevronRight","RACCalendarGrid","RACCalendarCell","Button","Description","Text","RACI18nProvider"],"mappings":";;;;;;;;;;;;;;;;;AAoDA,MAAMA,IAAe,MAAM,IAAIC,EAAK,GAAG,GAAG,CAAC,GACrCC,KAAa,MAAM,IAAID,EAAK,IAAI,IAAI,EAAE;AAE5C,SAASE,GAAmB;AAAA,EAC1B,gBAAAC;AACF,GAEG;AACD,QAAMC,IAAQC,GAAWC,EAAyB,GAC5CC,KAASH,KAAA,gBAAAA,EAAO,eAAc,MAC9BI,IAAYD,KAAA,gBAAAA,EAAQ;AAC1B,SAAAE,GAAU,MAAM;AACd,IAAAN,EAAeI,CAAM;AAAA,EAEvB,GAAG,CAACC,CAAS,CAAC,GACP;AACT;AAuDA,MAAME,IAAoB,CAACC,MACzBA,KAAQ,UAAUA,IAAO,IAAIX,EAAKW,EAAK,MAAMA,EAAK,QAAQA,EAAK,MAAM,IAAI,MAErEC,KAAe,CAACC,MAChB,CAACA,KAAU,CAACA,EAAM,SAAS,CAACA,EAAM,MAC7B,EAAE,OAAO,MAAM,WAAW,MAAM,SAAS,MAAM,QAAQA,KAAA,gBAAAA,EAAO,OAAA,IAMhE;AAAA,EACL,OAJAA,EAAM,SAASA,EAAM,MACjB,EAAE,OAAOC,EAAeD,EAAM,KAAK,GAAG,KAAKC,EAAeD,EAAM,GAAG,MACnE;AAAA,EAGJ,WAAWH,EAAkBG,EAAM,KAAK;AAAA,EACxC,SAASH,EAAkBG,EAAM,GAAG;AAAA,EACpC,QAAQA,EAAM;AAAA,GAIZE,IAAqB,CACzBJ,GACAK,GACAC,MACqB;AACrB,MAAI,CAACN,EAAM,QAAO;AAClB,QAAMO,IAAeJ,EAAeH,CAAI;AACxC,SAAIM,KAAY,CAACD,IAAaE,IACvBC,GAAmBD,GAAcF,CAAI;AAC9C,GAEMI,KAAe,CACnBC,GACAJ,MAAA;;AAC0B;AAAA,IAC1B,QAAQI,EAAM;AAAA,IACd,OAAON,GAAmBO,IAAAD,EAAM,UAAN,gBAAAC,EAAa,OAAOD,EAAM,WAAWJ,CAAQ;AAAA,IACvE,KAAKF,GAAmBQ,IAAAF,EAAM,UAAN,gBAAAE,EAAa,KAAKF,EAAM,SAASJ,CAAQ;AAAA,EACnE;AAAA;AAEO,SAASO,GAAgB;AAAA,EAC9B,WAAAC;AAAA,EACA,QAAQC;AAAA,EACR,OAAAC;AAAA,EACA,cAAcC;AAAA,EACd,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAWC;AAAA,EACX,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAjB,IAAW;AAAA,EACX,UAAAkB;AAAA,EACA,UAAAC;AAAA,EACA,UAAUC;AAAA,EACV,YAAAC,KAAa;AAAA,EACb,YAAAC,KAAa;AAAA,EACb,OAAA1B;AAAA,EACA,cAAA2B;AAAA,EACA,UAAAC;AACF,GAAyB;;AAGvB,QAAMC,KAAkBC,GAAA,GAClB,EAAE,QAAQC,GAAA,IAAkBC,GAAA,GAC5BC,IAASpB,KAAckB,MAAiB,SACxCG,IAAWV,MAAgBW,GAAA,GAC3B;AAAA,IACJ,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,IACExB,IAEEyB,IAAYC,GAAQ,MAAM;AAC9B,QAAIzB,EAAe,QAAOA;AAC1B,QAAKC,GACL;AAAA,UAAI,CAACC;AACH,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAGJ,aAAOwB,GAAuB;AAAA,QAC5B,QAAAZ;AAAA,QACA,UAAAC;AAAA,QACA,SAASd;AAAA,QACT,QAAQC;AAAA,MAAA,CACT;AAAA;AAAA,EACH,GAAG,CAACF,GAAeC,GAAYC,GAAcY,GAAQC,CAAQ,CAAC,GAExD,CAACY,GAAWC,CAAY,IAAIC;AAAA,IAAqB,MACrDjD,GAAaC,KAAS2B,EAAY;AAAA,EAAA,GAE9B,CAACnB,GAAOyC,CAAQ,IAAID,EAAqBF,CAAS,GAClD,CAACI,IAAcC,CAAe,IAAIH,EAA2B,IAAI,GACjE,CAACI,IAAQC,CAAS,IAAIL,EAAS,EAAK;AAE1C,EAAApD,GAAU,MAAM;AACd,IAAII,MAAU,UAAW+C,EAAahD,GAAaC,CAAK,CAAC;AAAA,EAC3D,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMsD,IAAc,CAACC,OAAkC;AAAA,IACrD,GAAGA;AAAA,IACH,QAAQ;AAAA,EAAA,IAGJC,KAAmB,CAACD,MACxBnD,IACImD,IACA;AAAA,IACE,GAAGA;AAAA,IACH,WAAWA,EAAK,aAAarE,EAAA;AAAA,IAC7B,SAASqE,EAAK,WAAWnE,GAAA;AAAA,EAAW,GAGtCqE,KAAmB,CAACC,MAAkB;AAC1C,IAAIA,MACFT,EAASH,CAAS,GAClBK,EAAgB,IAAI,IAEtBE,EAAUK,CAAI;AAAA,EAChB,GAEMC,KAAe,CAACC,MAA4B;AAChD,IAAAT,EAAgB,IAAI;AACpB,UAAM,EAAE,OAAAU,GAAO,KAAAC,MAAQF,EAAO,SAAA;AAC9B,IAAAX,EAAS;AAAA,MACP,OAAO,EAAE,OAAOhD,EAAe4D,CAAK,GAAG,KAAK5D,EAAe6D,CAAG,EAAA;AAAA,MAC9D,WAAWjE,EAAkBgE,CAAK;AAAA,MAClC,SAAShE,EAAkBiE,CAAG;AAAA,MAC9B,QAAAF;AAAA,IAAA,CACD;AAAA,EACH,GAEMG,KAAqB,CAACrE,MAA6B;AACvD,IAAAyD,EAAgBzD,CAAM,GAClBA,KAAU,CAACU,KACb6C;AAAA,MAAS,CAACe,MACRV,EAAY;AAAA,QACV,GAAGU;AAAA,QACH,WAAWA,EAAQ,aAAa9E,EAAA;AAAA,MAAa,CAC9C;AAAA,IAAA;AAAA,EAGP,GAEM+E,KAAW,CAACC,MAA4B;AAC5C,IAAAf,EAAgB,IAAI,GACpBF,EAAS,CAACe,MAAYR,GAAiBF,EAAY,EAAE,GAAGU,GAAS,OAAAE,EAAA,CAAO,CAAC,CAAC;AAAA,EAC5E,GAEMC,KAAgB,CAACC,MAA+B;AACpD,QAAI,CAACA,EAAU;AACf,IAAAjB,EAAgB,IAAI;AACpB,UAAMrD,IAAOG,EAAemE,CAAQ,GAC9BjE,IAAON,EAAkBuE,CAAQ;AACvC,IAAAnB,EAAS,CAACe,MAAY;;AACpB,YAAMK,IAAgBjE,IAClB4D,EAAQ,YACP7D,KAAQ6D,EAAQ,aAAa9E,EAAA,GAC5B2E,IAAQ3D,EAAmBJ,GAAMuE,GAAejE,CAAQ,GACxDkE,IAAapE;AAAA,SACjBO,IAAAuD,EAAQ,UAAR,gBAAAvD,EAAe;AAAA,QACfuD,EAAQ;AAAA,QACR5D;AAAA,MAAA,GAEImE,IAAU,GAAQV,KAASS,KAAcA,EAAW,QAAQT,CAAK,IAAI;AAC3E,aAAOP,EAAY;AAAA,QACjB,GAAGU;AAAA,QACH,OAAO;AAAA,UACL,OAAOlE;AAAA,UACP,KAAKyE,KAAW,GAAC7D,KAAAsD,EAAQ,UAAR,QAAAtD,GAAe,OAAMZ,IAAOkE,EAAQ,MAAM;AAAA,QAAA;AAAA,QAE7D,WAAWK;AAAA,QACX,SAASE,IAAUF,IAAgBL,EAAQ;AAAA,MAAA,CAC5C;AAAA,IACH,CAAC;AAAA,EACH,GAEMQ,KAAc,CAACJ,MAA+B;AAClD,QAAI,CAACA,EAAU;AACf,UAAMtE,IAAOG,EAAemE,CAAQ,GAC9BjE,IAAON,EAAkBuE,CAAQ;AACvC,IAAAnB,EAAS,CAACe,MAAY;;AACpB,YAAMS,IAAcrE,IAChB4D,EAAQ,UACP7D,KAAQ6D,EAAQ,WAAW5E,GAAA,GAC1B0E,IAAM5D,EAAmBJ,GAAM2E,GAAarE,CAAQ,GACpDyD,IAAQ3D;AAAA,SACZO,IAAAuD,EAAQ,UAAR,gBAAAvD,EAAe;AAAA,QACfuD,EAAQ;AAAA,QACR5D;AAAA,MAAA;AAEF,aAAIyD,KAASC,KAAOA,EAAI,QAAQD,CAAK,IAAI,IAAUG,IAC5CV,EAAY;AAAA,QACjB,GAAGU;AAAA,QACH,OAAO,EAAE,SAAOtD,IAAAsD,EAAQ,UAAR,gBAAAtD,EAAe,UAASZ,GAAM,KAAKA,EAAA;AAAA,QACnD,SAAS2E;AAAA,MAAA,CACV;AAAA,IACH,CAAC;AAAA,EACH,GAEMC,KAAQ,MAAM;AAClB,IAAA3B,EAAavC,CAAK,GAClBoB,KAAA,QAAAA,EAAWrB,GAAaC,GAAOJ,CAAQ,IACvCiD,EAAU,EAAK;AAAA,EACjB,GAEMsB,KAAS,MAAMtB,EAAU,EAAK,GAE9BuB,KAAa,GAAQnC,KAAeC,IA+BpCmC,KA7Bc,MAAM;AACxB,QAAI/B,EAAU,OAAQ,QAAOA,EAAU,OAAO;AAC9C,QAAIA,EAAU,OAAO;AACnB,YAAMgC,IAAS,CAAChF,MACdA,EACG,OAAOoC,CAAQ,EACf,eAAeD,GAAQ;AAAA,QACtB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,GAAI7B,IACA,CAAA,IACA,EAAE,MAAM,WAAW,QAAQ,WAAW,QAAQ,UAAA;AAAA,MAAU,CAC7D,GACCyD,IAAQ3D;AAAA,QACZ4C,EAAU,MAAM;AAAA,QAChBA,EAAU;AAAA,QACV1C;AAAA,MAAA,GAEI0D,IAAM5D;AAAA,QACV4C,EAAU,MAAM;AAAA,QAChBA,EAAU;AAAA,QACV1C;AAAA,MAAA;AAEF,UAAIyD,KAASC,EAAK,QAAO,GAAGgB,EAAOjB,CAAK,CAAC,MAAMiB,EAAOhB,CAAG,CAAC;AAAA,IAC5D;AACA,WAAO;AAAA,EACT,GAEqB,GACfiB,KAAa,GAAQpC,KAAaA,EAAU,SAAS,IACrDqC,IAAmB5E,IAAW,QAAQ,UACtC6E,IAAkB/E;AAAA,MACtBO,IAAAD,EAAM,UAAN,gBAAAC,EAAa,UAASyC,MAAgB;AAAA,IACtC1C,EAAM;AAAA,IACNJ;AAAA,EAAA,GAEI8E,IAAgBhF;AAAA,MACpBQ,KAAAF,EAAM,UAAN,gBAAAE,GAAa,QAAO;AAAA,IACpBF,EAAM;AAAA,IACNJ;AAAA,EAAA,GAGI+E,IACJ,gBAAAC,EAACC,IAAA,EAAM,WAAWC,GAAK1E,GAAW,mBAAmB,GAClD,UAAA;AAAA,IAAAE,KAAS,gBAAAyE,EAACC,MAAO,UAAA1E,EAAA,CAAM;AAAA,IACxB,gBAAAsE,EAACK,IAAA,EAAiB,QAAArC,IAAgB,cAAcK,IAC9C,UAAA;AAAA,MAAA,gBAAA2B;AAAA,QAACM;AAAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,YAAAjE;AAAA,UACA,cAAYX,IAAQ,SAAaC,KAAaqB;AAAA,UAC9C,iBAAeV,MAAc;AAAA,UAC7B,gBAAcT,IAAe,KAAO;AAAA,UAEnC,UAAA;AAAA,YAAA6B,EAAU,SACT,gBAAAsC,EAAC,QAAA,EAAK,WAAU,kCACd,UAAA;AAAA,cAAA,gBAAAG,EAACI,GAAA,EAAa,eAAY,OAAA,CAAO;AAAA,cAChC7C,EAAU,OAAO;AAAA,YAAA,EAAA,CACpB,IAEA,gBAAAyC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,oBAAkBV,IAAe,SAAY;AAAA,gBAE5C,UAAAA,KAAgBzC;AAAA,cAAA;AAAA,YAAA;AAAA,YAGrB,gBAAAmD,EAACK,IAAA,EAAgB,eAAY,OAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEtC,gBAAAL;AAAA,QAACM;AAAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,WAAU;AAAA,UACV,0BAA0BhE;AAAA,UAE1B,UAAA,gBAAAuD,EAACU,IAAA,EAAU,WAAU,4BACnB,UAAA;AAAA,YAAA,gBAAAV,EAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,cAAAL,MACC,gBAAAK,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,gBAAA,gBAAAG,EAACQ,IAAA,EAAgB,WAAU,mCACxB,UAAA1D,GACH;AAAA,gBACA,gBAAAkD;AAAA,kBAACS;AAAA,kBAAA;AAAA,oBACC,cAAY3D;AAAA,oBACZ,WAAU;AAAA,oBACV,eAAc;AAAA,oBACd,cAAc7B,EAAM,SAAS,CAACA,EAAM,OAAO,EAAE,IAAI,CAAA;AAAA,oBACjD,OAAOmC;AAAA,oBACP,mBAAmB,CAACsD,MAAS;AAC3B,4BAAM,CAACC,CAAE,IAAI,CAAC,GAAGD,CAAI,GACfrC,IAASjB,KAAA,gBAAAA,EAAW,KAAK,CAACwD,MAASA,EAAK,OAAOD;AACrD,sBAAItC,QAAqBA,CAAM;AAAA,oBACjC;AAAA,oBAEC,WAACuC,MACA,gBAAAf;AAAA,sBAACgB;AAAA,sBAAA;AAAA,wBACC,IAAID,EAAK;AAAA,wBACT,WAAWA,EAAK;AAAA,wBAChB,WAAU;AAAA,wBAEV,UAAA;AAAA,0BAAA,gBAAAZ,EAAC,QAAA,EAAM,YAAK,MAAA,CAAM;AAAA,0BAClB,gBAAAA;AAAA,4BAACc;AAAA,4BAAA;AAAA,8BACC,eAAY;AAAA,8BACZ,WAAU;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBACZ;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,cAEJ,GACF;AAAA,cAGF,gBAAAjB,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,gBAAA,gBAAAG,EAACQ,IAAA,EAAgB,WAAU,mCACxB,UAAAzD,GACH;AAAA,gBAEA,gBAAA8C,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,kBAAA,gBAAAA;AAAA,oBAACkB;AAAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,aAAatB;AAAA,sBACb,OAAOC;AAAA,sBACP,UAAA3D;AAAA,sBACA,UAAU4D,KAAiB3D;AAAA,sBAC3B,UAAU4C;AAAA,sBAEV,UAAA;AAAA,wBAAA,gBAAAoB,EAACgB,IAAA,EAAS,WAAU,iCACjB,UAAAhE,IACH;AAAA,wBACA,gBAAA6C,EAACoB,IAAA,EAAS,WAAU,2BAClB,UAAA;AAAA,0BAAA,gBAAAjB,EAACkB,MACE,UAAA,CAACC,MAAY,gBAAAnB,EAACoB,IAAA,EAAe,SAAAD,GAAkB,GAClD;AAAA,0BACA,gBAAAnB,EAACI,GAAA,EAAa,eAAY,OAAA,CAAO;AAAA,wBAAA,EAAA,CACnC;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGF,gBAAAP;AAAA,oBAACkB;AAAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,aAAatB;AAAA,sBACb,OAAOE;AAAA,sBACP,UAAUD,KAAmB3D;AAAA,sBAC7B,UAAAC;AAAA,sBACA,UAAUiD;AAAA,sBAEV,UAAA;AAAA,wBAAA,gBAAAe,EAACgB,IAAA,EAAS,WAAU,iCACjB,UAAA/D,IACH;AAAA,wBACA,gBAAA4C,EAACoB,IAAA,EAAS,WAAU,2BAClB,UAAA;AAAA,0BAAA,gBAAAjB,EAACkB,MACE,UAAA,CAACC,MAAY,gBAAAnB,EAACoB,IAAA,EAAe,SAAAD,GAAkB,GAClD;AAAA,0BACA,gBAAAnB,EAACI,GAAA,EAAa,eAAY,OAAA,CAAO;AAAA,wBAAA,EAAA,CACnC;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACF,GACF;AAAA,gBAEA,gBAAAP;AAAA,kBAACwB;AAAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,cAAYtE;AAAA,oBACZ,OAAO9B,EAAM;AAAA,oBACb,UAAAc;AAAA,oBACA,UAAAC;AAAA,oBACA,UAAU0C;AAAA,oBAEV,UAAA;AAAA,sBAAA,gBAAAsB,EAAClG,IAAA,EAAmB,gBAAgB0E,GAAA,CAAoB;AAAA,sBACxD,gBAAAqB,EAAC,UAAA,EAAO,WAAU,qCAChB,UAAA;AAAA,wBAAA,gBAAAG;AAAA,0BAACG;AAAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,WAAU;AAAA,4BAEV,UAAA,gBAAAH,EAACsB,IAAA,EAAgB,eAAY,OAAA,CAAO;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEtC,gBAAAtB,EAACuB,IAAA,EAAW,WAAU,qCAAA,CAAqC;AAAA,wBAC3D,gBAAAvB;AAAA,0BAACG;AAAAA,0BAAA;AAAA,4BACC,MAAK;AAAA,4BACL,WAAU;AAAA,4BAEV,UAAA,gBAAAH,EAACwB,IAAA,EAAiB,eAAY,OAAA,CAAO;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACvC,GACF;AAAA,sBACA,gBAAAxB,EAACyB,IAAA,EAAgB,WAAU,mCACxB,WAAClH,MACA,gBAAAyF;AAAA,wBAAC0B;AAAAA,wBAAA;AAAA,0BACC,MAAAnH;AAAA,0BACA,WAAU;AAAA,wBAAA;AAAA,sBAAA,EACZ,CAEJ;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,EAAA,CACF;AAAA,YAAA,GACF;AAAA,YAEC8E,MACC,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,cAAA3C,KACC,gBAAA8C,EAAC2B,MAAO,SAAQ,WAAU,MAAK,SAAQ,SAASvC,IAC7C,UAAAlC,EAAA,CACH;AAAA,cAEDC,uBACEwE,IAAA,EAAO,SAAQ,WAAU,MAAK,SAAQ,SAASxC,IAC7C,UAAAhC,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GACF;AAAA,IACC1B,KAAe,gBAAAuE,EAAC4B,IAAA,EAAa,UAAAnG,EAAA,CAAY;AAAA,IACzCC,KACC,gBAAAsE,EAAC6B,IAAA,EAAK,WAAU,2BAA0B,aAAY,QACnD,UAAAnG,EAAA,CACH;AAAA,EAAA,GAEJ;AAGF,SAAOJ,IACL,gBAAA0E,EAAC8B,IAAA,EAAgB,QAAQxG,GAAa,aAAQ,IAE9CsE;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sources":["../../../../../src/ui/primitives/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import {\n Time,\n getLocalTimeZone,\n toCalendarDate,\n toCalendarDateTime,\n toTimeZone,\n type DateValue,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { useOverlayPortalContainer } from \"hooks\";\nimport {\n IconCalendar,\n IconCheck,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from \"icons\";\nimport {\n Button,\n Description,\n Field,\n Label,\n ListBox,\n ListBoxItem,\n Text,\n TextSmallStrong,\n} from \"primitives\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n Button as RACButton,\n CalendarCell as RACCalendarCell,\n CalendarGrid as RACCalendarGrid,\n DateField as RACDateField,\n DateInput as RACDateInput,\n DateSegment as RACDateSegment,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Group as RACGroup,\n Heading as RACHeading,\n I18nProvider as RACI18nProvider,\n Label as RACLabel,\n Popover as RACPopover,\n RangeCalendar as RACRangeCalendar,\n RangeCalendarStateContext,\n useLocale,\n type TimeValue,\n} from \"react-aria-components\";\nimport {\n createDateRangePresets,\n type DateRangePresetKey,\n type FirstDayOfWeek,\n} from \"./dateRangePresets\";\nimport \"./daterangepicker.css\";\n\nconst dayStartTime = () => new Time(0, 0, 0);\nconst dayEndTime = () => new Time(23, 59, 59);\n\nfunction CalendarAnchorSync({\n onAnchorChange,\n}: {\n onAnchorChange: (anchor: DateValue | null) => void;\n}) {\n const state = useContext(RangeCalendarStateContext);\n const anchor = state?.anchorDate ?? null;\n const anchorKey = anchor?.toString();\n useEffect(() => {\n onAnchorChange(anchor);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorKey]);\n return null;\n}\n\nexport interface DateRangePreset {\n id: string;\n label: string;\n getValue: () => { start: DateValue; end: DateValue };\n}\n\nexport interface DateRangePickerValue {\n preset?: DateRangePreset;\n start: DateValue | null;\n end: DateValue | null;\n}\n\nexport interface DateRangePickerLabels {\n placeholder: string;\n relativeLabel: string;\n absoluteLabel: string;\n startDateLabel: string;\n endDateLabel: string;\n cancelLabel?: string | null;\n applyLabel?: string | null;\n}\n\nexport interface DateRangePickerProps {\n className?: string;\n locale?: string;\n label?: string;\n \"aria-label\"?: string;\n description?: string;\n errorMessage?: string;\n labels: DateRangePickerLabels;\n intervals?: DateRangePreset[];\n presetKeys?: DateRangePresetKey[];\n presetLabels?: Record<DateRangePresetKey, string>;\n hideTime?: boolean;\n minValue?: DateValue;\n maxValue?: DateValue;\n timezone?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n isDisabled?: boolean;\n isRequired?: boolean;\n value?: DateRangePickerValue;\n defaultValue?: DateRangePickerValue;\n onChange?: (value: DateRangePickerValue) => void;\n}\n\ntype DateRange = { start: DateValue; end: DateValue };\n\ntype DraftState = {\n range: DateRange | null;\n startTime: TimeValue | null;\n endTime: TimeValue | null;\n preset?: DateRangePreset;\n};\n\nconst timeFromDateValue = (date: DateValue | null): TimeValue | null =>\n date && \"hour\" in date ? new Time(date.hour, date.minute, date.second) : null;\n\nconst inTimeZone = (date: DateValue, timezone: string): DateValue =>\n \"timeZone\" in date ? toTimeZone(date as ZonedDateTime, timezone) : date;\n\nconst toDraftState = (value: DateRangePickerValue | undefined, timezone: string): DraftState => {\n if (!value || (!value.start && !value.end)) {\n return { range: null, startTime: null, endTime: null, preset: value?.preset };\n }\n const start: DateValue | null = value.start && inTimeZone(value.start, timezone);\n const end: DateValue | null = value.end && inTimeZone(value.end, timezone);\n const range =\n start && end ? { start: toCalendarDate(start), end: toCalendarDate(end) } : null;\n return {\n range,\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset: value.preset,\n };\n};\n\nconst combineDateAndTime = (\n date: DateValue | undefined,\n time: TimeValue | null,\n hideTime: boolean,\n): DateValue | null => {\n if (!date) return null;\n const calendarDate = toCalendarDate(date);\n if (hideTime || !time) return calendarDate;\n return toCalendarDateTime(calendarDate, time);\n};\n\nconst draftToValue = (\n draft: DraftState,\n hideTime: boolean,\n): DateRangePickerValue => ({\n preset: draft.preset,\n start: combineDateAndTime(draft.range?.start, draft.startTime, hideTime),\n end: combineDateAndTime(draft.range?.end, draft.endTime, hideTime),\n});\n\nexport function DateRangePicker({\n className,\n locale: localeProp,\n label,\n \"aria-label\": ariaLabel,\n description,\n errorMessage,\n labels,\n intervals: intervalsProp,\n presetKeys,\n presetLabels,\n hideTime = false,\n minValue,\n maxValue,\n timezone: timezoneProp,\n firstDayOfWeek,\n isDisabled = false,\n isRequired = false,\n value,\n defaultValue,\n onChange,\n}: DateRangePickerProps) {\n // Sem container explícito o popover faz portal no document.body — fora da\n // shadow root do MFE, sem CSS. Ver ui/hooks/useOverlayPortal.\n const portalContainer = useOverlayPortalContainer();\n const { locale: ambientLocale } = useLocale();\n const locale = localeProp ?? ambientLocale ?? \"pt-BR\";\n const timezone = timezoneProp ?? getLocalTimeZone();\n const {\n placeholder,\n relativeLabel,\n absoluteLabel,\n startDateLabel,\n endDateLabel,\n cancelLabel,\n applyLabel,\n } = labels;\n\n const intervals = useMemo(() => {\n if (intervalsProp) return intervalsProp;\n if (!presetKeys) return undefined;\n if (!presetLabels) {\n throw new Error(\n \"DateRangePicker: `presetLabels` is required when `presetKeys` is provided.\",\n );\n }\n return createDateRangePresets({\n timezone: timezoneProp,\n firstDayOfWeek,\n include: presetKeys,\n labels: presetLabels,\n });\n }, [intervalsProp, presetKeys, presetLabels, firstDayOfWeek, timezoneProp]);\n\n const [committed, setCommitted] = useState<DraftState>(() =>\n toDraftState(value ?? defaultValue, timezone),\n );\n const [draft, setDraft] = useState<DraftState>(committed);\n const [previewStart, setPreviewStart] = useState<DateValue | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (value !== undefined) setCommitted(toDraftState(value, timezone));\n }, [value, timezone]);\n\n const clearPreset = (next: DraftState): DraftState => ({\n ...next,\n preset: undefined,\n });\n\n const withDefaultTimes = (next: DraftState): DraftState =>\n hideTime\n ? next\n : {\n ...next,\n startTime: next.startTime ?? dayStartTime(),\n endTime: next.endTime ?? dayEndTime(),\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setDraft(committed);\n setPreviewStart(null);\n }\n setIsOpen(open);\n };\n\n const selectPreset = (preset: DateRangePreset) => {\n setPreviewStart(null);\n const presetRange = preset.getValue();\n const start: DateValue = inTimeZone(presetRange.start, timezone);\n const end: DateValue = inTimeZone(presetRange.end, timezone);\n setDraft({\n range: { start: toCalendarDate(start), end: toCalendarDate(end) },\n startTime: timeFromDateValue(start),\n endTime: timeFromDateValue(end),\n preset,\n });\n };\n\n const handleAnchorChange = (anchor: DateValue | null) => {\n setPreviewStart(anchor);\n if (anchor && !hideTime) {\n setDraft((current) =>\n clearPreset({\n ...current,\n startTime: current.startTime ?? dayStartTime(),\n }),\n );\n }\n };\n\n const setRange = (range: DateRange | null) => {\n setPreviewStart(null);\n setDraft((current) => withDefaultTimes(clearPreset({ ...current, range })));\n };\n\n const setStartField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n setPreviewStart(null);\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextStartTime = hideTime\n ? current.startTime\n : (time ?? current.startTime ?? dayStartTime());\n const start = combineDateAndTime(date, nextStartTime, hideTime);\n const currentEnd = combineDateAndTime(\n current.range?.end,\n current.endTime,\n hideTime,\n );\n const pushEnd = Boolean(start && currentEnd && currentEnd.compare(start) < 0);\n return clearPreset({\n ...current,\n range: {\n start: date,\n end: pushEnd || !current.range?.end ? date : current.range.end,\n },\n startTime: nextStartTime,\n endTime: pushEnd ? nextStartTime : current.endTime,\n });\n });\n };\n\n const setEndField = (dateTime: DateValue | null) => {\n if (!dateTime) return;\n const date = toCalendarDate(dateTime);\n const time = timeFromDateValue(dateTime);\n setDraft((current) => {\n const nextEndTime = hideTime\n ? current.endTime\n : (time ?? current.endTime ?? dayEndTime());\n const end = combineDateAndTime(date, nextEndTime, hideTime);\n const start = combineDateAndTime(\n current.range?.start,\n current.startTime,\n hideTime,\n );\n if (start && end && end.compare(start) < 0) return current;\n return clearPreset({\n ...current,\n range: { start: current.range?.start ?? date, end: date },\n endTime: nextEndTime,\n });\n });\n };\n\n const apply = () => {\n setCommitted(draft);\n onChange?.(draftToValue(draft, hideTime));\n setIsOpen(false);\n };\n\n const cancel = () => setIsOpen(false);\n\n const showFooter = Boolean(cancelLabel || applyLabel);\n\n const triggerText = () => {\n if (committed.preset) return committed.preset.label;\n if (committed.range) {\n const format = (date: DateValue) =>\n date\n .toDate(timezone)\n .toLocaleString(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n ...(hideTime\n ? {}\n : { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n });\n const start = combineDateAndTime(\n committed.range.start,\n committed.startTime,\n hideTime,\n );\n const end = combineDateAndTime(\n committed.range.end,\n committed.endTime,\n hideTime,\n );\n if (start && end) return `${format(start)} — ${format(end)}`;\n }\n return null;\n };\n\n const selectedText = triggerText();\n const hasPresets = Boolean(intervals && intervals.length > 0);\n const fieldGranularity = hideTime ? \"day\" : \"second\";\n const startFieldValue = combineDateAndTime(\n draft.range?.start ?? previewStart ?? undefined,\n draft.startTime,\n hideTime,\n );\n const endFieldValue = combineDateAndTime(\n draft.range?.end ?? undefined,\n draft.endTime,\n hideTime,\n );\n\n const content = (\n <Field className={clsx(className, \"date-range-picker\")}>\n {label && <Label>{label}</Label>}\n <RACDialogTrigger isOpen={isOpen} onOpenChange={handleOpenChange}>\n <RACButton\n className=\"date-range-picker-trigger\"\n isDisabled={isDisabled}\n aria-label={label ? undefined : (ariaLabel ?? placeholder)}\n aria-required={isRequired || undefined}\n data-invalid={errorMessage ? true : undefined}\n >\n {committed.preset ? (\n <span className=\"date-range-picker-preset-badge\">\n <IconCalendar aria-hidden=\"true\" />\n {committed.preset.label}\n </span>\n ) : (\n <span\n className=\"date-range-picker-value\"\n data-placeholder={selectedText ? undefined : true}\n >\n {selectedText ?? placeholder}\n </span>\n )}\n <IconChevronDown aria-hidden=\"true\" />\n </RACButton>\n <RACPopover\n className=\"date-range-picker-popover\"\n placement=\"bottom start\"\n UNSTABLE_portalContainer={portalContainer}\n >\n <RACDialog className=\"date-range-picker-dialog\">\n <div className=\"date-range-picker-body\">\n {hasPresets && (\n <div className=\"date-range-picker-presets\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {relativeLabel}\n </TextSmallStrong>\n <ListBox\n aria-label={relativeLabel}\n className=\"date-range-picker-presets-list\"\n selectionMode=\"single\"\n selectedKeys={draft.preset ? [draft.preset.id] : []}\n items={intervals}\n onSelectionChange={(keys) => {\n const [id] = [...keys];\n const preset = intervals?.find((item) => item.id === id);\n if (preset) selectPreset(preset);\n }}\n >\n {(item) => (\n <ListBoxItem\n id={item.id}\n textValue={item.label}\n className=\"date-range-picker-preset-item\"\n >\n <span>{item.label}</span>\n <IconCheck\n aria-hidden=\"true\"\n className=\"date-range-picker-preset-check\"\n />\n </ListBoxItem>\n )}\n </ListBox>\n </div>\n )}\n\n <div className=\"date-range-picker-absolute\">\n <TextSmallStrong className=\"date-range-picker-section-title\">\n {absoluteLabel}\n </TextSmallStrong>\n\n <div className=\"date-range-picker-fields\">\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={startFieldValue}\n minValue={minValue}\n maxValue={endFieldValue ?? maxValue}\n onChange={setStartField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {startDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n\n <RACDateField\n className=\"date-range-picker-datefield\"\n granularity={fieldGranularity}\n value={endFieldValue}\n minValue={startFieldValue ?? minValue}\n maxValue={maxValue}\n onChange={setEndField}\n >\n <RACLabel className=\"date-range-picker-field-label\">\n {endDateLabel}\n </RACLabel>\n <RACGroup className=\"date-range-picker-input\">\n <RACDateInput>\n {(segment) => <RACDateSegment segment={segment} />}\n </RACDateInput>\n <IconCalendar aria-hidden=\"true\" />\n </RACGroup>\n </RACDateField>\n </div>\n\n <RACRangeCalendar\n className=\"date-range-picker-calendar\"\n aria-label={absoluteLabel}\n value={draft.range}\n minValue={minValue}\n maxValue={maxValue}\n onChange={setRange}\n >\n <CalendarAnchorSync onAnchorChange={handleAnchorChange} />\n <header className=\"date-range-picker-calendar-header\">\n <RACButton\n slot=\"previous\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronLeft aria-hidden=\"true\" />\n </RACButton>\n <RACHeading className=\"date-range-picker-calendar-heading\" />\n <RACButton\n slot=\"next\"\n className=\"date-range-picker-calendar-nav\"\n >\n <IconChevronRight aria-hidden=\"true\" />\n </RACButton>\n </header>\n <RACCalendarGrid className=\"date-range-picker-calendar-grid\">\n {(date) => (\n <RACCalendarCell\n date={date}\n className=\"date-range-picker-calendar-cell\"\n />\n )}\n </RACCalendarGrid>\n </RACRangeCalendar>\n </div>\n </div>\n\n {showFooter && (\n <div className=\"date-range-picker-actions\">\n {cancelLabel && (\n <Button variant=\"neutral\" size=\"small\" onPress={cancel}>\n {cancelLabel}\n </Button>\n )}\n {applyLabel && (\n <Button variant=\"primary\" size=\"small\" onPress={apply}>\n {applyLabel}\n </Button>\n )}\n </div>\n )}\n </RACDialog>\n </RACPopover>\n </RACDialogTrigger>\n {description && <Description>{description}</Description>}\n {errorMessage && (\n <Text className=\"date-range-picker-error\" elementType=\"span\">\n {errorMessage}\n </Text>\n )}\n </Field>\n );\n\n return localeProp ? (\n <RACI18nProvider locale={localeProp}>{content}</RACI18nProvider>\n ) : (\n content\n );\n}\n"],"names":["dayStartTime","Time","dayEndTime","CalendarAnchorSync","onAnchorChange","state","useContext","RangeCalendarStateContext","anchor","anchorKey","useEffect","timeFromDateValue","date","inTimeZone","timezone","toTimeZone","toDraftState","value","start","end","toCalendarDate","combineDateAndTime","time","hideTime","calendarDate","toCalendarDateTime","draftToValue","draft","_a","_b","DateRangePicker","className","localeProp","label","ariaLabel","description","errorMessage","labels","intervalsProp","presetKeys","presetLabels","minValue","maxValue","timezoneProp","firstDayOfWeek","isDisabled","isRequired","defaultValue","onChange","portalContainer","useOverlayPortalContainer","ambientLocale","useLocale","locale","getLocalTimeZone","placeholder","relativeLabel","absoluteLabel","startDateLabel","endDateLabel","cancelLabel","applyLabel","intervals","useMemo","createDateRangePresets","committed","setCommitted","useState","setDraft","previewStart","setPreviewStart","isOpen","setIsOpen","clearPreset","next","withDefaultTimes","handleOpenChange","open","selectPreset","preset","presetRange","handleAnchorChange","current","setRange","range","setStartField","dateTime","nextStartTime","currentEnd","pushEnd","setEndField","nextEndTime","apply","cancel","showFooter","selectedText","format","hasPresets","fieldGranularity","startFieldValue","endFieldValue","content","jsxs","Field","clsx","jsx","Label","RACDialogTrigger","RACButton","IconCalendar","IconChevronDown","RACPopover","RACDialog","TextSmallStrong","ListBox","keys","id","item","ListBoxItem","IconCheck","RACDateField","RACLabel","RACGroup","RACDateInput","segment","RACDateSegment","RACRangeCalendar","IconChevronLeft","RACHeading","IconChevronRight","RACCalendarGrid","RACCalendarCell","Button","Description","Text","RACI18nProvider"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@internationalized/date"),c=["last5m","last15m","last30m","last1h","last3h","last6h","last12h","last24h","today","yesterday","last7d","last30d","thisWeek","lastWeek","thisMonth","lastMonth","thisYear","lastYear"],l="America/Sao_Paulo",u="mon",E="en-US",e=t=>t.set({hour:0,minute:0,second:0,millisecond:0}),n=t=>t.set({hour:23,minute:59,second:59,millisecond:999}),o=(t,s)=>a.startOfWeek(t,E,s),h=(t,s)=>a.endOfWeek(t,E,s),_={last5m:t=>({start:t.subtract({minutes:5}),end:t}),last15m:t=>({start:t.subtract({minutes:15}),end:t}),last30m:t=>({start:t.subtract({minutes:30}),end:t}),last1h:t=>({start:t.subtract({hours:1}),end:t}),last3h:t=>({start:t.subtract({hours:3}),end:t}),last6h:t=>({start:t.subtract({hours:6}),end:t}),last12h:t=>({start:t.subtract({hours:12}),end:t}),last24h:t=>({start:t.subtract({hours:24}),end:t}),today:t=>({start:e(t),end:t}),yesterday:t=>{const s=t.subtract({days:1});return{start:e(s),end:n(s)}},last7d:t=>({start:e(t.subtract({days:6})),end:t}),last30d:t=>({start:e(t.subtract({days:29})),end:t}),thisWeek:(t,s)=>({start:e(o(t,s)),end:t}),lastWeek:(t,s)=>{const r=o(t,s).subtract({weeks:1});return{start:e(r),end:n(h(r,s))}},thisMonth:t=>({start:e(a.startOfMonth(t)),end:t}),lastMonth:t=>{const s=a.startOfMonth(t).subtract({months:1});return{start:e(s),end:n(a.endOfMonth(s))}},thisYear:t=>({start:e(a.startOfYear(t)),end:t}),lastYear:t=>{const s=a.startOfYear(t).subtract({years:1});return{start:e(s),end:n(a.endOfYear(s))}}};function O(t){const s=t.timezone??l,r=t.firstDayOfWeek??u;return(t.include??c).map(d=>({id:d,label:t.labels[d],getValue:()=>_[d](a.now(s),r)}))}exports.DATE_RANGE_PRESET_ORDER=c;exports.DEFAULT_DATE_RANGE_PRESET_TIMEZONE=l;exports.DEFAULT_FIRST_DAY_OF_WEEK=u;exports.createDateRangePresets=O;
|
|
2
2
|
//# sourceMappingURL=dateRangePresets.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateRangePresets.cjs","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n
|
|
1
|
+
{"version":3,"file":"dateRangePresets.cjs","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport type { DateRangePreset } from \"./DateRangePicker\";\n\nexport type DateRangePresetKey =\n | \"last5m\"\n | \"last15m\"\n | \"last30m\"\n | \"last1h\"\n | \"last3h\"\n | \"last6h\"\n | \"last12h\"\n | \"last24h\"\n | \"today\"\n | \"yesterday\"\n | \"last7d\"\n | \"last30d\"\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisYear\"\n | \"lastYear\";\n\nexport const DATE_RANGE_PRESET_ORDER: DateRangePresetKey[] = [\n \"last5m\",\n \"last15m\",\n \"last30m\",\n \"last1h\",\n \"last3h\",\n \"last6h\",\n \"last12h\",\n \"last24h\",\n \"today\",\n \"yesterday\",\n \"last7d\",\n \"last30d\",\n \"thisWeek\",\n \"lastWeek\",\n \"thisMonth\",\n \"lastMonth\",\n \"thisYear\",\n \"lastYear\",\n];\n\nexport type FirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport const DEFAULT_DATE_RANGE_PRESET_TIMEZONE: string = \"America/Sao_Paulo\";\nexport const DEFAULT_FIRST_DAY_OF_WEEK: FirstDayOfWeek = \"mon\";\n\nexport interface CreateDateRangePresetsOptions {\n labels: Record<DateRangePresetKey, string>;\n timezone?: string;\n /** @deprecated Sem efeito desde a CONSOLE-1892: o início da semana vem de `firstDayOfWeek`. */\n locale?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n include?: DateRangePresetKey[];\n}\n\nconst WEEK_CALCULATION_LOCALE: string = \"en-US\";\n\nconst startOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\nconst endOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 23, minute: 59, second: 59, millisecond: 999 });\n\nconst startOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n startOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\nconst endOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n endOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\n\ntype RangeBuilder = (\n reference: ZonedDateTime,\n firstDayOfWeek: FirstDayOfWeek,\n) => { start: ZonedDateTime; end: ZonedDateTime };\n\nconst BUILDERS: Record<DateRangePresetKey, RangeBuilder> = {\n last5m: (n) => ({ start: n.subtract({ minutes: 5 }), end: n }),\n last15m: (n) => ({ start: n.subtract({ minutes: 15 }), end: n }),\n last30m: (n) => ({ start: n.subtract({ minutes: 30 }), end: n }),\n last1h: (n) => ({ start: n.subtract({ hours: 1 }), end: n }),\n last3h: (n) => ({ start: n.subtract({ hours: 3 }), end: n }),\n last6h: (n) => ({ start: n.subtract({ hours: 6 }), end: n }),\n last12h: (n) => ({ start: n.subtract({ hours: 12 }), end: n }),\n last24h: (n) => ({ start: n.subtract({ hours: 24 }), end: n }),\n today: (n) => ({ start: startOfDay(n), end: n }),\n yesterday: (n) => {\n const day = n.subtract({ days: 1 });\n return { start: startOfDay(day), end: endOfDay(day) };\n },\n last7d: (n) => ({ start: startOfDay(n.subtract({ days: 6 })), end: n }),\n last30d: (n) => ({ start: startOfDay(n.subtract({ days: 29 })), end: n }),\n thisWeek: (n, firstDayOfWeek) => ({\n start: startOfDay(startOfWeekOn(n, firstDayOfWeek)),\n end: n,\n }),\n lastWeek: (n, firstDayOfWeek) => {\n const week = startOfWeekOn(n, firstDayOfWeek).subtract({ weeks: 1 });\n return {\n start: startOfDay(week),\n end: endOfDay(endOfWeekOn(week, firstDayOfWeek)),\n };\n },\n thisMonth: (n) => ({ start: startOfDay(startOfMonth(n)), end: n }),\n lastMonth: (n) => {\n const month = startOfMonth(n).subtract({ months: 1 });\n return { start: startOfDay(month), end: endOfDay(endOfMonth(month)) };\n },\n thisYear: (n) => ({ start: startOfDay(startOfYear(n)), end: n }),\n lastYear: (n) => {\n const year = startOfYear(n).subtract({ years: 1 });\n return { start: startOfDay(year), end: endOfDay(endOfYear(year)) };\n },\n};\n\nexport function createDateRangePresets(\n options: CreateDateRangePresetsOptions,\n): DateRangePreset[] {\n const timezone = options.timezone ?? DEFAULT_DATE_RANGE_PRESET_TIMEZONE;\n const firstDayOfWeek = options.firstDayOfWeek ?? DEFAULT_FIRST_DAY_OF_WEEK;\n const keys = options.include ?? DATE_RANGE_PRESET_ORDER;\n return keys.map((key) => ({\n id: key,\n label: options.labels[key],\n getValue: () => BUILDERS[key](now(timezone), firstDayOfWeek),\n }));\n}\n"],"names":["DATE_RANGE_PRESET_ORDER","DEFAULT_DATE_RANGE_PRESET_TIMEZONE","DEFAULT_FIRST_DAY_OF_WEEK","WEEK_CALCULATION_LOCALE","startOfDay","date","endOfDay","startOfWeekOn","firstDayOfWeek","startOfWeek","endOfWeekOn","endOfWeek","BUILDERS","n","day","week","startOfMonth","month","endOfMonth","startOfYear","year","endOfYear","createDateRangePresets","options","timezone","key","now"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const
|
|
1
|
+
import { now as u, startOfYear as d, endOfYear as h, startOfMonth as o, endOfMonth as m, startOfWeek as i, endOfWeek as E } from "@internationalized/date";
|
|
2
|
+
const O = [
|
|
3
3
|
"last5m",
|
|
4
4
|
"last15m",
|
|
5
5
|
"last30m",
|
|
@@ -18,7 +18,7 @@ const b = [
|
|
|
18
18
|
"lastMonth",
|
|
19
19
|
"thisYear",
|
|
20
20
|
"lastYear"
|
|
21
|
-
], a = (t) => t.set({ hour: 0, minute: 0, second: 0, millisecond: 0 }),
|
|
21
|
+
], b = "America/Sao_Paulo", y = "mon", l = "en-US", a = (t) => t.set({ hour: 0, minute: 0, second: 0, millisecond: 0 }), r = (t) => t.set({ hour: 23, minute: 59, second: 59, millisecond: 999 }), c = (t, s) => i(t, l, s), f = (t, s) => E(t, l, s), _ = {
|
|
22
22
|
last5m: (t) => ({ start: t.subtract({ minutes: 5 }), end: t }),
|
|
23
23
|
last15m: (t) => ({ start: t.subtract({ minutes: 15 }), end: t }),
|
|
24
24
|
last30m: (t) => ({ start: t.subtract({ minutes: 30 }), end: t }),
|
|
@@ -30,39 +30,44 @@ const b = [
|
|
|
30
30
|
today: (t) => ({ start: a(t), end: t }),
|
|
31
31
|
yesterday: (t) => {
|
|
32
32
|
const s = t.subtract({ days: 1 });
|
|
33
|
-
return { start: a(s), end:
|
|
33
|
+
return { start: a(s), end: r(s) };
|
|
34
34
|
},
|
|
35
|
-
last7d: (t) => ({ start: a(t.subtract({ days: 6 })), end:
|
|
36
|
-
last30d: (t) => ({
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
last7d: (t) => ({ start: a(t.subtract({ days: 6 })), end: t }),
|
|
36
|
+
last30d: (t) => ({ start: a(t.subtract({ days: 29 })), end: t }),
|
|
37
|
+
thisWeek: (t, s) => ({
|
|
38
|
+
start: a(c(t, s)),
|
|
39
|
+
end: t
|
|
39
40
|
}),
|
|
40
|
-
thisWeek: (t, s) => ({ start: a(o(t, s)), end: t }),
|
|
41
41
|
lastWeek: (t, s) => {
|
|
42
|
-
const
|
|
43
|
-
return {
|
|
42
|
+
const e = c(t, s).subtract({ weeks: 1 });
|
|
43
|
+
return {
|
|
44
|
+
start: a(e),
|
|
45
|
+
end: r(f(e, s))
|
|
46
|
+
};
|
|
44
47
|
},
|
|
45
|
-
thisMonth: (t) => ({ start: a(
|
|
48
|
+
thisMonth: (t) => ({ start: a(o(t)), end: t }),
|
|
46
49
|
lastMonth: (t) => {
|
|
47
|
-
const s =
|
|
48
|
-
return { start: a(s), end:
|
|
50
|
+
const s = o(t).subtract({ months: 1 });
|
|
51
|
+
return { start: a(s), end: r(m(s)) };
|
|
49
52
|
},
|
|
50
53
|
thisYear: (t) => ({ start: a(d(t)), end: t }),
|
|
51
54
|
lastYear: (t) => {
|
|
52
55
|
const s = d(t).subtract({ years: 1 });
|
|
53
|
-
return { start: a(s), end:
|
|
56
|
+
return { start: a(s), end: r(h(s)) };
|
|
54
57
|
}
|
|
55
58
|
};
|
|
56
|
-
function
|
|
57
|
-
const s = t.timezone ??
|
|
58
|
-
return (t.include ??
|
|
59
|
+
function D(t) {
|
|
60
|
+
const s = t.timezone ?? b, e = t.firstDayOfWeek ?? y;
|
|
61
|
+
return (t.include ?? O).map((n) => ({
|
|
59
62
|
id: n,
|
|
60
63
|
label: t.labels[n],
|
|
61
|
-
getValue: () =>
|
|
64
|
+
getValue: () => _[n](u(s), e)
|
|
62
65
|
}));
|
|
63
66
|
}
|
|
64
67
|
export {
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
O as DATE_RANGE_PRESET_ORDER,
|
|
69
|
+
b as DEFAULT_DATE_RANGE_PRESET_TIMEZONE,
|
|
70
|
+
y as DEFAULT_FIRST_DAY_OF_WEEK,
|
|
71
|
+
D as createDateRangePresets
|
|
67
72
|
};
|
|
68
73
|
//# sourceMappingURL=dateRangePresets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateRangePresets.js","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n
|
|
1
|
+
{"version":3,"file":"dateRangePresets.js","sources":["../../../../../src/ui/primitives/DateRangePicker/dateRangePresets.ts"],"sourcesContent":["import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n now,\n startOfMonth,\n startOfWeek,\n startOfYear,\n type ZonedDateTime,\n} from \"@internationalized/date\";\nimport type { DateRangePreset } from \"./DateRangePicker\";\n\nexport type DateRangePresetKey =\n | \"last5m\"\n | \"last15m\"\n | \"last30m\"\n | \"last1h\"\n | \"last3h\"\n | \"last6h\"\n | \"last12h\"\n | \"last24h\"\n | \"today\"\n | \"yesterday\"\n | \"last7d\"\n | \"last30d\"\n | \"thisWeek\"\n | \"lastWeek\"\n | \"thisMonth\"\n | \"lastMonth\"\n | \"thisYear\"\n | \"lastYear\";\n\nexport const DATE_RANGE_PRESET_ORDER: DateRangePresetKey[] = [\n \"last5m\",\n \"last15m\",\n \"last30m\",\n \"last1h\",\n \"last3h\",\n \"last6h\",\n \"last12h\",\n \"last24h\",\n \"today\",\n \"yesterday\",\n \"last7d\",\n \"last30d\",\n \"thisWeek\",\n \"lastWeek\",\n \"thisMonth\",\n \"lastMonth\",\n \"thisYear\",\n \"lastYear\",\n];\n\nexport type FirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport const DEFAULT_DATE_RANGE_PRESET_TIMEZONE: string = \"America/Sao_Paulo\";\nexport const DEFAULT_FIRST_DAY_OF_WEEK: FirstDayOfWeek = \"mon\";\n\nexport interface CreateDateRangePresetsOptions {\n labels: Record<DateRangePresetKey, string>;\n timezone?: string;\n /** @deprecated Sem efeito desde a CONSOLE-1892: o início da semana vem de `firstDayOfWeek`. */\n locale?: string;\n firstDayOfWeek?: FirstDayOfWeek;\n include?: DateRangePresetKey[];\n}\n\nconst WEEK_CALCULATION_LOCALE: string = \"en-US\";\n\nconst startOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\nconst endOfDay = (date: ZonedDateTime) =>\n date.set({ hour: 23, minute: 59, second: 59, millisecond: 999 });\n\nconst startOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n startOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\nconst endOfWeekOn = (date: ZonedDateTime, firstDayOfWeek: FirstDayOfWeek) =>\n endOfWeek(date, WEEK_CALCULATION_LOCALE, firstDayOfWeek);\n\ntype RangeBuilder = (\n reference: ZonedDateTime,\n firstDayOfWeek: FirstDayOfWeek,\n) => { start: ZonedDateTime; end: ZonedDateTime };\n\nconst BUILDERS: Record<DateRangePresetKey, RangeBuilder> = {\n last5m: (n) => ({ start: n.subtract({ minutes: 5 }), end: n }),\n last15m: (n) => ({ start: n.subtract({ minutes: 15 }), end: n }),\n last30m: (n) => ({ start: n.subtract({ minutes: 30 }), end: n }),\n last1h: (n) => ({ start: n.subtract({ hours: 1 }), end: n }),\n last3h: (n) => ({ start: n.subtract({ hours: 3 }), end: n }),\n last6h: (n) => ({ start: n.subtract({ hours: 6 }), end: n }),\n last12h: (n) => ({ start: n.subtract({ hours: 12 }), end: n }),\n last24h: (n) => ({ start: n.subtract({ hours: 24 }), end: n }),\n today: (n) => ({ start: startOfDay(n), end: n }),\n yesterday: (n) => {\n const day = n.subtract({ days: 1 });\n return { start: startOfDay(day), end: endOfDay(day) };\n },\n last7d: (n) => ({ start: startOfDay(n.subtract({ days: 6 })), end: n }),\n last30d: (n) => ({ start: startOfDay(n.subtract({ days: 29 })), end: n }),\n thisWeek: (n, firstDayOfWeek) => ({\n start: startOfDay(startOfWeekOn(n, firstDayOfWeek)),\n end: n,\n }),\n lastWeek: (n, firstDayOfWeek) => {\n const week = startOfWeekOn(n, firstDayOfWeek).subtract({ weeks: 1 });\n return {\n start: startOfDay(week),\n end: endOfDay(endOfWeekOn(week, firstDayOfWeek)),\n };\n },\n thisMonth: (n) => ({ start: startOfDay(startOfMonth(n)), end: n }),\n lastMonth: (n) => {\n const month = startOfMonth(n).subtract({ months: 1 });\n return { start: startOfDay(month), end: endOfDay(endOfMonth(month)) };\n },\n thisYear: (n) => ({ start: startOfDay(startOfYear(n)), end: n }),\n lastYear: (n) => {\n const year = startOfYear(n).subtract({ years: 1 });\n return { start: startOfDay(year), end: endOfDay(endOfYear(year)) };\n },\n};\n\nexport function createDateRangePresets(\n options: CreateDateRangePresetsOptions,\n): DateRangePreset[] {\n const timezone = options.timezone ?? DEFAULT_DATE_RANGE_PRESET_TIMEZONE;\n const firstDayOfWeek = options.firstDayOfWeek ?? DEFAULT_FIRST_DAY_OF_WEEK;\n const keys = options.include ?? DATE_RANGE_PRESET_ORDER;\n return keys.map((key) => ({\n id: key,\n label: options.labels[key],\n getValue: () => BUILDERS[key](now(timezone), firstDayOfWeek),\n }));\n}\n"],"names":["DATE_RANGE_PRESET_ORDER","DEFAULT_DATE_RANGE_PRESET_TIMEZONE","DEFAULT_FIRST_DAY_OF_WEEK","WEEK_CALCULATION_LOCALE","startOfDay","date","endOfDay","startOfWeekOn","firstDayOfWeek","startOfWeek","endOfWeekOn","endOfWeek","BUILDERS","n","day","week","startOfMonth","month","endOfMonth","startOfYear","year","endOfYear","createDateRangePresets","options","timezone","key","now"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("../../../vendor/clsx/dist/clsx.cjs"),c=require("react");;/* empty css */const o=require("../Button/Button.cjs"),l=c.forwardRef(function({className:n,...t},r){const i=s.clsx(n,"icon-button");return e.jsx(o.Button,{...t,ref:r,className:i,children:t.isPending?null:t.children})}),a=c.forwardRef(function(n,t){return e.jsx(o.ButtonDanger,{...n,ref:t,className:"icon-button",children:n.isPending?null:n.children})});exports.DestructiveIconButton=a;exports.IconButton=l;
|
|
2
2
|
//# sourceMappingURL=IconButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.cjs","sources":["../../../../../src/ui/primitives/IconButton/IconButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n Button,\n ButtonDanger,\n ButtonDangerProps,\n type ButtonProps,\n} from \"primitives\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport \"./iconButton.css\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"aria-label\"> & {\n \"aria-label\": string;\n};\nexport const IconButton = forwardRef(function IconButton(\n { className, ...props }: IconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const classNames = clsx(className, \"icon-button\");\n return <Button {...props} {
|
|
1
|
+
{"version":3,"file":"IconButton.cjs","sources":["../../../../../src/ui/primitives/IconButton/IconButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n Button,\n ButtonDanger,\n ButtonDangerProps,\n type ButtonProps,\n} from \"primitives\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport \"./iconButton.css\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"aria-label\"> & {\n \"aria-label\": string;\n};\nexport const IconButton = forwardRef(function IconButton(\n { className, ...props }: IconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const classNames = clsx(className, \"icon-button\");\n return (\n <Button {...props} ref={ref} className={classNames}>\n {props.isPending ? null : props.children}\n </Button>\n );\n});\n\nexport type DestructiveIconButtonProps = Omit<\n ButtonDangerProps,\n \"aria-label\"\n> & {\n \"aria-label\": string;\n};\nexport const DestructiveIconButton = forwardRef(function IconButton(\n props: DestructiveIconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n return (\n <ButtonDanger {...props} ref={ref} className=\"icon-button\">\n {props.isPending ? null : props.children}\n </ButtonDanger>\n );\n});\n"],"names":["IconButton","forwardRef","className","props","ref","classNames","clsx","jsx","Button","DestructiveIconButton","ButtonDanger"],"mappings":"gQAaaA,EAAaC,EAAAA,WAAW,SACnC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAChBC,EACA,CACA,MAAMC,EAAaC,EAAAA,KAAKJ,EAAW,aAAa,EAChD,OACEK,EAAAA,IAACC,EAAAA,OAAA,CAAQ,GAAGL,EAAO,IAAAC,EAAU,UAAWC,EACrC,SAAAF,EAAM,UAAY,KAAOA,EAAM,QAAA,CAClC,CAEJ,CAAC,EAQYM,EAAwBR,EAAAA,WAAW,SAC9CE,EACAC,EACA,CACA,OACEG,EAAAA,IAACG,EAAAA,aAAA,CAAc,GAAGP,EAAO,IAAAC,EAAU,UAAU,cAC1C,SAAAD,EAAM,UAAY,KAAOA,EAAM,QAAA,CAClC,CAEJ,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { clsx as
|
|
3
|
-
import { forwardRef as
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as u } from "../../../vendor/clsx/dist/clsx.js";
|
|
3
|
+
import { forwardRef as c } from "react";
|
|
4
4
|
/* empty css */
|
|
5
|
-
import { Button as
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
return /* @__PURE__ */
|
|
9
|
-
}),
|
|
10
|
-
return /* @__PURE__ */
|
|
5
|
+
import { Button as l, ButtonDanger as m } from "../Button/Button.js";
|
|
6
|
+
const h = c(function({ className: n, ...t }, r) {
|
|
7
|
+
const e = u(n, "icon-button");
|
|
8
|
+
return /* @__PURE__ */ o(l, { ...t, ref: r, className: e, children: t.isPending ? null : t.children });
|
|
9
|
+
}), I = c(function(n, t) {
|
|
10
|
+
return /* @__PURE__ */ o(m, { ...n, ref: t, className: "icon-button", children: n.isPending ? null : n.children });
|
|
11
11
|
});
|
|
12
12
|
export {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
I as DestructiveIconButton,
|
|
14
|
+
h as IconButton
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=IconButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.js","sources":["../../../../../src/ui/primitives/IconButton/IconButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n Button,\n ButtonDanger,\n ButtonDangerProps,\n type ButtonProps,\n} from \"primitives\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport \"./iconButton.css\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"aria-label\"> & {\n \"aria-label\": string;\n};\nexport const IconButton = forwardRef(function IconButton(\n { className, ...props }: IconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const classNames = clsx(className, \"icon-button\");\n return <Button {...props} {
|
|
1
|
+
{"version":3,"file":"IconButton.js","sources":["../../../../../src/ui/primitives/IconButton/IconButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n Button,\n ButtonDanger,\n ButtonDangerProps,\n type ButtonProps,\n} from \"primitives\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport \"./iconButton.css\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"aria-label\"> & {\n \"aria-label\": string;\n};\nexport const IconButton = forwardRef(function IconButton(\n { className, ...props }: IconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const classNames = clsx(className, \"icon-button\");\n return (\n <Button {...props} ref={ref} className={classNames}>\n {props.isPending ? null : props.children}\n </Button>\n );\n});\n\nexport type DestructiveIconButtonProps = Omit<\n ButtonDangerProps,\n \"aria-label\"\n> & {\n \"aria-label\": string;\n};\nexport const DestructiveIconButton = forwardRef(function IconButton(\n props: DestructiveIconButtonProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n return (\n <ButtonDanger {...props} ref={ref} className=\"icon-button\">\n {props.isPending ? null : props.children}\n </ButtonDanger>\n );\n});\n"],"names":["IconButton","forwardRef","className","props","ref","classNames","clsx","jsx","Button","DestructiveIconButton","ButtonDanger"],"mappings":";;;;;AAaO,MAAMA,IAAaC,EAAW,SACnC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAChBC,GACA;AACA,QAAMC,IAAaC,EAAKJ,GAAW,aAAa;AAChD,SACE,gBAAAK,EAACC,GAAA,EAAQ,GAAGL,GAAO,KAAAC,GAAU,WAAWC,GACrC,UAAAF,EAAM,YAAY,OAAOA,EAAM,SAAA,CAClC;AAEJ,CAAC,GAQYM,IAAwBR,EAAW,SAC9CE,GACAC,GACA;AACA,SACE,gBAAAG,EAACG,GAAA,EAAc,GAAGP,GAAO,KAAAC,GAAU,WAAU,eAC1C,UAAAD,EAAM,YAAY,OAAOA,EAAM,SAAA,CAClC;AAEJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("../../../vendor/clsx/dist/clsx.cjs"),u=require("../BrandLoader/BrandLoader.cjs");;/* empty css */const a=require("../../hooks/useLoadingVisibility.cjs");function c({message:i,variant:s="trace",size:t="32",delayMs:r=a.defaultLoadingDelayMs,className:n,...l}){const o=a.useLoadingVisibility(!0,{delayMs:r,minVisibleMs:0});return e.jsx("div",{role:"status","aria-live":"polite","aria-label":i,className:d.clsx("loading-state",n),...l,children:o&&e.jsxs(e.Fragment,{children:[e.jsx(u.BrandLoader,{"aria-hidden":!0,variant:s,size:t,tone:"brand"}),e.jsx("span",{className:"loading-state-message",children:i})]})})}exports.LoadingState=c;
|
|
2
|
+
//# sourceMappingURL=LoadingState.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingState.cjs","sources":["../../../../../src/ui/primitives/LoadingState/LoadingState.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { defaultLoadingDelayMs, useLoadingVisibility } from \"hooks\";\nimport { type ComponentPropsWithoutRef } from \"react\";\nimport {\n BrandLoader,\n type BrandLoaderSize,\n type BrandLoaderVariant,\n} from \"../BrandLoader/BrandLoader\";\nimport \"./loading-state.css\";\n\nexport type LoadingStateProps = ComponentPropsWithoutRef<\"div\"> & {\n message: string;\n variant?: BrandLoaderVariant;\n size?: BrandLoaderSize;\n delayMs?: number;\n};\n\nexport function LoadingState({\n message,\n variant = \"trace\",\n size = \"32\",\n delayMs = defaultLoadingDelayMs,\n className,\n ...props\n}: LoadingStateProps) {\n const isVisible = useLoadingVisibility(true, { delayMs, minVisibleMs: 0 });\n\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message}\n className={clsx(\"loading-state\", className)}\n {...props}\n >\n {isVisible && (\n <>\n <BrandLoader aria-hidden variant={variant} size={size} tone=\"brand\" />\n <span className=\"loading-state-message\">{message}</span>\n </>\n )}\n </div>\n );\n}\n"],"names":["LoadingState","message","variant","size","delayMs","defaultLoadingDelayMs","className","props","isVisible","useLoadingVisibility","jsx","clsx","jsxs","Fragment","BrandLoader"],"mappings":"4SAiBO,SAASA,EAAa,CAC3B,QAAAC,EACA,QAAAC,EAAU,QACV,KAAAC,EAAO,KACP,QAAAC,EAAUC,EAAAA,sBACV,UAAAC,EACA,GAAGC,CACL,EAAsB,CACpB,MAAMC,EAAYC,EAAAA,qBAAqB,GAAM,CAAE,QAAAL,EAAS,aAAc,EAAG,EAEzE,OACEM,EAAAA,IAAC,MAAA,CACC,KAAK,SACL,YAAU,SACV,aAAYT,EACZ,UAAWU,EAAAA,KAAK,gBAAiBL,CAAS,EACzC,GAAGC,EAEH,YACCK,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAH,MAACI,EAAAA,aAAY,cAAW,GAAC,QAAAZ,EAAkB,KAAAC,EAAY,KAAK,QAAQ,EACpEO,EAAAA,IAAC,OAAA,CAAK,UAAU,wBAAyB,SAAAT,CAAA,CAAQ,CAAA,CAAA,CACnD,CAAA,CAAA,CAIR"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as i, jsxs as l, Fragment as d } from "react/jsx-runtime";
|
|
2
|
+
import { clsx as m } from "../../../vendor/clsx/dist/clsx.js";
|
|
3
|
+
import { BrandLoader as c } from "../BrandLoader/BrandLoader.js";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { useLoadingVisibility as p, defaultLoadingDelayMs as u } from "../../hooks/useLoadingVisibility.js";
|
|
6
|
+
function L({
|
|
7
|
+
message: a,
|
|
8
|
+
variant: e = "trace",
|
|
9
|
+
size: r = "32",
|
|
10
|
+
delayMs: t = u,
|
|
11
|
+
className: o,
|
|
12
|
+
...s
|
|
13
|
+
}) {
|
|
14
|
+
const n = p(!0, { delayMs: t, minVisibleMs: 0 });
|
|
15
|
+
return /* @__PURE__ */ i(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
role: "status",
|
|
19
|
+
"aria-live": "polite",
|
|
20
|
+
"aria-label": a,
|
|
21
|
+
className: m("loading-state", o),
|
|
22
|
+
...s,
|
|
23
|
+
children: n && /* @__PURE__ */ l(d, { children: [
|
|
24
|
+
/* @__PURE__ */ i(c, { "aria-hidden": !0, variant: e, size: r, tone: "brand" }),
|
|
25
|
+
/* @__PURE__ */ i("span", { className: "loading-state-message", children: a })
|
|
26
|
+
] })
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
L as LoadingState
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=LoadingState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingState.js","sources":["../../../../../src/ui/primitives/LoadingState/LoadingState.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { defaultLoadingDelayMs, useLoadingVisibility } from \"hooks\";\nimport { type ComponentPropsWithoutRef } from \"react\";\nimport {\n BrandLoader,\n type BrandLoaderSize,\n type BrandLoaderVariant,\n} from \"../BrandLoader/BrandLoader\";\nimport \"./loading-state.css\";\n\nexport type LoadingStateProps = ComponentPropsWithoutRef<\"div\"> & {\n message: string;\n variant?: BrandLoaderVariant;\n size?: BrandLoaderSize;\n delayMs?: number;\n};\n\nexport function LoadingState({\n message,\n variant = \"trace\",\n size = \"32\",\n delayMs = defaultLoadingDelayMs,\n className,\n ...props\n}: LoadingStateProps) {\n const isVisible = useLoadingVisibility(true, { delayMs, minVisibleMs: 0 });\n\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message}\n className={clsx(\"loading-state\", className)}\n {...props}\n >\n {isVisible && (\n <>\n <BrandLoader aria-hidden variant={variant} size={size} tone=\"brand\" />\n <span className=\"loading-state-message\">{message}</span>\n </>\n )}\n </div>\n );\n}\n"],"names":["LoadingState","message","variant","size","delayMs","defaultLoadingDelayMs","className","props","isVisible","useLoadingVisibility","jsx","clsx","jsxs","Fragment","BrandLoader"],"mappings":";;;;;AAiBO,SAASA,EAAa;AAAA,EAC3B,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAUC;AAAA,EACV,WAAAC;AAAA,EACA,GAAGC;AACL,GAAsB;AACpB,QAAMC,IAAYC,EAAqB,IAAM,EAAE,SAAAL,GAAS,cAAc,GAAG;AAEzE,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYT;AAAA,MACZ,WAAWU,EAAK,iBAAiBL,CAAS;AAAA,MACzC,GAAGC;AAAA,MAEH,eACC,gBAAAK,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAH,EAACI,KAAY,eAAW,IAAC,SAAAZ,GAAkB,MAAAC,GAAY,MAAK,SAAQ;AAAA,QACpE,gBAAAO,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAT,EAAA,CAAQ;AAAA,MAAA,EAAA,CACnD;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),u=require("../Tooltip/Tooltip.cjs");function a({isAllowed:s,noAccessLabel:l,isPending:t=!1,pendingLabel:c,children:e}){const r=s&&!t,o=typeof e=="function"?e(r,t):e;if(r)return o;const n=t?c:l;return n?i.jsx(u.Tooltip,{content:n,trigger:"hover",placement:"top",offset:4,children:i.jsx("span",{style:{display:"inline-flex"},children:o})}):o}exports.PermissionGate=a;
|
|
2
2
|
//# sourceMappingURL=PermissionGate.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionGate.cjs","sources":["../../../../../src/ui/primitives/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\nexport
|
|
1
|
+
{"version":3,"file":"PermissionGate.cjs","sources":["../../../../../src/ui/primitives/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\ntype PermissionGatePendingProps =\n | { isPending?: false; pendingLabel?: string }\n | {\n isPending: boolean;\n /** Tooltip text shown while `isPending`. */\n pendingLabel: string;\n };\n\nexport type PermissionGateProps = PermissionGatePendingProps & {\n /** Whether the current user has permission to perform this action. */\n isAllowed: boolean;\n /** Tooltip text shown when the action is not allowed. */\n noAccessLabel: string;\n /**\n * Either a React element or a render prop that receives `isAllowed` and `isPending`.\n * Use the render prop to avoid repeating the permission check inside the child, e.g.\n * `{(allowed, pending) => <Button isDisabled={!allowed && !pending} isPending={pending}>…</Button>}`.\n */\n children:\n | React.ReactElement\n | ((isAllowed: boolean, isPending: boolean) => React.ReactElement);\n};\n\n/**\n * Wraps any interactive element with a tooltip that appears when `isAllowed` is false.\n *\n * When allowed, renders the trigger directly with no wrapper.\n * When not allowed, wraps in a DS Tooltip with hover trigger.\n * A `<span>` wrapper ensures disabled elements still receive pointer events.\n *\n * Dentro de coleções do react-aria-components (`Menu`, `ListBox`, `Table`,\n * `Tree`) o gate vai NO CONTEÚDO do nó, nunca em volta dele:\n *\n * ```tsx\n * // ERRADO — o react-aria descarta esse item e os seguintes, e o menu abre\n * // vazio se ele for o primeiro. Sem erro no console.\n * <PermissionGate …><MenuItem>…</MenuItem></PermissionGate>\n *\n * // CERTO\n * <MenuItem isDisabled={!allowed}>\n * <PermissionGate …><span>…</span></PermissionGate>\n * </MenuItem>\n * ```\n *\n * O collection builder só reconhece nós de coleção; o `<span>` do ramo negado\n * entra na coleção com `node` nulo e quebra a lista encadeada de chaves. Já o\n * conteúdo de um nó é renderizado no DOM real, fora da coleção, e por isso é\n * seguro — é onde o `DataTable` põe o gate nas ações de linha. O `Menu` avisa no\n * console em desenvolvimento se o gate aparecer em volta de um item.\n */\nexport function PermissionGate({\n isAllowed,\n noAccessLabel,\n isPending = false,\n pendingLabel,\n children,\n}: PermissionGateProps) {\n const isGranted = isAllowed && !isPending;\n const trigger =\n typeof children === \"function\" ? children(isGranted, isPending) : children;\n\n if (isGranted) {\n return trigger;\n }\n\n const tooltipLabel = isPending ? pendingLabel : noAccessLabel;\n if (!tooltipLabel) {\n return trigger;\n }\n\n return (\n <Tooltip content={tooltipLabel} trigger=\"hover\" placement=\"top\" offset={4}>\n <span style={{ display: \"inline-flex\" }}>{trigger}</span>\n </Tooltip>\n );\n}\n"],"names":["PermissionGate","isAllowed","noAccessLabel","isPending","pendingLabel","children","isGranted","trigger","tooltipLabel","Tooltip","jsx"],"mappings":"yJAqDO,SAASA,EAAe,CAC7B,UAAAC,EACA,cAAAC,EACA,UAAAC,EAAY,GACZ,aAAAC,EACA,SAAAC,CACF,EAAwB,CACtB,MAAMC,EAAYL,GAAa,CAACE,EAC1BI,EACJ,OAAOF,GAAa,WAAaA,EAASC,EAAWH,CAAS,EAAIE,EAEpE,GAAIC,EACF,OAAOC,EAGT,MAAMC,EAAeL,EAAYC,EAAeF,EAChD,OAAKM,QAKFC,UAAA,CAAQ,QAASD,EAAc,QAAQ,QAAQ,UAAU,MAAM,OAAQ,EACtE,SAAAE,MAAC,QAAK,MAAO,CAAE,QAAS,aAAA,EAAkB,WAAQ,EACpD,EANOH,CAQX"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Tooltip as
|
|
3
|
-
function
|
|
4
|
-
isAllowed:
|
|
5
|
-
noAccessLabel:
|
|
6
|
-
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip as l } from "../Tooltip/Tooltip.js";
|
|
3
|
+
function m({
|
|
4
|
+
isAllowed: f,
|
|
5
|
+
noAccessLabel: p,
|
|
6
|
+
isPending: t = !1,
|
|
7
|
+
pendingLabel: s,
|
|
8
|
+
children: o
|
|
7
9
|
}) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
+
const r = f && !t, e = typeof o == "function" ? o(r, t) : o;
|
|
11
|
+
if (r)
|
|
12
|
+
return e;
|
|
13
|
+
const n = t ? s : p;
|
|
14
|
+
return n ? /* @__PURE__ */ i(l, { content: n, trigger: "hover", placement: "top", offset: 4, children: /* @__PURE__ */ i("span", { style: { display: "inline-flex" }, children: e }) }) : e;
|
|
10
15
|
}
|
|
11
16
|
export {
|
|
12
|
-
|
|
17
|
+
m as PermissionGate
|
|
13
18
|
};
|
|
14
19
|
//# sourceMappingURL=PermissionGate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionGate.js","sources":["../../../../../src/ui/primitives/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\nexport
|
|
1
|
+
{"version":3,"file":"PermissionGate.js","sources":["../../../../../src/ui/primitives/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\ntype PermissionGatePendingProps =\n | { isPending?: false; pendingLabel?: string }\n | {\n isPending: boolean;\n /** Tooltip text shown while `isPending`. */\n pendingLabel: string;\n };\n\nexport type PermissionGateProps = PermissionGatePendingProps & {\n /** Whether the current user has permission to perform this action. */\n isAllowed: boolean;\n /** Tooltip text shown when the action is not allowed. */\n noAccessLabel: string;\n /**\n * Either a React element or a render prop that receives `isAllowed` and `isPending`.\n * Use the render prop to avoid repeating the permission check inside the child, e.g.\n * `{(allowed, pending) => <Button isDisabled={!allowed && !pending} isPending={pending}>…</Button>}`.\n */\n children:\n | React.ReactElement\n | ((isAllowed: boolean, isPending: boolean) => React.ReactElement);\n};\n\n/**\n * Wraps any interactive element with a tooltip that appears when `isAllowed` is false.\n *\n * When allowed, renders the trigger directly with no wrapper.\n * When not allowed, wraps in a DS Tooltip with hover trigger.\n * A `<span>` wrapper ensures disabled elements still receive pointer events.\n *\n * Dentro de coleções do react-aria-components (`Menu`, `ListBox`, `Table`,\n * `Tree`) o gate vai NO CONTEÚDO do nó, nunca em volta dele:\n *\n * ```tsx\n * // ERRADO — o react-aria descarta esse item e os seguintes, e o menu abre\n * // vazio se ele for o primeiro. Sem erro no console.\n * <PermissionGate …><MenuItem>…</MenuItem></PermissionGate>\n *\n * // CERTO\n * <MenuItem isDisabled={!allowed}>\n * <PermissionGate …><span>…</span></PermissionGate>\n * </MenuItem>\n * ```\n *\n * O collection builder só reconhece nós de coleção; o `<span>` do ramo negado\n * entra na coleção com `node` nulo e quebra a lista encadeada de chaves. Já o\n * conteúdo de um nó é renderizado no DOM real, fora da coleção, e por isso é\n * seguro — é onde o `DataTable` põe o gate nas ações de linha. O `Menu` avisa no\n * console em desenvolvimento se o gate aparecer em volta de um item.\n */\nexport function PermissionGate({\n isAllowed,\n noAccessLabel,\n isPending = false,\n pendingLabel,\n children,\n}: PermissionGateProps) {\n const isGranted = isAllowed && !isPending;\n const trigger =\n typeof children === \"function\" ? children(isGranted, isPending) : children;\n\n if (isGranted) {\n return trigger;\n }\n\n const tooltipLabel = isPending ? pendingLabel : noAccessLabel;\n if (!tooltipLabel) {\n return trigger;\n }\n\n return (\n <Tooltip content={tooltipLabel} trigger=\"hover\" placement=\"top\" offset={4}>\n <span style={{ display: \"inline-flex\" }}>{trigger}</span>\n </Tooltip>\n );\n}\n"],"names":["PermissionGate","isAllowed","noAccessLabel","isPending","pendingLabel","children","isGranted","trigger","tooltipLabel","Tooltip","jsx"],"mappings":";;AAqDO,SAASA,EAAe;AAAA,EAC7B,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,cAAAC;AAAA,EACA,UAAAC;AACF,GAAwB;AACtB,QAAMC,IAAYL,KAAa,CAACE,GAC1BI,IACJ,OAAOF,KAAa,aAAaA,EAASC,GAAWH,CAAS,IAAIE;AAEpE,MAAIC;AACF,WAAOC;AAGT,QAAMC,IAAeL,IAAYC,IAAeF;AAChD,SAAKM,sBAKFC,GAAA,EAAQ,SAASD,GAAc,SAAQ,SAAQ,WAAU,OAAM,QAAQ,GACtE,UAAA,gBAAAE,EAAC,UAAK,OAAO,EAAE,SAAS,cAAA,GAAkB,aAAQ,GACpD,IANOH;AAQX;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),j=require("../../../vendor/clsx/dist/clsx.cjs"),s=require("react-aria-components");;/* empty css */const p=require("../BrandLoader/BrandLoader.cjs"),f=require("../../icons/IconChevronRight.cjs");function v(t){return t.hasChildItems??!!(t.children&&t.children.length>0)}function u(t,n){return t.flatMap(i=>[...n(i.id)?[i.id]:[],...u(i.children??[],n)])}function C({className:t,items:n,renderItem:i,isNodeLoading:c,onItemAction:l,dependencies:m,...o}){const x=c?JSON.stringify(u(n,c)):"",a=[...m??[],x];function h(r){return e.jsxs(s.TreeItem,{id:r.id,textValue:r.label,hasChildItems:v(r),className:"tree-item",onAction:l?()=>l(r):void 0,children:[e.jsx(d,{children:i(r)}),r.children&&r.children.length>0&&e.jsx(s.Collection,{items:r.children,dependencies:a,children:h}),((c==null?void 0:c(r.id))??!1)&&e.jsx(s.TreeItem,{id:`${r.id}::loading`,textValue:"Loading",isDisabled:!0,className:"tree-item",children:e.jsx(d,{children:e.jsx(p.BrandLoader,{"aria-hidden":!0,variant:"pulse",size:"16",tone:"brand"})})})]})}return e.jsx(s.Tree,{items:n,className:j.clsx(t,"tree"),dependencies:a,...o,children:h})}function d({children:t}){return e.jsx(s.TreeItemContent,{children:({hasChildItems:n,level:i})=>e.jsxs("div",{className:"tree-item-row",style:{"--tree-item-depth":i-1},children:[n?e.jsx(s.Button,{slot:"chevron",className:"tree-item-chevron",children:e.jsx(f.IconChevronRight,{size:"16"})}):e.jsx("span",{className:"tree-item-chevron-spacer","aria-hidden":"true"}),t]})})}exports.Tree=C;
|
|
2
2
|
//# sourceMappingURL=Tree.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.cjs","sources":["../../../../../src/ui/primitives/Tree/Tree.tsx"],"sourcesContent":["import type { CSSProperties, Key, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { IconChevronRight
|
|
1
|
+
{"version":3,"file":"Tree.cjs","sources":["../../../../../src/ui/primitives/Tree/Tree.tsx"],"sourcesContent":["import type { CSSProperties, Key, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { IconChevronRight } from \"icons\";\nimport { BrandLoader } from \"primitives\";\nimport {\n Button,\n Collection,\n Tree as RACTree,\n TreeItem as RACTreeItem,\n TreeItemContent as RACTreeItemContent,\n type TreeProps as RACTreeProps,\n} from \"react-aria-components\";\nimport \"./tree.css\";\n\nexport interface TreeNode<T = unknown> {\n id: string;\n label: string;\n data?: T;\n /** Signals a node has children before they are fetched, so the chevron renders ahead of a lazy load. */\n hasChildItems?: boolean;\n /** `undefined` = not loaded yet, `[]` = loaded and empty. */\n children?: TreeNode<T>[];\n}\n\nexport type TreeProps<T> = Omit<\n RACTreeProps<TreeNode<T>>,\n \"children\" | \"items\"\n> & {\n items: TreeNode<T>[];\n renderItem: (node: TreeNode<T>) => ReactNode;\n isNodeLoading?: (id: Key) => boolean;\n onItemAction?: (node: TreeNode<T>) => void;\n};\n\nfunction hasExpandableChildren<T>(node: TreeNode<T>): boolean {\n return node.hasChildItems ?? Boolean(node.children && node.children.length > 0);\n}\n\nfunction loadingNodeIdsOf<T>(nodes: TreeNode<T>[], isNodeLoading: (id: Key) => boolean): string[] {\n return nodes.flatMap((node) => [\n ...(isNodeLoading(node.id) ? [node.id] : []),\n ...loadingNodeIdsOf(node.children ?? [], isNodeLoading),\n ]);\n}\n\nexport function Tree<T>({\n className,\n items,\n renderItem,\n isNodeLoading,\n onItemAction,\n dependencies,\n ...props\n}: TreeProps<T>) {\n const loadingNodesSignature = isNodeLoading\n ? JSON.stringify(loadingNodeIdsOf(items, isNodeLoading))\n : \"\";\n const itemDependencies = [...(dependencies ?? []), loadingNodesSignature];\n\n function renderNode(node: TreeNode<T>): ReactNode {\n return (\n <RACTreeItem\n id={node.id}\n textValue={node.label}\n hasChildItems={hasExpandableChildren(node)}\n className=\"tree-item\"\n onAction={onItemAction ? () => onItemAction(node) : undefined}\n >\n <TreeItemContent>{renderItem(node)}</TreeItemContent>\n {node.children && node.children.length > 0 && (\n <Collection items={node.children} dependencies={itemDependencies}>\n {renderNode}\n </Collection>\n )}\n {(isNodeLoading?.(node.id) ?? false) && (\n <RACTreeItem id={`${node.id}::loading`} textValue=\"Loading\" isDisabled className=\"tree-item\">\n <TreeItemContent>\n <BrandLoader aria-hidden variant=\"pulse\" size=\"16\" tone=\"brand\" />\n </TreeItemContent>\n </RACTreeItem>\n )}\n </RACTreeItem>\n );\n }\n\n return (\n <RACTree items={items} className={clsx(className, \"tree\")} dependencies={itemDependencies} {...props}>\n {renderNode}\n </RACTree>\n );\n}\n\ninterface TreeItemContentProps {\n children: ReactNode;\n}\n\nfunction TreeItemContent({ children }: TreeItemContentProps) {\n return (\n <RACTreeItemContent>\n {({ hasChildItems, level }) => (\n <div\n className=\"tree-item-row\"\n style={{ \"--tree-item-depth\": level - 1 } as CSSProperties}\n >\n {hasChildItems ? (\n <Button slot=\"chevron\" className=\"tree-item-chevron\">\n <IconChevronRight size=\"16\" />\n </Button>\n ) : (\n <span className=\"tree-item-chevron-spacer\" aria-hidden=\"true\" />\n )}\n {children}\n </div>\n )}\n </RACTreeItemContent>\n );\n}\n"],"names":["hasExpandableChildren","node","loadingNodeIdsOf","nodes","isNodeLoading","Tree","className","items","renderItem","onItemAction","dependencies","props","loadingNodesSignature","itemDependencies","renderNode","jsxs","RACTreeItem","jsx","TreeItemContent","Collection","BrandLoader","RACTree","clsx","children","RACTreeItemContent","hasChildItems","level","Button","IconChevronRight"],"mappings":"kUAkCA,SAASA,EAAyBC,EAA4B,CAC5D,OAAOA,EAAK,eAAiB,GAAQA,EAAK,UAAYA,EAAK,SAAS,OAAS,EAC/E,CAEA,SAASC,EAAoBC,EAAsBC,EAA+C,CAChG,OAAOD,EAAM,QAASF,GAAS,CAC7B,GAAIG,EAAcH,EAAK,EAAE,EAAI,CAACA,EAAK,EAAE,EAAI,CAAA,EACzC,GAAGC,EAAiBD,EAAK,UAAY,CAAA,EAAIG,CAAa,CAAA,CACvD,CACH,CAEO,SAASC,EAAQ,CACtB,UAAAC,EACA,MAAAC,EACA,WAAAC,EACA,cAAAJ,EACA,aAAAK,EACA,aAAAC,EACA,GAAGC,CACL,EAAiB,CACf,MAAMC,EAAwBR,EAC1B,KAAK,UAAUF,EAAiBK,EAAOH,CAAa,CAAC,EACrD,GACES,EAAmB,CAAC,GAAIH,GAAgB,CAAA,EAAKE,CAAqB,EAExE,SAASE,EAAWb,EAA8B,CAChD,OACEc,EAAAA,KAACC,EAAAA,SAAA,CACC,GAAIf,EAAK,GACT,UAAWA,EAAK,MAChB,cAAeD,EAAsBC,CAAI,EACzC,UAAU,YACV,SAAUQ,EAAe,IAAMA,EAAaR,CAAI,EAAI,OAEpD,SAAA,CAAAgB,EAAAA,IAACC,EAAA,CAAiB,SAAAV,EAAWP,CAAI,CAAA,CAAE,EAClCA,EAAK,UAAYA,EAAK,SAAS,OAAS,GACvCgB,MAACE,EAAAA,WAAA,CAAW,MAAOlB,EAAK,SAAU,aAAcY,EAC7C,SAAAC,EACH,IAEAV,GAAA,YAAAA,EAAgBH,EAAK,MAAO,KAC5BgB,EAAAA,IAACD,EAAAA,SAAA,CAAY,GAAI,GAAGf,EAAK,EAAE,YAAa,UAAU,UAAU,WAAU,GAAC,UAAU,YAC/E,SAAAgB,EAAAA,IAACC,EAAA,CACC,SAAAD,EAAAA,IAACG,EAAAA,aAAY,cAAW,GAAC,QAAQ,QAAQ,KAAK,KAAK,KAAK,OAAA,CAAQ,EAClE,CAAA,CACF,CAAA,CAAA,CAAA,CAIR,CAEA,OACEH,EAAAA,IAACI,EAAAA,KAAA,CAAQ,MAAAd,EAAc,UAAWe,EAAAA,KAAKhB,EAAW,MAAM,EAAG,aAAcO,EAAmB,GAAGF,EAC5F,SAAAG,CAAA,CACH,CAEJ,CAMA,SAASI,EAAgB,CAAE,SAAAK,GAAkC,CAC3D,aACGC,EAAAA,gBAAA,CACE,SAAA,CAAC,CAAE,cAAAC,EAAe,MAAAC,KACjBX,EAAAA,KAAC,MAAA,CACC,UAAU,gBACV,MAAO,CAAE,oBAAqBW,EAAQ,CAAA,EAErC,SAAA,CAAAD,QACEE,EAAAA,OAAA,CAAO,KAAK,UAAU,UAAU,oBAC/B,SAAAV,EAAAA,IAACW,EAAAA,iBAAA,CAAiB,KAAK,IAAA,CAAK,EAC9B,EAEAX,MAAC,QAAK,UAAU,2BAA2B,cAAY,OAAO,EAE/DM,CAAA,CAAA,CAAA,EAGP,CAEJ"}
|