@rpcbase/ui 0.282.0 → 0.284.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/index13.js +0 -1
- package/dist/index13.js.map +1 -1
- package/dist/index14.js.map +1 -1
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +45 -37
- package/dist/index16.js.map +1 -1
- package/dist/index182.js +162 -145
- package/dist/index182.js.map +1 -1
- package/dist/index294.js +27 -16
- package/dist/index294.js.map +1 -1
- package/dist/index296.js +83 -56
- package/dist/index296.js.map +1 -1
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +18 -12
- package/dist/index299.js.map +1 -1
- package/dist/index300.js +352 -255
- package/dist/index300.js.map +1 -1
- package/dist/index301.js.map +1 -1
- package/dist/index356.js.map +1 -1
- package/dist/index358.js.map +1 -1
- package/dist/index361.js.map +1 -1
- package/dist/index362.js.map +1 -1
- package/dist/index4.js.map +1 -1
- package/dist/index416.js +62 -40
- package/dist/index416.js.map +1 -1
- package/dist/index417.js.map +1 -1
- package/dist/index419.js.map +1 -1
- package/dist/index420.js.map +1 -1
- package/dist/index421.js.map +1 -1
- package/dist/index6.js.map +1 -1
- package/dist/index7.js +133 -91
- package/dist/index7.js.map +1 -1
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +19 -16
- package/dist/index9.js.map +1 -1
- package/package.json +3 -5
package/dist/index182.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index182.js","names":["next","event","target","root","parsed","popover"],"sources":["../src/components/DayPickerField/index.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight, CalendarDays } from \"lucide-react\"\nimport * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { DayPicker as ReactDayPicker, dateMatchModifiers } from \"react-day-picker\"\nimport { IMaskInput } from \"react-imask\"\nimport IMask, { InputMask } from \"imask\"\n\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\n// WARNING: used to preserve input mask even with tree shaking\n// DO NOT REMOVE THIS CODE OR THIS COMMENT\nconst imaskAny = IMask as any\nif (typeof imaskAny.InputMask !== \"function\") {\n imaskAny.InputMask = InputMask\n}\n\n\nexport type DayPickerProps = React.ComponentProps<typeof ReactDayPicker>\n\nexport function DayPicker({\n className,\n classNames,\n components,\n showOutsideDays = true,\n ...props\n}: DayPickerProps) {\n return (\n <ReactDayPicker\n weekStartsOn={1}\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n month: \"space-y-4\",\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2\",\n month_caption: \"flex justify-center pt-1 relative items-center\",\n month_grid: \"w-full border-collapse space-y-1\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center justify-between absolute inset-x-0 z-10\",\n button_previous:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n button_next:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n weeks: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-md first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md\",\n day_button:\n \"inline-flex h-9 w-9 items-center justify-center rounded-md p-0 text-center text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n range_start:\n \"day-range-start !bg-accent rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_end:\n \"day-range-end !bg-accent rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground !rounded-none\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n today: \"bg-gray-50 text-accent-foreground !rounded-md\",\n outside:\n \"day-outside text-muted-foreground opacity-50 !aria-selected:bg-accent/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: (chevronProps) =>\n chevronProps.orientation === \"left\" ? (\n <ChevronLeft {...chevronProps} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...chevronProps} className=\"h-4 w-4\" />\n ),\n ...components,\n }}\n {...props}\n />\n )\n}\n\nDayPicker.displayName = \"DayPicker\"\n\nfunction pad2(value: number) {\n return String(value).padStart(2, \"0\")\n}\n\nfunction startOfDay(date: Date) {\n const next = new Date(date)\n next.setHours(0, 0, 0, 0)\n return next\n}\n\nfunction startOfMonth(date: Date) {\n return startOfDay(new Date(date.getFullYear(), date.getMonth(), 1))\n}\n\nfunction formatDayInput(date: Date) {\n return `${pad2(date.getDate())}/${pad2(date.getMonth() + 1)}/${date.getFullYear()}`\n}\n\nfunction buildDate({ day, month, year }: { day: number; month: number; year: number }): Date | null {\n if (!Number.isFinite(day) || !Number.isFinite(month) || !Number.isFinite(year)) return null\n\n const date = new Date(year, month - 1, day)\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null\n }\n\n return startOfDay(date)\n}\n\nfunction parseDayInput(value: string, now: Date): Date | null {\n const trimmed = value.trim()\n if (!trimmed) return null\n\n const full = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(trimmed)\n if (full) {\n return buildDate({ day: Number(full[1]), month: Number(full[2]), year: Number(full[3]) })\n }\n\n const shortYear = /^(\\d{2})\\/(\\d{2})\\/(\\d{2})$/.exec(trimmed)\n if (shortYear) {\n const year = Number(shortYear[3])\n if (!Number.isFinite(year)) return null\n return buildDate({ day: Number(shortYear[1]), month: Number(shortYear[2]), year: 2000 + year })\n }\n\n const noYear = /^(\\d{2})\\/(\\d{2})$/.exec(trimmed)\n if (noYear) {\n return buildDate({ day: Number(noYear[1]), month: Number(noYear[2]), year: now.getFullYear() })\n }\n\n return null\n}\n\nexport type DayPickerInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\"\n> & {\n value: Date | null\n onChange: (value: Date | null) => void\n onValueUpdate?: (value: Date | null) => void\n inputClassName?: string\n open?: boolean\n onOpenChange?: (open: boolean) => void\n dayPickerComponent?: React.ComponentType<DayPickerProps>\n dayPickerProps?: Omit<DayPickerProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\n}\n\nexport const DayPickerInput = React.forwardRef<HTMLInputElement, DayPickerInputProps>(\n function DayPickerInput(\n {\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n dayPickerComponent,\n dayPickerProps,\n onFocus,\n onBlur,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n ...rest\n },\n forwardedRef,\n ) {\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const popoverRef = React.useRef<HTMLDivElement | null>(null)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n const isFocusedRef = React.useRef(false)\n const openRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const pointerDownInPopoverRef = React.useRef(false)\n const ignoreNextMaskCompleteValueRef = React.useRef<string | null>(null)\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n openRef.current = open\n const [draft, setDraft] = React.useState(() => (value ? formatDayInput(value) : \"\"))\n const draftSelection = React.useMemo(() => parseDayInput(draft, new Date()), [draft])\n const [month, setMonth] = React.useState(() => startOfMonth(value ?? new Date()))\n const [popoverPosition, setPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n }))\n\n const updateValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n },\n [onValueUpdate],\n )\n\n const commitValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate],\n )\n\n React.useEffect(() => {\n if (isFocusedRef.current) return\n setDraft(value ? formatDayInput(value) : \"\")\n }, [value])\n\n React.useEffect(() => {\n if (!open) return\n setMonth(startOfMonth(value ?? new Date()))\n }, [open, value])\n\n React.useEffect(() => {\n if (!open) return\n if (!draftSelection) return\n setMonth(startOfMonth(draftSelection))\n }, [draftSelection, open])\n\n React.useEffect(() => {\n if (!open) return\n\n const ownerDocument = rootRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (rootRef.current?.contains(target)) return\n if (popoverRef.current?.contains(target)) return\n setOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n if (!openRef.current) return\n const target = event.target\n if (!(target instanceof Node)) return\n if (!rootRef.current?.contains(target) && !popoverRef.current?.contains(target)) return\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const root = rootRef.current\n if (!root) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(root)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [open])\n\n const setRefs = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node)\n } else if (forwardedRef) {\n forwardedRef.current = node\n }\n },\n [forwardedRef],\n )\n\n const closePopover = () => setOpen(false)\n\n const DayPickerComponent = dayPickerComponent ?? DayPicker\n\n const updatePopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n const root = rootRef.current\n const popover = popoverRef.current\n if (!root || !popover) return\n\n const rect = root.getBoundingClientRect()\n const popoverWidth = popover.offsetWidth\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n let left = rect.left\n if (left + popoverWidth > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - popoverWidth - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setPopoverPosition({ left, top })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updatePopoverPosition()\n const rafId = window.requestAnimationFrame(updatePopoverPosition)\n\n window.addEventListener(\"scroll\", updatePopoverPosition, true)\n window.addEventListener(\"resize\", updatePopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updatePopoverPosition, true)\n window.removeEventListener(\"resize\", updatePopoverPosition)\n }\n }, [disabled, open, updatePopoverPosition])\n\n return (\n <div ref={rootRef} data-slot=\"day-picker-input\" className={cn(\"relative group\", className)}>\n <IMaskInput\n {...rest}\n data-slot=\"day-picker-input-input\"\n disabled={disabled}\n readOnly={readOnly}\n autoComplete=\"off\"\n inputRef={setRefs}\n mask={[\n { mask: \"00/00\", lazy: true },\n { mask: \"00/00/00\", lazy: true },\n { mask: \"00/00/0000\", lazy: true },\n ]}\n dispatch={(appended, dynamicMasked) => {\n const digits = (dynamicMasked.value + appended).replace(/\\D/g, \"\")\n if (digits.length <= 4) return dynamicMasked.compiledMasks[0]\n if (digits.length <= 6) return dynamicMasked.compiledMasks[1]\n return dynamicMasked.compiledMasks[2]\n }}\n placeholder={placeholder}\n value={draft}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background py-2 pr-3 pl-[37px] text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n inputClassName\n )}\n onAccept={(nextValue) => {\n const next = typeof nextValue === \"string\" ? nextValue : String(nextValue ?? \"\")\n const previousDigitsLength = draft.replace(/\\D/g, \"\").length\n setDraft(next)\n if (next.replace(/\\D/g, \"\").length === 0) {\n if (open) {\n setMonth(startOfMonth(new Date()))\n }\n if (previousDigitsLength !== 0) {\n updateValue(null)\n }\n }\n }}\n onComplete={(completedValue) => {\n const next = typeof completedValue === \"string\"\n ? completedValue\n : String(completedValue ?? \"\")\n if (ignoreNextMaskCompleteValueRef.current === next) {\n ignoreNextMaskCompleteValueRef.current = null\n return\n }\n const parsed = parseDayInput(next, new Date())\n if (!parsed) return\n if (value && parsed.getTime() === startOfDay(value).getTime()) {\n return\n }\n updateValue(parsed)\n }}\n onPointerDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current =\n typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n onPointerDown?.(event)\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current =\n typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n onMouseDown?.(event)\n }}\n onFocus={(event) => {\n const shouldSelectAll =\n !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isFocusedRef.current = true\n onFocus?.(event)\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n if (!disabled) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n const wasDefaultPrevented = event.defaultPrevented\n onKeyDown?.(event)\n if (!wasDefaultPrevented && event.defaultPrevented) {\n return\n }\n\n if (event.key === \"Enter\") {\n if (!draftSelection) {\n return\n }\n event.preventDefault()\n if (open) {\n const isoDay = `${draftSelection.getFullYear()}-${pad2(draftSelection.getMonth() + 1)}-${pad2(draftSelection.getDate())}`\n const dayButton = popoverRef.current?.querySelector(\n `[data-day='${isoDay}']:not([data-outside]) button`,\n )\n if (dayButton instanceof HTMLButtonElement) {\n if (dayButton.disabled) {\n return\n }\n dayButton.focus()\n }\n }\n setDraft(formatDayInput(draftSelection))\n commitValue(draftSelection)\n setOpen(false)\n return\n }\n\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n const base = draftSelection ?? value\n if (!base) {\n return\n }\n\n const next = startOfDay(new Date(base))\n next.setDate(next.getDate() + (event.key === \"ArrowUp\" ? 1 : -1))\n\n if (dayPickerProps?.disabled && dateMatchModifiers(next, dayPickerProps.disabled)) {\n return\n }\n\n event.preventDefault()\n const formatted = formatDayInput(next)\n ignoreNextMaskCompleteValueRef.current = formatted\n setDraft(formatted)\n updateValue(next)\n }\n\n if (!open) {\n const shouldReopen =\n (event.key.length === 1 ||\n event.key === \"Backspace\" ||\n event.key === \"Delete\" ||\n event.key === \"ArrowUp\" ||\n event.key === \"ArrowDown\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"Tab\" && !event.defaultPrevented) {\n setOpen(false)\n }\n }}\n onBlur={(event) => {\n isFocusedRef.current = false\n onBlur?.(event)\n const blurFromPopoverPointerDown = pointerDownInPopoverRef.current\n pointerDownInPopoverRef.current = false\n if (blurFromPopoverPointerDown) {\n return\n }\n\n const relatedTarget = event.relatedTarget\n if (relatedTarget instanceof Node) {\n const root = rootRef.current\n if (!root) {\n return\n }\n\n if (root.contains(relatedTarget) || popoverRef.current?.contains(relatedTarget)) {\n return\n }\n }\n\n if (open && typeof window !== \"undefined\") {\n requestAnimationFrame(() => {\n const root = rootRef.current\n if (!root) {\n return\n }\n const activeElement = document.activeElement\n if (\n activeElement &&\n (root.contains(activeElement) || popoverRef.current?.contains(activeElement))\n ) {\n return\n }\n setOpen(false)\n })\n }\n const trimmed = draft.trim()\n if (trimmed === \"\") {\n if (value) {\n setDraft(\"\")\n commitValue(null)\n }\n return\n }\n const parsed = parseDayInput(trimmed, new Date())\n if (parsed) {\n setDraft(formatDayInput(parsed))\n if (!value || parsed.getTime() !== startOfDay(value).getTime()) {\n commitValue(parsed)\n }\n return\n }\n setDraft(value ? formatDayInput(value) : \"\")\n }}\n />\n\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n aria-label=\"Open calendar\"\n data-slot=\"day-picker-input-trigger\"\n className=\"absolute left-[13px] top-1/2 -translate-y-1/2 text-muted-foreground transition-colors group-hover:text-accent-foreground\"\n onPointerDown={(event) => {\n event.preventDefault()\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n }}\n onClick={() => {\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n setOpen(true)\n }}\n >\n <CalendarDays aria-hidden className=\"size-4\" />\n </button>\n\n {open && !disabled && (() => {\n const selectedDay = draft.trim() === \"\"\n ? undefined\n : draftSelection ?? value ?? undefined\n\n const popover = (\n <>\n <div\n ref={popoverRef}\n data-slot=\"day-picker-input-popover\"\n className=\"pointer-events-auto fixed z-[60] w-max rounded-md border bg-popover text-popover-foreground shadow-md\"\n style={{ left: popoverPosition.left, top: popoverPosition.top }}\n onPointerDownCapture={() => {\n pointerDownInPopoverRef.current = true\n }}\n onMouseDownCapture={() => {\n pointerDownInPopoverRef.current = true\n }}\n >\n <DayPickerComponent\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={selectedDay}\n onSelect={(date) => {\n if (!date) {\n if (value) {\n commitValue(null)\n }\n setDraft(\"\")\n closePopover()\n return\n }\n\n const normalized = startOfDay(date)\n if (!value || normalized.getTime() !== startOfDay(value).getTime()) {\n commitValue(normalized)\n }\n setDraft(formatDayInput(normalized))\n closePopover()\n }}\n {...dayPickerProps}\n />\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })()}\n </div>\n )\n }\n)\n\nDayPickerInput.displayName = \"DayPickerInput\"\n\nexport type DayPickerFieldProps = {\n id?: string\n value: Date | null\n onChange: (value: Date | null) => void\n onValueUpdate?: (value: Date | null) => void\n className?: string\n inputClassName?: string\n placeholder?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n dayPickerComponent?: React.ComponentType<DayPickerProps>\n dayPickerProps?: Omit<DayPickerProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\n triggerTestId?: string\n isHydrated?: boolean\n}\n\nfunction DayPickerButtonField({\n id,\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n open: openProp,\n onOpenChange,\n dayPickerComponent,\n dayPickerProps,\n triggerTestId,\n isHydrated,\n}: DayPickerFieldProps) {\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const popoverRef = React.useRef<HTMLDivElement | null>(null)\n const openRef = React.useRef(false)\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n openRef.current = open\n const [month, setMonth] = React.useState(() => startOfMonth(value ?? new Date()))\n const [popoverPosition, setPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n }))\n\n React.useEffect(() => {\n if (!open) return\n setMonth(startOfMonth(value ?? new Date()))\n }, [open, value])\n\n React.useEffect(() => {\n if (!open) return\n\n const ownerDocument = rootRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (rootRef.current?.contains(target)) return\n if (popoverRef.current?.contains(target)) return\n setOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n if (!openRef.current) return\n const target = event.target\n if (!(target instanceof Node)) return\n if (!rootRef.current?.contains(target) && !popoverRef.current?.contains(target)) return\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const root = rootRef.current\n if (!root) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(root)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [open])\n\n const DayPickerComponent = dayPickerComponent ?? DayPicker\n\n const updatePopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n const root = rootRef.current\n const popover = popoverRef.current\n if (!root || !popover) return\n\n const rect = root.getBoundingClientRect()\n const popoverWidth = popover.offsetWidth\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n let left = rect.left\n if (left + popoverWidth > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - popoverWidth - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setPopoverPosition({ left, top })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updatePopoverPosition()\n const rafId = window.requestAnimationFrame(updatePopoverPosition)\n\n window.addEventListener(\"scroll\", updatePopoverPosition, true)\n window.addEventListener(\"resize\", updatePopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updatePopoverPosition, true)\n window.removeEventListener(\"resize\", updatePopoverPosition)\n }\n }, [disabled, open, updatePopoverPosition])\n\n const commitValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate],\n )\n\n return (\n <div ref={rootRef} data-slot=\"day-picker-input\" className={cn(\"relative group\", className)}>\n <button\n id={id}\n type=\"button\"\n disabled={disabled}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n data-slot=\"day-picker-input-input\"\n className={cn(\n \"flex h-10 w-full items-center rounded-md border border-input bg-background px-3 py-2 text-left text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n inputClassName,\n )}\n onClick={() => {\n if (disabled) return\n setOpen(!open)\n }}\n >\n <CalendarDays\n aria-hidden\n className=\"mr-2 size-4 text-muted-foreground transition-colors group-hover:text-accent-foreground\"\n />\n {value ? formatDayInput(value) : placeholder}\n </button>\n\n {open && !disabled && (() => {\n const popover = (\n <>\n <div\n ref={popoverRef}\n data-slot=\"day-picker-input-popover\"\n className=\"pointer-events-auto fixed z-[60] w-max rounded-md border bg-popover text-popover-foreground shadow-md\"\n style={{ left: popoverPosition.left, top: popoverPosition.top }}\n >\n <DayPickerComponent\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={value ?? undefined}\n onSelect={(date) => {\n if (!date) {\n commitValue(null)\n setOpen(false)\n return\n }\n\n const normalized = startOfDay(date)\n if (!value || normalized.getTime() !== startOfDay(value).getTime()) {\n commitValue(normalized)\n }\n setOpen(false)\n }}\n {...dayPickerProps}\n />\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })()}\n </div>\n )\n}\n\nexport function DayPickerField(props: DayPickerFieldProps) {\n const isTouchDevice = useIsTouchDevice()\n\n if (isTouchDevice) {\n return <DayPickerButtonField {...props} />\n }\n\n const {\n id,\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n readOnly,\n dayPickerComponent,\n dayPickerProps,\n triggerTestId,\n isHydrated,\n open,\n onOpenChange,\n } = props\n\n return (\n <DayPickerInput\n id={id}\n value={value}\n onChange={onChange}\n onValueUpdate={onValueUpdate}\n className={className}\n inputClassName={inputClassName}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n onOpenChange={onOpenChange}\n dayPickerComponent={dayPickerComponent}\n dayPickerProps={dayPickerProps}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n />\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index182.js","names":["showOutsideDays = true","{\n className,\n classNames,\n components,\n showOutsideDays = true,\n ...props\n}: DayPickerProps","cn(\"p-3\", className)","{\n month: \"space-y-4\",\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2\",\n month_caption: \"flex justify-center pt-1 relative items-center\",\n month_grid: \"w-full border-collapse space-y-1\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center justify-between absolute inset-x-0 z-10\",\n button_previous:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n button_next:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n weeks: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-md first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md\",\n day_button:\n \"inline-flex h-9 w-9 items-center justify-center rounded-md p-0 text-center text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n range_start:\n \"day-range-start !bg-accent rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_end:\n \"day-range-end !bg-accent rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground !rounded-none\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n today: \"bg-gray-50 text-accent-foreground !rounded-md\",\n outside:\n \"day-outside text-muted-foreground opacity-50 !aria-selected:bg-accent/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }","{\n Chevron: (chevronProps) =>\n chevronProps.orientation === \"left\" ? (\n <ChevronLeft {...chevronProps} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...chevronProps} className=\"h-4 w-4\" />\n ),\n ...components,\n }","(chevronProps) =>\n chevronProps.orientation === \"left\" ? (\n <ChevronLeft {...chevronProps} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...chevronProps} className=\"h-4 w-4\" />\n )","<ReactDayPicker\n weekStartsOn={1}\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n month: \"space-y-4\",\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2\",\n month_caption: \"flex justify-center pt-1 relative items-center\",\n month_grid: \"w-full border-collapse space-y-1\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center justify-between absolute inset-x-0 z-10\",\n button_previous:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n button_next:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n weeks: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-md first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md\",\n day_button:\n \"inline-flex h-9 w-9 items-center justify-center rounded-md p-0 text-center text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n range_start:\n \"day-range-start !bg-accent rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_end:\n \"day-range-end !bg-accent rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground !rounded-none\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n today: \"bg-gray-50 text-accent-foreground !rounded-md\",\n outside:\n \"day-outside text-muted-foreground opacity-50 !aria-selected:bg-accent/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: (chevronProps) =>\n chevronProps.orientation === \"left\" ? (\n <ChevronLeft {...chevronProps} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...chevronProps} className=\"h-4 w-4\" />\n ),\n ...components,\n }}\n {...props}\n />","<DayPickerButtonField {...props} />","placeholder = \"DD/MM/YYYY\"","<DayPickerInput\n id={id}\n value={value}\n onChange={onChange}\n onValueUpdate={onValueUpdate}\n className={className}\n inputClassName={inputClassName}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n onOpenChange={onOpenChange}\n dayPickerComponent={dayPickerComponent}\n dayPickerProps={dayPickerProps}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n />","isHydrated ? \"true\" : undefined"],"sources":["../src/components/DayPickerField/index.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight, CalendarDays } from \"lucide-react\"\nimport * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { DayPicker as ReactDayPicker, dateMatchModifiers } from \"react-day-picker\"\nimport { IMaskInput } from \"react-imask\"\nimport IMask, { InputMask } from \"imask\"\n\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\n// WARNING: used to preserve input mask even with tree shaking\n// DO NOT REMOVE THIS CODE OR THIS COMMENT\nconst imaskAny = IMask as any\nif (typeof imaskAny.InputMask !== \"function\") {\n imaskAny.InputMask = InputMask\n}\n\n\nexport type DayPickerProps = React.ComponentProps<typeof ReactDayPicker>\n\nexport function DayPicker({\n className,\n classNames,\n components,\n showOutsideDays = true,\n ...props\n}: DayPickerProps) {\n return (\n <ReactDayPicker\n weekStartsOn={1}\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n month: \"space-y-4\",\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2\",\n month_caption: \"flex justify-center pt-1 relative items-center\",\n month_grid: \"w-full border-collapse space-y-1\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center justify-between absolute inset-x-0 z-10\",\n button_previous:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n button_next:\n \"inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-transparent p-0 opacity-50 shadow-sm transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 z-10\",\n weeks: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday: \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n week: \"flex w-full mt-2\",\n day: \"h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-md first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md\",\n day_button:\n \"inline-flex h-9 w-9 items-center justify-center rounded-md p-0 text-center text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n range_start:\n \"day-range-start !bg-accent rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_end:\n \"day-range-end !bg-accent rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground\",\n range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground !rounded-none\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n today: \"bg-gray-50 text-accent-foreground !rounded-md\",\n outside:\n \"day-outside text-muted-foreground opacity-50 !aria-selected:bg-accent/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n Chevron: (chevronProps) =>\n chevronProps.orientation === \"left\" ? (\n <ChevronLeft {...chevronProps} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...chevronProps} className=\"h-4 w-4\" />\n ),\n ...components,\n }}\n {...props}\n />\n )\n}\n\nDayPicker.displayName = \"DayPicker\"\n\nfunction pad2(value: number) {\n return String(value).padStart(2, \"0\")\n}\n\nfunction startOfDay(date: Date) {\n const next = new Date(date)\n next.setHours(0, 0, 0, 0)\n return next\n}\n\nfunction startOfMonth(date: Date) {\n return startOfDay(new Date(date.getFullYear(), date.getMonth(), 1))\n}\n\nfunction formatDayInput(date: Date) {\n return `${pad2(date.getDate())}/${pad2(date.getMonth() + 1)}/${date.getFullYear()}`\n}\n\nfunction buildDate({ day, month, year }: { day: number; month: number; year: number }): Date | null {\n if (!Number.isFinite(day) || !Number.isFinite(month) || !Number.isFinite(year)) return null\n\n const date = new Date(year, month - 1, day)\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null\n }\n\n return startOfDay(date)\n}\n\nfunction parseDayInput(value: string, now: Date): Date | null {\n const trimmed = value.trim()\n if (!trimmed) return null\n\n const full = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(trimmed)\n if (full) {\n return buildDate({ day: Number(full[1]), month: Number(full[2]), year: Number(full[3]) })\n }\n\n const shortYear = /^(\\d{2})\\/(\\d{2})\\/(\\d{2})$/.exec(trimmed)\n if (shortYear) {\n const year = Number(shortYear[3])\n if (!Number.isFinite(year)) return null\n return buildDate({ day: Number(shortYear[1]), month: Number(shortYear[2]), year: 2000 + year })\n }\n\n const noYear = /^(\\d{2})\\/(\\d{2})$/.exec(trimmed)\n if (noYear) {\n return buildDate({ day: Number(noYear[1]), month: Number(noYear[2]), year: now.getFullYear() })\n }\n\n return null\n}\n\nexport type DayPickerInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\"\n> & {\n value: Date | null\n onChange: (value: Date | null) => void\n onValueUpdate?: (value: Date | null) => void\n inputClassName?: string\n open?: boolean\n onOpenChange?: (open: boolean) => void\n dayPickerComponent?: React.ComponentType<DayPickerProps>\n dayPickerProps?: Omit<DayPickerProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\n}\n\nexport const DayPickerInput = React.forwardRef<HTMLInputElement, DayPickerInputProps>(\n function DayPickerInput(\n {\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n dayPickerComponent,\n dayPickerProps,\n onFocus,\n onBlur,\n onKeyDown,\n onPointerDown,\n onMouseDown,\n ...rest\n },\n forwardedRef,\n ) {\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const popoverRef = React.useRef<HTMLDivElement | null>(null)\n const inputRef = React.useRef<HTMLInputElement | null>(null)\n const isFocusedRef = React.useRef(false)\n const openRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const pointerDownInPopoverRef = React.useRef(false)\n const ignoreNextMaskCompleteValueRef = React.useRef<string | null>(null)\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n openRef.current = open\n const [draft, setDraft] = React.useState(() => (value ? formatDayInput(value) : \"\"))\n const draftSelection = React.useMemo(() => parseDayInput(draft, new Date()), [draft])\n const [month, setMonth] = React.useState(() => startOfMonth(value ?? new Date()))\n const [popoverPosition, setPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n }))\n\n const updateValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n },\n [onValueUpdate],\n )\n\n const commitValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate],\n )\n\n React.useEffect(() => {\n if (isFocusedRef.current) return\n setDraft(value ? formatDayInput(value) : \"\")\n }, [value])\n\n React.useEffect(() => {\n if (!open) return\n setMonth(startOfMonth(value ?? new Date()))\n }, [open, value])\n\n React.useEffect(() => {\n if (!open) return\n if (!draftSelection) return\n setMonth(startOfMonth(draftSelection))\n }, [draftSelection, open])\n\n React.useEffect(() => {\n if (!open) return\n\n const ownerDocument = rootRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (rootRef.current?.contains(target)) return\n if (popoverRef.current?.contains(target)) return\n setOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n if (!openRef.current) return\n const target = event.target\n if (!(target instanceof Node)) return\n if (!rootRef.current?.contains(target) && !popoverRef.current?.contains(target)) return\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const root = rootRef.current\n if (!root) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(root)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [open])\n\n const setRefs = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node)\n } else if (forwardedRef) {\n forwardedRef.current = node\n }\n },\n [forwardedRef],\n )\n\n const closePopover = () => setOpen(false)\n\n const DayPickerComponent = dayPickerComponent ?? DayPicker\n\n const updatePopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n const root = rootRef.current\n const popover = popoverRef.current\n if (!root || !popover) return\n\n const rect = root.getBoundingClientRect()\n const popoverWidth = popover.offsetWidth\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n let left = rect.left\n if (left + popoverWidth > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - popoverWidth - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setPopoverPosition({ left, top })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updatePopoverPosition()\n const rafId = window.requestAnimationFrame(updatePopoverPosition)\n\n window.addEventListener(\"scroll\", updatePopoverPosition, true)\n window.addEventListener(\"resize\", updatePopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updatePopoverPosition, true)\n window.removeEventListener(\"resize\", updatePopoverPosition)\n }\n }, [disabled, open, updatePopoverPosition])\n\n return (\n <div ref={rootRef} data-slot=\"day-picker-input\" className={cn(\"relative group\", className)}>\n <IMaskInput\n {...rest}\n data-slot=\"day-picker-input-input\"\n disabled={disabled}\n readOnly={readOnly}\n autoComplete=\"off\"\n inputRef={setRefs}\n mask={[\n { mask: \"00/00\", lazy: true },\n { mask: \"00/00/00\", lazy: true },\n { mask: \"00/00/0000\", lazy: true },\n ]}\n dispatch={(appended, dynamicMasked) => {\n const digits = (dynamicMasked.value + appended).replace(/\\D/g, \"\")\n if (digits.length <= 4) return dynamicMasked.compiledMasks[0]\n if (digits.length <= 6) return dynamicMasked.compiledMasks[1]\n return dynamicMasked.compiledMasks[2]\n }}\n placeholder={placeholder}\n value={draft}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background py-2 pr-3 pl-[37px] text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n inputClassName\n )}\n onAccept={(nextValue) => {\n const next = typeof nextValue === \"string\" ? nextValue : String(nextValue ?? \"\")\n const previousDigitsLength = draft.replace(/\\D/g, \"\").length\n setDraft(next)\n if (next.replace(/\\D/g, \"\").length === 0) {\n if (open) {\n setMonth(startOfMonth(new Date()))\n }\n if (previousDigitsLength !== 0) {\n updateValue(null)\n }\n }\n }}\n onComplete={(completedValue) => {\n const next = typeof completedValue === \"string\"\n ? completedValue\n : String(completedValue ?? \"\")\n if (ignoreNextMaskCompleteValueRef.current === next) {\n ignoreNextMaskCompleteValueRef.current = null\n return\n }\n const parsed = parseDayInput(next, new Date())\n if (!parsed) return\n if (value && parsed.getTime() === startOfDay(value).getTime()) {\n return\n }\n updateValue(parsed)\n }}\n onPointerDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current =\n typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n onPointerDown?.(event)\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current =\n typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n onMouseDown?.(event)\n }}\n onFocus={(event) => {\n const shouldSelectAll =\n !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isFocusedRef.current = true\n onFocus?.(event)\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n if (!disabled) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n const wasDefaultPrevented = event.defaultPrevented\n onKeyDown?.(event)\n if (!wasDefaultPrevented && event.defaultPrevented) {\n return\n }\n\n if (event.key === \"Enter\") {\n if (!draftSelection) {\n return\n }\n event.preventDefault()\n if (open) {\n const isoDay = `${draftSelection.getFullYear()}-${pad2(draftSelection.getMonth() + 1)}-${pad2(draftSelection.getDate())}`\n const dayButton = popoverRef.current?.querySelector(\n `[data-day='${isoDay}']:not([data-outside]) button`,\n )\n if (dayButton instanceof HTMLButtonElement) {\n if (dayButton.disabled) {\n return\n }\n dayButton.focus()\n }\n }\n setDraft(formatDayInput(draftSelection))\n commitValue(draftSelection)\n setOpen(false)\n return\n }\n\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n const base = draftSelection ?? value\n if (!base) {\n return\n }\n\n const next = startOfDay(new Date(base))\n next.setDate(next.getDate() + (event.key === \"ArrowUp\" ? 1 : -1))\n\n if (dayPickerProps?.disabled && dateMatchModifiers(next, dayPickerProps.disabled)) {\n return\n }\n\n event.preventDefault()\n const formatted = formatDayInput(next)\n ignoreNextMaskCompleteValueRef.current = formatted\n setDraft(formatted)\n updateValue(next)\n }\n\n if (!open) {\n const shouldReopen =\n (event.key.length === 1 ||\n event.key === \"Backspace\" ||\n event.key === \"Delete\" ||\n event.key === \"ArrowUp\" ||\n event.key === \"ArrowDown\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"Tab\" && !event.defaultPrevented) {\n setOpen(false)\n }\n }}\n onBlur={(event) => {\n isFocusedRef.current = false\n onBlur?.(event)\n const blurFromPopoverPointerDown = pointerDownInPopoverRef.current\n pointerDownInPopoverRef.current = false\n if (blurFromPopoverPointerDown) {\n return\n }\n\n const relatedTarget = event.relatedTarget\n if (relatedTarget instanceof Node) {\n const root = rootRef.current\n if (!root) {\n return\n }\n\n if (root.contains(relatedTarget) || popoverRef.current?.contains(relatedTarget)) {\n return\n }\n }\n\n if (open && typeof window !== \"undefined\") {\n requestAnimationFrame(() => {\n const root = rootRef.current\n if (!root) {\n return\n }\n const activeElement = document.activeElement\n if (\n activeElement &&\n (root.contains(activeElement) || popoverRef.current?.contains(activeElement))\n ) {\n return\n }\n setOpen(false)\n })\n }\n const trimmed = draft.trim()\n if (trimmed === \"\") {\n if (value) {\n setDraft(\"\")\n commitValue(null)\n }\n return\n }\n const parsed = parseDayInput(trimmed, new Date())\n if (parsed) {\n setDraft(formatDayInput(parsed))\n if (!value || parsed.getTime() !== startOfDay(value).getTime()) {\n commitValue(parsed)\n }\n return\n }\n setDraft(value ? formatDayInput(value) : \"\")\n }}\n />\n\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n aria-label=\"Open calendar\"\n data-slot=\"day-picker-input-trigger\"\n className=\"absolute left-[13px] top-1/2 -translate-y-1/2 text-muted-foreground transition-colors group-hover:text-accent-foreground\"\n onPointerDown={(event) => {\n event.preventDefault()\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n }}\n onClick={() => {\n if (disabled) {\n return\n }\n inputRef.current?.focus({ preventScroll: true })\n setOpen(true)\n }}\n >\n <CalendarDays aria-hidden className=\"size-4\" />\n </button>\n\n {open && !disabled && (() => {\n const selectedDay = draft.trim() === \"\"\n ? undefined\n : draftSelection ?? value ?? undefined\n\n const popover = (\n <>\n <div\n ref={popoverRef}\n data-slot=\"day-picker-input-popover\"\n className=\"pointer-events-auto fixed z-[60] w-max rounded-md border bg-popover text-popover-foreground shadow-md\"\n style={{ left: popoverPosition.left, top: popoverPosition.top }}\n onPointerDownCapture={() => {\n pointerDownInPopoverRef.current = true\n }}\n onMouseDownCapture={() => {\n pointerDownInPopoverRef.current = true\n }}\n >\n <DayPickerComponent\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={selectedDay}\n onSelect={(date) => {\n if (!date) {\n if (value) {\n commitValue(null)\n }\n setDraft(\"\")\n closePopover()\n return\n }\n\n const normalized = startOfDay(date)\n if (!value || normalized.getTime() !== startOfDay(value).getTime()) {\n commitValue(normalized)\n }\n setDraft(formatDayInput(normalized))\n closePopover()\n }}\n {...dayPickerProps}\n />\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })()}\n </div>\n )\n }\n)\n\nDayPickerInput.displayName = \"DayPickerInput\"\n\nexport type DayPickerFieldProps = {\n id?: string\n value: Date | null\n onChange: (value: Date | null) => void\n onValueUpdate?: (value: Date | null) => void\n className?: string\n inputClassName?: string\n placeholder?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n dayPickerComponent?: React.ComponentType<DayPickerProps>\n dayPickerProps?: Omit<DayPickerProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\n triggerTestId?: string\n isHydrated?: boolean\n}\n\nfunction DayPickerButtonField({\n id,\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n open: openProp,\n onOpenChange,\n dayPickerComponent,\n dayPickerProps,\n triggerTestId,\n isHydrated,\n}: DayPickerFieldProps) {\n const rootRef = React.useRef<HTMLDivElement | null>(null)\n const popoverRef = React.useRef<HTMLDivElement | null>(null)\n const openRef = React.useRef(false)\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n openRef.current = open\n const [month, setMonth] = React.useState(() => startOfMonth(value ?? new Date()))\n const [popoverPosition, setPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n }))\n\n React.useEffect(() => {\n if (!open) return\n setMonth(startOfMonth(value ?? new Date()))\n }, [open, value])\n\n React.useEffect(() => {\n if (!open) return\n\n const ownerDocument = rootRef.current?.ownerDocument ?? document\n const ownerWindow = ownerDocument.defaultView ?? window\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (rootRef.current?.contains(target)) return\n if (popoverRef.current?.contains(target)) return\n setOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n if (!openRef.current) return\n const target = event.target\n if (!(target instanceof Node)) return\n if (!rootRef.current?.contains(target) && !popoverRef.current?.contains(target)) return\n event.preventDefault()\n event.stopPropagation()\n setOpen(false)\n }\n\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.addEventListener(\"keydown\", handleKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown, true)\n ownerWindow.removeEventListener(\"keydown\", handleKeyDown, true)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const root = rootRef.current\n if (!root) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(root)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [open])\n\n const DayPickerComponent = dayPickerComponent ?? DayPicker\n\n const updatePopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n const root = rootRef.current\n const popover = popoverRef.current\n if (!root || !popover) return\n\n const rect = root.getBoundingClientRect()\n const popoverWidth = popover.offsetWidth\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n let left = rect.left\n if (left + popoverWidth > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - popoverWidth - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setPopoverPosition({ left, top })\n }, [])\n\n // React Compiler rejects hook aliasing (useIsomorphicLayoutEffect pattern), so we\n // call useLayoutEffect directly and keep the SSR guard inside the effect.\n React.useLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updatePopoverPosition()\n const rafId = window.requestAnimationFrame(updatePopoverPosition)\n\n window.addEventListener(\"scroll\", updatePopoverPosition, true)\n window.addEventListener(\"resize\", updatePopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updatePopoverPosition, true)\n window.removeEventListener(\"resize\", updatePopoverPosition)\n }\n }, [disabled, open, updatePopoverPosition])\n\n const commitValue = React.useCallback(\n (next: Date | null) => {\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate],\n )\n\n return (\n <div ref={rootRef} data-slot=\"day-picker-input\" className={cn(\"relative group\", className)}>\n <button\n id={id}\n type=\"button\"\n disabled={disabled}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n data-slot=\"day-picker-input-input\"\n className={cn(\n \"flex h-10 w-full items-center rounded-md border border-input bg-background px-3 py-2 text-left text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n inputClassName,\n )}\n onClick={() => {\n if (disabled) return\n setOpen(!open)\n }}\n >\n <CalendarDays\n aria-hidden\n className=\"mr-2 size-4 text-muted-foreground transition-colors group-hover:text-accent-foreground\"\n />\n {value ? formatDayInput(value) : placeholder}\n </button>\n\n {open && !disabled && (() => {\n const popover = (\n <>\n <div\n ref={popoverRef}\n data-slot=\"day-picker-input-popover\"\n className=\"pointer-events-auto fixed z-[60] w-max rounded-md border bg-popover text-popover-foreground shadow-md\"\n style={{ left: popoverPosition.left, top: popoverPosition.top }}\n >\n <DayPickerComponent\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={value ?? undefined}\n onSelect={(date) => {\n if (!date) {\n commitValue(null)\n setOpen(false)\n return\n }\n\n const normalized = startOfDay(date)\n if (!value || normalized.getTime() !== startOfDay(value).getTime()) {\n commitValue(normalized)\n }\n setOpen(false)\n }}\n {...dayPickerProps}\n />\n </div>\n </>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })()}\n </div>\n )\n}\n\nexport function DayPickerField(props: DayPickerFieldProps) {\n const isTouchDevice = useIsTouchDevice()\n\n if (isTouchDevice) {\n return <DayPickerButtonField {...props} />\n }\n\n const {\n id,\n value,\n onChange,\n onValueUpdate,\n className,\n inputClassName,\n placeholder = \"DD/MM/YYYY\",\n disabled,\n readOnly,\n dayPickerComponent,\n dayPickerProps,\n triggerTestId,\n isHydrated,\n open,\n onOpenChange,\n } = props\n\n return (\n <DayPickerInput\n id={id}\n value={value}\n onChange={onChange}\n onValueUpdate={onValueUpdate}\n className={className}\n inputClassName={inputClassName}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n onOpenChange={onOpenChange}\n dayPickerComponent={dayPickerComponent}\n dayPickerProps={dayPickerProps}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n />\n )\n}\n"],"mappings":"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"}
|
package/dist/index294.js
CHANGED
|
@@ -69,23 +69,34 @@ function y(n) {
|
|
|
69
69
|
...a
|
|
70
70
|
}), r[5] = a, r[6] = o, r[7] = s) : s = r[7], s;
|
|
71
71
|
}
|
|
72
|
-
var b = d.forwardRef((
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
var b = d.forwardRef((t, r) => {
|
|
73
|
+
let a = u(18), o, s, c, l, d;
|
|
74
|
+
a[0] === t ? (o = a[1], s = a[2], c = a[3], l = a[4], d = a[5]) : ({className: s, children: o, showCloseButton: l, showCloseButtonOutside: d, ...c} = t, a[0] = t, a[1] = o, a[2] = s, a[3] = c, a[4] = l, a[5] = d);
|
|
75
|
+
let h = l === void 0 || l, g = d !== void 0 && d, v;
|
|
76
|
+
a[6] === Symbol.for("react.memo_cache_sentinel") ? (v = /* @__PURE__ */ p(y, {}), a[6] = v) : v = a[6];
|
|
77
|
+
let b;
|
|
78
|
+
a[7] === s ? b = a[8] : (b = e("bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", s), a[7] = s, a[8] = b);
|
|
79
|
+
let x;
|
|
80
|
+
a[9] !== h || a[10] !== g ? (x = h && /* @__PURE__ */ m(n, {
|
|
81
|
+
"data-slot": "dialog-close",
|
|
82
|
+
className: e("absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0", g ? "-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5" : "top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4"),
|
|
83
|
+
children: [/* @__PURE__ */ p(f, {}), /* @__PURE__ */ p("span", {
|
|
84
|
+
className: "sr-only",
|
|
85
|
+
children: "Close"
|
|
86
|
+
})]
|
|
87
|
+
}), a[9] = h, a[10] = g, a[11] = x) : x = a[11];
|
|
88
|
+
let S;
|
|
89
|
+
return a[12] !== o || a[13] !== c || a[14] !== r || a[15] !== b || a[16] !== x ? (S = /* @__PURE__ */ m(_, {
|
|
90
|
+
"data-slot": "dialog-portal",
|
|
91
|
+
children: [v, /* @__PURE__ */ m(i, {
|
|
92
|
+
ref: r,
|
|
93
|
+
"data-slot": "dialog-content",
|
|
94
|
+
className: b,
|
|
95
|
+
...c,
|
|
96
|
+
children: [o, x]
|
|
86
97
|
})]
|
|
87
|
-
})]
|
|
88
|
-
})
|
|
98
|
+
}), a[12] = o, a[13] = c, a[14] = r, a[15] = b, a[16] = x, a[17] = S) : S = a[17], S;
|
|
99
|
+
});
|
|
89
100
|
b.displayName = "DialogContent";
|
|
90
101
|
function x(t) {
|
|
91
102
|
let n = u(8), r, i;
|
package/dist/index294.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index294.js","names":[],"sources":["../src/components/Dialog/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { renderAsChild } from \"@/lib/render-as-child\"\n\n\nfunction Dialog({\n ...props\n}: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>\n )\n}\n\nfunction DialogPortal({\n ...props\n}: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n showCloseButtonOutside?: boolean\n }\n>(({ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }, ref) => (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n))\nDialogContent.displayName = \"DialogContent\"\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index294.js","names":["{\n ...props\n}: DialogPrimitive.Root.Props","<DialogPrimitive.Root data-slot=\"dialog\" {...props} />","DialogPrimitive.Root","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }","renderAsChild(asChild, render, children)","<DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>","asChild ? null : children","DialogPrimitive.Trigger","{\n ...props\n}: DialogPrimitive.Portal.Props","<DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />","DialogPrimitive.Portal","{\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }","<DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>","DialogPrimitive.Close","{\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props","cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )","<DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />","DialogPrimitive.Backdrop","showCloseButton = true","showCloseButtonOutside = false","{ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }","<DialogOverlay />","cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )","showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )","<DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>","DialogPrimitive.Popup","{ className, ...props }: React.ComponentProps<\"div\">","cn(\"flex flex-col gap-2 text-center sm:text-left\", className)","<div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />","cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)","<div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />","{\n className,\n ...props\n}: DialogPrimitive.Title.Props","cn(\"text-lg leading-none font-semibold\", className)","<DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />","DialogPrimitive.Title","{\n className,\n ...props\n}: DialogPrimitive.Description.Props","cn(\"text-muted-foreground text-sm\", className)","<DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />","DialogPrimitive.Description"],"sources":["../src/components/Dialog/index.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { renderAsChild } from \"@/lib/render-as-child\"\n\n\nfunction Dialog({\n ...props\n}: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Trigger>\n )\n}\n\nfunction DialogPortal({\n ...props\n}: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n asChild,\n render,\n children,\n ...props\n}: DialogPrimitive.Close.Props & { asChild?: boolean }) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={renderAsChild(asChild, render, children)}\n {...props}\n >\n {asChild ? null : children}\n </DialogPrimitive.Close>\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n showCloseButtonOutside?: boolean\n }\n>(({ className, children, showCloseButton = true, showCloseButtonOutside = false, ...props }, ref) => (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"absolute ring-offset-background focus:ring-ring transition-opacity focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n showCloseButtonOutside\n ? \"-top-3 -right-3 z-[51] rounded-full border bg-background p-1 opacity-100 hover:bg-accent [&_svg]:size-5\"\n : \"top-4 right-4 rounded-xs opacity-70 hover:opacity-100 data-open:bg-accent data-open:text-muted-foreground [&_svg:not([class*='size-'])]:size-4\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n))\nDialogContent.displayName = \"DialogContent\"\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"],"mappings":"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"}
|
package/dist/index296.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { decode as e } from "./index295.js";
|
|
2
|
-
import {
|
|
2
|
+
import { c as t } from "react/compiler-runtime";
|
|
3
|
+
import { useEffect as n, useRef as ee, useState as r } from "react";
|
|
3
4
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
5
|
//#region src/components/Image/index.tsx
|
|
5
6
|
var o = [
|
|
@@ -26,72 +27,98 @@ var o = [
|
|
|
26
27
|
} catch {
|
|
27
28
|
return e;
|
|
28
29
|
}
|
|
29
|
-
},
|
|
30
|
+
}, te = (e, t = o) => {
|
|
30
31
|
if (!l(e)) return;
|
|
31
32
|
let n = c(t);
|
|
32
33
|
if (n.length) return n.map((t) => `${u(e, t)} ${t}w`).join(", ");
|
|
33
34
|
};
|
|
34
|
-
function
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
function d(s) {
|
|
36
|
+
let c = t(63), d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E;
|
|
37
|
+
c[0] === s ? (d = c[1], f = c[2], p = c[3], m = c[4], h = c[5], g = c[6], _ = c[7], v = c[8], y = c[9], b = c[10], x = c[11], S = c[12], C = c[13], w = c[14], T = c[15], E = c[16]) : ({src: b, hash: p, alt: C, className: d, containerClassName: f, imgClassName: m, widths: w, responsive: v, sizes: y, srcSet: x, loading: T, decoding: E, style: S, onLoad: g, onError: h, ..._} = s, c[0] = s, c[1] = d, c[2] = f, c[3] = p, c[4] = m, c[5] = h, c[6] = g, c[7] = _, c[8] = v, c[9] = y, c[10] = b, c[11] = x, c[12] = S, c[13] = C, c[14] = w, c[15] = T, c[16] = E);
|
|
38
|
+
let D = C === void 0 ? "" : C, O = w === void 0 ? o : w, k = T === void 0 ? "lazy" : T, A = E === void 0 ? "async" : E, [j, ne] = r(!1), [M, re] = r(null), ie = ee(null), N;
|
|
39
|
+
c[17] !== v || c[18] !== b ? (N = v ?? l(b), c[17] = v, c[18] = b, c[19] = N) : N = c[19];
|
|
40
|
+
let P = N, F;
|
|
41
|
+
c[20] !== P || c[21] !== b || c[22] !== x || c[23] !== O ? (F = x ?? (P ? te(b, O) : void 0), c[20] = P, c[21] = b, c[22] = x, c[23] = O, c[24] = F) : F = c[24];
|
|
42
|
+
let I = F, L;
|
|
43
|
+
c[25] !== P || c[26] !== b ? (L = P ? u(b, 960) : b, c[25] = P, c[26] = b, c[27] = L) : L = c[27];
|
|
44
|
+
let R = L, z, B;
|
|
45
|
+
c[28] === p ? (z = c[29], B = c[30]) : (z = () => {
|
|
46
|
+
if (!p) {
|
|
47
|
+
re(null);
|
|
39
48
|
return;
|
|
40
49
|
}
|
|
41
|
-
let [t, n,
|
|
42
|
-
|
|
43
|
-
}, [c]),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
let [t, n, ee] = p, r = e(ee, t, n), i = document.createElement("canvas"), a = i.getContext("2d");
|
|
51
|
+
a && (i.width = t, i.height = n, a.putImageData(new ImageData(new Uint8ClampedArray(r), t, n), 0, 0), re(i.toDataURL()));
|
|
52
|
+
}, B = [p], c[28] = p, c[29] = z, c[30] = B), n(z, B);
|
|
53
|
+
let V;
|
|
54
|
+
c[31] === Symbol.for("react.memo_cache_sentinel") ? (V = () => {
|
|
55
|
+
ne(!1), ie.current?.complete && ne(!0);
|
|
56
|
+
}, c[31] = V) : V = c[31];
|
|
57
|
+
let H;
|
|
58
|
+
c[32] !== R || c[33] !== I ? (H = [R, I], c[32] = R, c[33] = I, c[34] = H) : H = c[34], n(V, H);
|
|
59
|
+
let U = I ? y ?? "100vw" : y, W = p ? m : m ?? d, G;
|
|
60
|
+
c[35] !== p || c[36] !== j || c[37] !== S ? (G = p ? {
|
|
61
|
+
width: "100%",
|
|
62
|
+
height: "100%",
|
|
63
|
+
objectFit: "cover",
|
|
64
|
+
display: j ? "block" : "none",
|
|
65
|
+
position: "absolute",
|
|
66
|
+
top: 0,
|
|
67
|
+
left: 0,
|
|
68
|
+
...S
|
|
69
|
+
} : S, c[35] = p, c[36] = j, c[37] = S, c[38] = G) : G = c[38];
|
|
70
|
+
let K;
|
|
71
|
+
c[39] === g ? K = c[40] : (K = (e) => {
|
|
72
|
+
ne(!0), g?.(e);
|
|
73
|
+
}, c[39] = g, c[40] = K);
|
|
74
|
+
let q;
|
|
75
|
+
c[41] === h ? q = c[42] : (q = (e) => {
|
|
76
|
+
h?.(e);
|
|
77
|
+
}, c[41] = h, c[42] = q);
|
|
78
|
+
let J;
|
|
79
|
+
c[43] !== D || c[44] !== A || c[45] !== R || c[46] !== k || c[47] !== _ || c[48] !== I || c[49] !== U || c[50] !== W || c[51] !== G || c[52] !== K || c[53] !== q ? (J = /* @__PURE__ */ i("img", {
|
|
80
|
+
..._,
|
|
81
|
+
ref: ie,
|
|
82
|
+
src: R,
|
|
83
|
+
srcSet: I,
|
|
84
|
+
sizes: U,
|
|
85
|
+
alt: D,
|
|
86
|
+
className: W,
|
|
87
|
+
loading: k,
|
|
88
|
+
decoding: A,
|
|
89
|
+
style: G,
|
|
90
|
+
onLoad: K,
|
|
91
|
+
onError: q
|
|
92
|
+
}), c[43] = D, c[44] = A, c[45] = R, c[46] = k, c[47] = _, c[48] = I, c[49] = U, c[50] = W, c[51] = G, c[52] = K, c[53] = q, c[54] = J) : J = c[54];
|
|
93
|
+
let Y = J;
|
|
94
|
+
if (!p) return Y;
|
|
95
|
+
let X;
|
|
96
|
+
c[55] === Symbol.for("react.memo_cache_sentinel") ? (X = {
|
|
97
|
+
position: "relative",
|
|
98
|
+
overflow: "hidden"
|
|
99
|
+
}, c[55] = X) : X = c[55];
|
|
100
|
+
let Z = f ?? d, Q;
|
|
101
|
+
c[56] !== M || c[57] !== j ? (Q = M && !j ? /* @__PURE__ */ i("img", {
|
|
102
|
+
src: M,
|
|
103
|
+
alt: "",
|
|
104
|
+
"aria-hidden": "true",
|
|
105
|
+
style: {
|
|
61
106
|
position: "absolute",
|
|
62
107
|
top: 0,
|
|
63
108
|
left: 0,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
D(!0), C?.(e);
|
|
68
|
-
},
|
|
69
|
-
onError: (e) => {
|
|
70
|
-
w?.(e);
|
|
109
|
+
width: "100%",
|
|
110
|
+
height: "100%",
|
|
111
|
+
objectFit: "cover"
|
|
71
112
|
}
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
children: [O && !E ? /* @__PURE__ */ i("img", {
|
|
80
|
-
src: O,
|
|
81
|
-
alt: "",
|
|
82
|
-
"aria-hidden": "true",
|
|
83
|
-
style: {
|
|
84
|
-
position: "absolute",
|
|
85
|
-
top: 0,
|
|
86
|
-
left: 0,
|
|
87
|
-
width: "100%",
|
|
88
|
-
height: "100%",
|
|
89
|
-
objectFit: "cover"
|
|
90
|
-
}
|
|
91
|
-
}) : null, P]
|
|
92
|
-
}) : P;
|
|
113
|
+
}) : null, c[56] = M, c[57] = j, c[58] = Q) : Q = c[58];
|
|
114
|
+
let $;
|
|
115
|
+
return c[59] !== Y || c[60] !== Z || c[61] !== Q ? ($ = /* @__PURE__ */ a("div", {
|
|
116
|
+
style: X,
|
|
117
|
+
className: Z,
|
|
118
|
+
children: [Q, Y]
|
|
119
|
+
}), c[59] = Y, c[60] = Z, c[61] = Q, c[62] = $) : $ = c[62], $;
|
|
93
120
|
}
|
|
94
121
|
//#endregion
|
|
95
|
-
export {
|
|
122
|
+
export { d as Image, o as defaultImageWidths, te as getImageSrcSet, l as isRpcbaseFileImageSrc, u as withImageWidth };
|
|
96
123
|
|
|
97
124
|
//# sourceMappingURL=index296.js.map
|
package/dist/index296.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index296.js","names":["event"],"sources":["../src/components/Image/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type ImgHTMLAttributes } from \"react\"\nimport { decode } from \"blurhash\"\n\n\nexport const defaultImageWidths = [320, 640, 960, 1600]\n\nexport type ImageBlurHash = [number, number, string]\n\nexport type ImageProps = Omit<ImgHTMLAttributes<HTMLImageElement>, \"src\"> & {\n src: string\n hash?: ImageBlurHash\n widths?: number[]\n responsive?: boolean\n containerClassName?: string\n imgClassName?: string\n}\n\nconst filePathPattern = /^\\/api\\/rb\\/files\\/[^/?#]+/\n\nconst normalizeWidths = (widths: number[]): number[] => [...new Set(\n widths\n .map((width) => Math.floor(width))\n .filter((width) => Number.isFinite(width) && width > 0),\n)].sort((a, b) => a - b)\n\nexport const isRpcbaseFileImageSrc = (src: string): boolean => {\n if (filePathPattern.test(src)) return true\n\n try {\n const url = new URL(src)\n return filePathPattern.test(url.pathname)\n } catch {\n return false\n }\n}\n\nexport const withImageWidth = (src: string, width: number): string => {\n if (src.startsWith(\"/\")) {\n const url = new URL(src, \"http://rpcbase.local\")\n url.searchParams.set(\"w\", String(width))\n return `${url.pathname}${url.search}${url.hash}`\n }\n\n try {\n const url = new URL(src)\n url.searchParams.set(\"w\", String(width))\n return url.toString()\n } catch {\n return src\n }\n}\n\nexport const getImageSrcSet = (src: string, widths = defaultImageWidths): string | undefined => {\n if (!isRpcbaseFileImageSrc(src)) return undefined\n const normalized = normalizeWidths(widths)\n if (!normalized.length) return undefined\n return normalized.map((width) => `${withImageWidth(src, width)} ${width}w`).join(\", \")\n}\n\nexport function Image({\n src,\n hash,\n alt = \"\",\n className,\n containerClassName,\n imgClassName,\n widths = defaultImageWidths,\n responsive,\n sizes,\n srcSet,\n loading = \"lazy\",\n decoding = \"async\",\n style,\n onLoad,\n onError,\n ...props\n}: ImageProps) {\n const [imageLoaded, setImageLoaded] = useState(false)\n const [blurhashUrl, setBlurhashUrl] = useState<string | null>(null)\n const imgRef = useRef<HTMLImageElement>(null)\n const shouldBuildResponsiveSrc = responsive ?? isRpcbaseFileImageSrc(src)\n const resolvedSrcSet = srcSet ?? (shouldBuildResponsiveSrc ? getImageSrcSet(src, widths) : undefined)\n const fallbackSrc = shouldBuildResponsiveSrc ? withImageWidth(src, 960) : src\n\n useEffect(() => {\n if (!hash) {\n setBlurhashUrl(null)\n return\n }\n\n const [width, height, buffer] = hash\n const pixels = decode(buffer, width, height)\n const canvas = document.createElement(\"canvas\")\n const ctx = canvas.getContext(\"2d\")\n\n if (!ctx) return\n\n canvas.width = width\n canvas.height = height\n ctx.putImageData(new ImageData(new Uint8ClampedArray(pixels), width, height), 0, 0)\n setBlurhashUrl(canvas.toDataURL())\n }, [hash])\n\n useEffect(() => {\n setImageLoaded(false)\n if (imgRef.current?.complete) {\n setImageLoaded(true)\n }\n }, [fallbackSrc, resolvedSrcSet])\n\n const image = (\n <img\n {...props}\n ref={imgRef}\n src={fallbackSrc}\n srcSet={resolvedSrcSet}\n sizes={resolvedSrcSet ? sizes ?? \"100vw\" : sizes}\n alt={alt}\n className={hash ? imgClassName : imgClassName ?? className}\n loading={loading}\n decoding={decoding}\n style={hash\n ? {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: imageLoaded ? \"block\" : \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n ...style,\n }\n : style}\n onLoad={(event) => {\n setImageLoaded(true)\n onLoad?.(event)\n }}\n onError={(event) => {\n onError?.(event)\n }}\n />\n )\n\n if (!hash) return image\n\n return (\n <div style={{ position: \"relative\", overflow: \"hidden\" }} className={containerClassName ?? className}>\n {blurhashUrl && !imageLoaded ? (\n <img\n src={blurhashUrl}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null}\n {image}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index296.js","names":["alt = \"\"","widths = defaultImageWidths","loading = \"lazy\"","decoding = \"async\"","{\n src,\n hash,\n alt = \"\",\n className,\n containerClassName,\n imgClassName,\n widths = defaultImageWidths,\n responsive,\n sizes,\n srcSet,\n loading = \"lazy\",\n decoding = \"async\",\n style,\n onLoad,\n onError,\n ...props\n}: ImageProps","responsive ?? isRpcbaseFileImageSrc(src)","srcSet ?? (shouldBuildResponsiveSrc ? getImageSrcSet(src, widths) : undefined)","shouldBuildResponsiveSrc ? withImageWidth(src, 960) : src","() => {\n if (!hash) {\n setBlurhashUrl(null)\n return\n }\n\n const [width, height, buffer] = hash\n const pixels = decode(buffer, width, height)\n const canvas = document.createElement(\"canvas\")\n const ctx = canvas.getContext(\"2d\")\n\n if (!ctx) return\n\n canvas.width = width\n canvas.height = height\n ctx.putImageData(new ImageData(new Uint8ClampedArray(pixels), width, height), 0, 0)\n setBlurhashUrl(canvas.toDataURL())\n }","[hash]","() => {\n setImageLoaded(false)\n if (imgRef.current?.complete) {\n setImageLoaded(true)\n }\n }","[fallbackSrc, resolvedSrcSet]","hash\n ? {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: imageLoaded ? \"block\" : \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n ...style,\n }\n : style","(event) => {\n setImageLoaded(true)\n onLoad?.(event)\n }","(event) => {\n onError?.(event)\n }","event","<img\n {...props}\n ref={imgRef}\n src={fallbackSrc}\n srcSet={resolvedSrcSet}\n sizes={resolvedSrcSet ? sizes ?? \"100vw\" : sizes}\n alt={alt}\n className={hash ? imgClassName : imgClassName ?? className}\n loading={loading}\n decoding={decoding}\n style={hash\n ? {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: imageLoaded ? \"block\" : \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n ...style,\n }\n : style}\n onLoad={(event) => {\n setImageLoaded(true)\n onLoad?.(event)\n }}\n onError={(event) => {\n onError?.(event)\n }}\n />","resolvedSrcSet ? sizes ?? \"100vw\" : sizes","hash ? imgClassName : imgClassName ?? className","{ position: \"relative\", overflow: \"hidden\" }","blurhashUrl && !imageLoaded ? (\n <img\n src={blurhashUrl}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null","<div style={{ position: \"relative\", overflow: \"hidden\" }} className={containerClassName ?? className}>\n {blurhashUrl && !imageLoaded ? (\n <img\n src={blurhashUrl}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null}\n {image}\n </div>","containerClassName ?? className"],"sources":["../src/components/Image/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type ImgHTMLAttributes } from \"react\"\nimport { decode } from \"blurhash\"\n\n\nexport const defaultImageWidths = [320, 640, 960, 1600]\n\nexport type ImageBlurHash = [number, number, string]\n\nexport type ImageProps = Omit<ImgHTMLAttributes<HTMLImageElement>, \"src\"> & {\n src: string\n hash?: ImageBlurHash\n widths?: number[]\n responsive?: boolean\n containerClassName?: string\n imgClassName?: string\n}\n\nconst filePathPattern = /^\\/api\\/rb\\/files\\/[^/?#]+/\n\nconst normalizeWidths = (widths: number[]): number[] => [...new Set(\n widths\n .map((width) => Math.floor(width))\n .filter((width) => Number.isFinite(width) && width > 0),\n)].sort((a, b) => a - b)\n\nexport const isRpcbaseFileImageSrc = (src: string): boolean => {\n if (filePathPattern.test(src)) return true\n\n try {\n const url = new URL(src)\n return filePathPattern.test(url.pathname)\n } catch {\n return false\n }\n}\n\nexport const withImageWidth = (src: string, width: number): string => {\n if (src.startsWith(\"/\")) {\n const url = new URL(src, \"http://rpcbase.local\")\n url.searchParams.set(\"w\", String(width))\n return `${url.pathname}${url.search}${url.hash}`\n }\n\n try {\n const url = new URL(src)\n url.searchParams.set(\"w\", String(width))\n return url.toString()\n } catch {\n return src\n }\n}\n\nexport const getImageSrcSet = (src: string, widths = defaultImageWidths): string | undefined => {\n if (!isRpcbaseFileImageSrc(src)) return undefined\n const normalized = normalizeWidths(widths)\n if (!normalized.length) return undefined\n return normalized.map((width) => `${withImageWidth(src, width)} ${width}w`).join(\", \")\n}\n\nexport function Image({\n src,\n hash,\n alt = \"\",\n className,\n containerClassName,\n imgClassName,\n widths = defaultImageWidths,\n responsive,\n sizes,\n srcSet,\n loading = \"lazy\",\n decoding = \"async\",\n style,\n onLoad,\n onError,\n ...props\n}: ImageProps) {\n const [imageLoaded, setImageLoaded] = useState(false)\n const [blurhashUrl, setBlurhashUrl] = useState<string | null>(null)\n const imgRef = useRef<HTMLImageElement>(null)\n const shouldBuildResponsiveSrc = responsive ?? isRpcbaseFileImageSrc(src)\n const resolvedSrcSet = srcSet ?? (shouldBuildResponsiveSrc ? getImageSrcSet(src, widths) : undefined)\n const fallbackSrc = shouldBuildResponsiveSrc ? withImageWidth(src, 960) : src\n\n useEffect(() => {\n if (!hash) {\n setBlurhashUrl(null)\n return\n }\n\n const [width, height, buffer] = hash\n const pixels = decode(buffer, width, height)\n const canvas = document.createElement(\"canvas\")\n const ctx = canvas.getContext(\"2d\")\n\n if (!ctx) return\n\n canvas.width = width\n canvas.height = height\n ctx.putImageData(new ImageData(new Uint8ClampedArray(pixels), width, height), 0, 0)\n setBlurhashUrl(canvas.toDataURL())\n }, [hash])\n\n useEffect(() => {\n setImageLoaded(false)\n if (imgRef.current?.complete) {\n setImageLoaded(true)\n }\n }, [fallbackSrc, resolvedSrcSet])\n\n const image = (\n <img\n {...props}\n ref={imgRef}\n src={fallbackSrc}\n srcSet={resolvedSrcSet}\n sizes={resolvedSrcSet ? sizes ?? \"100vw\" : sizes}\n alt={alt}\n className={hash ? imgClassName : imgClassName ?? className}\n loading={loading}\n decoding={decoding}\n style={hash\n ? {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: imageLoaded ? \"block\" : \"none\",\n position: \"absolute\",\n top: 0,\n left: 0,\n ...style,\n }\n : style}\n onLoad={(event) => {\n setImageLoaded(true)\n onLoad?.(event)\n }}\n onError={(event) => {\n onError?.(event)\n }}\n />\n )\n\n if (!hash) return image\n\n return (\n <div style={{ position: \"relative\", overflow: \"hidden\" }} className={containerClassName ?? className}>\n {blurhashUrl && !imageLoaded ? (\n <img\n src={blurhashUrl}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n }}\n />\n ) : null}\n {image}\n </div>\n )\n}\n"],"mappings":"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"}
|