{"version":3,"file":"WeekStartPicker.mjs","sources":["../../../../src/components/DateTimePickers/WeekStartPicker.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\n\nimport { BootData } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\n\nimport { Combobox } from '../Combobox/Combobox';\nimport { ComboboxOption } from '../Combobox/types';\n\nexport interface Props {\n  onChange: (weekStart?: WeekStart) => void;\n  value?: WeekStart;\n  width?: number;\n  autoFocus?: boolean;\n  onBlur?: () => void;\n  disabled?: boolean;\n  inputId?: string;\n}\n\nexport type WeekStart = 'saturday' | 'sunday' | 'monday';\nconst weekStarts: ComboboxOption[] = [\n  { value: '', label: 'Default' },\n  { value: 'saturday', label: 'Saturday' },\n  { value: 'sunday', label: 'Sunday' },\n  { value: 'monday', label: 'Monday' },\n];\n\nexport function isWeekStart(value: string): value is WeekStart {\n  return ['saturday', 'sunday', 'monday'].includes(value);\n}\n\ndeclare global {\n  interface Window {\n    grafanaBootData?: BootData;\n  }\n}\n\n/**\n * Returns the system or user defined week start (as defined in bootData)\n * Or you can pass in an override weekStart string and have it be validated and returned as WeekStart type if valid\n */\nexport function getWeekStart(override?: string): WeekStart {\n  if (override && isWeekStart(override)) {\n    return override;\n  }\n\n  const preference = window?.grafanaBootData?.user?.weekStart;\n  if (preference && isWeekStart(preference)) {\n    return preference;\n  }\n\n  return 'monday';\n}\n\nexport const WeekStartPicker = (props: Props) => {\n  const { onChange, width, autoFocus = false, onBlur, value, disabled = false, inputId } = props;\n\n  const onChangeWeekStart = useCallback(\n    (selectable: ComboboxOption | null) => {\n      if (selectable && selectable.value !== undefined) {\n        onChange(isWeekStart(selectable.value) ? selectable.value : undefined);\n      }\n    },\n    [onChange]\n  );\n\n  const selected = useMemo(() => weekStarts.find((item) => item.value === value)?.value ?? '', [value]);\n\n  return (\n    <Combobox\n      id={inputId}\n      value={selected}\n      placeholder={selectors.components.WeekStartPicker.placeholder}\n      autoFocus={autoFocus}\n      width={width}\n      options={weekStarts}\n      onChange={onChangeWeekStart}\n      onBlur={onBlur}\n      disabled={disabled}\n    />\n  );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,SAAS,YAAY,KAAmC,EAAA;AAC7D,EAAA,OAAO,CAAC,UAAY,EAAA,QAAA,EAAU,QAAQ,CAAA,CAAE,SAAS,KAAK,CAAA;AACxD;AAYO,SAAS,aAAa,QAA8B,EAAA;AAxC3D,EAAA,IAAA,EAAA,EAAA,EAAA;AAyCE,EAAI,IAAA,QAAA,IAAY,WAAY,CAAA,QAAQ,CAAG,EAAA;AACrC,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,MAAM,UAAa,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,eAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,SAAzB,IAA+B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA;AAClD,EAAI,IAAA,UAAA,IAAc,WAAY,CAAA,UAAU,CAAG,EAAA;AACzC,IAAO,OAAA,UAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;;;;"}