{"version":3,"file":"Calendar-rrsfjVmB.cjs","names":["SelectPrimitive","Select","SelectTrigger","SelectValue","SelectItem","useLayoutContext","useMultipleRefs","DayPicker"],"sources":["../src/components/Calendar/utils/helperFn.tsx","../src/components/Calendar/components/helperComponents.tsx","../src/components/Calendar/utils/styles.tsx","../src/components/Calendar/Calendar.tsx"],"sourcesContent":["export const getMonthName = (monthNumber: number): string => {\n  switch (monthNumber) {\n    case 0:\n      return \"January\";\n    case 1:\n      return \"February\";\n    case 2:\n      return \"March\";\n    case 3:\n      return \"April\";\n    case 4:\n      return \"May\";\n    case 5:\n      return \"June\";\n    case 6:\n      return \"July\";\n    case 7:\n      return \"August\";\n    case 8:\n      return \"September\";\n    case 9:\n      return \"October\";\n    case 10:\n      return \"November\";\n    case 11:\n      return \"December\";\n    default:\n      return \"Invalid Month\";\n  }\n};\n\nexport const getMonthNumber = (monthName: string): number => {\n  switch (monthName) {\n    case \"January\":\n      return 0;\n    case \"February\":\n      return 1;\n    case \"March\":\n      return 2;\n    case \"April\":\n      return 3;\n    case \"May\":\n      return 4;\n    case \"June\":\n      return 5;\n    case \"July\":\n      return 6;\n    case \"August\":\n      return 7;\n    case \"September\":\n      return 8;\n    case \"October\":\n      return 9;\n    case \"November\":\n      return 10;\n    case \"December\":\n      return 11;\n    default:\n      return -1;\n  }\n};\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport clsx from \"clsx\";\nimport debounce from \"lodash-es/debounce\";\nimport { DetailedHTMLProps, forwardRef, SelectHTMLAttributes, useEffect, useState } from \"react\";\nimport { ClassNames, CustomComponents, DropdownOption } from \"react-day-picker\";\nimport { Select, SelectItem, SelectTrigger, SelectValue } from \"../../Select\";\nimport { getMonthName, getMonthNumber } from \"../utils/helperFn\";\n\n// this component is overriding the default SelectContent component to allow for a container prop we do not wish to give to the user\nconst SelectContent = forwardRef<\n  React.ComponentRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> & {\n    container?: HTMLDivElement | null;\n    viewportClassName?: string;\n  }\n>(({ className, children, position = \"popper\", viewportClassName, container, ...props }, ref) => (\n  <SelectPrimitive.Portal container={container || document.body}>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={clsx(\"openui-select-content\", className)}\n      position={position}\n      {...props}\n    >\n      <SelectPrimitive.Viewport\n        className={clsx(\"openui-select-viewport\", viewportClassName)}\n        data-position={position}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n));\n\nexport const MonthsDropdown = (\n  props: {\n    classNames: ClassNames;\n    components: CustomComponents;\n    options?: DropdownOption[];\n  } & Omit<\n    DetailedHTMLProps<SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>,\n    \"children\"\n  > & {\n      container?: HTMLDivElement | null;\n    },\n) => {\n  const {\n    className,\n    disabled,\n    onChange,\n    options,\n    value,\n    key,\n    \"aria-label\": ariaLabel,\n    container,\n  } = props;\n\n  const [containerWidth, setContainerWidth] = useState(0);\n  const [containerHeight, setContainerHeight] = useState(0);\n\n  useEffect(() => {\n    if (!container) return;\n\n    const targetElement = container.children[0]?.children[0];\n    if (!targetElement) return;\n\n    const resizeObserver = new ResizeObserver(\n      debounce((entries) => {\n        const { width, height } = entries[0]?.contentRect || {};\n        setContainerWidth(width || 0);\n        setContainerHeight(height || 0);\n      }, 100),\n    );\n\n    resizeObserver.observe(targetElement);\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [container]);\n\n  return (\n    <Select\n      onValueChange={(value) =>\n        onChange?.({\n          target: { value: getMonthNumber(value) },\n        } as any)\n      }\n      value={getMonthName(Number(value))}\n      disabled={disabled}\n      key={key}\n      aria-label={ariaLabel}\n    >\n      <SelectTrigger className={clsx(\"openui-calendar-select-trigger\", className)}>\n        <SelectValue placeholder={\"Select a month\"} />\n      </SelectTrigger>\n      <SelectContent\n        container={container}\n        className=\"openui-calendar-select-content-months\"\n        sideOffset={4}\n        alignOffset={0}\n        style={{\n          maxHeight: `${containerHeight - 45}px`,\n          minWidth: `${containerWidth}px`,\n        }}\n      >\n        {options?.map((option) => (\n          <SelectItem\n            key={option.value}\n            value={getMonthName(option.value)}\n            disabled={option.disabled}\n          >\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n\nexport const YearsDropdown = (\n  props: {\n    classNames: ClassNames;\n    components: CustomComponents;\n    options?: DropdownOption[];\n  } & Omit<\n    DetailedHTMLProps<SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>,\n    \"children\"\n  > & {\n      container?: HTMLDivElement | null;\n      botType: \"mobile\" | \"fullscreen\" | \"tray\" | \"copilot\";\n    },\n) => {\n  const {\n    className,\n    disabled,\n    onChange,\n    options,\n    value,\n    key,\n    \"aria-label\": ariaLabel,\n    container,\n    botType,\n  } = props;\n\n  const [containerHeight, setContainerHeight] = useState(0);\n\n  useEffect(() => {\n    if (!container) return;\n\n    const targetElement = container.children[0]?.children[0];\n    if (!targetElement) return;\n\n    const resizeObserver = new ResizeObserver(\n      debounce((entries) => {\n        const { height } = entries[0]?.contentRect || {};\n        setContainerHeight(height || 0);\n      }, 100),\n    );\n\n    resizeObserver.observe(targetElement);\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [container]);\n\n  return (\n    <Select\n      onValueChange={(value) =>\n        onChange?.({\n          target: { value: Number(value) },\n        } as any)\n      }\n      value={String(value)}\n      disabled={disabled}\n      key={key}\n      aria-label={ariaLabel}\n    >\n      <SelectTrigger className={clsx(\"openui-calendar-select-trigger\", className)}>\n        <SelectValue placeholder={\"Select a month\"} />\n      </SelectTrigger>\n      <SelectContent\n        container={container}\n        className=\"openui-calendar-select-content-years\"\n        viewportClassName={clsx(\n          \"openui-calendar-select-viewport\",\n          botType === \"mobile\" && \"openui-calendar-select-viewport-mobile\",\n        )}\n        sideOffset={4}\n        alignOffset={-75}\n        style={{\n          minHeight: `${containerHeight - 45}px`,\n          maxHeight: `${containerHeight - 45}px`,\n        }}\n      >\n        {options?.map((option) => (\n          <SelectItem\n            key={option.value}\n            value={String(option.value)}\n            disabled={option.disabled}\n            showTick={false}\n            className=\"openui-calendar-select-item\"\n          >\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","import { ClassNames, getDefaultClassNames } from \"react-day-picker\";\n\ntype BotType = \"mobile\" | \"fullscreen\" | \"tray\" | \"copilot\";\nexport const getDayPickerStyles = (botType: BotType) => {\n  const defaultClassNames = getDefaultClassNames();\n\n  const botTypeMapNav: Record<BotType, string> = {\n    mobile: \"openui-calendar-nav-mobile\",\n    fullscreen: \"openui-calendar-nav-fullscreen\",\n    tray: \"openui-calendar-nav-tray\",\n    copilot: \"openui-calendar-nav-copilot\",\n  };\n\n  const botTypeMapDropdowns: Record<BotType, string> = {\n    mobile: \"openui-calendar-dropdowns-mobile\",\n    fullscreen: \"openui-calendar-dropdowns-fullscreen\",\n    tray: \"openui-calendar-dropdowns-tray\",\n    copilot: \"openui-calendar-dropdowns-copilot\",\n  };\n\n  const commonClassNames: Partial<ClassNames> = {\n    root: `${defaultClassNames.root} openui-calendar-root`,\n    nav: `${defaultClassNames.nav} ${botTypeMapNav[botType]}`,\n    dropdowns: `${defaultClassNames.dropdowns} ${botTypeMapDropdowns[botType]}`,\n    month_caption: `openui-calendar-month-caption`,\n    month_grid: `openui-calendar-month-grid`,\n    button_next: `openui-calendar-button-next `,\n    button_previous: `openui-calendar-button-previous `,\n    today: `openui-calendar-today`,\n    disabled: `openui-calendar-disabled`,\n    weekdays: `openui-calendar-weekdays`,\n    weekday: `openui-calendar-weekday`,\n    chevron: `openui-calendar-chevron`,\n    month: `openui-calendar-month`,\n    months_dropdown: `openui-calendar-months-dropdown`,\n    years_dropdown: `openui-calendar-years-dropdown`,\n    footer: `openui-calendar-footer`,\n  };\n\n  const DateSingleClasses: Partial<ClassNames> = {\n    ...commonClassNames,\n    day_button: \"openui-calendar-single-day-button\",\n    day: \"openui-calendar-single-day\",\n    selected: \"openui-calendar-single-day-selected\",\n  };\n\n  const DateRangeClasses: Partial<ClassNames> = {\n    ...commonClassNames,\n    selected: \"\",\n    range_start: \"openui-calendar-range-start\",\n    range_middle: \"openui-calendar-range-middle\",\n    range_end: \"openui-calendar-range-end\",\n    day_button: \"openui-calendar-range-day-button\",\n    day: \"openui-calendar-range-day\",\n  };\n\n  return {\n    DateSingleClasses,\n    DateRangeClasses,\n  };\n};\n","import clsx from \"clsx\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { useLayoutContext } from \"../../context/LayoutContext\";\nimport { useMultipleRefs } from \"../../hooks/useMultipleRefs\";\nimport { MonthsDropdown, YearsDropdown } from \"./components/helperComponents\";\nimport { getDayPickerStyles } from \"./utils/styles\";\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n  ({ className, classNames, ...props }, ref) => {\n    const { layout } = useLayoutContext();\n    const { DateSingleClasses, DateRangeClasses } = getDayPickerStyles(layout);\n    const containerRef = useRef<HTMLDivElement>(null);\n    const assignRef = useMultipleRefs(ref, containerRef);\n\n    const commonProps = {\n      captionLayout: \"dropdown\" as const,\n      components: {\n        MonthsDropdown: (props: any) => (\n          <MonthsDropdown {...props} container={containerRef.current} />\n        ),\n        YearsDropdown: (props: any) => (\n          <YearsDropdown {...props} container={containerRef.current} />\n        ),\n      },\n    };\n\n    return (\n      <div ref={assignRef} className={clsx(\"openui-calendar-container\", className)}>\n        <DayPicker\n          {...commonProps}\n          {...props}\n          classNames={{\n            ...(props.mode === \"single\" || props.mode === \"multiple\"\n              ? DateSingleClasses\n              : DateRangeClasses),\n            ...classNames,\n          }}\n        />\n      </div>\n    );\n  },\n);\n"],"mappings":"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"}