UNPKG

copper-ui

Version:

Modern React UI components library with TypeScript support, built on top of Ant Design

2 lines (1 loc) 25.5 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("nuqs"),x=require("react"),s=require("react/jsx-runtime"),y=require("antd"),C=require("@ant-design/icons"),U=require("clsx"),_=require("date-fns"),O=require("dayjs"),F=require("@tanstack/react-table");function K(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const j=K(x),W=b.createParser({parse:t=>{try{const e=JSON.parse(t);return typeof e=="object"&&e!==null&&"value"in e&&"label"in e?e:null}catch{return null}},serialize:t=>typeof t=="object"&&t!==null&&"value"in t&&"label"in t?JSON.stringify(t):JSON.stringify(null)}),q=b.createParser({parse:t=>{try{const e=JSON.parse(t);return Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"value"in n&&"label"in n)?e:null}catch{return null}},serialize:t=>Array.isArray(t)&&t.every(r=>typeof r=="object"&&r!==null&&"value"in r&&"label"in r)?JSON.stringify(t):JSON.stringify(null)}),G=(t,e)=>{const r={},n=(a,o,d,i)=>{switch(a){case"boolean":r[o]=b.parseAsBoolean;break;case"multiselect":r[o]=b.parseAsArrayOf(b.parseAsString);break;case"date-range":r[o]=b.parseAsArrayOf(b.parseAsString);break;case"date":r[o]=b.parseAsString;break;case"select":r[o]=b.parseAsString;break;case"radio":r[o]=b.parseAsString.withDefault(i??null);break;case"custom":r[o]=d?q:W;break;default:r[o]=b.parseAsString}};for(const a of t)if(a.filter){const o=a.filter.id??a.definition.id,d=a.filter.type==="custom"&&"isMultiple"in a.filter&&a.filter.isMultiple;n(a.filter.type,o,d)}for(const a of e)n(a.type,a.id,void 0,a.default);return r},X=({columns:t,quickFilters:e})=>{const[r,n]=x.useState({field:"",order:"asc"}),[a,o]=b.useQueryStates({pageIndex:b.parseAsInteger.withDefault(0),pageSize:b.parseAsInteger.withDefault(10)}),[d,i]=x.useState(0),c=x.useCallback(f=>{f&&d!==f&&i(f)},[d]),l=x.useMemo(()=>G(t,e??[]),[t,e]),[p,u]=b.useQueryStates(l);return x.useMemo(()=>({sort:r,setSort:n,pagination:a,setPagination:o,totalPages:d,filters:p,filterParsers:l,setFilters:u,quickFilters:e,setTotalPages:c}),[r,n,a,o,d,p,l,u,e,c])};function T(t){"@babel/helpers - typeof";return T=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(t)}function Z(t,e){if(T(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(T(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function ee(t){var e=Z(t,"string");return T(e)=="symbol"?e:e+""}function te(t,e,r){return(e=ee(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function k(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function R(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?k(Object(r),!0).forEach(function(n){te(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}var re={yearFormat:"YYYY",dayFormat:"D",cellMeridiemFormat:"A",monthBeforeYear:!0},ne=R(R({},re),{},{locale:"ru_RU",today:"Сегодня",now:"Сейчас",backToToday:"Текущая дата",ok:"ОК",clear:"Очистить",week:"Неделя",month:"Месяц",year:"Год",timeSelect:"Выбрать время",dateSelect:"Выбрать дату",monthSelect:"Выбрать месяц",yearSelect:"Выбрать год",decadeSelect:"Выбрать десятилетие",dateFormat:"D-M-YYYY",dateTimeFormat:"D-M-YYYY HH:mm:ss",previousMonth:"Предыдущий месяц (PageUp)",nextMonth:"Следующий месяц (PageDown)",previousYear:"Предыдущий год (Control + left)",nextYear:"Следующий год (Control + right)",previousDecade:"Предыдущее десятилетие",nextDecade:"Следущее десятилетие",previousCentury:"Предыдущий век",nextCentury:"Следующий век"});const z={placeholder:"Выберите время",rangePlaceholder:["Время начала","Время окончания"]},v={lang:Object.assign({placeholder:"Выберите дату",yearPlaceholder:"Выберите год",quarterPlaceholder:"Выберите квартал",monthPlaceholder:"Выберите месяц",weekPlaceholder:"Выберите неделю",rangePlaceholder:["Начальная дата","Конечная дата"],rangeYearPlaceholder:["Начальный год","Год окончания"],rangeMonthPlaceholder:["Начальный месяц","Конечный месяц"],rangeWeekPlaceholder:["Начальная неделя","Конечная неделя"],shortWeekDays:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],shortMonths:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"]},ne),timePickerLocale:Object.assign({},z)};var se={items_per_page:"/ стр.",jump_to:"Перейти",jump_to_confirm:"подтвердить",page:"Страница",prev_page:"Назад",next_page:"Вперед",prev_5:"Предыдущие 5",next_5:"Следующие 5",prev_3:"Предыдущие 3",next_3:"Следующие 3",page_size:"размер страницы"};const h="${label} не является типом ${type}",I={locale:"ru",Pagination:se,DatePicker:v,TimePicker:z,Calendar:v,global:{placeholder:"Пожалуйста выберите",close:"Закрыть"},Table:{filterTitle:"Фильтр",filterConfirm:"OK",filterReset:"Сбросить",filterEmptyText:"Без фильтров",filterCheckAll:"Выбрать все элементы",filterSearchPlaceholder:"Поиск в фильтрах",emptyText:"Нет данных",selectAll:"Выбрать всё",selectInvert:"Инвертировать выбор",selectNone:"Очистить все данные",selectionAll:"Выбрать все данные",sortTitle:"Сортировка",expand:"Развернуть строку",collapse:"Свернуть строку",triggerDesc:"Нажмите для сортировки по убыванию",triggerAsc:"Нажмите для сортировки по возрастанию",cancelSort:"Нажмите, чтобы отменить сортировку"},Tour:{Next:"Далее",Previous:"Назад",Finish:"Завершить"},Modal:{okText:"OK",cancelText:"Отмена",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Отмена"},Transfer:{titles:["",""],searchPlaceholder:"Поиск",itemUnit:"элем.",itemsUnit:"элем.",remove:"Удалить",selectAll:"Выбрать все данные",deselectAll:"Очистить все данные",selectCurrent:"Выбрать текущую страницу",selectInvert:"Инвертировать выбор",removeAll:"Удалить все данные",removeCurrent:"Удалить текущую страницу"},Upload:{uploading:"Загрузка...",removeFile:"Удалить файл",uploadError:"При загрузке произошла ошибка",previewFile:"Предпросмотр файла",downloadFile:"Загрузить файл"},Empty:{description:"Нет данных"},Icon:{icon:"иконка"},Text:{edit:"Редактировать",copy:"Копировать",copied:"Скопировано",expand:"Раскрыть",collapse:"Свернуть"},Form:{optional:"(необязательно)",defaultValidateMessages:{default:"Ошибка проверки поля ${label}",required:"Пожалуйста, введите ${label}",enum:"${label} должен быть одним из [${enum}]",whitespace:"${label} не может быть пустым",date:{format:"${label} не правильный формат даты",parse:"${label} не может быть преобразовано в дату",invalid:"${label} не является корректной датой"},types:{string:h,method:h,array:h,object:h,number:h,date:h,boolean:h,integer:h,float:h,regexp:h,email:h,url:h,hex:h},string:{len:"${label} должна быть ${len} символов",min:"${label} должна быть больше или равна ${min} символов",max:"${label} должна быть меньше или равна ${max} символов",range:"Длина ${label} должна быть между ${min}-${max} символами"},number:{len:"${label} должна быть равна ${len}",min:"${label} должна быть больше или равна ${min}",max:"${label} должна быть меньше или равна ${max}",range:"${label} должна быть между ${min}-${max}"},array:{len:"Количество элементов ${label} должно быть равно ${len}",min:"Количество элементов ${label} должно быть больше или равно ${min}",max:"Количество элементов ${label} должно быть меньше или равно ${max}",range:"Количество элементов ${label} должно быть между ${min} и ${max}"},pattern:{mismatch:"${label} не соответствует шаблону ${pattern}"}}},Image:{preview:"Предпросмотр"},QRCode:{expired:"QR-код устарел",refresh:"Обновить"},ColorPicker:{presetEmpty:"Пустой",transparent:"Прозрачный",singleColor:"Один цвет",gradientColor:"Градиент"}},E=x.createContext(void 0),le=()=>{const t=x.useContext(E);if(!t)throw new Error("useTableContext must be used within a TableProvider");return t},N=({when:t,children:e,elseComponent:r})=>t?e:r||null,ae=t=>Object.entries(t).filter(([,e])=>e!=null&&e!==""),ie=(t,e=[],r=[])=>{const n=r.find(o=>o.id===t);if(n)return n.label;const a=e.find(o=>{var d;return(((d=o.filter)==null?void 0:d.id)??o.definition.id)===t});return a&&typeof a.definition.header=="string"?a.definition.header:t},Y=(t,e)=>{if(e&&e.definition.mapping){const r=e.definition.mapping.find(n=>n.value===t);if(r)return String(r.label)}return isNaN(new Date(t).getTime())?String(t):V(t)},V=t=>{try{return new Date(t).toLocaleDateString("ru-RU")}catch{return t}},oe=(t,e,r=[],n=[])=>{if(typeof e=="object"&&e!==null&&"label"in e)return String(e.label);if(Array.isArray(e)&&e.length>0&&typeof e[0]=="object"&&e[0]!==null&&"label"in e[0]&&"value"in e[0])return e.map(i=>i.label).join(", ");const a=n.find(i=>i.id===t);if(a&&a.options)if(Array.isArray(e)){const i=a.options.find(c=>typeof c.value=="string"&&c.value===JSON.stringify(e));if(i)return String(i.label)}else{const i=a.options.find(c=>c.value===e);if(i)return String(i.label)}const o=r.find(i=>{var c;return(((c=i.filter)==null?void 0:c.id)??i.definition.id)===t});if(o&&o.filter&&(o.filter.type==="select"||o.filter.type==="multiselect")&&"options"in o.filter&&Array.isArray(o.filter.options)){const i=o.filter.options;if(Array.isArray(e))if(o.filter.type==="multiselect"){const c=e.map(l=>{var p;return(p=i.find(u=>u.value===l))==null?void 0:p.label}).filter(Boolean);if(c.length)return c.join(", ")}else{const c=i.find(l=>typeof l.value=="string"&&l.value===JSON.stringify(e));if(c)return String(c.label)}else{const c=i.find(l=>l.value===e);if(c)return String(c.label)}}const d=o==null?void 0:o.definition;if(d&&d.mapping){const i=d.mapping.find(c=>c.value===e);if(i)return String(i.label)}return Array.isArray(e)&&e.some(i=>!isNaN(new Date(i).getTime()))&&e.length===2?e.map(i=>Y(i)).join(" - "):Array.isArray(e)?e.map(c=>Y(c,o)).join(", "):typeof e=="string"&&e.includes("T")&&!(e.includes("[")||e.includes("]")||e.includes("{")||e.includes("}"))?V(e):typeof e=="boolean"?e?"Да":"Нет":String(e)},ce=({filterParsers:t,columns:e=[],quickFilters:r=[]})=>{const[n,a]=b.useQueryStates(t),o=x.useMemo(()=>ae(n),[n]),d=l=>{a({[l]:null})},i=()=>{const l=Object.keys(n).reduce((p,u)=>(p[u]=null,p),{});a(l)},c=x.useMemo(()=>o.map(([l,p])=>({fieldName:l,value:p,label:ie(l,e,r),displayValue:oe(l,p,e,r)})),[o,e,r]);return{filters:n,activeFilters:o,processedFilters:c,resetFilter:d,resetAllFilters:i,hasActiveFilters:o.length>0}},B=({filterParsers:t,columns:e=[],quickFilters:r=[]})=>{const{processedFilters:n,resetFilter:a,resetAllFilters:o,hasActiveFilters:d}=ce({filterParsers:t,columns:e,quickFilters:r});return d?s.jsxs("div",{className:"mb-[10px] flex items-center gap-2",children:[s.jsx("div",{className:"flex flex-wrap gap-[8px]",children:n.map(({fieldName:i,label:c,displayValue:l})=>s.jsx(s.Fragment,{children:s.jsx(N,{when:c,children:s.jsxs("div",{className:"flex items-center gap-1",children:[s.jsxs("span",{className:"text-xs",children:[c,":"]}),s.jsx(y.Tag,{closable:!0,closeIcon:s.jsx(C.CloseOutlined,{className:"h-3 w-3 text-neutral-50 hover:text-neutral-70"}),onClose:()=>a(i),children:s.jsx("span",{className:"text-xs text-neutral-80",children:l})})]})})},i))}),s.jsx(N,{when:n.find(i=>i.label),children:s.jsxs(y.Button,{type:"link",size:"small",onClick:o,children:[s.jsx(C.CloseCircleFilled,{}),"Сбросить все"]})})]}):null};function m(...t){return U.clsx(t)}const de=({value:t,onChange:e,options:r,className:n,style:a,...o})=>{const d=c=>{e(c)},i={className:m(n,"!w-max whitespace-nowrap"),style:a,...o};return s.jsx(y.Radio.Group,{block:!0,optionType:"button",value:t,options:r,onChange:c=>d(c.target.value),...i})},ue=({value:t,onChange:e,children:r,className:n,style:a,styles:o,...d})=>{const i=f=>f&&_.parse(f,"yyyy-MM-dd",new Date).toISOString(),[c,l]=x.useState(!1),p=t?O(t):void 0,u={className:m(n),style:{position:"absolute",left:0,top:"80%",width:"0",height:"0",opacity:0,...a},styles:{popup:{root:{width:"max-content"}},...o},...d};return s.jsxs("div",{children:[s.jsx("div",{onClick:()=>l(!0),children:r}),s.jsx(y.DatePicker,{value:p,open:c,onOpenChange:l,onChange:(f,g)=>{e==null||e(i(Array.isArray(g)?g[0]:g))},...u})]})},pe=({value:t,onChange:e,children:r,className:n,style:a,styles:o,...d})=>{const i=f=>f,[c,l]=x.useState(!1),p=[t!=null&&t[0]?O(t==null?void 0:t[0]):null,t!=null&&t[1]?O(t==null?void 0:t[1]):null],u={className:m(n),style:{position:"absolute",left:0,top:"80%",width:"0",height:"0",opacity:0,...a},styles:{popup:{root:{width:"max-content"}},...o},...d};return s.jsxs("div",{children:[s.jsx("div",{onClick:()=>l(!0),children:r}),s.jsx(y.DatePicker.RangePicker,{value:p,open:c,onOpenChange:l,onChange:(f,g)=>{e==null||e(i(g))},...u})]})},fe=({children:t,slot:e})=>s.jsx(y.Popover,{classNames:{body:"!p-0"},trigger:"click",placement:"bottom",arrow:!1,content:e,children:t}),A=x.memo(({value:t,onChange:e,children:r,type:n="string",className:a,style:o,...d})=>{const i=l=>{e(l)},c={className:m(a),style:o,...d};return s.jsx(N,{when:r,elseComponent:n==="string"?s.jsx(y.Input,{value:t??"",onChange:l=>i(l.target.value),...c}):s.jsx(y.InputNumber,{value:t,onChange:l=>i(l??""),...c}),children:s.jsx(fe,{slot:n==="string"?s.jsx(y.Input,{value:t??"",onChange:l=>i(l.target.value),...c}):s.jsx(y.InputNumber,{value:t,onChange:l=>i(l??""),...c}),children:r})})});A.displayName="FilterInput";const $=x.memo(({value:t,onChange:e,children:r,className:n,style:a,styles:o,...d})=>{const i=u=>{e(u)},[c,l]=x.useState(!1),p={className:m(n),style:{position:"absolute",left:0,top:"80%",width:"0",height:"0",opacity:0,...a},styles:{popup:{root:{width:"max-content"}},...o},...d};return s.jsxs("div",{children:[s.jsx("div",{onClick:()=>l(!0),children:r}),s.jsx(y.Select,{value:t,open:c,onOpenChange:l,onChange:u=>i(u),...p})]})});$.displayName="FilterSelect";const M=x.memo(({fieldName:t,filterProps:e,filterParsers:r,filterType:n,children:a,className:o})=>{const[d,i]=b.useQueryStates(r),c=d[t],l=f=>{i({[t]:f})},u={value:c,onChange:l,onReset:()=>l(null),...e,className:m(o,e==null?void 0:e.className),style:{...e==null?void 0:e.style},...e};switch(n){case"multiselect":return s.jsx($,{...u,mode:"multiple",children:a});case"date":return s.jsx(ue,{...u,children:a});case"date-range":return s.jsx(pe,{...u,children:a});case"input":return s.jsx(A,{...u,children:a});case"input-number":return s.jsx(A,{...u,type:"number",children:a});case"select":return s.jsx($,{...u,children:a});case"radio":return s.jsx(de,{...u});case"custom":if(e!=null&&e.render||e!=null&&e.renderMultiple){const f=e==null?void 0:e.isMultiple;if(f&&(e!=null&&e.renderMultiple)){const g=c,w=[];return s.jsx("div",{className:u.className,style:u.style,children:e.renderMultiple(g||w,l,a)})}else if(!f&&(e!=null&&e.render)){const g=c,w={value:"",label:""};return s.jsx("div",{className:u.className,style:u.style,children:e.render(g||w,l,a)})}}return s.jsx(s.Fragment,{children:a});default:return null}});M.displayName="FilterCommon";const me=({quickFilters:t,filterParsers:e})=>s.jsx("div",{className:"flex gap-[12px]",children:t.map(r=>s.jsxs("div",{className:"flex gap-[8px] items-center w-max",children:[s.jsx(N,{when:r.label,children:s.jsxs("div",{children:[r.label,":"]})}),s.jsx(M,{filterParsers:e,fieldName:r.id,filterType:r.type,filterProps:r,className:r.className})]},r.id))}),xe=({children:t,cell:e})=>{switch(e){case"date":if(t)return s.jsx(s.Fragment,{children:_.format(t,"dd.MM.yyyy")})}return s.jsx("div",{className:m("flex items-center",e==="number"&&"justify-end"),children:t})},ge=({className:t,id:e,filterId:r,sortId:n,children:a,filterType:o,filterParsers:d,tooltip:i,filterProps:c})=>{const{sort:l,setSort:p}=le(),u=n??e,f=r??e,g=()=>{(l==null?void 0:l.field)!==u||!(l!=null&&l.order)?p==null||p({field:u,order:"asc"}):l.order==="asc"?p==null||p({field:u,order:"desc"}):p==null||p({field:null,order:null})};return s.jsxs(y.Tooltip,{title:i==null?void 0:i.content,className:"flex items-center gap-[4px]",children:[s.jsx("div",{className:"text-neutral-60",children:a}),s.jsxs("div",{className:m("flex items-center justify-between gap-[4px] w-full",t),children:[s.jsx(M,{filterParsers:d,filterType:o,fieldName:f,filterProps:c,children:s.jsx(y.Button,{type:"text",className:"!px-1",size:"small",children:o&&f&&s.jsx(C.FilterFilled,{className:m("h-4 w-4","opacity-15 hover:opacity-20 ease-in",c.value?"text-[#1677ff] hover:opacity-60":"")})})}),s.jsxs("div",{className:m("flex flex-col items-center justify-center ml-1 cursor-pointer select-none",(l==null?void 0:l.field)===u?"text-primary":"text-neutral-300","hover:text-neutral-600"),onClick:g,children:[s.jsx(C.CaretUpOutlined,{className:m("w-[10px] h-[8px] leading-none transition-colors",(l==null?void 0:l.field)===u&&(l==null?void 0:l.order)==="asc"?"!text-[#1677ff]":"text-neutral-300")}),s.jsx(C.CaretDownOutlined,{className:m("w-[10px] h-[8px] leading-none transition-colors",(l==null?void 0:l.field)===u&&(l==null?void 0:l.order)==="desc"?"!text-[#1677ff]":"text-neutral-300")})]})]})]})},be=(t,e)=>{const r=[];for(const n of t){const a={...n.definition},o=n.dataType??"string",d=i=>{var c;return n.definition.mapping?((c=n.definition.mapping.find(l=>l.value===i))==null?void 0:c.label)??i:i};switch(typeof n.definition.cell=="function"?a.cell=n.definition.cell:a.cell=({getValue:i,row:c})=>s.jsx(xe,{row:c,cell:n.definition.cell,children:d(i())}),typeof a.header){case"string":a.header=()=>{var c,l,p;const i=()=>{if(!n.filter)return{};const u={className:n.filter.className,style:n.filter.style,styles:n.filter.styles};return n.filter.type==="multiselect"||n.filter.type==="select"?{...u,options:n.filter.options}:n.filter.type==="custom"?{...u,render:n.filter.render,renderMultiple:"isMultiple"in n.filter&&n.filter.isMultiple?n.filter.render:void 0,isMultiple:"isMultiple"in n.filter?n.filter.isMultiple:!1}:u};return s.jsx(ge,{filterProps:i(),filterParsers:e.filterParsers,id:n.definition.id,filterId:(c=n.filter)==null?void 0:c.id,sortId:(l=n.sort)==null?void 0:l.id,dataType:o,filterType:(p=n.filter)==null?void 0:p.type,tooltip:n.definition.headerTooltip,children:n.definition.header})};break}r.push(a)}return r};function P(t,e=!1){const r=t.getIsPinned(),n=r==="left"&&t.getIsLastColumn("left"),a=r==="right"&&t.getIsFirstColumn("right");return{boxShadow:n?`-1px ${e?"1px":"0"} #DBE0E7 inset`:a?`1px ${e?"1px":"0"} #DBE0E7 inset`:e?"0 1px #DBE0E7 inset":void 0,left:r==="left"?`${t.getStart("left")}px`:void 0,right:r==="right"?`${t.getAfter("right")}px`:void 0,position:r?"sticky":"relative",minWidth:t.columnDef.minSize,width:t.columnDef.size,maxWidth:t.columnDef.maxSize,zIndex:r?1:0}}const L=j.forwardRef(({className:t,...e},r)=>s.jsx("div",{className:"relative w-full",children:s.jsx("table",{ref:r,className:m("w-full caption-bottom bg-white",t),...e})}));L.displayName="Table";const H=j.forwardRef(({className:t,...e},r)=>s.jsx("thead",{ref:r,className:m("border-b border-t border-neutral-30",t),...e}));H.displayName="TableHeader";const J=j.forwardRef(({className:t,children:e,...r},n)=>s.jsx("tbody",{ref:n,className:m("[&_tr:last-child]:border-0",t),...r,children:e}));J.displayName="TableBody";const ye=j.forwardRef(({className:t,...e},r)=>s.jsx("tfoot",{ref:r,className:m("dark:bg-neutral-800/50 bg-neutral-80/50 font-medium [&>tr]:last:border-b-0",t),...e}));ye.displayName="TableFooter";const S=j.forwardRef(({className:t,...e},r)=>s.jsx("tr",{ref:r,className:m("data-[state=selected]:bg-neutral-50",t),...e}));S.displayName="TableRow";const Q=j.forwardRef(({className:t,...e},r)=>s.jsx("th",{ref:r,className:m("h-12 whitespace-nowrap text-nowrap bg-white px-2 text-left align-middle text-xs font-normal text-neutral-60 [&:has([role=checkbox])]:pr-0",t),...e}));Q.displayName="TableHead";const D=j.forwardRef(({className:t,...e},r)=>s.jsx("td",{ref:r,className:m("whitespace-nowrap text-nowrap bg-white px-2 py-1 align-middle [&:has([role=checkbox])]:pr-0",t),...e}));D.displayName="TableCell";const he=j.forwardRef(({className:t,...e},r)=>s.jsx("caption",{ref:r,className:m("text-neutral-500 dark:text-neutral-400 mt-4 text-sm",t),...e}));he.displayName="TableCaption";const je=({table:t,isNoData:e,isLoading:r,pagination:n,isFirstSummaryRow:a})=>s.jsxs(L,{className:"",children:[s.jsx(H,{className:"sticky top-0 z-10 border-none",children:t.getHeaderGroups().map(o=>s.jsx(S,{children:o.headers.map(d=>s.jsx(Q,{style:{...P(d.column,!0)},children:d.isPlaceholder?null:F.flexRender(d.column.columnDef.header,d.getContext())},d.id))},o.id))}),s.jsxs(J,{children:[t.getRowModel().rows.map(o=>s.jsx(S,{"data-state":o.getIsSelected()&&"selected",className:"group",children:o.getVisibleCells().map(d=>s.jsx(D,{style:{...P(d.column)},className:m("group-hover:bg-neutral-10",d.row.index===0&&a&&"!bg-neutral-10 font-bold"),children:F.flexRender(d.column.columnDef.cell,d.getContext())},d.id))},o.id)),r&&!e&&s.jsx(s.Fragment,{children:Array.from({length:n.pageSize}).fill(null).map((o,d)=>{var i;return s.jsx(S,{children:(i=t.getHeaderGroups()[0])==null?void 0:i.headers.map(c=>s.jsx(D,{className:"w-full group-hover:bg-neutral-10",children:s.jsx("div",{className:"h-6 w-full animate-pulse rounded bg-neutral-20"})},c.id))},d)})})]})]}),we=({columns:t,data:e,isNoData:r,pagination:n,setPagination:a,totalPages:o,isLoading:d,filterParsers:i,isFirstSummaryRow:c})=>{const l=x.useMemo(()=>be(t,{filterParsers:i}),[t,i]),p=F.useReactTable({columns:l,data:e,getCoreRowModel:F.getCoreRowModel(),onPaginationChange:void 0,state:{pagination:n}});return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"w-full flex-1 overflow-scroll",children:s.jsx(je,{isFirstSummaryRow:c&&n.pageIndex===0,pagination:n,setPagination:a,totalPages:o,table:p,isLoading:d??!1,isNoData:r})}),s.jsx("div",{className:"flex items-center justify-between py-[8px]",children:s.jsxs("div",{className:"flex items-center gap-[12px]",children:[s.jsx(y.Pagination,{current:n.pageIndex+1,total:o*n.pageSize,pageSize:n.pageSize,onChange:u=>a({pageIndex:u-1,pageSize:n.pageSize}),showSizeChanger:!1}),s.jsx(y.Select,{showSearch:!1,value:n.pageSize,onChange:u=>a({pageIndex:0,pageSize:u}),options:[{value:10,label:10},{value:20,label:20},{value:30,label:30},{value:40,label:40},{value:50,label:50},{value:100,label:100}]})]})})]})},Ne={...v,lang:{...v.lang,fieldDateFormat:"DD.MM.YYYY",fieldDateTimeFormat:"DD.MM.YYYY HH:mm:ss",yearFormat:"YYYY",cellYearFormat:"YYYY"}},Ce={...I,DatePicker:{...I.DatePicker,lang:Ne.lang}},Te=({columns:t,data:e,isLoading:r,sort:n,setSort:a,pagination:o,setPagination:d,totalPages:i,filterParsers:c,isFirstSummaryRow:l=!0,quickFilters:p})=>{const u=(e==null?void 0:e.length)===0,f=x.useRef(!0);return x.useEffect(()=>{f.current&&t.forEach(g=>{var w;(w=g.sort)!=null&&w.enabled&&g.sort.default&&(a({field:g.sort.id??g.definition.id,order:g.sort.default}),f.current=!1)})},[]),s.jsx(y.ConfigProvider,{locale:Ce,children:s.jsx("div",{className:"relative flex h-full flex-col p-4",children:s.jsxs(E.Provider,{value:{sort:n,setSort:a},children:[s.jsx("div",{className:"mb-[10px] flex items-center justify-between",children:s.jsx(N,{when:p==null?void 0:p.length,children:s.jsx(me,{quickFilters:p,filterParsers:c})})}),s.jsx(B,{filterParsers:c,columns:t,quickFilters:p}),s.jsx(we,{isLoading:r,totalPages:i,columns:t,filterParsers:c,data:e,isNoData:u,pagination:o,setPagination:d,isFirstSummaryRow:l})]})})})};exports.FilterTags=B;exports.If=N;exports.Table=Te;exports.useTableStates=X;