import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-GrlyTB2d.js";import{l as r,s as i}from"./odata-service-B5w4YBao-BW9QLSrS.js";import{a,y as o}from"./formatters-CVj-3Vn0-BFaHJqZL.js";import{n as s,o as c,r as l,t as u}from"./PresetSelect-DGQ37jSc.js";function d(e){return typeof e==`string`&&y.has(e)}function f(e,t=v){let n=l(e,d,t),r=n.length>0?n:v,i=new Set(r);return v.filter(e=>i.has(e))}function p(e,t=_){return c(e,t)}function m({maxDayRangeDays:e,maxWeekRangeWeeks:t,labels:n}={}){let i=r(e),a=r(t);return _.map(e=>{let t={...e,label:n?.[e.id]??e.label};return e.id===`day`&&i!==void 0?{...t,maxRangeDays:i}:e.id===`week`&&a!==void 0?{...t,maxRangeDays:a*7}:t})}function h(e,t){let n=r(e.maxRangeDays);if(n===void 0||t===void 0)return!1;let i=a(t);return i!==null&&i>n}function g(e,t,n){if(t.length===0)return;let r=e===void 0?-1:t.findIndex(t=>t.id===e),i=r>=0?t[r]:void 0;return i&&!h(i,n)?i.id:(r>=0?t.slice(r+1):t).find(e=>!h(e,n))?.id??t.find(e=>!h(e,n))?.id}var _,v,y;function b(){return(b=e((()=>{o(),i(),_=Object.freeze([{id:`day`,label:`по дням`},{id:`week`,label:`по неделям`},{id:`month`,label:`по месяцам`},{id:`year`,label:`по годам`}]),v=Object.freeze([`day`,`week`,`month`,`year`]),y=new Set(_.map(e=>e.id))})))()}function x({value:e,onChange:t,options:n,labels:r,presetIds:i,dateRange:a,maxDayRangeDays:o,maxWeekRangeWeeks:s,...c}){let l=(0,S.useMemo)(()=>n??p(f(i),m({maxDayRangeDays:o,maxWeekRangeWeeks:s,labels:r})),[r,o,s,n,i]),d=(0,S.useMemo)(()=>g(e,l,a),[a,l,e]),_=(0,S.useRef)(null),v=(0,S.useEffectEvent)(()=>{if(d===void 0||d===e){_.current=null;return}let n=_.current;n&&n.value===e&&n.availableValue===d||(_.current={value:e,availableValue:d},t(d))});return(0,S.useEffect)(()=>{v()},[d,e]),(0,C.jsx)(u,{...c,options:l,value:d,onChange:t,getOptionDisabled:e=>h(e,a)})}var S,C;function w(){return(w=e((()=>{S=t(),s(),b(),C=n(),x.__docgenInfo={description:`Select периода детализации, который может ограничивать доступные варианты по диапазону дат.`,methods:[],displayName:`PeriodSelect`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},options:{required:!1,tsType:{name:`unknown`},description:"Полный список custom options с высшим приоритетом. При его передаче\nвстроенные `presetIds`, `labels` и пороги диапазона не применяются."},labels:{required:!1,tsType:{name:`Partial`,elements:[{name:`Readonly`,elements:[{name:`Record`,elements:[{name:`union`,raw:`"day" | "week" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"week"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},{name:`string`}],raw:`Record<PeriodSelectPresetId, string>`}],raw:`Readonly<Record<PeriodSelectPresetId, string>>`}],raw:`Partial<PeriodSelectLabels>`},description:`Частично заменяет подписи встроенных вариантов, не изменяя их id,
канонический порядок и правила доступности.
Не применяется, когда передан собственный \`options\`.`},presetIds:{required:!1,tsType:{name:`unknown`},description:`Разрешенные встроенные варианты периода. Значение нормализуется в канонический
порядок, а пустой либо невалидный список безопасно заменяется полным набором.
Не применяется, когда передан собственный \`options\`.`},dateRange:{required:!1,tsType:{name:`DateRangeInput`},description:``},maxDayRangeDays:{required:!1,tsType:{name:`number`},description:``},maxWeekRangeWeeks:{required:!1,tsType:{name:`number`},description:``}}}})))()}export{b as i,w as n,v as r,x as t};