From 7782fa01daa6af8e7d48e639b709adae7d3ad5d4 Mon Sep 17 00:00:00 2001 From: Colin Date: Fri, 5 Jan 2024 23:58:05 -0500 Subject: [PATCH] Updates --- ...utDlg-00e735ae.js => AboutDlg-kwhd-rh6.js} | 4 +- ...e735ae.js.map => AboutDlg-kwhd-rh6.js.map} | 2 +- ...-b59b76df.js => AnnotationDlg-MrGw1bs_.js} | 4 +- ...f.js.map => AnnotationDlg-MrGw1bs_.js.map} | 2 +- ...lg-1c841505.js => MetadataDlg-SPhhzz2l.js} | 4 +- ...505.js.map => MetadataDlg-SPhhzz2l.js.map} | 2 +- ...lg-0ede2ea4.js => SettingsDlg-clvDMYlF.js} | 4 +- ...ea4.js.map => SettingsDlg-clvDMYlF.js.map} | 2 +- ...g-268f0851.js => TrackInfoDlg-gPujlICd.js} | 4 +- ...51.js.map => TrackInfoDlg-gPujlICd.js.map} | 2 +- ...g-cedf4c68.js => TracklistDlg-VpL5NvQg.js} | 4 +- ...68.js.map => TracklistDlg-VpL5NvQg.js.map} | 2 +- assets/TreeNodeInfoDlg-5844cb59.js.map | 1 - ...844cb59.js => TreeNodeInfoDlg-mpBjqmzZ.js} | 4 +- assets/TreeNodeInfoDlg-mpBjqmzZ.js.map | 1 + assets/index-0de0598f.js | 45 - assets/index-0de0598f.js.map | 1 - assets/index-5df30d93.js | 5208 ----------------- assets/index-5df30d93.js.map | 1 - assets/index-Cmm1_PZk.js | 45 + assets/index-Cmm1_PZk.js.map | 1 + ...{index-5265c558.css => index-QwcegvyF.css} | 0 .../{index-a8cacb2a.js => index-SCwaNniL.js} | 4 +- ...-a8cacb2a.js.map => index-SCwaNniL.js.map} | 2 +- assets/index-SEQt8VF-.js | 4968 ++++++++++++++++ assets/index-SEQt8VF-.js.map | 1 + index.html | 5 +- 27 files changed, 5041 insertions(+), 5282 deletions(-) rename assets/{AboutDlg-00e735ae.js => AboutDlg-kwhd-rh6.js} (92%) rename assets/{AboutDlg-00e735ae.js.map => AboutDlg-kwhd-rh6.js.map} (98%) rename assets/{AnnotationDlg-b59b76df.js => AnnotationDlg-MrGw1bs_.js} (93%) rename assets/{AnnotationDlg-b59b76df.js.map => AnnotationDlg-MrGw1bs_.js.map} (99%) rename assets/{MetadataDlg-1c841505.js => MetadataDlg-SPhhzz2l.js} (56%) rename assets/{MetadataDlg-1c841505.js.map => MetadataDlg-SPhhzz2l.js.map} (94%) rename assets/{SettingsDlg-0ede2ea4.js => SettingsDlg-clvDMYlF.js} (94%) rename assets/{SettingsDlg-0ede2ea4.js.map => SettingsDlg-clvDMYlF.js.map} (99%) rename assets/{TrackInfoDlg-268f0851.js => TrackInfoDlg-gPujlICd.js} (86%) rename assets/{TrackInfoDlg-268f0851.js.map => TrackInfoDlg-gPujlICd.js.map} (97%) rename assets/{TracklistDlg-cedf4c68.js => TracklistDlg-VpL5NvQg.js} (84%) rename assets/{TracklistDlg-cedf4c68.js.map => TracklistDlg-VpL5NvQg.js.map} (97%) delete mode 100644 assets/TreeNodeInfoDlg-5844cb59.js.map rename assets/{TreeNodeInfoDlg-5844cb59.js => TreeNodeInfoDlg-mpBjqmzZ.js} (69%) create mode 100644 assets/TreeNodeInfoDlg-mpBjqmzZ.js.map delete mode 100644 assets/index-0de0598f.js delete mode 100644 assets/index-0de0598f.js.map delete mode 100644 assets/index-5df30d93.js delete mode 100644 assets/index-5df30d93.js.map create mode 100644 assets/index-Cmm1_PZk.js create mode 100644 assets/index-Cmm1_PZk.js.map rename assets/{index-5265c558.css => index-QwcegvyF.css} (100%) rename assets/{index-a8cacb2a.js => index-SCwaNniL.js} (95%) rename assets/{index-a8cacb2a.js.map => index-SCwaNniL.js.map} (99%) create mode 100644 assets/index-SEQt8VF-.js create mode 100644 assets/index-SEQt8VF-.js.map diff --git a/assets/AboutDlg-00e735ae.js b/assets/AboutDlg-kwhd-rh6.js similarity index 92% rename from assets/AboutDlg-00e735ae.js rename to assets/AboutDlg-kwhd-rh6.js index 758f2412..369de587 100644 --- a/assets/AboutDlg-00e735ae.js +++ b/assets/AboutDlg-kwhd-rh6.js @@ -1,2 +1,2 @@ -import{R as e,u as o,D as n,b as l,L as t}from"./index-5df30d93.js";const i="2.1.5";function c({onClose:r}){return e.createElement(o.Dialog,{onClose:()=>r(),open:!0,title:"About this plugin"},e.createElement(n,null,e.createElement(l,null,"MSAView ",i," (",e.createElement(t,{href:"https://github.com/gmod/jbrowse-plugin-msaview"},"Github"),")"),e.createElement("ul",null,e.createElement("li",null,e.createElement(l,null,"We use some color schemes from the"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some information on jalview colorings"," ",e.createElement(t,{href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",e.createElement(t,{href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this paper about the flower color scheme"," ",e.createElement(t,{href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}export{c as default}; -//# sourceMappingURL=AboutDlg-00e735ae.js.map +import{R as e,u as o,D as n,b as l,L as t}from"./index-SEQt8VF-.js";const i="2.1.5";function c({onClose:r}){return e.createElement(o.Dialog,{onClose:()=>r(),open:!0,title:"About this plugin"},e.createElement(n,null,e.createElement(l,null,"MSAView ",i," (",e.createElement(t,{href:"https://github.com/gmod/jbrowse-plugin-msaview"},"Github"),")"),e.createElement("ul",null,e.createElement("li",null,e.createElement(l,null,"We use some color schemes from the"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some information on jalview colorings"," ",e.createElement(t,{href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",e.createElement(t,{href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this paper about the flower color scheme"," ",e.createElement(t,{href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}export{c as default}; +//# sourceMappingURL=AboutDlg-kwhd-rh6.js.map diff --git a/assets/AboutDlg-00e735ae.js.map b/assets/AboutDlg-kwhd-rh6.js.map similarity index 98% rename from assets/AboutDlg-00e735ae.js.map rename to assets/AboutDlg-kwhd-rh6.js.map index ef44beea..b691d4b9 100644 --- a/assets/AboutDlg-00e735ae.js.map +++ b/assets/AboutDlg-kwhd-rh6.js.map @@ -1 +1 @@ -{"version":3,"file":"AboutDlg-00e735ae.js","sources":["../../../lib/dist/version.js","../../../lib/dist/components/dialogs/AboutDlg.js"],"sourcesContent":["export const version = '2.1.5';\n//# sourceMappingURL=version.js.map","import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, Typography, Link } from '@mui/material';\nimport { version } from '../../version';\nexport default function AboutDialog({ onClose }) {\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"About this plugin\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"MSAView \",\n version,\n \" (\",\n React.createElement(Link, { href: \"https://github.com/gmod/jbrowse-plugin-msaview\" }, \"Github\"),\n \")\"),\n React.createElement(\"ul\", null,\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"We use some color schemes from the\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite\" }, \"biotite\"),\n ' ',\n \"project, and their license is reproduced\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some information on jalview colorings\",\n ' ',\n React.createElement(Link, { href: \"https://www.jalview.org/help/html/colourSchemes/\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes\",\n ' ',\n React.createElement(Link, { href: \"http://www.bioinformatics.nl/~berndb/aacolour.html\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this paper about the flower color scheme\",\n ' ',\n React.createElement(Link, { href: \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/\" }, \"here\")))))));\n}\n//# sourceMappingURL=AboutDlg.js.map"],"names":["version","AboutDialog","onClose","React","Dialog","DialogContent","Typography","Link"],"mappings":"oEAAO,MAAMA,EAAU,QCIR,SAASC,EAAY,CAAE,QAAAC,GAAW,CAC7C,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMF,EAAO,EAAI,KAAM,GAAM,MAAO,mBAAqB,EACpGC,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAC5B,WACAN,EACA,KACAG,EAAM,cAAcI,EAAM,CAAE,KAAM,gDAAkD,EAAE,QAAQ,EAC9F,GAAG,EACPJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,qCACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,wCAA0C,EAAE,SAAS,EACvF,IACA,2CACA,IACAJ,EAAM,cAAcI,EAAM,CAAE,KAAM,gEAAkE,EAAE,MAAM,CAAC,CAAC,EACtHJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,0DACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,kDAAoD,EAAE,MAAM,CAAC,CAAC,EACxGJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,uFACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,oDAAsD,EAAE,MAAM,CAAC,CAAC,EAC1GJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,+CACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,uDAAyD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAChI"} \ No newline at end of file +{"version":3,"file":"AboutDlg-kwhd-rh6.js","sources":["../../../lib/dist/version.js","../../../lib/dist/components/dialogs/AboutDlg.js"],"sourcesContent":["export const version = '2.1.5';\n//# sourceMappingURL=version.js.map","import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, Typography, Link } from '@mui/material';\nimport { version } from '../../version';\nexport default function AboutDialog({ onClose }) {\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"About this plugin\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"MSAView \",\n version,\n \" (\",\n React.createElement(Link, { href: \"https://github.com/gmod/jbrowse-plugin-msaview\" }, \"Github\"),\n \")\"),\n React.createElement(\"ul\", null,\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"We use some color schemes from the\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite\" }, \"biotite\"),\n ' ',\n \"project, and their license is reproduced\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some information on jalview colorings\",\n ' ',\n React.createElement(Link, { href: \"https://www.jalview.org/help/html/colourSchemes/\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes\",\n ' ',\n React.createElement(Link, { href: \"http://www.bioinformatics.nl/~berndb/aacolour.html\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this paper about the flower color scheme\",\n ' ',\n React.createElement(Link, { href: \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/\" }, \"here\")))))));\n}\n//# sourceMappingURL=AboutDlg.js.map"],"names":["version","AboutDialog","onClose","React","Dialog","DialogContent","Typography","Link"],"mappings":"oEAAO,MAAMA,EAAU,QCIR,SAASC,EAAY,CAAE,QAAAC,GAAW,CAC7C,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMF,EAAO,EAAI,KAAM,GAAM,MAAO,mBAAqB,EACpGC,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAC5B,WACAN,EACA,KACAG,EAAM,cAAcI,EAAM,CAAE,KAAM,gDAAkD,EAAE,QAAQ,EAC9F,GAAG,EACPJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,qCACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,wCAA0C,EAAE,SAAS,EACvF,IACA,2CACA,IACAJ,EAAM,cAAcI,EAAM,CAAE,KAAM,gEAAkE,EAAE,MAAM,CAAC,CAAC,EACtHJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,0DACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,kDAAoD,EAAE,MAAM,CAAC,CAAC,EACxGJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,uFACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,oDAAsD,EAAE,MAAM,CAAC,CAAC,EAC1GJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,+CACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,uDAAyD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAChI"} \ No newline at end of file diff --git a/assets/AnnotationDlg-b59b76df.js b/assets/AnnotationDlg-MrGw1bs_.js similarity index 93% rename from assets/AnnotationDlg-b59b76df.js rename to assets/AnnotationDlg-MrGw1bs_.js index 95d9b2eb..45cb4e59 100644 --- a/assets/AnnotationDlg-b59b76df.js +++ b/assets/AnnotationDlg-MrGw1bs_.js @@ -1,2 +1,2 @@ -import{r as D,i as w,j as R,o as E,R as e,I as C,T as g,a as b,u as y,D as _,b as j,B as v,c as x}from"./index-5df30d93.js";var p={},A=w;Object.defineProperty(p,"__esModule",{value:!0});var d=p.default=void 0,I=A(D()),S=R,k=(0,I.default)((0,S.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");d=p.default=k;const M=n=>{const a={};return n.forEach(([t,l])=>{a[t]||(a[t]=[]),a[t].push(l)}),a},V=E(function({name:n,value:a,setValue:t,setName:l,onDelete:s}){return e.createElement("div",null,e.createElement(C,{onClick:s,style:{margin:10}},e.createElement(d,null)),e.createElement(g,{value:n,onChange:o=>l(o.target.value),label:"Key"}),e.createElement(g,{value:a,onChange:o=>t(o.target.value),label:"Value"}))}),B=E(({onClose:n,data:a,model:t})=>{const{blanks:l}=t,{left:s,right:o}=a,[r,u]=b.useState([["Name",""],["ID",""],["Note",""]]);return e.createElement(y.Dialog,{onClose:()=>n(),open:!0,title:"Create new region annotation"},e.createElement(_,null,e.createElement(j,null,"Do you want to add an annotation to the MSA at ",s,"..",o," ",l.length?` (gapped ${t.getPos(s)}..${t.getPos(o)}`:""),r.map(([f,h],i)=>e.createElement(V,{key:i,name:f,value:h,setValue:m=>{const c=[...r];c[i][1]=m,u(c)},setName:m=>{const c=[...r];c[i][0]=m,u(c)},onDelete:()=>{r.splice(i,1),u([...r])}})),e.createElement(v,{onClick:()=>{u([...r,["",""]])}},"Add row"),e.createElement(x,null,e.createElement(v,{onClick:()=>{t.addAnnotation(s,o,M(r)),n()},variant:"contained",color:"primary"},"Submit"),e.createElement(v,{variant:"contained",color:"secondary",onClick:()=>n()},"Cancel"))))});export{B as default}; -//# sourceMappingURL=AnnotationDlg-b59b76df.js.map +import{r as D,i as w,j as R,o as E,R as e,I as C,T as g,a as b,u as y,D as _,b as j,B as v,c as x}from"./index-SEQt8VF-.js";var p={},A=w;Object.defineProperty(p,"__esModule",{value:!0});var d=p.default=void 0,I=A(D()),S=R,k=(0,I.default)((0,S.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");d=p.default=k;const M=n=>{const a={};return n.forEach(([t,l])=>{a[t]||(a[t]=[]),a[t].push(l)}),a},V=E(function({name:n,value:a,setValue:t,setName:l,onDelete:s}){return e.createElement("div",null,e.createElement(C,{onClick:s,style:{margin:10}},e.createElement(d,null)),e.createElement(g,{value:n,onChange:o=>l(o.target.value),label:"Key"}),e.createElement(g,{value:a,onChange:o=>t(o.target.value),label:"Value"}))}),B=E(({onClose:n,data:a,model:t})=>{const{blanks:l}=t,{left:s,right:o}=a,[r,u]=b.useState([["Name",""],["ID",""],["Note",""]]);return e.createElement(y.Dialog,{onClose:()=>n(),open:!0,title:"Create new region annotation"},e.createElement(_,null,e.createElement(j,null,"Do you want to add an annotation to the MSA at ",s,"..",o," ",l.length?` (gapped ${t.getPos(s)}..${t.getPos(o)}`:""),r.map(([f,h],i)=>e.createElement(V,{key:i,name:f,value:h,setValue:m=>{const c=[...r];c[i][1]=m,u(c)},setName:m=>{const c=[...r];c[i][0]=m,u(c)},onDelete:()=>{r.splice(i,1),u([...r])}})),e.createElement(v,{onClick:()=>{u([...r,["",""]])}},"Add row"),e.createElement(x,null,e.createElement(v,{onClick:()=>{t.addAnnotation(s,o,M(r)),n()},variant:"contained",color:"primary"},"Submit"),e.createElement(v,{variant:"contained",color:"secondary",onClick:()=>n()},"Cancel"))))});export{B as default}; +//# sourceMappingURL=AnnotationDlg-MrGw1bs_.js.map diff --git a/assets/AnnotationDlg-b59b76df.js.map b/assets/AnnotationDlg-MrGw1bs_.js.map similarity index 99% rename from assets/AnnotationDlg-b59b76df.js.map rename to assets/AnnotationDlg-MrGw1bs_.js.map index 89331d05..a5edba23 100644 --- a/assets/AnnotationDlg-b59b76df.js.map +++ b/assets/AnnotationDlg-MrGw1bs_.js.map @@ -1 +1 @@ -{"version":3,"file":"AnnotationDlg-b59b76df.js","sources":["../../../node_modules/@mui/icons-material/Delete.js","../../../lib/dist/components/dialogs/AnnotationDlg.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import React, { useState } from 'react';\nimport { observer } from 'mobx-react';\nimport { Button, DialogActions, DialogContent, IconButton, TextField, Typography, } from '@mui/material';\nimport { Dialog } from '@jbrowse/core/ui';\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete';\nconst specialFromEntries = (val) => {\n const ret = {};\n val.forEach(([key, val]) => {\n if (!ret[key]) {\n ret[key] = [];\n }\n ret[key].push(val);\n });\n return ret;\n};\nconst Row = observer(function ({ name, value, setValue, setName, onDelete, }) {\n return (React.createElement(\"div\", null,\n React.createElement(IconButton, { onClick: onDelete, style: { margin: 10 } },\n React.createElement(DeleteIcon, null)),\n React.createElement(TextField, { value: name, onChange: event => setName(event.target.value), label: \"Key\" }),\n React.createElement(TextField, { value: value, onChange: event => setValue(event.target.value), label: \"Value\" })));\n});\nexport default observer(({ onClose, data, model, }) => {\n const { blanks } = model;\n const { left: l, right: r } = data;\n const [rows, setRows] = useState([\n ['Name', ''],\n ['ID', ''],\n ['Note', ''],\n ]);\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Create new region annotation\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"Do you want to add an annotation to the MSA at \",\n l,\n \"..\",\n r,\n ' ',\n blanks.length\n ? ` (gapped ${model.getPos(l)}..${model.getPos(r)}`\n : ''),\n rows.map(([key, val], index) => (React.createElement(Row, { key: index, name: key, value: val, setValue: newValue => {\n const newRows = [...rows];\n newRows[index][1] = newValue;\n setRows(newRows);\n }, setName: newName => {\n const newRows = [...rows];\n newRows[index][0] = newName;\n setRows(newRows);\n }, onDelete: () => {\n rows.splice(index, 1);\n setRows([...rows]);\n } }))),\n React.createElement(Button, { onClick: () => {\n setRows([...rows, ['', '']]);\n } }, \"Add row\"),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => {\n model.addAnnotation(l, r, specialFromEntries(rows));\n onClose();\n }, variant: \"contained\", color: \"primary\" }, \"Submit\"),\n React.createElement(Button, { variant: \"contained\", color: \"secondary\", onClick: () => onClose() }, \"Cancel\")))));\n});\n//# sourceMappingURL=AnnotationDlg.js.map"],"names":["_interopRequireDefault","require$$0","Delete","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","_default","specialFromEntries","val","ret","key","Row","observer","name","value","setValue","setName","onDelete","React","IconButton","DeleteIcon","TextField","event","AnnotationDlg","onClose","data","model","blanks","l","r","rows","setRows","useState","Dialog","DialogContent","Typography","index","newValue","newRows","newName","Button","DialogActions"],"mappings":"qIAGIA,EAAyBC,EAC7B,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,IAAeC,EAAAD,EAAA,QAAG,OACdE,EAAiBJ,EAAuBK,EAAA,CAAgC,EACxEC,EAAcC,EACdC,KAAeJ,EAAe,YAA2BE,EAAY,KAAK,OAAQ,CACpF,EAAG,+EACL,CAAC,EAAG,QAAQ,EACZH,EAAAD,EAAA,QAAkBM,ECPlB,MAAMC,EAAsBC,GAAQ,CAChC,MAAMC,EAAM,CAAA,EACZ,OAAAD,EAAI,QAAQ,CAAC,CAACE,EAAKF,CAAG,IAAM,CACnBC,EAAIC,CAAG,IACRD,EAAIC,CAAG,EAAI,IAEfD,EAAIC,CAAG,EAAE,KAAKF,CAAG,CACzB,CAAK,EACMC,CACX,EACME,EAAMC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,SAAAC,GAAa,CAC1E,OAAQC,EAAM,cAAc,MAAO,KAC/BA,EAAM,cAAcC,EAAY,CAAE,QAASF,EAAU,MAAO,CAAE,OAAQ,GAAM,EACxEC,EAAM,cAAcE,EAAY,IAAI,CAAC,EACzCF,EAAM,cAAcG,EAAW,CAAE,MAAOR,EAAM,SAAUS,GAASN,EAAQM,EAAM,OAAO,KAAK,EAAG,MAAO,KAAK,CAAE,EAC5GJ,EAAM,cAAcG,EAAW,CAAE,MAAOP,EAAO,SAAUQ,GAASP,EAASO,EAAM,OAAO,KAAK,EAAG,MAAO,OAAS,CAAA,CAAC,CACzH,CAAC,EACcC,EAAAX,EAAS,CAAC,CAAE,QAAAY,EAAS,KAAAC,EAAM,MAAAC,CAAK,IAAQ,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGD,EACb,CAAE,KAAME,EAAG,MAAOC,CAAC,EAAKJ,EACxB,CAACK,EAAMC,CAAO,EAAIC,WAAS,CAC7B,CAAC,OAAQ,EAAE,EACX,CAAC,KAAM,EAAE,EACT,CAAC,OAAQ,EAAE,CACnB,CAAK,EACD,OAAQd,EAAM,cAAce,EAAM,OAAE,CAAE,QAAS,IAAMT,EAAO,EAAI,KAAM,GAAM,MAAO,8BAAgC,EAC/GN,EAAM,cAAcgB,EAAe,KAC/BhB,EAAM,cAAciB,EAAY,KAC5B,kDACAP,EACA,KACAC,EACA,IACAF,EAAO,OACD,YAAYD,EAAM,OAAOE,CAAC,CAAC,KAAKF,EAAM,OAAOG,CAAC,CAAC,GAC/C,EAAE,EACZC,EAAK,IAAI,CAAC,CAACpB,EAAKF,CAAG,EAAG4B,IAAWlB,EAAM,cAAcP,EAAK,CAAE,IAAKyB,EAAO,KAAM1B,EAAK,MAAOF,EAAK,SAAU6B,GAAY,CAC7G,MAAMC,EAAU,CAAC,GAAGR,CAAI,EACxBQ,EAAQF,CAAK,EAAE,CAAC,EAAIC,EACpBN,EAAQO,CAAO,CACnC,EAAmB,QAASC,GAAW,CACnB,MAAMD,EAAU,CAAC,GAAGR,CAAI,EACxBQ,EAAQF,CAAK,EAAE,CAAC,EAAIG,EACpBR,EAAQO,CAAO,CAClB,EAAE,SAAU,IAAM,CACfR,EAAK,OAAOM,EAAO,CAAC,EACpBL,EAAQ,CAAC,GAAGD,CAAI,CAAC,CACpB,CAAA,CAAE,CAAE,EACTZ,EAAM,cAAcsB,EAAQ,CAAE,QAAS,IAAM,CACrCT,EAAQ,CAAC,GAAGD,EAAM,CAAC,GAAI,EAAE,CAAC,CAAC,CAC9B,CAAA,EAAI,SAAS,EAClBZ,EAAM,cAAcuB,EAAe,KAC/BvB,EAAM,cAAcsB,EAAQ,CAAE,QAAS,IAAM,CACrCd,EAAM,cAAcE,EAAGC,EAAGtB,EAAmBuB,CAAI,CAAC,EAClDN,GACH,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,QAAQ,EACzDN,EAAM,cAAcsB,EAAQ,CAAE,QAAS,YAAa,MAAO,YAAa,QAAS,IAAMhB,EAAS,CAAA,EAAI,QAAQ,CAAC,CAAC,CAAC,CAC/H,CAAC","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"AnnotationDlg-MrGw1bs_.js","sources":["../../../node_modules/@mui/icons-material/Delete.js","../../../lib/dist/components/dialogs/AnnotationDlg.js"],"sourcesContent":["\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexports.default = _default;","import React, { useState } from 'react';\nimport { observer } from 'mobx-react';\nimport { Button, DialogActions, DialogContent, IconButton, TextField, Typography, } from '@mui/material';\nimport { Dialog } from '@jbrowse/core/ui';\n// icons\nimport DeleteIcon from '@mui/icons-material/Delete';\nconst specialFromEntries = (val) => {\n const ret = {};\n val.forEach(([key, val]) => {\n if (!ret[key]) {\n ret[key] = [];\n }\n ret[key].push(val);\n });\n return ret;\n};\nconst Row = observer(function ({ name, value, setValue, setName, onDelete, }) {\n return (React.createElement(\"div\", null,\n React.createElement(IconButton, { onClick: onDelete, style: { margin: 10 } },\n React.createElement(DeleteIcon, null)),\n React.createElement(TextField, { value: name, onChange: event => setName(event.target.value), label: \"Key\" }),\n React.createElement(TextField, { value: value, onChange: event => setValue(event.target.value), label: \"Value\" })));\n});\nexport default observer(({ onClose, data, model, }) => {\n const { blanks } = model;\n const { left: l, right: r } = data;\n const [rows, setRows] = useState([\n ['Name', ''],\n ['ID', ''],\n ['Note', ''],\n ]);\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Create new region annotation\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"Do you want to add an annotation to the MSA at \",\n l,\n \"..\",\n r,\n ' ',\n blanks.length\n ? ` (gapped ${model.getPos(l)}..${model.getPos(r)}`\n : ''),\n rows.map(([key, val], index) => (React.createElement(Row, { key: index, name: key, value: val, setValue: newValue => {\n const newRows = [...rows];\n newRows[index][1] = newValue;\n setRows(newRows);\n }, setName: newName => {\n const newRows = [...rows];\n newRows[index][0] = newName;\n setRows(newRows);\n }, onDelete: () => {\n rows.splice(index, 1);\n setRows([...rows]);\n } }))),\n React.createElement(Button, { onClick: () => {\n setRows([...rows, ['', '']]);\n } }, \"Add row\"),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => {\n model.addAnnotation(l, r, specialFromEntries(rows));\n onClose();\n }, variant: \"contained\", color: \"primary\" }, \"Submit\"),\n React.createElement(Button, { variant: \"contained\", color: \"secondary\", onClick: () => onClose() }, \"Cancel\")))));\n});\n//# sourceMappingURL=AnnotationDlg.js.map"],"names":["_interopRequireDefault","require$$0","Delete","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","_default","specialFromEntries","val","ret","key","Row","observer","name","value","setValue","setName","onDelete","React","IconButton","DeleteIcon","TextField","event","AnnotationDlg","onClose","data","model","blanks","l","r","rows","setRows","useState","Dialog","DialogContent","Typography","index","newValue","newRows","newName","Button","DialogActions"],"mappings":"qIAGIA,EAAyBC,EAC7B,OAAO,eAAeC,EAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACD,IAAeC,EAAAD,EAAA,QAAG,OACdE,EAAiBJ,EAAuBK,EAAA,CAAgC,EACxEC,EAAcC,EACdC,KAAeJ,EAAe,YAA2BE,EAAY,KAAK,OAAQ,CACpF,EAAG,+EACL,CAAC,EAAG,QAAQ,EACZH,EAAAD,EAAA,QAAkBM,ECPlB,MAAMC,EAAsBC,GAAQ,CAChC,MAAMC,EAAM,CAAA,EACZ,OAAAD,EAAI,QAAQ,CAAC,CAACE,EAAKF,CAAG,IAAM,CACnBC,EAAIC,CAAG,IACRD,EAAIC,CAAG,EAAI,IAEfD,EAAIC,CAAG,EAAE,KAAKF,CAAG,CACzB,CAAK,EACMC,CACX,EACME,EAAMC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,SAAAC,GAAa,CAC1E,OAAQC,EAAM,cAAc,MAAO,KAC/BA,EAAM,cAAcC,EAAY,CAAE,QAASF,EAAU,MAAO,CAAE,OAAQ,GAAM,EACxEC,EAAM,cAAcE,EAAY,IAAI,CAAC,EACzCF,EAAM,cAAcG,EAAW,CAAE,MAAOR,EAAM,SAAUS,GAASN,EAAQM,EAAM,OAAO,KAAK,EAAG,MAAO,KAAK,CAAE,EAC5GJ,EAAM,cAAcG,EAAW,CAAE,MAAOP,EAAO,SAAUQ,GAASP,EAASO,EAAM,OAAO,KAAK,EAAG,MAAO,OAAS,CAAA,CAAC,CACzH,CAAC,EACcC,EAAAX,EAAS,CAAC,CAAE,QAAAY,EAAS,KAAAC,EAAM,MAAAC,CAAK,IAAQ,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGD,EACb,CAAE,KAAME,EAAG,MAAOC,CAAC,EAAKJ,EACxB,CAACK,EAAMC,CAAO,EAAIC,WAAS,CAC7B,CAAC,OAAQ,EAAE,EACX,CAAC,KAAM,EAAE,EACT,CAAC,OAAQ,EAAE,CACnB,CAAK,EACD,OAAQd,EAAM,cAAce,EAAM,OAAE,CAAE,QAAS,IAAMT,EAAO,EAAI,KAAM,GAAM,MAAO,8BAAgC,EAC/GN,EAAM,cAAcgB,EAAe,KAC/BhB,EAAM,cAAciB,EAAY,KAC5B,kDACAP,EACA,KACAC,EACA,IACAF,EAAO,OACD,YAAYD,EAAM,OAAOE,CAAC,CAAC,KAAKF,EAAM,OAAOG,CAAC,CAAC,GAC/C,EAAE,EACZC,EAAK,IAAI,CAAC,CAACpB,EAAKF,CAAG,EAAG4B,IAAWlB,EAAM,cAAcP,EAAK,CAAE,IAAKyB,EAAO,KAAM1B,EAAK,MAAOF,EAAK,SAAU6B,GAAY,CAC7G,MAAMC,EAAU,CAAC,GAAGR,CAAI,EACxBQ,EAAQF,CAAK,EAAE,CAAC,EAAIC,EACpBN,EAAQO,CAAO,CACnC,EAAmB,QAASC,GAAW,CACnB,MAAMD,EAAU,CAAC,GAAGR,CAAI,EACxBQ,EAAQF,CAAK,EAAE,CAAC,EAAIG,EACpBR,EAAQO,CAAO,CAClB,EAAE,SAAU,IAAM,CACfR,EAAK,OAAOM,EAAO,CAAC,EACpBL,EAAQ,CAAC,GAAGD,CAAI,CAAC,CACpB,CAAA,CAAE,CAAE,EACTZ,EAAM,cAAcsB,EAAQ,CAAE,QAAS,IAAM,CACrCT,EAAQ,CAAC,GAAGD,EAAM,CAAC,GAAI,EAAE,CAAC,CAAC,CAC9B,CAAA,EAAI,SAAS,EAClBZ,EAAM,cAAcuB,EAAe,KAC/BvB,EAAM,cAAcsB,EAAQ,CAAE,QAAS,IAAM,CACrCd,EAAM,cAAcE,EAAGC,EAAGtB,EAAmBuB,CAAI,CAAC,EAClDN,GACH,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,QAAQ,EACzDN,EAAM,cAAcsB,EAAQ,CAAE,QAAS,YAAa,MAAO,YAAa,QAAS,IAAMhB,EAAS,CAAA,EAAI,QAAQ,CAAC,CAAC,CAAC,CAC/H,CAAC","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/MetadataDlg-1c841505.js b/assets/MetadataDlg-SPhhzz2l.js similarity index 56% rename from assets/MetadataDlg-1c841505.js rename to assets/MetadataDlg-SPhhzz2l.js index 16ec5de8..d86b394c 100644 --- a/assets/MetadataDlg-1c841505.js +++ b/assets/MetadataDlg-SPhhzz2l.js @@ -1,2 +1,2 @@ -import{o as r,R as e,u as n,D as s}from"./index-5df30d93.js";import{B as i}from"./index-0de0598f.js";import"./index-a8cacb2a.js";const c=r(function({model:t,onClose:a}){const{header:o}=t;return e.createElement(n.Dialog,{onClose:()=>a(),open:!0,title:"Metadata"},e.createElement(s,null,e.createElement(i.Attributes,{attributes:o})))});export{c as default}; -//# sourceMappingURL=MetadataDlg-1c841505.js.map +import{o as r,R as e,u as n,D as s}from"./index-SEQt8VF-.js";import{B as i}from"./index-Cmm1_PZk.js";import"./index-SCwaNniL.js";const c=r(function({model:t,onClose:a}){const{header:o}=t;return e.createElement(n.Dialog,{onClose:()=>a(),open:!0,title:"Metadata"},e.createElement(s,null,e.createElement(i.Attributes,{attributes:o})))});export{c as default}; +//# sourceMappingURL=MetadataDlg-SPhhzz2l.js.map diff --git a/assets/MetadataDlg-1c841505.js.map b/assets/MetadataDlg-SPhhzz2l.js.map similarity index 94% rename from assets/MetadataDlg-1c841505.js.map rename to assets/MetadataDlg-SPhhzz2l.js.map index d35d3681..d34d087b 100644 --- a/assets/MetadataDlg-1c841505.js.map +++ b/assets/MetadataDlg-SPhhzz2l.js.map @@ -1 +1 @@ -{"version":3,"file":"MetadataDlg-1c841505.js","sources":["../../../lib/dist/components/dialogs/MetadataDlg.js"],"sourcesContent":["import React from 'react';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Attributes } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nconst MetadataDialog = observer(function ({ model, onClose, }) {\n const { header } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Metadata\" },\n React.createElement(DialogContent, null,\n React.createElement(Attributes, { attributes: header }))));\n});\nexport default MetadataDialog;\n//# sourceMappingURL=MetadataDlg.js.map"],"names":["MetadataDialog","observer","model","onClose","header","React","Dialog","DialogContent","Attributes"],"mappings":"iIAKK,MAACA,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,UAAY,EAC3FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,aAAY,CAAE,WAAYJ,CAAM,CAAE,CAAC,CAAC,CACpE,CAAC"} \ No newline at end of file +{"version":3,"file":"MetadataDlg-SPhhzz2l.js","sources":["../../../lib/dist/components/dialogs/MetadataDlg.js"],"sourcesContent":["import React from 'react';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Attributes } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nconst MetadataDialog = observer(function ({ model, onClose, }) {\n const { header } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Metadata\" },\n React.createElement(DialogContent, null,\n React.createElement(Attributes, { attributes: header }))));\n});\nexport default MetadataDialog;\n//# sourceMappingURL=MetadataDlg.js.map"],"names":["MetadataDialog","observer","model","onClose","header","React","Dialog","DialogContent","Attributes"],"mappings":"iIAKK,MAACA,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,UAAY,EAC3FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,aAAY,CAAE,WAAYJ,CAAM,CAAE,CAAC,CAAC,CACpE,CAAC"} \ No newline at end of file diff --git a/assets/SettingsDlg-0ede2ea4.js b/assets/SettingsDlg-clvDMYlF.js similarity index 94% rename from assets/SettingsDlg-0ede2ea4.js rename to assets/SettingsDlg-clvDMYlF.js index 79b2d756..b0bff2c4 100644 --- a/assets/SettingsDlg-0ede2ea4.js +++ b/assets/SettingsDlg-clvDMYlF.js @@ -1,2 +1,2 @@ -import{m as k,o as f,a as g,R as e,u as N,D as W,F as r,C as l,T as n,d as p,M as D,c as T,B as x}from"./index-5df30d93.js";const B=k()(t=>({field:{margin:t.spacing(4)}})),y=f(function({model:t,onClose:u}){const{classes:o}=B(),{colorSchemeName:d,noTree:b}=t,[c,w]=g.useState(`${t.rowHeight}`),[s,v]=g.useState(`${t.colWidth}`),[i,S]=g.useState(`${t.treeWidth}`);function h(a){return Number.isNaN(+a)||+a<0}const m=h(c),E=h(s),C=h(i);return e.createElement(N.Dialog,{open:!0,onClose:()=>u(),title:"Settings"},e.createElement(W,null,e.createElement(r,{control:e.createElement(l,{checked:t.showBranchLen,onChange:()=>t.toggleBranchLen()}),label:"Show branch length"}),e.createElement(r,{control:e.createElement(l,{checked:t.bgColor,onChange:()=>t.toggleBgColor()}),label:"Color background"}),e.createElement(r,{control:e.createElement(l,{checked:t.drawNodeBubbles,onChange:()=>t.toggleNodeBubbles()}),label:"Draw node bubbles"}),e.createElement(r,{control:e.createElement(l,{checked:t.drawTree,onChange:()=>t.toggleDrawTree()}),label:"Draw tree (if available)"}),e.createElement(r,{control:e.createElement(l,{checked:t.labelsAlignRight,onChange:()=>t.toggleLabelsAlignRight()}),label:"Labels align right (note: labels may draw over tree, but can adjust tree width or tree area width in UI)"}),e.createElement(n,{className:o.field,label:"Row height (px)",value:c,error:m,onChange:a=>w(a.target.value)}),e.createElement(n,{className:o.field,label:"Column width (px)",value:s,error:E,onChange:a=>v(a.target.value)}),e.createElement("br",null),b?null:e.createElement(n,{className:o.field,label:"Tree width (px)",value:i,error:C,onChange:a=>S(a.target.value)}),e.createElement("br",null),e.createElement(n,{select:!0,label:"Color scheme",value:d,onChange:a=>t.setColorSchemeName(a.target.value)},Object.keys(p).map(a=>e.createElement(D,{key:a,value:a},a))),e.createElement(T,null,e.createElement(x,{disabled:m||E||C,onClick:()=>{t.setRowHeight(+c),t.setColWidth(+s),b||t.setTreeWidth(+i),u()},variant:"contained",color:"primary"},"Submit"))))});export{y as default}; -//# sourceMappingURL=SettingsDlg-0ede2ea4.js.map +import{m as k,o as f,a as g,R as e,u as N,D as W,F as r,C as l,T as n,d as p,M as D,c as T,B as x}from"./index-SEQt8VF-.js";const B=k()(t=>({field:{margin:t.spacing(4)}})),y=f(function({model:t,onClose:u}){const{classes:o}=B(),{colorSchemeName:d,noTree:b}=t,[c,w]=g.useState(`${t.rowHeight}`),[s,v]=g.useState(`${t.colWidth}`),[i,S]=g.useState(`${t.treeWidth}`);function h(a){return Number.isNaN(+a)||+a<0}const m=h(c),E=h(s),C=h(i);return e.createElement(N.Dialog,{open:!0,onClose:()=>u(),title:"Settings"},e.createElement(W,null,e.createElement(r,{control:e.createElement(l,{checked:t.showBranchLen,onChange:()=>t.toggleBranchLen()}),label:"Show branch length"}),e.createElement(r,{control:e.createElement(l,{checked:t.bgColor,onChange:()=>t.toggleBgColor()}),label:"Color background"}),e.createElement(r,{control:e.createElement(l,{checked:t.drawNodeBubbles,onChange:()=>t.toggleNodeBubbles()}),label:"Draw node bubbles"}),e.createElement(r,{control:e.createElement(l,{checked:t.drawTree,onChange:()=>t.toggleDrawTree()}),label:"Draw tree (if available)"}),e.createElement(r,{control:e.createElement(l,{checked:t.labelsAlignRight,onChange:()=>t.toggleLabelsAlignRight()}),label:"Labels align right (note: labels may draw over tree, but can adjust tree width or tree area width in UI)"}),e.createElement(n,{className:o.field,label:"Row height (px)",value:c,error:m,onChange:a=>w(a.target.value)}),e.createElement(n,{className:o.field,label:"Column width (px)",value:s,error:E,onChange:a=>v(a.target.value)}),e.createElement("br",null),b?null:e.createElement(n,{className:o.field,label:"Tree width (px)",value:i,error:C,onChange:a=>S(a.target.value)}),e.createElement("br",null),e.createElement(n,{select:!0,label:"Color scheme",value:d,onChange:a=>t.setColorSchemeName(a.target.value)},Object.keys(p).map(a=>e.createElement(D,{key:a,value:a},a))),e.createElement(T,null,e.createElement(x,{disabled:m||E||C,onClick:()=>{t.setRowHeight(+c),t.setColWidth(+s),b||t.setTreeWidth(+i),u()},variant:"contained",color:"primary"},"Submit"))))});export{y as default}; +//# sourceMappingURL=SettingsDlg-clvDMYlF.js.map diff --git a/assets/SettingsDlg-0ede2ea4.js.map b/assets/SettingsDlg-clvDMYlF.js.map similarity index 99% rename from assets/SettingsDlg-0ede2ea4.js.map rename to assets/SettingsDlg-clvDMYlF.js.map index f3229153..6e55bdc6 100644 --- a/assets/SettingsDlg-0ede2ea4.js.map +++ b/assets/SettingsDlg-clvDMYlF.js.map @@ -1 +1 @@ -{"version":3,"file":"SettingsDlg-0ede2ea4.js","sources":["../../../lib/dist/components/dialogs/SettingsDlg.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { observer } from 'mobx-react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, MenuItem, TextField, } from '@mui/material';\nimport colorSchemes from '../../colorSchemes';\nconst useStyles = makeStyles()(theme => ({\n field: {\n margin: theme.spacing(4),\n },\n}));\nconst SettingsDialog = observer(function ({ model, onClose, }) {\n const { classes } = useStyles();\n const { colorSchemeName, noTree } = model;\n const [rowHeight, setRowHeight] = useState(`${model.rowHeight}`);\n const [colWidth, setColWidth] = useState(`${model.colWidth}`);\n const [treeWidth, setTreeWidth] = useState(`${model.treeWidth}`);\n function error(n) {\n return Number.isNaN(+n) || +n < 0;\n }\n const rowHeightError = error(rowHeight);\n const colWidthError = error(colWidth);\n const treeWidthError = error(treeWidth);\n return (React.createElement(Dialog, { open: true, onClose: () => onClose(), title: \"Settings\" },\n React.createElement(DialogContent, null,\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.showBranchLen, onChange: () => model.toggleBranchLen() }), label: \"Show branch length\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.bgColor, onChange: () => model.toggleBgColor() }), label: \"Color background\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.drawNodeBubbles, onChange: () => model.toggleNodeBubbles() }), label: \"Draw node bubbles\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.drawTree, onChange: () => model.toggleDrawTree() }), label: \"Draw tree (if available)\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.labelsAlignRight, onChange: () => model.toggleLabelsAlignRight() }), label: \"Labels align right (note: labels may draw over tree, but can adjust tree width or tree area width in UI)\" }),\n React.createElement(TextField, { className: classes.field, label: \"Row height (px)\", value: rowHeight, error: rowHeightError, onChange: event => setRowHeight(event.target.value) }),\n React.createElement(TextField, { className: classes.field, label: \"Column width (px)\", value: colWidth, error: colWidthError, onChange: event => setColWidth(event.target.value) }),\n React.createElement(\"br\", null),\n !noTree ? (React.createElement(TextField, { className: classes.field, label: \"Tree width (px)\", value: treeWidth, error: treeWidthError, onChange: event => setTreeWidth(event.target.value) })) : null,\n React.createElement(\"br\", null),\n React.createElement(TextField, { select: true, label: \"Color scheme\", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option)))),\n React.createElement(DialogActions, null,\n React.createElement(Button, { disabled: rowHeightError || colWidthError || treeWidthError, onClick: () => {\n model.setRowHeight(+rowHeight);\n model.setColWidth(+colWidth);\n if (!noTree) {\n model.setTreeWidth(+treeWidth);\n }\n onClose();\n }, variant: \"contained\", color: \"primary\" }, \"Submit\")))));\n});\nexport default SettingsDialog;\n//# sourceMappingURL=SettingsDlg.js.map"],"names":["useStyles","makeStyles","theme","SettingsDialog","observer","model","onClose","classes","colorSchemeName","noTree","rowHeight","setRowHeight","useState","colWidth","setColWidth","treeWidth","setTreeWidth","error","n","rowHeightError","colWidthError","treeWidthError","React","Dialog","DialogContent","FormControlLabel","Checkbox","TextField","event","colorSchemes","option","MenuItem","DialogActions","Button"],"mappings":"4HAMA,MAAMA,EAAYC,EAAY,EAACC,IAAU,CACrC,MAAO,CACH,OAAQA,EAAM,QAAQ,CAAC,CAC1B,CACL,EAAE,EACIC,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,QAAAC,GAAYP,IACd,CAAE,gBAAAQ,EAAiB,OAAAC,CAAQ,EAAGJ,EAC9B,CAACK,EAAWC,CAAY,EAAIC,EAAAA,SAAS,GAAGP,EAAM,SAAS,EAAE,EACzD,CAACQ,EAAUC,CAAW,EAAIF,EAAAA,SAAS,GAAGP,EAAM,QAAQ,EAAE,EACtD,CAACU,EAAWC,CAAY,EAAIJ,EAAAA,SAAS,GAAGP,EAAM,SAAS,EAAE,EAC/D,SAASY,EAAMC,EAAG,CACd,OAAO,OAAO,MAAM,CAACA,CAAC,GAAK,CAACA,EAAI,CACnC,CACD,MAAMC,EAAiBF,EAAMP,CAAS,EAChCU,EAAgBH,EAAMJ,CAAQ,EAC9BQ,EAAiBJ,EAAMF,CAAS,EACtC,OAAQO,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAAS,IAAMjB,IAAW,MAAO,UAAY,EAC3FgB,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,cAAe,SAAU,IAAMA,EAAM,gBAAiB,CAAA,CAAE,EAAG,MAAO,qBAAsB,EACxLiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,QAAS,SAAU,IAAMA,EAAM,cAAe,CAAA,CAAE,EAAG,MAAO,mBAAoB,EAC9KiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,gBAAiB,SAAU,IAAMA,EAAM,kBAAmB,CAAA,CAAE,EAAG,MAAO,oBAAqB,EAC3LiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,SAAU,SAAU,IAAMA,EAAM,eAAgB,CAAA,CAAE,EAAG,MAAO,2BAA4B,EACxLiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,iBAAkB,SAAU,IAAMA,EAAM,uBAAwB,CAAA,CAAE,EAAG,MAAO,2GAA4G,EACxRiB,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,kBAAmB,MAAOG,EAAW,MAAOS,EAAgB,SAAUS,GAASjB,EAAaiB,EAAM,OAAO,KAAK,EAAG,EACnLN,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,oBAAqB,MAAOM,EAAU,MAAOO,EAAe,SAAUQ,GAASd,EAAYc,EAAM,OAAO,KAAK,EAAG,EAClLN,EAAM,cAAc,KAAM,IAAI,EAC7Bb,EAAkM,KAAxLa,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,kBAAmB,MAAOQ,EAAW,MAAOM,EAAgB,SAAUO,GAASZ,EAAaY,EAAM,OAAO,KAAK,CAAG,CAAA,EAC9LN,EAAM,cAAc,KAAM,IAAI,EAC9BA,EAAM,cAAcK,EAAW,CAAE,OAAQ,GAAM,MAAO,eAAgB,MAAOnB,EAAiB,SAAUoB,GAASvB,EAAM,mBAAmBuB,EAAM,OAAO,KAAK,CAAG,EAAE,OAAO,KAAKC,CAAY,EAAE,IAAIC,GAAWR,EAAM,cAAcS,EAAU,CAAE,IAAKD,EAAQ,MAAOA,CAAM,EAAIA,CAAM,CAAE,CAAC,EACjRR,EAAM,cAAcU,EAAe,KAC/BV,EAAM,cAAcW,EAAQ,CAAE,SAAUd,GAAkBC,GAAiBC,EAAgB,QAAS,IAAM,CAClGhB,EAAM,aAAa,CAACK,CAAS,EAC7BL,EAAM,YAAY,CAACQ,CAAQ,EACtBJ,GACDJ,EAAM,aAAa,CAACU,CAAS,EAEjCT,GACxB,EAAuB,QAAS,YAAa,MAAO,SAAS,EAAI,QAAQ,CAAC,CAAC,CAAC,CAC5E,CAAC"} \ No newline at end of file +{"version":3,"file":"SettingsDlg-clvDMYlF.js","sources":["../../../lib/dist/components/dialogs/SettingsDlg.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { observer } from 'mobx-react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, MenuItem, TextField, } from '@mui/material';\nimport colorSchemes from '../../colorSchemes';\nconst useStyles = makeStyles()(theme => ({\n field: {\n margin: theme.spacing(4),\n },\n}));\nconst SettingsDialog = observer(function ({ model, onClose, }) {\n const { classes } = useStyles();\n const { colorSchemeName, noTree } = model;\n const [rowHeight, setRowHeight] = useState(`${model.rowHeight}`);\n const [colWidth, setColWidth] = useState(`${model.colWidth}`);\n const [treeWidth, setTreeWidth] = useState(`${model.treeWidth}`);\n function error(n) {\n return Number.isNaN(+n) || +n < 0;\n }\n const rowHeightError = error(rowHeight);\n const colWidthError = error(colWidth);\n const treeWidthError = error(treeWidth);\n return (React.createElement(Dialog, { open: true, onClose: () => onClose(), title: \"Settings\" },\n React.createElement(DialogContent, null,\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.showBranchLen, onChange: () => model.toggleBranchLen() }), label: \"Show branch length\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.bgColor, onChange: () => model.toggleBgColor() }), label: \"Color background\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.drawNodeBubbles, onChange: () => model.toggleNodeBubbles() }), label: \"Draw node bubbles\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.drawTree, onChange: () => model.toggleDrawTree() }), label: \"Draw tree (if available)\" }),\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: model.labelsAlignRight, onChange: () => model.toggleLabelsAlignRight() }), label: \"Labels align right (note: labels may draw over tree, but can adjust tree width or tree area width in UI)\" }),\n React.createElement(TextField, { className: classes.field, label: \"Row height (px)\", value: rowHeight, error: rowHeightError, onChange: event => setRowHeight(event.target.value) }),\n React.createElement(TextField, { className: classes.field, label: \"Column width (px)\", value: colWidth, error: colWidthError, onChange: event => setColWidth(event.target.value) }),\n React.createElement(\"br\", null),\n !noTree ? (React.createElement(TextField, { className: classes.field, label: \"Tree width (px)\", value: treeWidth, error: treeWidthError, onChange: event => setTreeWidth(event.target.value) })) : null,\n React.createElement(\"br\", null),\n React.createElement(TextField, { select: true, label: \"Color scheme\", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option)))),\n React.createElement(DialogActions, null,\n React.createElement(Button, { disabled: rowHeightError || colWidthError || treeWidthError, onClick: () => {\n model.setRowHeight(+rowHeight);\n model.setColWidth(+colWidth);\n if (!noTree) {\n model.setTreeWidth(+treeWidth);\n }\n onClose();\n }, variant: \"contained\", color: \"primary\" }, \"Submit\")))));\n});\nexport default SettingsDialog;\n//# sourceMappingURL=SettingsDlg.js.map"],"names":["useStyles","makeStyles","theme","SettingsDialog","observer","model","onClose","classes","colorSchemeName","noTree","rowHeight","setRowHeight","useState","colWidth","setColWidth","treeWidth","setTreeWidth","error","n","rowHeightError","colWidthError","treeWidthError","React","Dialog","DialogContent","FormControlLabel","Checkbox","TextField","event","colorSchemes","option","MenuItem","DialogActions","Button"],"mappings":"4HAMA,MAAMA,EAAYC,EAAY,EAACC,IAAU,CACrC,MAAO,CACH,OAAQA,EAAM,QAAQ,CAAC,CAC1B,CACL,EAAE,EACIC,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,QAAAC,GAAYP,IACd,CAAE,gBAAAQ,EAAiB,OAAAC,CAAQ,EAAGJ,EAC9B,CAACK,EAAWC,CAAY,EAAIC,EAAAA,SAAS,GAAGP,EAAM,SAAS,EAAE,EACzD,CAACQ,EAAUC,CAAW,EAAIF,EAAAA,SAAS,GAAGP,EAAM,QAAQ,EAAE,EACtD,CAACU,EAAWC,CAAY,EAAIJ,EAAAA,SAAS,GAAGP,EAAM,SAAS,EAAE,EAC/D,SAASY,EAAMC,EAAG,CACd,OAAO,OAAO,MAAM,CAACA,CAAC,GAAK,CAACA,EAAI,CACnC,CACD,MAAMC,EAAiBF,EAAMP,CAAS,EAChCU,EAAgBH,EAAMJ,CAAQ,EAC9BQ,EAAiBJ,EAAMF,CAAS,EACtC,OAAQO,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAAS,IAAMjB,IAAW,MAAO,UAAY,EAC3FgB,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,cAAe,SAAU,IAAMA,EAAM,gBAAiB,CAAA,CAAE,EAAG,MAAO,qBAAsB,EACxLiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,QAAS,SAAU,IAAMA,EAAM,cAAe,CAAA,CAAE,EAAG,MAAO,mBAAoB,EAC9KiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,gBAAiB,SAAU,IAAMA,EAAM,kBAAmB,CAAA,CAAE,EAAG,MAAO,oBAAqB,EAC3LiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,SAAU,SAAU,IAAMA,EAAM,eAAgB,CAAA,CAAE,EAAG,MAAO,2BAA4B,EACxLiB,EAAM,cAAcG,EAAkB,CAAE,QAASH,EAAM,cAAcI,EAAU,CAAE,QAASrB,EAAM,iBAAkB,SAAU,IAAMA,EAAM,uBAAwB,CAAA,CAAE,EAAG,MAAO,2GAA4G,EACxRiB,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,kBAAmB,MAAOG,EAAW,MAAOS,EAAgB,SAAUS,GAASjB,EAAaiB,EAAM,OAAO,KAAK,EAAG,EACnLN,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,oBAAqB,MAAOM,EAAU,MAAOO,EAAe,SAAUQ,GAASd,EAAYc,EAAM,OAAO,KAAK,EAAG,EAClLN,EAAM,cAAc,KAAM,IAAI,EAC7Bb,EAAkM,KAAxLa,EAAM,cAAcK,EAAW,CAAE,UAAWpB,EAAQ,MAAO,MAAO,kBAAmB,MAAOQ,EAAW,MAAOM,EAAgB,SAAUO,GAASZ,EAAaY,EAAM,OAAO,KAAK,CAAG,CAAA,EAC9LN,EAAM,cAAc,KAAM,IAAI,EAC9BA,EAAM,cAAcK,EAAW,CAAE,OAAQ,GAAM,MAAO,eAAgB,MAAOnB,EAAiB,SAAUoB,GAASvB,EAAM,mBAAmBuB,EAAM,OAAO,KAAK,CAAG,EAAE,OAAO,KAAKC,CAAY,EAAE,IAAIC,GAAWR,EAAM,cAAcS,EAAU,CAAE,IAAKD,EAAQ,MAAOA,CAAM,EAAIA,CAAM,CAAE,CAAC,EACjRR,EAAM,cAAcU,EAAe,KAC/BV,EAAM,cAAcW,EAAQ,CAAE,SAAUd,GAAkBC,GAAiBC,EAAgB,QAAS,IAAM,CAClGhB,EAAM,aAAa,CAACK,CAAS,EAC7BL,EAAM,YAAY,CAACQ,CAAQ,EACtBJ,GACDJ,EAAM,aAAa,CAACU,CAAS,EAEjCT,GACxB,EAAuB,QAAS,YAAa,MAAO,SAAS,EAAI,QAAQ,CAAC,CAAC,CAAC,CAC5E,CAAC"} \ No newline at end of file diff --git a/assets/TrackInfoDlg-268f0851.js b/assets/TrackInfoDlg-gPujlICd.js similarity index 86% rename from assets/TrackInfoDlg-268f0851.js rename to assets/TrackInfoDlg-gPujlICd.js index 75ad976d..52451e20 100644 --- a/assets/TrackInfoDlg-268f0851.js +++ b/assets/TrackInfoDlg-gPujlICd.js @@ -1,2 +1,2 @@ -import{m as l,o as s,a as i,R as e,u as d,D as u,B as r,c as m}from"./index-5df30d93.js";import{c as p}from"./index-a8cacb2a.js";const f=l()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:"#ddd",wordBreak:"break-word"}})),b=s(function({model:a,onClose:t}){const[n,o]=i.useState("Copy to clipboard"),{classes:c}=f();return e.createElement(d.Dialog,{open:!0,onClose:t,fullWidth:!0,maxWidth:"lg",title:`Track info - ${a.name}`},e.createElement(u,null,e.createElement(r,{variant:"contained",color:"primary",onClick:()=>{p(a.data),o("Copied!"),setTimeout(()=>{o("Copy to clipboard")},300)}},n),e.createElement("pre",{className:c.textArea},a.data)),e.createElement(m,null,e.createElement(r,{variant:"contained",onClick:t,color:"secondary"},"Close")))});export{b as default}; -//# sourceMappingURL=TrackInfoDlg-268f0851.js.map +import{m as l,o as s,a as i,R as e,u as d,D as u,B as r,c as m}from"./index-SEQt8VF-.js";import{c as p}from"./index-SCwaNniL.js";const f=l()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:"#ddd",wordBreak:"break-word"}})),b=s(function({model:a,onClose:t}){const[n,o]=i.useState("Copy to clipboard"),{classes:c}=f();return e.createElement(d.Dialog,{open:!0,onClose:t,fullWidth:!0,maxWidth:"lg",title:`Track info - ${a.name}`},e.createElement(u,null,e.createElement(r,{variant:"contained",color:"primary",onClick:()=>{p(a.data),o("Copied!"),setTimeout(()=>{o("Copy to clipboard")},300)}},n),e.createElement("pre",{className:c.textArea},a.data)),e.createElement(m,null,e.createElement(r,{variant:"contained",onClick:t,color:"secondary"},"Close")))});export{b as default}; +//# sourceMappingURL=TrackInfoDlg-gPujlICd.js.map diff --git a/assets/TrackInfoDlg-268f0851.js.map b/assets/TrackInfoDlg-gPujlICd.js.map similarity index 97% rename from assets/TrackInfoDlg-268f0851.js.map rename to assets/TrackInfoDlg-gPujlICd.js.map index 1d316616..2e3f0daf 100644 --- a/assets/TrackInfoDlg-268f0851.js.map +++ b/assets/TrackInfoDlg-gPujlICd.js.map @@ -1 +1 @@ -{"version":3,"file":"TrackInfoDlg-268f0851.js","sources":["../../../lib/dist/components/dialogs/TrackInfoDlg.js"],"sourcesContent":["import React, { useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, DialogActions, DialogContent } from '@mui/material';\nimport { makeStyles } from 'tss-react/mui';\nconst useStyles = makeStyles()(theme => ({\n textArea: {\n padding: theme.spacing(2),\n overflow: 'auto',\n background: '#ddd',\n wordBreak: 'break-word',\n },\n}));\nconst TrackInfoDialog = observer(function ({ model, onClose, }) {\n const [label, setLabel] = useState('Copy to clipboard');\n const { classes } = useStyles();\n return (React.createElement(Dialog, { open: true, onClose: onClose, fullWidth: true, maxWidth: \"lg\", title: `Track info - ${model.name}` },\n React.createElement(DialogContent, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: () => {\n copy(model.data);\n setLabel('Copied!');\n setTimeout(() => {\n setLabel('Copy to clipboard');\n }, 300);\n } }, label),\n React.createElement(\"pre\", { className: classes.textArea }, model.data)),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", onClick: onClose, color: \"secondary\" }, \"Close\"))));\n});\nexport default TrackInfoDialog;\n//# sourceMappingURL=TrackInfoDlg.js.map"],"names":["useStyles","makeStyles","theme","TrackInfoDialog","observer","model","onClose","label","setLabel","useState","classes","React","Dialog","DialogContent","Button","copy","DialogActions"],"mappings":"iIAMA,MAAMA,EAAYC,EAAY,EAACC,IAAU,CACrC,SAAU,CACN,QAASA,EAAM,QAAQ,CAAC,EACxB,SAAU,OACV,WAAY,OACZ,UAAW,YACd,CACL,EAAE,EACIC,EAAkBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC5D,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAQ,SAAC,mBAAmB,EAChD,CAAE,QAAAC,GAAYV,IACpB,OAAQW,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAASN,EAAS,UAAW,GAAM,SAAU,KAAM,MAAO,gBAAgBD,EAAM,IAAI,EAAI,EACtIM,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,IAAM,CAC7EC,EAAKV,EAAM,IAAI,EACfG,EAAS,SAAS,EAClB,WAAW,IAAM,CACbA,EAAS,mBAAmB,CAC/B,EAAE,GAAG,CACT,CAAA,EAAID,CAAK,EACdI,EAAM,cAAc,MAAO,CAAE,UAAWD,EAAQ,QAAU,EAAEL,EAAM,IAAI,CAAC,EAC3EM,EAAM,cAAcK,EAAe,KAC/BL,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,QAASR,EAAS,MAAO,WAAW,EAAI,OAAO,CAAC,CAAC,CACjH,CAAC"} \ No newline at end of file +{"version":3,"file":"TrackInfoDlg-gPujlICd.js","sources":["../../../lib/dist/components/dialogs/TrackInfoDlg.js"],"sourcesContent":["import React, { useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, DialogActions, DialogContent } from '@mui/material';\nimport { makeStyles } from 'tss-react/mui';\nconst useStyles = makeStyles()(theme => ({\n textArea: {\n padding: theme.spacing(2),\n overflow: 'auto',\n background: '#ddd',\n wordBreak: 'break-word',\n },\n}));\nconst TrackInfoDialog = observer(function ({ model, onClose, }) {\n const [label, setLabel] = useState('Copy to clipboard');\n const { classes } = useStyles();\n return (React.createElement(Dialog, { open: true, onClose: onClose, fullWidth: true, maxWidth: \"lg\", title: `Track info - ${model.name}` },\n React.createElement(DialogContent, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: () => {\n copy(model.data);\n setLabel('Copied!');\n setTimeout(() => {\n setLabel('Copy to clipboard');\n }, 300);\n } }, label),\n React.createElement(\"pre\", { className: classes.textArea }, model.data)),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", onClick: onClose, color: \"secondary\" }, \"Close\"))));\n});\nexport default TrackInfoDialog;\n//# sourceMappingURL=TrackInfoDlg.js.map"],"names":["useStyles","makeStyles","theme","TrackInfoDialog","observer","model","onClose","label","setLabel","useState","classes","React","Dialog","DialogContent","Button","copy","DialogActions"],"mappings":"iIAMA,MAAMA,EAAYC,EAAY,EAACC,IAAU,CACrC,SAAU,CACN,QAASA,EAAM,QAAQ,CAAC,EACxB,SAAU,OACV,WAAY,OACZ,UAAW,YACd,CACL,EAAE,EACIC,EAAkBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC5D,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAQ,SAAC,mBAAmB,EAChD,CAAE,QAAAC,GAAYV,IACpB,OAAQW,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAASN,EAAS,UAAW,GAAM,SAAU,KAAM,MAAO,gBAAgBD,EAAM,IAAI,EAAI,EACtIM,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,IAAM,CAC7EC,EAAKV,EAAM,IAAI,EACfG,EAAS,SAAS,EAClB,WAAW,IAAM,CACbA,EAAS,mBAAmB,CAC/B,EAAE,GAAG,CACT,CAAA,EAAID,CAAK,EACdI,EAAM,cAAc,MAAO,CAAE,UAAWD,EAAQ,QAAU,EAAEL,EAAM,IAAI,CAAC,EAC3EM,EAAM,cAAcK,EAAe,KAC/BL,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,QAASR,EAAS,MAAO,WAAW,EAAI,OAAO,CAAC,CAAC,CACjH,CAAC"} \ No newline at end of file diff --git a/assets/TracklistDlg-cedf4c68.js b/assets/TracklistDlg-VpL5NvQg.js similarity index 84% rename from assets/TracklistDlg-cedf4c68.js rename to assets/TracklistDlg-VpL5NvQg.js index ef759486..a7cc38ff 100644 --- a/assets/TracklistDlg-cedf4c68.js +++ b/assets/TracklistDlg-VpL5NvQg.js @@ -1,2 +1,2 @@ -import{o,R as e,u as r,D as c,b as s,e as i,F as m,C as u,c as d,B as p}from"./index-5df30d93.js";const E=o(function({model:a,onClose:n}){const{tracks:l}=a;return e.createElement(r.Dialog,{onClose:()=>n(),open:!0,title:"Add track"},e.createElement(c,null,e.createElement(s,null,"Open relevant per-alignment tracks e.g. protein domains"),e.createElement(i,null,l.map(t=>e.createElement(m,{key:t.model.id,control:e.createElement(u,{checked:!a.turnedOffTracks.has(t.model.id),onChange:()=>{a.toggleTrack(t.model.id)}}),label:t.model.name}))),e.createElement(d,null,e.createElement(p,{onClick:()=>n(),variant:"contained",color:"primary"},"Close"))))});export{E as default}; -//# sourceMappingURL=TracklistDlg-cedf4c68.js.map +import{o,R as e,u as r,D as c,b as s,e as i,F as m,C as u,c as d,B as p}from"./index-SEQt8VF-.js";const E=o(function({model:a,onClose:n}){const{tracks:l}=a;return e.createElement(r.Dialog,{onClose:()=>n(),open:!0,title:"Add track"},e.createElement(c,null,e.createElement(s,null,"Open relevant per-alignment tracks e.g. protein domains"),e.createElement(i,null,l.map(t=>e.createElement(m,{key:t.model.id,control:e.createElement(u,{checked:!a.turnedOffTracks.has(t.model.id),onChange:()=>{a.toggleTrack(t.model.id)}}),label:t.model.name}))),e.createElement(d,null,e.createElement(p,{onClick:()=>n(),variant:"contained",color:"primary"},"Close"))))});export{E as default}; +//# sourceMappingURL=TracklistDlg-VpL5NvQg.js.map diff --git a/assets/TracklistDlg-cedf4c68.js.map b/assets/TracklistDlg-VpL5NvQg.js.map similarity index 97% rename from assets/TracklistDlg-cedf4c68.js.map rename to assets/TracklistDlg-VpL5NvQg.js.map index d5879269..24089405 100644 --- a/assets/TracklistDlg-cedf4c68.js.map +++ b/assets/TracklistDlg-VpL5NvQg.js.map @@ -1 +1 @@ -{"version":3,"file":"TracklistDlg-cedf4c68.js","sources":["../../../lib/dist/components/dialogs/TracklistDlg.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, FormControlLabel, FormGroup, Checkbox, DialogActions, Button, Typography, } from '@mui/material';\nimport { observer } from 'mobx-react';\nexport default observer(function ({ model, onClose, }) {\n const { tracks } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Add track\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null, \"Open relevant per-alignment tracks e.g. protein domains\"),\n React.createElement(FormGroup, null, tracks.map(track => {\n return (React.createElement(FormControlLabel, { key: track.model.id, control: React.createElement(Checkbox, { checked: !model.turnedOffTracks.has(track.model.id), onChange: () => {\n model.toggleTrack(track.model.id);\n } }), label: track.model.name }));\n })),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Close\")))));\n});\n//# sourceMappingURL=TracklistDlg.js.map"],"names":["TracklistDlg","observer","model","onClose","tracks","React","Dialog","DialogContent","Typography","FormGroup","track","FormControlLabel","Checkbox","DialogActions","Button"],"mappings":"kGAIA,MAAeA,EAAAC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,WAAa,EAC5FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAAM,yDAAyD,EAC/FH,EAAM,cAAcI,EAAW,KAAML,EAAO,IAAIM,GACpCL,EAAM,cAAcM,EAAkB,CAAE,IAAKD,EAAM,MAAM,GAAI,QAASL,EAAM,cAAcO,EAAU,CAAE,QAAS,CAACV,EAAM,gBAAgB,IAAIQ,EAAM,MAAM,EAAE,EAAG,SAAU,IAAM,CACvKR,EAAM,YAAYQ,EAAM,MAAM,EAAE,CAC5D,CAA2B,CAAA,EAAG,MAAOA,EAAM,MAAM,IAAM,CAAA,CAC1C,CAAC,EACFL,EAAM,cAAcQ,EAAe,KAC/BR,EAAM,cAAcS,EAAQ,CAAE,QAAS,IAAMX,EAAS,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,OAAO,CAAC,CAAC,CAAC,CAC5H,CAAC"} \ No newline at end of file +{"version":3,"file":"TracklistDlg-VpL5NvQg.js","sources":["../../../lib/dist/components/dialogs/TracklistDlg.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, FormControlLabel, FormGroup, Checkbox, DialogActions, Button, Typography, } from '@mui/material';\nimport { observer } from 'mobx-react';\nexport default observer(function ({ model, onClose, }) {\n const { tracks } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Add track\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null, \"Open relevant per-alignment tracks e.g. protein domains\"),\n React.createElement(FormGroup, null, tracks.map(track => {\n return (React.createElement(FormControlLabel, { key: track.model.id, control: React.createElement(Checkbox, { checked: !model.turnedOffTracks.has(track.model.id), onChange: () => {\n model.toggleTrack(track.model.id);\n } }), label: track.model.name }));\n })),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Close\")))));\n});\n//# sourceMappingURL=TracklistDlg.js.map"],"names":["TracklistDlg","observer","model","onClose","tracks","React","Dialog","DialogContent","Typography","FormGroup","track","FormControlLabel","Checkbox","DialogActions","Button"],"mappings":"kGAIA,MAAeA,EAAAC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,WAAa,EAC5FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAAM,yDAAyD,EAC/FH,EAAM,cAAcI,EAAW,KAAML,EAAO,IAAIM,GACpCL,EAAM,cAAcM,EAAkB,CAAE,IAAKD,EAAM,MAAM,GAAI,QAASL,EAAM,cAAcO,EAAU,CAAE,QAAS,CAACV,EAAM,gBAAgB,IAAIQ,EAAM,MAAM,EAAE,EAAG,SAAU,IAAM,CACvKR,EAAM,YAAYQ,EAAM,MAAM,EAAE,CAC5D,CAA2B,CAAA,EAAG,MAAOA,EAAM,MAAM,IAAM,CAAA,CAC1C,CAAC,EACFL,EAAM,cAAcQ,EAAe,KAC/BR,EAAM,cAAcS,EAAQ,CAAE,QAAS,IAAMX,EAAS,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,OAAO,CAAC,CAAC,CAAC,CAC5H,CAAC"} \ No newline at end of file diff --git a/assets/TreeNodeInfoDlg-5844cb59.js.map b/assets/TreeNodeInfoDlg-5844cb59.js.map deleted file mode 100644 index bcdaf3e1..00000000 --- a/assets/TreeNodeInfoDlg-5844cb59.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TreeNodeInfoDlg-5844cb59.js","sources":["../../../lib/dist/components/dialogs/TreeNodeInfoDlg.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nexport default observer(function ({ info, model, nodeName, onClose, }) {\n const { treeMetadata } = model;\n const metadata = treeMetadata[nodeName];\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Tree node info\" },\n React.createElement(DialogContent, null,\n React.createElement(BaseCard, { title: \"Attributes\" },\n React.createElement(Attributes, { attributes: info })),\n metadata ? (React.createElement(BaseCard, { title: \"Extra metadata\" },\n React.createElement(Attributes, { attributes: metadata }))) : null)));\n});\n//# sourceMappingURL=TreeNodeInfoDlg.js.map"],"names":["TreeNodeInfoDlg","observer","info","model","nodeName","onClose","treeMetadata","metadata","React","Dialog","DialogContent","BaseCard","Attributes"],"mappings":"4HAKA,MAAAA,EAAeC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,CAAO,EAAK,CACnE,KAAM,CAAE,aAAAC,CAAc,EAAGH,EACnBI,EAAWD,EAAaF,CAAQ,EACtC,OAAQI,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMJ,EAAO,EAAI,KAAM,GAAM,MAAO,gBAAkB,EACjGG,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAAA,SAAU,CAAE,MAAO,YAAc,EACjDH,EAAM,cAAcI,EAAU,WAAE,CAAE,WAAYV,CAAM,CAAA,CAAC,EACzDK,EAAYC,EAAM,cAAcG,EAAQ,SAAE,CAAE,MAAO,gBAAkB,EACjEH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAYL,EAAU,CAAC,EAAK,IAAI,CAAC,CACnF,CAAC"} \ No newline at end of file diff --git a/assets/TreeNodeInfoDlg-5844cb59.js b/assets/TreeNodeInfoDlg-mpBjqmzZ.js similarity index 69% rename from assets/TreeNodeInfoDlg-5844cb59.js rename to assets/TreeNodeInfoDlg-mpBjqmzZ.js index 8968c8e4..7a751f94 100644 --- a/assets/TreeNodeInfoDlg-5844cb59.js +++ b/assets/TreeNodeInfoDlg-mpBjqmzZ.js @@ -1,2 +1,2 @@ -import{o as i,R as e,u,D as m}from"./index-5df30d93.js";import{B as t}from"./index-0de0598f.js";import"./index-a8cacb2a.js";const b=i(function({info:r,model:o,nodeName:n,onClose:l}){const{treeMetadata:s}=o,a=s[n];return e.createElement(u.Dialog,{onClose:()=>l(),open:!0,title:"Tree node info"},e.createElement(m,null,e.createElement(t.BaseCard,{title:"Attributes"},e.createElement(t.Attributes,{attributes:r})),a?e.createElement(t.BaseCard,{title:"Extra metadata"},e.createElement(t.Attributes,{attributes:a})):null))});export{b as default}; -//# sourceMappingURL=TreeNodeInfoDlg-5844cb59.js.map +import{o as i,R as e,u,D as m}from"./index-SEQt8VF-.js";import{B as t}from"./index-Cmm1_PZk.js";import"./index-SCwaNniL.js";const b=i(function({info:r,model:o,nodeName:n,onClose:l}){const{treeMetadata:s}=o,a=s[n];return e.createElement(u.Dialog,{onClose:()=>l(),open:!0,title:"Tree node info"},e.createElement(m,null,e.createElement(t.BaseCard,{title:"Attributes"},e.createElement(t.Attributes,{attributes:r})),a?e.createElement(t.BaseCard,{title:"Extra metadata"},e.createElement(t.Attributes,{attributes:a})):null))});export{b as default}; +//# sourceMappingURL=TreeNodeInfoDlg-mpBjqmzZ.js.map diff --git a/assets/TreeNodeInfoDlg-mpBjqmzZ.js.map b/assets/TreeNodeInfoDlg-mpBjqmzZ.js.map new file mode 100644 index 00000000..b4199323 --- /dev/null +++ b/assets/TreeNodeInfoDlg-mpBjqmzZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TreeNodeInfoDlg-mpBjqmzZ.js","sources":["../../../lib/dist/components/TreePanel/dialogs/TreeNodeInfoDlg.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nexport default observer(function ({ info, model, nodeName, onClose, }) {\n const { treeMetadata } = model;\n const metadata = treeMetadata[nodeName];\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Tree node info\" },\n React.createElement(DialogContent, null,\n React.createElement(BaseCard, { title: \"Attributes\" },\n React.createElement(Attributes, { attributes: info })),\n metadata ? (React.createElement(BaseCard, { title: \"Extra metadata\" },\n React.createElement(Attributes, { attributes: metadata }))) : null)));\n});\n//# sourceMappingURL=TreeNodeInfoDlg.js.map"],"names":["TreeNodeInfoDlg","observer","info","model","nodeName","onClose","treeMetadata","metadata","React","Dialog","DialogContent","BaseCard","Attributes"],"mappings":"4HAKA,MAAAA,EAAeC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,CAAO,EAAK,CACnE,KAAM,CAAE,aAAAC,CAAc,EAAGH,EACnBI,EAAWD,EAAaF,CAAQ,EACtC,OAAQI,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMJ,EAAO,EAAI,KAAM,GAAM,MAAO,gBAAkB,EACjGG,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAAA,SAAU,CAAE,MAAO,YAAc,EACjDH,EAAM,cAAcI,EAAU,WAAE,CAAE,WAAYV,CAAM,CAAA,CAAC,EACzDK,EAAYC,EAAM,cAAcG,EAAQ,SAAE,CAAE,MAAO,gBAAkB,EACjEH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAYL,EAAU,CAAC,EAAK,IAAI,CAAC,CACnF,CAAC"} \ No newline at end of file diff --git a/assets/index-0de0598f.js b/assets/index-0de0598f.js deleted file mode 100644 index 792c3374..00000000 --- a/assets/index-0de0598f.js +++ /dev/null @@ -1,45 +0,0 @@ -import{r as Mu,i as ku,j as O,a,S as ca,f as Y,g as Rt,u as qt,h as Wt,k as Eu,l as bt,H as Lu,n as go,p as Tu,q as da,s as _e,_ as m,t as we,v as Qe,w as Pe,x as Z,y as Pt,z as yr,A as Dt,E as Ee,G as De,J as fa,K as pl,N as pa,O as Du,P as ga,Q as Ir,U as mo,M as dt,V as Tt,W as $u,X as Ct,Y as Ru,Z as Au,$ as gl,a0 as ft,a1 as Ie,a2 as Hu,a3 as or,a4 as _u,a5 as Vu,I as ma,F as Gu,a6 as ba,a7 as Nu,a8 as Pn,T as ha,a9 as ml,aa as zu,ab as ju,ac as Bu,ad as xn,ae as Uu,af as Ca,C as qu,ag as Wu,ah as Ku,ai as Qu,B as Zu,aj as Ju,ak as Yu,al as Xu,am as ec,an as tc,ao as N,ap as rc,aq as oc,ar as lc,as as nc}from"./index-5df30d93.js";import{a as ac}from"./index-a8cacb2a.js";function ic(e,t){return()=>null}var sc={},bo={},uc=ku;Object.defineProperty(bo,"__esModule",{value:!0});bo.default=void 0;var cc=uc(Mu()),dc=O,fc=(0,cc.default)((0,dc.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");bo.default=fc;var bl={},jr={},vn;function pc(){if(vn)return jr;vn=1;var e=Y&&Y.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(jr,"__esModule",{value:!0});const t=e(a),r=Rt,o=qt,l=e(ca);function n({handleClose:i}){return t.default.createElement(o.Dialog,{maxWidth:"xl",open:!0,onClose:()=>i(),title:"Feature sequence panel help"},t.default.createElement(r.DialogContent,null,t.default.createElement(r.Typography,{paragraph:!0},'The "Feature sequence" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.'),t.default.createElement(r.Typography,null,"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"CDS - shows the stitched together CDS sequences"),t.default.createElement("li",null,'Protein - the translated coding sequence, with the "standard" genetic code'),t.default.createElement("li",null,"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),t.default.createElement("li",null,"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),t.default.createElement(r.Typography,{paragraph:!0},"For other feature types, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),t.default.createElement(r.Typography,null,'Note 1: you can use the "gear icon" ',t.default.createElement(l.default,null)," to edit the number of bp displayed up/downstream and in the intron region"),t.default.createElement(r.Typography,null,"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),t.default.createElement(r.DialogActions,null,t.default.createElement(r.Button,{onClick:()=>i(),autoFocus:!0,variant:"contained"},"Close")))}return jr.default=n,jr}var Br={},mr={},On;function gc(){if(On)return mr;On=1,Object.defineProperty(mr,"__esModule",{value:!0}),mr.useFeatureSequence=void 0;const e=a,t=Wt,r=Eu,o=5e5;function l(n,i,c,d){const[u,s]=(0,e.useState)(),[f,p]=(0,e.useState)();return(0,e.useEffect)(()=>{var b;let g=!1;if(!n)return()=>{};const{assemblyManager:h,rpcManager:v}=(0,t.getSession)(n),[S]=((b=n.view)===null||b===void 0?void 0:b.assemblyNames)||[];async function w(L,R,V){const F=await h.waitForAssembly(S);if(!F)throw new Error("assembly not found");const I="getSequence",y=await v.call(I,"CoreGetFeatures",{adapterConfig:(0,r.getConf)(F,["sequence","adapter"]),sessionId:I,regions:[{start:L,end:R,refName:F.getCanonicalRefName(V),assemblyName:S}]}),[H]=y;return(H==null?void 0:H.get("seq"))||""}return(async()=>{try{p(void 0);const{start:L,end:R,refName:V}=i;if(!d&&R-L>o)s({error:`Genomic sequence larger than ${o}bp, use "force load" button to display`});else{const F=L-c,I=R+c,y=await w(L,R,V),H=await w(Math.max(0,F),L,V),T=await w(R,I,V);g||s({seq:y,upstream:H,downstream:T})}}catch(L){console.error(L),p(L)}})(),()=>{g=!0}},[i,n,c,d]),{sequence:u,error:f}}return mr.useFeatureSequence=l,mr}var Ur={},Fn;function mc(){if(Fn)return Ur;Fn=1;var e=Y&&Y.__createBinding||(Object.create?function(u,s,f,p){p===void 0&&(p=f);var b=Object.getOwnPropertyDescriptor(s,f);(!b||("get"in b?!s.__esModule:b.writable||b.configurable))&&(b={enumerable:!0,get:function(){return s[f]}}),Object.defineProperty(u,p,b)}:function(u,s,f,p){p===void 0&&(p=f),u[p]=s[f]}),t=Y&&Y.__setModuleDefault||(Object.create?function(u,s){Object.defineProperty(u,"default",{enumerable:!0,value:s})}:function(u,s){u.default=s}),r=Y&&Y.__importStar||function(u){if(u&&u.__esModule)return u;var s={};if(u!=null)for(var f in u)f!=="default"&&Object.prototype.hasOwnProperty.call(u,f)&&e(s,u,f);return t(s,u),s};Object.defineProperty(Ur,"__esModule",{value:!0});const o=r(a),l=Rt,n=qt,c=(0,bt.makeStyles)()(u=>({formElt:{margin:u.spacing(3),width:400},dialogContent:{width:"80em"}}));function d({handleClose:u,intronBp:s,upDownBp:f}){const{classes:p}=c(),[b,g]=(0,o.useState)(`${s}`),[h,v]=(0,o.useState)(`${f}`),S=!Number.isNaN(+b),w=!Number.isNaN(+h);return o.default.createElement(n.Dialog,{maxWidth:"xl",open:!0,onClose:()=>u(),title:"Feature sequence settings"},o.default.createElement(l.DialogContent,{className:p.dialogContent},o.default.createElement(l.TextField,{label:"Number of intronic bases around splice site to display",className:p.formElt,value:b,helperText:S?"":"Not a number",error:!S,onChange:L=>g(L.target.value)}),o.default.createElement(l.TextField,{label:"Number of bases up/down stream of feature to display",className:p.formElt,value:h,helperText:w?"":"Not a number",error:!w,onChange:L=>v(L.target.value)})),o.default.createElement(l.DialogActions,null,o.default.createElement(l.Button,{onClick:()=>u({upDownBp:+h,intronBp:+b}),disabled:!S||!w,color:"primary",variant:"contained"},"Submit"),o.default.createElement(l.Button,{onClick:()=>u(),color:"secondary",autoFocus:!0,variant:"contained"},"Cancel")))}return Ur.default=d,Ur}var qr={},ze={};Object.defineProperty(ze,"__esModule",{value:!0});ze.ellipses=ze.calculateUTRs2=ze.calculateUTRs=ze.revlist=ze.dedupe=ze.stitch=void 0;function bc(e,t){return e.map(r=>t.slice(r.start,r.end)).join("")}ze.stitch=bc;function yn(e){return`${e.start}-${e.end}`}function hc(e){return e.filter((t,r,o)=>!r||yn(t)!==yn(o[r-1]))}ze.dedupe=hc;function Cc(e,t){return e.map(r=>({...r,start:t-r.end,end:t-r.start})).sort((r,o)=>r.start-o.start)}ze.revlist=Cc;function wc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=t.findIndex(s=>s.end>=r.start&&s.start<=r.start),n=t.findIndex(s=>s.end>=o.end&&s.start<=o.end),i=t[n],c=t[l],d=[...t.slice(0,l),{start:c.start,end:r.start}].map(s=>({...s,type:"five_prime_UTR"})),u=[{start:o.end,end:i.end},...t.slice(n+1)].map(s=>({...s,type:"three_prime_UTR"}));return[...d,...u]}ze.calculateUTRs=wc;function Sc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=[{start:t.start,end:r.start}].map(i=>({...i,type:"five_prime_UTR"})),n=[{start:o.end,end:t.end}].map(i=>({...i,type:"three_prime_UTR"}));return[...l,...n]}ze.calculateUTRs2=Sc;function Pc(e){return e.length>20?`${e.slice(0,20)}...`:e}ze.ellipses=Pc;var Wr={},qe={},In;function ho(){return In||(In=1,Object.defineProperty(qe,"__esModule",{value:!0}),qe.genomeColor=qe.updownstreamColor=qe.cdsColor=qe.proteinColor=qe.utrColor=qe.intronColor=void 0,qe.intronColor=void 0,qe.utrColor="rgb(200,240,240)",qe.proteinColor="rgb(220,160,220)",qe.cdsColor="rgb(220,220,180)",qe.updownstreamColor="rgba(250,200,200)",qe.genomeColor="rgb(200,280,200)"),qe}var Mn;function xc(){if(Mn)return Wr;Mn=1;var e=Y&&Y.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Wr,"__esModule",{value:!0});const t=e(a),r=ho();function o({utr:l,cds:n,exons:i,sequence:c,upstream:d,downstream:u,includeIntrons:s,collapseIntron:f,intronBp:p}){const b=(n.length?[...n,...l].sort((g,h)=>g.start-h.start):i).filter(g=>g.start!==g.end);return t.default.createElement(t.default.Fragment,null,d?t.default.createElement("span",{style:{background:r.updownstreamColor}},d):null,b.map((g,h)=>{var v;const S=c.slice(g.end,(v=b[h+1])===null||v===void 0?void 0:v.start);return t.default.createElement(t.default.Fragment,{key:JSON.stringify(g)},t.default.createElement("span",{style:{background:g.type==="CDS"?r.cdsColor:r.utrColor}},c.slice(g.start,g.end)),s&&hp*2?`${S.slice(0,p)}...${S.slice(-p)}`:S):null)}),u?t.default.createElement("span",{style:{background:r.updownstreamColor}},u):null)}return Wr.default=o,Wr}var Kr={},kn;function vc(){if(kn)return Kr;kn=1;var e=Y&&Y.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Kr,"__esModule",{value:!0});const t=e(a),r=ze,o=ho();function l({cds:n,sequence:i,codonTable:c}){const d=(0,r.stitch)(n,i);let u="";for(let s=0;sy.start-H.start).map(y=>({...y,start:y.start-p.start,end:y.end-p.start}));let R=(0,o.dedupe)(L.filter(y=>y.type==="CDS")),V=(0,o.dedupe)(L.filter(y=>y.type.match(/utr/i))),F=(0,o.dedupe)(L.filter(y=>y.type==="exon"));!V.length&&R.length&&F.length&&(V=(0,o.calculateUTRs)(R,F)),!V.length&&R.length&&!F.length&&(V=(0,o.calculateUTRs2)(R,{start:0,end:p.end-p.start,type:"gene"})),p.strand===-1&&([h,v,S]=[(0,r.revcom)(h),(0,r.revcom)(S),(0,r.revcom)(v)],R=(0,o.revlist)(R,h.length),F=(0,o.revlist)(F,h.length),V=(0,o.revlist)(V,h.length));const I=(0,r.generateCodonTable)(r.defaultCodonTable);return t.default.createElement("div",{ref:f,"data-testid":"sequence_panel"},t.default.createElement("div",{style:{fontFamily:"monospace",wordWrap:"break-word",overflow:"auto",color:"black",fontSize:12,maxWidth:600,maxHeight:300}},t.default.createElement("span",{style:{background:"white"}},`>${p.name||p.id||`${p.refName}:${p.start+1}-${p.end}`}-${b} -`),t.default.createElement("br",null),b==="genomic"?t.default.createElement(i.default,{sequence:h}):b==="genomic_sequence_updownstream"?t.default.createElement(i.default,{sequence:h,upstream:v,downstream:S}):b==="cds"?t.default.createElement(c.default,{cds:R,sequence:h}):b==="cdna"?t.default.createElement(l.default,{exons:F,cds:R,utr:V,sequence:h,intronBp:g}):b==="protein"?t.default.createElement(n.default,{cds:R,codonTable:I,sequence:h}):b==="gene"?t.default.createElement(l.default,{exons:F,cds:R,utr:V,sequence:h,includeIntrons:!0,intronBp:g}):b==="gene_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:R,sequence:h,utr:V,includeIntrons:!0,collapseIntron:!0,intronBp:g}):b==="gene_updownstream"?t.default.createElement(l.default,{exons:F,cds:R,sequence:h,utr:V,upstream:v,downstream:S,includeIntrons:!0,intronBp:g}):b==="gene_updownstream_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:R,sequence:h,utr:V,upstream:v,downstream:S,includeIntrons:!0,collapseIntron:!0,intronBp:g}):t.default.createElement("div",null,"Unknown type")))});return qr.default=d,qr}var Dn;function Ic(){if(Dn)return Br;Dn=1;var e=Y&&Y.__createBinding||(Object.create?function(S,w,L,R){R===void 0&&(R=L);var V=Object.getOwnPropertyDescriptor(w,L);(!V||("get"in V?!w.__esModule:V.writable||V.configurable))&&(V={enumerable:!0,get:function(){return w[L]}}),Object.defineProperty(S,R,V)}:function(S,w,L,R){R===void 0&&(R=L),S[R]=w[L]}),t=Y&&Y.__setModuleDefault||(Object.create?function(S,w){Object.defineProperty(S,"default",{enumerable:!0,value:w})}:function(S,w){S.default=w}),r=Y&&Y.__importStar||function(S){if(S&&S.__esModule)return S;var w={};if(S!=null)for(var L in S)L!=="default"&&Object.prototype.hasOwnProperty.call(S,L)&&e(w,S,L);return t(w,S),w},o=Y&&Y.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(Br,"__esModule",{value:!0});const l=r(a),n=Rt,i=bt,c=o(ac),d=Wt,u=qt,s=o(ca),f=gc(),p=(0,l.lazy)(()=>Promise.resolve().then(()=>r(mc()))),b=(0,l.lazy)(()=>Promise.resolve().then(()=>r(yc()))),g=(0,i.makeStyles)()(S=>({button:{margin:S.spacing(1)},formControl:{margin:0},container2:{marginTop:S.spacing(1)}}));function h({model:S,feature:w}){var L,R;const{classes:V}=g(),F=w,I=(0,l.useRef)(null),[y,H]=(0,d.useLocalStorage)("intronBp",10),[T,x]=(0,d.useLocalStorage)("upDownBp",500),[A,E]=(0,l.useState)(!1),[C,P]=(0,l.useState)(!1),[k,D]=(0,l.useState)(!1),M=(L=F.subfeatures)===null||L===void 0?void 0:L.some(X=>X.type==="CDS"),$=(R=F.subfeatures)===null||R===void 0?void 0:R.some(X=>X.type==="exon"),G=$||M,{sequence:j,error:z}=(0,f.useFeatureSequence)(S,w,T,k),[q,B]=(0,l.useState)(M?"cds":$?"cdna":"genomic"),Q={...M?{cds:"CDS"}:{},...M?{protein:"Protein"}:{},...G?{cdna:"cDNA"}:{},...G?{gene:"Genomic w/ full introns"}:{},...G?{gene_updownstream:`Genomic w/ full introns +/- ${T}bp up+down stream`}:{},...G?{gene_collapsed_intron:`Genomic w/ ${y}bp intron`}:{},...G?{gene_updownstream_collapsed_intron:`Genomic w/ ${y}bp intron +/- ${T}bp up+down stream `}:{},...G?{}:{genomic:"Genomic"},...G?{}:{genomic_sequence_updownstream:`Genomic +/- ${T}bp up+down stream`}};return l.default.createElement("div",{className:V.container2},l.default.createElement(n.FormControl,{className:V.formControl},l.default.createElement(n.Select,{value:q,onChange:X=>B(X.target.value)},Object.entries(Q).map(([X,le])=>l.default.createElement(n.MenuItem,{key:X,value:X},le)))),l.default.createElement(n.FormControl,{className:V.formControl},l.default.createElement(n.Button,{className:V.button,variant:"contained",onClick:()=>{const X=I.current;X&&((0,c.default)(X.textContent||"",{format:"text/plain"}),E(!0),setTimeout(()=>E(!1),1e3))}},A?"Copied to clipboard!":"Copy plaintext")),l.default.createElement(n.FormControl,{className:V.formControl},l.default.createElement(n.Tooltip,{title:"The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text"},l.default.createElement(n.Button,{className:V.button,variant:"contained",onClick:()=>{const X=I.current;X&&((0,c.default)(X.innerHTML,{format:"text/html"}),P(!0),setTimeout(()=>P(!1),1e3))}},C?"Copied to clipboard!":"Copy HTML"))),l.default.createElement(v,{upDownBp:T,intronBp:y,setIntronBp:H,setUpDownBp:x}),l.default.createElement("br",null),F.type==="gene"?l.default.createElement(n.Typography,null,"Note: inspect subfeature sequences for protein/CDS computations"):null,z?l.default.createElement(n.Typography,{color:"error"},`${z}`):j?j?"error"in j?l.default.createElement(l.default.Fragment,null,l.default.createElement(n.Typography,{color:"error"},j.error),l.default.createElement(n.Button,{variant:"contained",color:"inherit",onClick:()=>D(!0)},"Force load")):l.default.createElement(l.Suspense,{fallback:l.default.createElement(u.LoadingEllipses,null)},l.default.createElement(b,{ref:I,feature:F,mode:q,sequence:j,intronBp:y})):l.default.createElement(n.Typography,null,"No sequence found"):l.default.createElement(u.LoadingEllipses,null))}Br.default=h;function v({intronBp:S,upDownBp:w,setIntronBp:L,setUpDownBp:R}){const{classes:V}=g(),[F,I]=(0,l.useState)(!1);return l.default.createElement(l.default.Fragment,null,l.default.createElement(n.FormControl,{className:V.formControl},l.default.createElement(n.IconButton,{onClick:()=>I(!0)},l.default.createElement(s.default,null))),F?l.default.createElement(l.Suspense,{fallback:l.default.createElement("div",null)},l.default.createElement(p,{handleClose:y=>{if(y){const{upDownBp:H,intronBp:T}=y;L(T),R(H)}I(!1)},upDownBp:w,intronBp:S})):null)}return Br}var Mc=Y&&Y.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),kc=Y&&Y.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),hl=Y&&Y.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Mc(t,e,r);return kc(t,e),t},Ec=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bl,"__esModule",{value:!0});const Ne=hl(a),To=Rt,Lc=bt,Tc=qt,Dc=Ec(Lu),$c=(0,Ne.lazy)(()=>Promise.resolve().then(()=>hl(pc()))),Rc=(0,Ne.lazy)(()=>Promise.resolve().then(()=>hl(Ic()))),Ac=(0,Lc.makeStyles)()(e=>({formControl:{margin:0},container:{marginTop:e.spacing(4),marginBottom:e.spacing(4)}}));function Hc({model:e,feature:t}){const{classes:r}=Ac(),[o,l]=(0,Ne.useState)(!1),[n,i]=(0,Ne.useState)(!1);return e?Ne.default.createElement("div",{className:r.container},Ne.default.createElement(To.Button,{variant:"contained",onClick:()=>l(!o)},o?"Hide feature sequence":"Show feature sequence"),Ne.default.createElement(To.FormControl,{className:r.formControl},Ne.default.createElement(To.IconButton,{onClick:()=>i(!0)},Ne.default.createElement(Dc.default,null))),o?Ne.default.createElement(Ne.Suspense,{fallback:Ne.default.createElement(Tc.LoadingEllipses,null)},Ne.default.createElement(Rc,{key:t.uniqueId,model:e,feature:t})):null,n?Ne.default.createElement(Ne.Suspense,{fallback:Ne.default.createElement("div",null)},Ne.default.createElement($c,{handleClose:()=>i(!1)})):null):null}bl.default=Hc;var Co={},cr={},_c=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cr,"__esModule",{value:!0});const Do=_c(a),Vc=Rt,Gc=bt,Nc=(0,Gc.makeStyles)()(e=>({fieldDescription:{"&:hover":{background:e.palette.mode==="dark"?"#e65100":"yellow"}},fieldName:{wordBreak:"break-all",minWidth:90,borderBottom:"1px solid #0003",fontSize:12,background:e.palette.action.disabledBackground,marginRight:e.spacing(1),padding:e.spacing(.5)}}));function zc({description:e,name:t,width:r,prefix:o=[]}){const{classes:l,cx:n}=Nc(),i=[...o,t].join(".");return e?Do.default.createElement(Vc.Tooltip,{title:e,placement:"left"},Do.default.createElement("div",{className:n(l.fieldDescription,l.fieldName)},i)):Do.default.createElement("div",{className:l.fieldName,style:{width:r}},i)}cr.default=zc;var Mr={},wa=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Mr,"__esModule",{value:!0});const Jr=wa(a),jc=bt,Bc=wa(go),Uc=Rt,qc=qt,Wc=(0,jc.makeStyles)()(e=>({fieldValue:{wordBreak:"break-word",maxHeight:300,fontSize:12,padding:e.spacing(.5),overflow:"auto"}}));function Kc({value:e}){const{classes:t}=Wc(),r=`${e}`.match(/^https?:\/\//);return Jr.default.createElement("div",{className:t.fieldValue},Jr.default.isValidElement(e)?e:r?Jr.default.createElement(Uc.Link,{href:`${e}`},`${e}`):Jr.default.createElement(qc.SanitizedHTML,{html:(0,Bc.default)(e)?JSON.stringify(e):String(e)}))}Mr.default=Kc;var Cl=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Co,"__esModule",{value:!0});const $o=Cl(a),Qc=bt,Zc=Cl(cr),Jc=Cl(Mr),Yc=(0,Qc.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function Xc({name:e,value:t,description:r,prefix:o,width:l}){const{classes:n}=Yc();return t!=null?$o.default.createElement("div",{className:n.field},$o.default.createElement(Zc.default,{prefix:o,description:r,name:e,width:l}),$o.default.createElement(Jc.default,{value:t})):null}Co.default=Xc;var Yr={},lt={},ed=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lt,"__esModule",{value:!0});lt.accessNested=lt.toLocale=lt.generateMaxWidth=lt.generateTitle=lt.isEmpty=void 0;const $n=ed(go),Rn=Wt,td=ze;function rd(e){return Object.keys(e).length===0}lt.isEmpty=rd;function od(e,t,r){return[(0,td.ellipses)(`${e}`||`${t}`),`${r}`].filter(o=>!!o).join(" - ")}lt.generateTitle=od;function ld(e,t){return Math.ceil((0,Rn.max)(e.map(r=>(0,Rn.measureText)([...t,r[0]].join("."),12))))+10}lt.generateMaxWidth=ld;function nd(e){return e.toLocaleString("en-US")}lt.toLocale=nd;function ad(e,t={}){let r=t;return e.forEach(o=>{(0,$n.default)(r)&&(r=r[o])}),typeof r=="string"?r:(0,$n.default)(r)&&typeof(r==null?void 0:r.Description)=="string"?r.Description:void 0}lt.accessNested=ad;var wl={};const Sl=a.createContext(void 0);function fe(){const e=a.useContext(Sl);if(e===void 0)throw new Error(["MUI: Could not find the data grid context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` -`));return e}const id=()=>a.useRef({}),Sa=a.createContext(void 0),J=()=>{const e=a.useContext(Sa);if(!e)throw new Error("MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.");return e},Pa=a.createContext(void 0);function At(){const e=a.useContext(Pa);if(e===void 0)throw new Error(["MUI: Could not find the data grid private context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` -`));return e}const An={};function Pl(e,t){const r=a.useRef(An);return r.current===An&&(r.current=e(t)),r}const sd=[];function xa(e){a.useEffect(e,sd)}const xt=(e,t="warning")=>{let r=!1;const o=Array.isArray(e)?e.join(` -`):e;return()=>{r||(r=!0,t==="error"?console.error(o):console.warn(o))}},ud=Object.is;function va(e,t){if(e===t)return!0;if(!(e instanceof Object)||!(t instanceof Object))return!1;let r=0,o=0;for(const l in e)if(r+=1,!ud(e[l],t[l])||!(l in t))return!1;for(const l in t)o+=1;return r===o}xt(["MUI: `useGridSelector` has been called before the initialization of the state.","This hook can only be used inside the context of the grid."]);function cd(e){return e.acceptsApiRef}function Hn(e,t){return cd(t)?t(e):t(e.current.state)}const dd=Object.is,xl=va,fd=()=>({state:null,equals:null,selector:null}),K=(e,t,r=dd)=>{const o=Pl(fd),l=o.current.selector!==null,[n,i]=a.useState(l?null:Hn(e,t));return o.current.state=n,o.current.equals=r,o.current.selector=t,xa(()=>e.current.store.subscribe(()=>{const c=Hn(e,o.current.selector);o.current.equals(o.current.state,c)||(o.current.state=c,i(c))})),n};function Ce(e){return Tu("MuiDataGrid",e)}const _=da("MuiDataGrid",["actionsCell","aggregationColumnHeader","aggregationColumnHeader--alignLeft","aggregationColumnHeader--alignCenter","aggregationColumnHeader--alignRight","aggregationColumnHeaderLabel","autoHeight","autosizing","booleanCell","cell--editable","cell--editing","cell--textCenter","cell--textLeft","cell--textRight","cell--withRenderer","cell--rangeTop","cell--rangeBottom","cell--rangeLeft","cell--rangeRight","cell--selectionMode","cell","cellContent","cellCheckbox","cellSkeleton","checkboxInput","columnHeader--alignCenter","columnHeader--alignLeft","columnHeader--alignRight","columnHeader--dragging","columnHeader--moving","columnHeader--numeric","columnHeader--sortable","columnHeader--sorted","columnHeader--filtered","columnHeader","columnHeaderCheckbox","columnHeaderDraggableContainer","columnHeaderDropZone","columnHeaderTitle","columnHeaderTitleContainer","columnHeaderTitleContainerContent","columnGroupHeader","columnHeader--filledGroup","columnHeader--emptyGroup","columnHeader--showColumnBorder","columnHeaders","columnHeadersInner","columnHeadersInner--scrollable","columnSeparator--resizable","columnSeparator--resizing","columnSeparator--sideLeft","columnSeparator--sideRight","columnSeparator","columnsPanel","columnsPanelRow","detailPanel","detailPanels","detailPanelToggleCell","detailPanelToggleCell--expanded","footerCell","panel","panelHeader","panelWrapper","panelContent","panelFooter","paper","editBooleanCell","editInputCell","filterForm","filterFormDeleteIcon","filterFormLogicOperatorInput","filterFormColumnInput","filterFormOperatorInput","filterFormValueInput","filterIcon","footerContainer","headerFilterRow","iconButtonContainer","iconSeparator","main","menu","menuIcon","menuIconButton","menuOpen","menuList","overlay","overlayWrapper","overlayWrapperInner","root","root--densityStandard","root--densityComfortable","root--densityCompact","root--disableUserSelection","row","row--editable","row--editing","row--lastVisible","row--dragging","row--dynamicHeight","row--detailPanelExpanded","rowReorderCellPlaceholder","rowCount","rowReorderCellContainer","rowReorderCell","rowReorderCell--draggable","scrollArea--left","scrollArea--right","scrollArea","selectedRowCount","sortIcon","toolbarContainer","toolbarFilterList","virtualScroller","virtualScrollerContent","virtualScrollerContent--overflowed","virtualScrollerRenderZone","pinnedColumns","pinnedColumns--left","pinnedColumns--right","pinnedColumnHeaders","pinnedColumnHeaders--left","pinnedColumnHeaders--right","withBorderColor","cell--withRightBorder","columnHeader--withRightBorder","treeDataGroupingCell","treeDataGroupingCellToggle","groupingCriteriaCell","groupingCriteriaCellToggle","pinnedRows","pinnedRows--top","pinnedRows--bottom","pinnedRowsRenderZone"]);var lo="NOT_FOUND";function pd(e){var t;return{get:function(o){return t&&e(t.key,o)?t.value:lo},put:function(o,l){t={key:o,value:l}},getEntries:function(){return t?[t]:[]},clear:function(){t=void 0}}}function gd(e,t){var r=[];function o(c){var d=r.findIndex(function(s){return t(c,s.key)});if(d>-1){var u=r[d];return d>0&&(r.splice(d,1),r.unshift(u)),u.value}return lo}function l(c,d){o(c)===lo&&(r.unshift({key:c,value:d}),r.length>e&&r.pop())}function n(){return r}function i(){r=[]}return{get:o,put:l,getEntries:n,clear:i}}var md=function(t,r){return t===r};function bd(e){return function(r,o){if(r===null||o===null||r.length!==o.length)return!1;for(var l=r.length,n=0;n1?t-1:0),o=1;o{if(i.length>0)throw new Error("Unsupported number of selectors");let c;if(e&&t&&r&&o&&l&&n)c=(d,u)=>{const s=Xt(d),f=u??(s?d.current.instanceId:er),p=s?d.current.state:d,b=e(p,f),g=t(p,f),h=r(p,f),v=o(p,f),S=l(p,f);return n(b,g,h,v,S)};else if(e&&t&&r&&o&&l)c=(d,u)=>{const s=Xt(d),f=u??(s?d.current.instanceId:er),p=s?d.current.state:d,b=e(p,f),g=t(p,f),h=r(p,f),v=o(p,f);return l(b,g,h,v)};else if(e&&t&&r&&o)c=(d,u)=>{const s=Xt(d),f=u??(s?d.current.instanceId:er),p=s?d.current.state:d,b=e(p,f),g=t(p,f),h=r(p,f);return o(b,g,h)};else if(e&&t&&r)c=(d,u)=>{const s=Xt(d),f=u??(s?d.current.instanceId:er),p=s?d.current.state:d,b=e(p,f),g=t(p,f);return r(b,g)};else if(e&&t)c=(d,u)=>{const s=Xt(d),f=u??(s?d.current.instanceId:er),p=s?d.current.state:d,b=e(p,f);return t(b)};else throw new Error("Missing arguments");return c.acceptsApiRef=!0,c},Te=(...e)=>{const t=(...r)=>{var o,l;const[n,i]=r,c=Xt(n),d=c?n.current.instanceId:i??er,u=c?n.current.state:n,{cache:s}=Sd;if(s.get(d)&&(o=s.get(d))!=null&&o.get(e)){var f;return(f=s.get(d))==null?void 0:f.get(e)(u,d)}const p=wd(...e);return s.get(d)||s.set(d,new Map),(l=s.get(d))==null||l.set(e,p),p(u,d)};return t.acceptsApiRef=!0,t},zt=e=>e.columns,St=pe(zt,e=>e.orderedFields),Ht=pe(zt,e=>e.lookup),pt=Te(St,Ht,(e,t)=>e.map(r=>t[r])),it=pe(zt,e=>e.columnVisibilityModel),He=Te(pt,it,(e,t)=>e.filter(r=>t[r.field]!==!1)),kr=Te(He,e=>e.map(t=>t.field)),Bt=Te(He,e=>{const t=[];let r=0;for(let o=0;o{const r=e.length;return r===0?0:t[r-1]+e[r-1].computedWidth}),vl=Te(pt,e=>e.filter(t=>t.filterable)),Oa=Te(pt,e=>e.reduce((t,r)=>(r.filterable&&(t[r.field]=r),t),{})),Er=e=>e.columnGrouping,Fa=Te(Er,e=>{var t;return(t=e==null?void 0:e.unwrappedGroupingModel)!=null?t:{}}),Ol=Te(Er,e=>{var t;return(t=e==null?void 0:e.lookup)!=null?t:{}}),ya=Te(Er,e=>{var t;return(t=e==null?void 0:e.headerStructure)!=null?t:[]}),dr=pe(Er,e=>{var t;return(t=e==null?void 0:e.maxDepth)!=null?t:0}),ht=e=>e.rows,Lr=pe(ht,e=>e.totalRowCount),Ia=pe(ht,e=>e.loading),Ma=pe(ht,e=>e.totalTopLevelRowCount),yt=pe(ht,e=>e.dataRowIdToModelLookup),wr=pe(ht,e=>e.dataRowIdToIdLookup),at=pe(ht,e=>e.tree),ka=pe(ht,e=>e.groupingName),jo=pe(ht,e=>e.treeDepths),Tr=Te(ht,e=>{const t=Object.entries(e.treeDepths);return t.length===0?1:t.filter(([,r])=>r>0).map(([r])=>Number(r)).sort((r,o)=>o-r)[0]+1}),hr=pe(ht,e=>e.dataRowIds),Pd=pe(ht,e=>e==null?void 0:e.additionalRowGroups),fr=Te(Pd,e=>{var t,r;const o=e==null?void 0:e.pinnedRows;return{bottom:o==null||(t=o.bottom)==null?void 0:t.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}}),top:o==null||(r=o.top)==null?void 0:r.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}})}}),xd=pe(fr,e=>{var t,r;return((e==null||(t=e.top)==null?void 0:t.length)||0)+((e==null||(r=e.bottom)==null?void 0:r.length)||0)}),Ea=()=>{var e;const t=At(),r=J(),o=K(t,He),l=K(t,Lr),n=K(t,dr),i=K(t,xd);let c="grid";return(e=r.experimentalFeatures)!=null&&e.ariaV7&&r.treeData&&(c="treegrid"),{role:c,"aria-colcount":o.length,"aria-rowcount":n+1+i+l,"aria-multiselectable":!r.disableMultipleRowSelection}},vd=e=>{const{classes:t}=e;return we({root:["main"]},Ce,t)},Od=_e("div",{name:"MuiDataGrid",slot:"Main",overridesResolver:(e,t)=>t.main})(()=>({position:"relative",flexGrow:1,display:"flex",flexDirection:"column",overflow:"hidden"})),Fd=a.forwardRef((e,t)=>{var r;const o=J(),l=vd(o),n=(r=o.experimentalFeatures)!=null&&r.ariaV7?Ea:null,i=typeof n=="function"?n():null;return O.jsx(Od,m({ref:t,className:l.root,ownerState:o},i,{children:e.children}))}),La=e=>e.sorting,Po=pe(La,e=>e.sortedRows),xo=Te(Po,yt,(e,t)=>e.map(r=>{var o;return{id:r,model:(o=t[r])!=null?o:{}}})),tt=pe(La,e=>e.sortModel),Ta=Te(tt,e=>e.reduce((r,o,l)=>(r[o.field]={sortDirection:o.sort,sortIndex:e.length>1?l+1:void 0},r),{})),Fl=e=>e.filter,Ae=pe(Fl,e=>e.filterModel),Da=pe(Ae,e=>e.quickFilterValues),$a=e=>e.visibleRowsLookup,yl=pe(Fl,e=>e.filteredRowsLookup),yd=pe(Fl,e=>e.filteredDescendantCountLookup),Mt=Te($a,xo,(e,t)=>t.filter(r=>e[r.id]!==!1)),lr=Te(Mt,e=>e.map(t=>t.id)),Ra=Te(yl,xo,(e,t)=>t.filter(r=>e[r.id]!==!1)),Aa=Te(Ra,e=>e.map(t=>t.id)),Il=Te(Mt,at,Tr,(e,t,r)=>r<2?e:e.filter(o=>{var l;return((l=t[o.id])==null?void 0:l.depth)===0})),Ml=pe(Mt,e=>e.length),Dr=pe(Il,e=>e.length),kl=Te(Ae,Ht,(e,t)=>{var r;return(r=e.items)==null?void 0:r.filter(o=>{var l,n;if(!o.field)return!1;const i=t[o.field];if(!(i!=null&&i.filterOperators)||(i==null||(l=i.filterOperators)==null?void 0:l.length)===0)return!1;const c=i.filterOperators.find(d=>d.value===o.operator);return c?!c.InputComponent||o.value!=null&&((n=o.value)==null?void 0:n.toString())!=="":!1})}),Ha=Te(kl,e=>e.reduce((r,o)=>(r[o.field]?r[o.field].push(o):r[o.field]=[o],r),{})),$r=e=>e.focus,Je=pe($r,e=>e.cell),_a=pe($r,e=>e.columnHeader),Id=pe($r,e=>e.columnHeaderFilter),Sr=pe($r,e=>e.columnGroupHeader),Rr=e=>e.tabIndex,Pr=pe(Rr,e=>e.cell),El=pe(Rr,e=>e.columnHeader),Md=pe(Rr,e=>e.columnHeaderFilter),Va=pe(Rr,e=>e.columnGroupHeader),vo=e=>e.density,Ll=pe(vo,e=>e.value),Kt=pe(vo,e=>e.factor),no=e=>e.columnMenu;function Ga(e){const{VirtualScrollerComponent:t,ColumnHeadersProps:r,children:o}=e,l=At(),n=J(),i=a.useRef(null),c=K(l,He),d=K(l,Ha),u=K(l,Ta),s=K(l,Bt),f=K(l,El),p=K(l,Pr),b=K(l,Va),g=K(l,_a),h=K(l,Sr),v=K(l,Kt),S=K(l,dr),w=K(l,no),L=K(l,it),R=K(l,ya),V=!(b===null&&f===null&&p===null);Qe(()=>{l.current.computeSizeAndPublishResizeEvent();const T=i.current;if(typeof ResizeObserver>"u")return()=>{};let x;const A=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{l.current.computeSizeAndPublishResizeEvent()})});return T&&A.observe(T),()=>{x&&window.cancelAnimationFrame(x),T&&A.unobserve(T)}},[l]);const F=a.useRef(null),I=a.useRef(null),y=a.useRef(null);l.current.register("private",{columnHeadersContainerElementRef:I,columnHeadersElementRef:F,virtualScrollerRef:y,mainElementRef:i});const H=!!l.current.getRootDimensions();return O.jsxs(Fd,{ref:i,children:[O.jsx(n.slots.columnHeaders,m({ref:I,innerRef:F,visibleColumns:c,filterColumnLookup:d,sortColumnLookup:u,columnPositions:s,columnHeaderTabIndexState:f,columnGroupHeaderTabIndexState:b,columnHeaderFocus:g,columnGroupHeaderFocus:h,densityFactor:v,headerGroupingMaxDepth:S,columnMenuState:w,columnVisibility:L,columnGroupsHeaderStructure:R,hasOtherElementInTabSequence:V},r)),H&&O.jsx(t,{ref:y}),o]})}function Na(){var e;const t=J();return t.hideFooter?null:O.jsx(t.slots.footer,m({},(e=t.slotProps)==null?void 0:e.footer))}const Ue="auto-generated-group-node-root",nr=Symbol("mui.id_autogenerated"),kd=()=>({type:"group",id:Ue,depth:-1,groupingField:null,groupingKey:null,isAutoGenerated:!0,children:[],childrenFromPath:{},childrenExpanded:!0,parent:null});function za(e,t,r="A row was provided without id in the rows prop:"){if(e==null)throw new Error(["MUI: The data grid component requires all rows to have a unique `id` property.","Alternatively, you can use the `getRowId` prop to specify a custom id for each row.",r,JSON.stringify(t)].join(` -`))}const ao=(e,t,r)=>{const o=t?t(e):e.id;return za(o,e,r),o},eo=({rows:e,getRowId:t,loading:r,rowCount:o})=>{const l={type:"full",rows:[]},n={},i={};for(let c=0;c{const r=e[Ue];return Math.max(t,r.children.length+(r.footerId==null?0:1))},Ba=({apiRef:e,rowCountProp:t=0,loadingProp:r,previousTree:o,previousTreeDepths:l})=>{const n=e.current.caches.rows,{tree:i,treeDepths:c,dataRowIds:d,groupingName:u}=e.current.applyStrategyProcessor("rowTreeCreation",{previousTree:o,previousTreeDepths:l,updates:n.updates,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIdToModelLookup:n.dataRowIdToModelLookup}),s=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:i,treeDepths:c,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIds:d,dataRowIdToModelLookup:n.dataRowIdToModelLookup});return e.current.caches.rows.updates={type:"partial",actions:{insert:[],modify:[],remove:[]},idToActionLookup:{}},m({},s,{totalRowCount:Math.max(t,s.dataRowIds.length),totalTopLevelRowCount:ja({tree:s.tree,rowCountProp:t}),groupingName:u,loading:r})},xr=e=>e.type==="skeletonRow"||e.type==="footer"||e.type==="group"&&e.isAutoGenerated||e.type==="pinnedRow"&&e.isAutoGenerated,Tl=(e,t,r)=>{const o=e[t];if(o.type!=="group")return[];const l=[];for(let n=0;n{var o,l,n;if(e.updates.type==="full")throw new Error("MUI: Unable to prepare a partial update if a full update is not applied yet");const i=new Map;r.forEach(p=>{const b=ao(p,t,"A row was provided without id when calling updateRows():");i.has(b)?i.set(b,m({},i.get(b),p)):i.set(b,p)});const c={type:"partial",actions:{insert:[...(o=e.updates.actions.insert)!=null?o:[]],modify:[...(l=e.updates.actions.modify)!=null?l:[]],remove:[...(n=e.updates.actions.remove)!=null?n:[]]},idToActionLookup:m({},e.updates.idToActionLookup)},d=m({},e.dataRowIdToModelLookup),u=m({},e.dataRowIdToIdLookup),s={insert:{},modify:{},remove:{}};i.forEach((p,b)=>{const g=c.idToActionLookup[b];if(p._action==="delete"){if(g==="remove"||!d[b])return;g!=null&&(s[g][b]=!0),c.actions.remove.push(b),delete d[b],delete u[b];return}const h=d[b];if(h){g==="remove"?(s.remove[b]=!0,c.actions.modify.push(b)):g==null&&c.actions.modify.push(b),d[b]=m({},h,p);return}g==="remove"?(s.remove[b]=!0,c.actions.insert.push(b)):g==null&&c.actions.insert.push(b),d[b]=p,u[b]=b});const f=Object.keys(s);for(let p=0;p0&&(c.actions[b]=c.actions[b].filter(h=>!g[h]))}return{dataRowIdToModelLookup:d,dataRowIdToIdLookup:u,updates:c,rowsBeforePartialUpdates:e.rowsBeforePartialUpdates,loadingPropBeforePartialUpdates:e.loadingPropBeforePartialUpdates,rowCountPropBeforePartialUpdates:e.rowCountPropBeforePartialUpdates}};function Ua(e){var t,r;const o=fr(e),l=(o==null||(t=o.top)==null?void 0:t.reduce((i,c)=>(i+=e.current.unstable_getRowHeight(c.id),i),0))||0,n=(o==null||(r=o.bottom)==null?void 0:r.reduce((i,c)=>(i+=e.current.unstable_getRowHeight(c.id),i),0))||0;return{top:l,bottom:n}}function qa(e,t){const r=Kt(e);return`var(--DataGrid-overlayHeight, ${2*Math.floor(t*r)}px)`}const Ld=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapper",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapper})(({overlayType:e})=>({position:"sticky",top:0,left:0,width:0,height:0,zIndex:e==="loadingOverlay"?5:4})),Td=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapperInner",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapperInner})({}),Dd=e=>{const{classes:t}=e;return we({root:["overlayWrapper"],inner:["overlayWrapperInner"]},Ce,t)};function $d(e){var t,r;const o=fe(),l=J(),[n,i]=a.useState(()=>{var s,f;return(s=(f=o.current.getRootDimensions())==null?void 0:f.viewportInnerSize)!=null?s:null}),c=a.useCallback(()=>{var s,f;i((s=(f=o.current.getRootDimensions())==null?void 0:f.viewportInnerSize)!=null?s:null)},[o]);Qe(()=>o.current.subscribeEvent("viewportInnerSizeChange",c),[o,c]);let d=(t=n==null?void 0:n.height)!=null?t:0;l.autoHeight&&d===0&&(d=qa(o,l.rowHeight));const u=Dd(m({},e,{classes:l.classes}));return n?O.jsx(Ld,{className:Pe(u.root),overlayType:e.overlayType,children:O.jsx(Td,m({className:Pe(u.inner),style:{height:d,width:(r=n==null?void 0:n.width)!=null?r:0}},e))}):null}function Wa(){const e=fe(),t=J(),r=K(e,Lr),o=K(e,Ml),l=K(e,Ia),n=!l&&r===0,i=!l&&r>0&&o===0;let c=null,d="";if(n){var u;c=O.jsx(t.slots.noRowsOverlay,m({},(u=t.slotProps)==null?void 0:u.noRowsOverlay)),d="noRowsOverlay"}if(i){var s;c=O.jsx(t.slots.noResultsOverlay,m({},(s=t.slotProps)==null?void 0:s.noResultsOverlay)),d="noResultsOverlay"}if(l){var f;c=O.jsx(t.slots.loadingOverlay,m({},(f=t.slotProps)==null?void 0:f.loadingOverlay)),d="loadingOverlay"}return c===null?null:O.jsx($d,{overlayType:d,children:c})}function Oo(e){return a.memo(e,va)}let Ro;function Ka(){return Ro===void 0&&document.createElement("div").focus({get preventScroll(){return Ro=!0,!1}}),Ro}var mt=function(e){return e.Cell="cell",e.Row="row",e}(mt||{}),Oe=function(e){return e.Edit="edit",e.View="view",e}(Oe||{}),Me=function(e){return e.Edit="edit",e.View="view",e}(Me||{}),Ke=function(e){return e.And="and",e.Or="or",e}(Ke||{}),vt=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e}(vt||{}),nt=function(e){return e.cellFocusOut="cellFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(nt||{}),Ot=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e}(Ot||{}),wt=function(e){return e.rowFocusOut="rowFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(wt||{});function Dl(e){return e.field!==void 0}function Rd(e){return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth}function Ad(e,t){return e.closest(`.${t}`)}function $l(e){return e.replace(/["\\]/g,"\\$&")}function Hd(e,t){return e.querySelector(`[role="columnheader"][data-field="${$l(t)}"]`)}function Qa(e){return`.${_.row}[data-id="${$l(String(e))}"]`}function _d(e,t){return e.querySelector(Qa(t))}function Vd(e,{id:t,field:r}){const o=Qa(t),l=`.${_.cell}[data-field="${$l(r)}"]`,n=`${o} ${l}`;return e.querySelector(n)}function be(e,t,r){const o=a.useRef(!0);a.useEffect(()=>{o.current=!1,e.current.register(r,t)},[e,r,t]),o.current&&e.current.register(r,t)}class rr extends Error{}function Gd(e,t){const{getRowId:r}=t,o=a.useCallback(g=>({field:g,colDef:e.current.getColumn(g)}),[e]),l=a.useCallback(g=>{const h=e.current.getRow(g);if(!h)throw new rr(`No row with id #${g} found`);return{id:g,columns:e.current.getAllColumns(),row:h}},[e]),n=a.useCallback((g,h)=>{const v=e.current.getRow(g),S=e.current.getRowNode(g);if(!v||!S)throw new rr(`No row with id #${g} found`);const w=Je(e),L=Pr(e);return{id:g,field:h,row:v,rowNode:S,value:v[h],colDef:e.current.getColumn(h),cellMode:e.current.getCellMode(g,h),api:e.current,hasFocus:w!==null&&w.field===h&&w.id===g,tabIndex:L&&L.field===h&&L.id===g?0:-1}},[e]),i=a.useCallback((g,h)=>{const v=e.current.getColumn(h),S=e.current.getCellValue(g,h),w=e.current.getRow(g),L=e.current.getRowNode(g);if(!w||!L)throw new rr(`No row with id #${g} found`);const R=Je(e),V=Pr(e),F={id:g,field:h,row:w,rowNode:L,colDef:v,cellMode:e.current.getCellMode(g,h),hasFocus:R!==null&&R.field===h&&R.id===g,tabIndex:V&&V.field===h&&V.id===g?0:-1,value:S,formattedValue:S,isEditable:!1};return v&&v.valueFormatter&&(F.formattedValue=v.valueFormatter({id:g,field:F.field,value:F.value,api:e.current})),F.isEditable=v&&e.current.isCellEditable(F),F},[e]),c=a.useCallback((g,h)=>{const v=e.current.getColumn(h);if(!v||!v.valueGetter){const S=e.current.getRow(g);if(!S)throw new rr(`No row with id #${g} found`);return S[h]}return v.valueGetter(n(g,h))},[e,n]),d=a.useCallback((g,h)=>{var v;const S=nr in g?g[nr]:(v=r==null?void 0:r(g))!=null?v:g.id,w=h.field;return!h||!h.valueGetter?g[w]:h.valueGetter(n(S,w))},[n,r]),u=a.useCallback((g,h)=>{var v;const S=d(g,h);if(!h||!h.valueFormatter)return S;const w=(v=r?r(g):g.id)!=null?v:g[nr],L=h.field;return h.valueFormatter({id:w,field:L,value:S,api:e.current})},[e,r,d]),s=a.useCallback(g=>e.current.rootElementRef.current?Hd(e.current.rootElementRef.current,g):null,[e]),f=a.useCallback(g=>e.current.rootElementRef.current?_d(e.current.rootElementRef.current,g):null,[e]),p=a.useCallback((g,h)=>e.current.rootElementRef.current?Vd(e.current.rootElementRef.current,{id:g,field:h}):null,[e]);be(e,{getCellValue:c,getCellParams:i,getCellElement:p,getRowValue:d,getRowFormattedValue:u,getRowParams:l,getRowElement:f,getColumnHeaderParams:o,getColumnHeaderElement:s},"public")}const Nd=["changeReason","unstable_updateValueOnRender"],zd=["align","children","editCellState","colIndex","column","cellMode","field","formattedValue","hasFocus","height","isEditable","isSelected","rowId","tabIndex","value","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver"],jd=["column","rowId","editCellState","align","children","colIndex","height","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver"],Bd=["changeReason","unstable_updateValueOnRender"],io={id:-1,field:"__unset__",row:{},rowNode:{id:-1,depth:0,type:"leaf",parent:-1,groupingKey:null},colDef:{type:"string",field:"__unset__",computedWidth:0},cellMode:Oe.View,hasFocus:!1,tabIndex:-1,value:null,formattedValue:"__unset__",isEditable:!1,api:{}},Za=e=>{const{align:t,showRightBorder:r,isEditable:o,isSelected:l,isSelectionMode:n,classes:i}=e,c={root:["cell",`cell--text${Dt(t)}`,o&&"cell--editable",l&&"selected",r&&"cell--withRightBorder",n&&!o&&"cell--selectionMode","withBorderColor"],content:["cellContent"]};return we(c,Ce,i)},Ud=a.forwardRef((e,t)=>{const{column:r,rowId:o,editCellState:l}=e,n=fe(),i=J(),c=r.field,d=K(n,()=>{try{const H=n.current.getCellParams(o,c);return H.api=n.current,H}catch(y){if(y instanceof rr)return io;throw y}},xl),u=K(n,()=>n.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:o,field:c}));if(d===io)return null;const{cellMode:s,hasFocus:f,isEditable:p,value:b,formattedValue:g}=d,h=r.type==="actions",v=(s==="view"||!p)&&!h?d.tabIndex:-1,{classes:S,getCellClassName:w}=i,L=n.current.unstable_applyPipeProcessors("cellClassName",[],{id:o,field:c});r.cellClassName&&L.push(typeof r.cellClassName=="function"?r.cellClassName(d):r.cellClassName),w&&L.push(w(d));let R;if(l==null&&r.renderCell&&(R=r.renderCell(d),L.push(_["cell--withRenderer"]),L.push(S==null?void 0:S["cell--withRenderer"])),l!=null&&r.renderEditCell){const y=n.current.getRowWithUpdatedValues(o,r.field),H=Z(l,Nd),T=m({},d,{row:y},H);R=r.renderEditCell(T),L.push(_["cell--editing"]),L.push(S==null?void 0:S["cell--editing"])}const{slots:V}=i,F=V.cell,I=m({},e,{ref:t,field:c,formattedValue:g,hasFocus:f,isEditable:p,isSelected:u,value:b,cellMode:s,children:R,tabIndex:v,className:Pe(L)});return a.createElement(F,I)}),qd=a.forwardRef((e,t)=>{var r;const{align:o,children:l,colIndex:n,column:i,cellMode:c,field:d,formattedValue:u,hasFocus:s,height:f,isEditable:p,isSelected:b,rowId:g,tabIndex:h,value:v,width:S,className:w,showRightBorder:L,colSpan:R,disableDragEvents:V,isNotVisible:F,onClick:I,onDoubleClick:y,onMouseDown:H,onMouseUp:T,onMouseOver:x,onKeyDown:A,onKeyUp:E,onDragEnter:C,onDragOver:P}=e,k=Z(e,zd),D=u??v,M=a.useRef(null),$=Pt(t,M),G=a.useRef(null),j=fe(),z=J(),q={align:o,showRightBorder:L,isEditable:p,classes:z.classes,isSelected:b},B=Za(q),Q=a.useCallback(ce=>ge=>{const U=j.current.getCellParams(g,d||"");j.current.publishEvent(ce,U,ge),T&&T(ge)},[j,d,T,g]),X=a.useCallback(ce=>ge=>{const U=j.current.getCellParams(g,d||"");j.current.publishEvent(ce,U,ge),H&&H(ge)},[j,d,H,g]),le=a.useCallback((ce,ge)=>U=>{if(!j.current.getRow(g))return;const W=j.current.getCellParams(g,d||"");j.current.publishEvent(ce,W,U),ge&&ge(U)},[j,d,g]),ye=a.useMemo(()=>F?{padding:0,opacity:0,width:0,border:0}:{minWidth:S,maxWidth:S,minHeight:f,maxHeight:f==="auto"?"none":f},[S,f,F]);a.useEffect(()=>{if(!s||c===Oe.Edit)return;const ce=yr(j.current.rootElementRef.current);if(M.current&&!M.current.contains(ce.activeElement)){const ge=M.current.querySelector('[tabindex="0"]'),U=G.current||ge||M.current;if(Ka())U.focus({preventScroll:!0});else{const W=j.current.getScrollPosition();U.focus(),j.current.scroll(W)}}},[s,c,j]);let xe=k.onFocus;const de=i.type==="actions";let oe=l;if(oe===void 0){const ce=D==null?void 0:D.toString();oe=O.jsx("div",{className:B.content,title:ce,role:"presentation",children:ce})}a.isValidElement(oe)&&de&&(oe=a.cloneElement(oe,{focusElementRef:G}));const he=V?null:{onDragEnter:le("cellDragEnter",C),onDragOver:le("cellDragOver",P)},Se=(r=z.experimentalFeatures)==null?void 0:r.ariaV7;return O.jsx("div",m({ref:$,className:Pe(w,B.root),role:Se?"gridcell":"cell","data-field":d,"data-colindex":n,"aria-colindex":n+1,"aria-colspan":R,style:ye,tabIndex:h,onClick:le("cellClick",I),onDoubleClick:le("cellDoubleClick",y),onMouseOver:le("cellMouseOver",x),onMouseDown:X("cellMouseDown"),onMouseUp:Q("cellMouseUp"),onKeyDown:le("cellKeyDown",A),onKeyUp:le("cellKeyUp",E)},he,k,{onFocus:xe,children:oe}))}),Wd=Oo(Ud),Kd=a.forwardRef((e,t)=>{var r,o;const{column:l,rowId:n,editCellState:i,align:c,colIndex:d,height:u,width:s,className:f,showRightBorder:p,colSpan:b,disableDragEvents:g,isNotVisible:h,onClick:v,onDoubleClick:S,onMouseDown:w,onMouseUp:L,onMouseOver:R,onKeyDown:V,onKeyUp:F,onDragEnter:I,onDragOver:y}=e,H=Z(e,jd),T=fe(),x=J(),A=l.field,E=K(T,()=>{try{const ie=T.current.getCellParams(n,A);return ie.api=T.current,ie}catch(ae){if(ae instanceof rr)return io;throw ae}},xl),C=K(T,()=>T.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:n,field:A})),{cellMode:P,hasFocus:k,isEditable:D,value:M,formattedValue:$}=E,G=l.type==="actions",j=(P==="view"||!D)&&!G?E.tabIndex:-1,{classes:z,getCellClassName:q}=x,B=T.current.unstable_applyPipeProcessors("cellClassName",[],{id:n,field:A});l.cellClassName&&B.push(typeof l.cellClassName=="function"?l.cellClassName(E):l.cellClassName),q&&B.push(q(E));const Q=$??M,X=a.useRef(null),le=Pt(t,X),ye=a.useRef(null),xe=(r=x.unstable_cellSelection)!=null?r:!1,de={align:c,showRightBorder:p,isEditable:D,classes:x.classes,isSelected:C,isSelectionMode:xe},oe=Za(de),he=a.useCallback(ae=>ie=>{const te=T.current.getCellParams(n,A||"");T.current.publishEvent(ae,te,ie),L&&L(ie)},[T,A,L,n]),Se=a.useCallback(ae=>ie=>{const te=T.current.getCellParams(n,A||"");T.current.publishEvent(ae,te,ie),w&&w(ie)},[T,A,w,n]),ce=a.useCallback((ae,ie)=>te=>{if(!T.current.getRow(n))return;const ee=T.current.getCellParams(n,A||"");T.current.publishEvent(ae,ee,te),ie&&ie(te)},[T,A,n]),ge=a.useMemo(()=>h?{padding:0,opacity:0,width:0,border:0}:{minWidth:s,maxWidth:s,minHeight:u,maxHeight:u==="auto"?"none":u},[s,u,h]);if(a.useEffect(()=>{if(!k||P===Oe.Edit)return;const ae=yr(T.current.rootElementRef.current);if(X.current&&!X.current.contains(ae.activeElement)){const ie=X.current.querySelector('[tabindex="0"]'),te=ye.current||ie||X.current;if(Ka())te.focus({preventScroll:!0});else{const ee=T.current.getScrollPosition();te.focus(),T.current.scroll(ee)}}},[k,P,T]),E===io)return null;let U=H.onFocus,W;if(i==null&&l.renderCell&&(W=l.renderCell(E),B.push(_["cell--withRenderer"]),B.push(z==null?void 0:z["cell--withRenderer"])),i!=null&&l.renderEditCell){const ae=T.current.getRowWithUpdatedValues(n,l.field),ie=Z(i,Bd),te=m({},E,{row:ae},ie);W=l.renderEditCell(te),B.push(_["cell--editing"]),B.push(z==null?void 0:z["cell--editing"])}if(W===void 0){const ae=Q==null?void 0:Q.toString();W=O.jsx("div",{className:oe.content,title:ae,role:"presentation",children:ae})}a.isValidElement(W)&&G&&(W=a.cloneElement(W,{focusElementRef:ye}));const ne=g?null:{onDragEnter:ce("cellDragEnter",I),onDragOver:ce("cellDragOver",y)},me=(o=x.experimentalFeatures)==null?void 0:o.ariaV7;return O.jsx("div",m({ref:le,className:Pe(f,B,oe.root),role:me?"gridcell":"cell","data-field":A,"data-colindex":d,"aria-colindex":d+1,"aria-colspan":b,style:ge,tabIndex:j,onClick:ce("cellClick",v),onDoubleClick:ce("cellDoubleClick",S),onMouseOver:ce("cellMouseOver",R),onMouseDown:Se("cellMouseDown"),onMouseUp:he("cellMouseUp"),onKeyDown:ce("cellKeyDown",V),onKeyUp:ce("cellKeyUp",F)},ne,H,{onFocus:U,children:W}))}),Bo=Oo(Kd),Qd=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","hasFocus","tabIndex"],Zd=e=>{const{classes:t}=e;return we({root:["booleanCell"]},Ce,t)};function Jd(e){const{value:t}=e,r=Z(e,Qd),o=fe(),l=J(),n={classes:l.classes},i=Zd(n),c=a.useMemo(()=>t?l.slots.booleanCellTrueIcon:l.slots.booleanCellFalseIcon,[l.slots.booleanCellFalseIcon,l.slots.booleanCellTrueIcon,t]);return O.jsx(c,m({fontSize:"small",className:i.root,titleAccess:o.current.getLocaleText(t?"booleanCellTrueLabel":"booleanCellFalseLabel"),"data-value":!!t},r))}const Ja=a.memo(Jd),Ya=e=>xr(e.rowNode)?"":O.jsx(Ja,m({},e)),Yd=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange"],Xd=e=>{const{classes:t}=e;return we({root:["editBooleanCell"]},Ce,t)};function Xa(e){var t;const{id:r,value:o,field:l,className:n,hasFocus:i,onValueChange:c}=e,d=Z(e,Yd),u=fe(),s=a.useRef(null),f=Ee(),[p,b]=a.useState(o),g=J(),h={classes:g.classes},v=Xd(h),S=a.useCallback(async w=>{const L=w.target.checked;c&&await c(w,L),b(L),await u.current.setEditCellValue({id:r,field:l,value:L},w)},[u,l,r,c]);return a.useEffect(()=>{b(o)},[o]),Qe(()=>{i&&s.current.focus()},[i]),O.jsx("label",m({htmlFor:f,className:Pe(v.root,n)},d,{children:O.jsx(g.slots.baseCheckbox,m({id:f,inputRef:s,checked:!!p,onChange:S,size:"small"},(t=g.slotProps)==null?void 0:t.baseCheckbox))}))}const ei=e=>O.jsx(Xa,m({},e)),ef=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","inputProps","isValidating","isProcessingProps","onValueChange"],tf=De(fa)({fontSize:"inherit"}),rf=e=>{const{classes:t}=e;return we({root:["editInputCell"]},Ce,t)};function ti(e){const{id:t,value:r,field:o,colDef:l,hasFocus:n,inputProps:i,onValueChange:c}=e,d=Z(e,ef),u=l.type==="dateTime",s=fe(),f=a.useRef(),p=a.useMemo(()=>{let I;r==null?I=null:r instanceof Date?I=r:I=new Date((r??"").toString());let y;return I==null||Number.isNaN(I.getTime())?y="":y=new Date(I.getTime()-I.getTimezoneOffset()*60*1e3).toISOString().substr(0,u?16:10),{parsed:I,formatted:y}},[r,u]),[b,g]=a.useState(p),v={classes:J().classes},S=rf(v),w=a.useRef(!1),L=a.useCallback(I=>{if(I==="")return null;const[y,H]=I.split("T"),[T,x,A]=y.split("-"),E=new Date;if(E.setFullYear(Number(T),Number(x)-1,Number(A)),E.setHours(0,0,0,0),H){const[C,P]=H.split(":");E.setHours(Number(C),Number(P),0,0)}return E},[]),R=a.useCallback(async I=>{const y=I.target.value,H=L(y);c&&await c(I,H),g({parsed:H,formatted:y}),s.current.setEditCellValue({id:t,field:o,value:H},I)},[s,o,t,c,L]);a.useEffect(()=>{g(I=>{var y,H;return p.parsed!==I.parsed&&((y=p.parsed)==null?void 0:y.getTime())!==((H=I.parsed)==null?void 0:H.getTime())?p:I})},[p]),Qe(()=>{n&&f.current.focus()},[n]);const V=s.current.unstable_getEditCellMeta(t,o),F=I=>{if(f.current=I,V!=null&&V.unstable_updateValueOnRender&&!w.current){const y=f.current.value,H=L(y);g({parsed:H,formatted:y}),s.current.setEditCellValue({id:t,field:o,value:H}),w.current=!0}};return O.jsx(tf,m({inputRef:F,fullWidth:!0,className:S.root,type:u?"datetime-local":"date",inputProps:m({max:u?"9999-12-31T23:59":"9999-12-31"},i),value:b.formatted,onChange:R},d))}const Rl=e=>O.jsx(ti,m({},e)),of=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","isValidating","debounceMs","isProcessingProps","onValueChange"],lf=e=>{const{classes:t}=e;return we({root:["editInputCell"]},Ce,t)},nf=De(fa,{name:"MuiDataGrid",slot:"EditInputCell",overridesResolver:(e,t)=>t.editInputCell})(({theme:e})=>m({},e.typography.body2,{padding:"1px 0","& input":{padding:"0 16px",height:"100%"}})),ri=a.forwardRef((e,t)=>{const r=J(),{id:o,value:l,field:n,colDef:i,hasFocus:c,debounceMs:d=200,isProcessingProps:u,onValueChange:s}=e,f=Z(e,of),p=fe(),b=a.useRef(),[g,h]=a.useState(l),v=lf(r),S=a.useCallback(async L=>{const R=L.target.value;s&&await s(L,R);const V=p.current.getColumn(n);let F=R;V.valueParser&&(F=V.valueParser(R,p.current.getCellParams(o,n))),h(F),p.current.setEditCellValue({id:o,field:n,value:F,debounceMs:d,unstable_skipValueParser:!0},L)},[p,d,n,o,s]),w=p.current.unstable_getEditCellMeta(o,n);return a.useEffect(()=>{(w==null?void 0:w.changeReason)!=="debouncedSetEditCellValue"&&h(l)},[w,l]),Qe(()=>{c&&b.current.focus()},[c]),O.jsx(nf,m({ref:t,inputRef:b,className:v.root,ownerState:r,fullWidth:!0,type:i.type==="number"?i.type:"text",value:g??"",onChange:S,endAdornment:u?O.jsx(r.slots.loadIcon,{fontSize:"small",color:"action"}):void 0},f))}),oi=e=>O.jsx(ri,m({},e)),so=e=>e==="Escape",af=e=>e==="Enter",Fo=e=>e==="Tab",li=e=>e===" ",sf=e=>e.indexOf("Arrow")===0,uf=e=>e==="Home"||e==="End",cf=e=>e.indexOf("Page")===0;function ni(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey}const uo=e=>uf(e)||sf(e)||cf(e)||li(e),df=e=>!!e.key,Al=e=>Fo(e)||so(e);function jt(e){return(e==null?void 0:e.type)==="singleSelect"}function Uo(e,t,r){if(t===void 0)return;const o=t.find(l=>{const n=r(l);return String(n)===String(e)});return r(o)}const ff=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange","initialOpen","getOptionLabel","getOptionValue"],pf=["MenuProps"];function gf(e){return!!e.key}function ai(e){var t,r,o;const l=J(),{id:n,value:i,field:c,row:d,colDef:u,hasFocus:s,error:f,onValueChange:p,initialOpen:b=l.editMode===mt.Cell,getOptionLabel:g,getOptionValue:h}=e,v=Z(e,ff),S=fe(),w=a.useRef(),L=a.useRef(),[R,V]=a.useState(b),I=(r=(((t=l.slotProps)==null?void 0:t.baseSelect)||{}).native)!=null?r:!1,y=((o=l.slotProps)==null?void 0:o.baseSelect)||{},{MenuProps:H}=y,T=Z(y,pf);if(Qe(()=>{if(s){var D;(D=L.current)==null||D.focus()}},[s]),!jt(u))return null;let x;if(typeof(u==null?void 0:u.valueOptions)=="function"?x=u==null?void 0:u.valueOptions({id:n,row:d,field:c}):x=u==null?void 0:u.valueOptions,!x)return null;const A=h||u.getOptionValue,E=g||u.getOptionLabel,C=async D=>{if(!jt(u)||!x)return;V(!1);const M=D.target,$=Uo(M.value,x,A);p&&await p(D,$),await S.current.setEditCellValue({id:n,field:c,value:$},D)},P=(D,M)=>{if(l.editMode===mt.Row){V(!1);return}if(M==="backdropClick"||so(D.key)){const $=S.current.getCellParams(n,c);S.current.publishEvent("cellEditStop",m({},$,{reason:so(D.key)?nt.escapeKeyDown:nt.cellFocusOut}))}},k=D=>{gf(D)&&D.key==="Enter"||V(!0)};return!x||!u?null:O.jsx(l.slots.baseSelect,m({ref:w,inputRef:L,value:i,onChange:C,open:R,onOpen:k,MenuProps:m({onClose:P},H),error:f,native:I,fullWidth:!0},v,T,{children:x.map(D=>{var M;const $=A(D);return a.createElement(l.slots.baseSelectOption,m({},((M=l.slotProps)==null?void 0:M.baseSelectOption)||{},{native:I,key:$,value:$}),E(D))})}))}const ii=e=>O.jsx(ai,m({},e)),mf=["open","target","onClose","children","position","className","onExited"],bf=e=>{const{classes:t}=e;return we({root:["menu"]},Ce,t)},hf=De(pl,{name:"MuiDataGrid",slot:"Menu",overridesResolver:(e,t)=>t.menu})(({theme:e})=>({zIndex:e.zIndex.modal,[`& .${_.menuList}`]:{outline:0}})),Cf={"bottom-start":"top left","bottom-end":"top right"};function Ar(e){var t;const{open:r,target:o,onClose:l,children:n,position:i,className:c,onExited:d}=e,u=Z(e,mf),s=fe(),f=J(),p=bf(f),b=a.useRef(null);Qe(()=>{if(r)b.current=document.activeElement instanceof HTMLElement?document.activeElement:null;else{var v,S;(v=b.current)==null||(S=v.focus)==null||S.call(v),b.current=null}},[r]),a.useEffect(()=>{const v=r?"menuOpen":"menuClose";s.current.publishEvent(v,{target:o})},[s,r,o]);const g=v=>S=>{v&&v(),d&&d(S)},h=v=>{v.target&&(o===v.target||o!=null&&o.contains(v.target))||l(v)};return O.jsx(hf,m({as:f.slots.basePopper,className:Pe(c,p.root),ownerState:f,open:r,anchorEl:o,transition:!0,placement:i},u,(t=f.slotProps)==null?void 0:t.basePopper,{children:({TransitionProps:v,placement:S})=>O.jsx(pa,{onClickAway:h,mouseEvent:"onMouseDown",children:O.jsx(Du,m({},v,{style:{transformOrigin:Cf[S]},onExited:g(v==null?void 0:v.onExited),children:O.jsx(ga,{children:n})}))})}))}const wf=["api","colDef","id","hasFocus","isEditable","field","value","formattedValue","row","rowNode","cellMode","tabIndex","position","focusElementRef"],Sf=e=>typeof e.getActions=="function";function si(e){var t;const{colDef:r,id:o,hasFocus:l,tabIndex:n,position:i="bottom-end",focusElementRef:c}=e,d=Z(e,wf),[u,s]=a.useState(-1),[f,p]=a.useState(!1),b=fe(),g=a.useRef(null),h=a.useRef(null),v=a.useRef(!1),S=a.useRef({}),w=Ir(),L=Ee(),R=Ee(),V=J();if(!Sf(r))throw new Error("MUI: Missing the `getActions` property in the `GridColDef`.");const F=r.getActions(b.current.getRowParams(o)),I=F.filter(k=>!k.props.showInMenu),y=F.filter(k=>k.props.showInMenu),H=I.length+(y.length?1:0);a.useLayoutEffect(()=>{l||Object.entries(S.current).forEach(([k,D])=>{D==null||D.stop({},()=>{delete S.current[k]})})},[l]),a.useEffect(()=>{if(u<0||!g.current||u>=g.current.children.length)return;g.current.children[u].focus({preventScroll:!0})},[u]),a.useEffect(()=>{l||(s(-1),v.current=!1)},[l]),a.useImperativeHandle(c,()=>({focus(){v.current||s(0)}}),[]),a.useEffect(()=>{u>=H&&s(H-1)},[u,H]);const T=()=>{p(!0),s(H-1),v.current=!0},x=()=>{p(!1)},A=k=>D=>{S.current[k]=D},E=(k,D)=>M=>{s(k),v.current=!0,D&&D(M)},C=k=>{if(H<=1)return;let D=u;k.key==="ArrowRight"?w.direction==="rtl"?D-=1:D+=1:k.key==="ArrowLeft"&&(w.direction==="rtl"?D+=1:D-=1),!(D<0||D>=H)&&D!==u&&(k.preventDefault(),k.stopPropagation(),s(D))},P=k=>{k.key==="Tab"&&k.preventDefault(),["Tab","Enter","Escape"].includes(k.key)&&x()};return O.jsxs("div",m({role:"menu",ref:g,tabIndex:-1,className:_.actionsCell,onKeyDown:C},d,{children:[I.map((k,D)=>a.cloneElement(k,{key:D,touchRippleRef:A(D),onClick:E(D,k.props.onClick),tabIndex:u===D?n:-1})),y.length>0&&R&&O.jsx(V.slots.baseIconButton,m({ref:h,id:R,"aria-label":b.current.getLocaleText("actionsCellMore"),"aria-haspopup":"menu","aria-expanded":f,"aria-controls":f?L:void 0,role:"menuitem",size:"small",onClick:T,touchRippleRef:A(R),tabIndex:u===I.length?n:-1},(t=V.slotProps)==null?void 0:t.baseIconButton,{children:O.jsx(V.slots.moreActionsIcon,{fontSize:"small"})})),y.length>0&&O.jsx(Ar,{open:f,target:h.current,position:i,onClose:x,onClick:x,children:O.jsx(mo,{id:L,className:_.menuList,onKeyDown:P,"aria-labelledby":R,variant:"menu",autoFocusItem:!0,children:y.map((k,D)=>a.cloneElement(k,{key:D}))})})]}))}const ui=e=>O.jsx(si,m({},e)),Pf=["label","icon","showInMenu","onClick"],xf=a.forwardRef((e,t)=>{const{label:r,icon:o,showInMenu:l,onClick:n}=e,i=Z(e,Pf),c=J(),d=s=>{n&&n(s)};if(!l){var u;return O.jsx(c.slots.baseIconButton,m({ref:t,size:"small",role:"menuitem","aria-label":r},i,{onClick:d},(u=c.slotProps)==null?void 0:u.baseIconButton,{children:a.cloneElement(o,{fontSize:"small"})}))}return O.jsxs(dt,m({ref:t},i,{onClick:n,children:[o&&O.jsx(Tt,{children:o}),r]}))}),vf=["field","align","width","contentWidth"],Of=e=>{const{align:t,classes:r}=e,o={root:["cell","cellSkeleton",`cell--text${Dt(t)}`,"withBorderColor"]};return we(o,Ce,r)};function ci(e){const{align:t,width:r,contentWidth:o}=e,l=Z(e,vf),i={classes:J().classes,align:t},c=Of(i);return O.jsx("div",m({className:c.root,style:{width:r}},l,{children:O.jsx($u,{width:`${o}%`})}))}function Ff(e){return e.vars?e.vars.palette.TableCell.border:e.palette.mode==="light"?Ru(Ct(e.palette.divider,1),.88):Au(Ct(e.palette.divider,1),.68)}const _n={[`.${_.columnSeparator}, .${_["columnSeparator--resizing"]}`]:{visibility:"visible",width:"auto"}},Vn={[`& .${_.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${_.menuIcon}`]:{width:"auto",visibility:"visible"}},yf=De("div",{name:"MuiDataGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${_.autoHeight}`]:t.autoHeight},{[`&.${_.aggregationColumnHeader}`]:t.aggregationColumnHeader},{[`&.${_["aggregationColumnHeader--alignLeft"]}`]:t["aggregationColumnHeader--alignLeft"]},{[`&.${_["aggregationColumnHeader--alignCenter"]}`]:t["aggregationColumnHeader--alignCenter"]},{[`&.${_["aggregationColumnHeader--alignRight"]}`]:t["aggregationColumnHeader--alignRight"]},{[`&.${_.aggregationColumnHeaderLabel}`]:t.aggregationColumnHeaderLabel},{[`&.${_["root--disableUserSelection"]} .${_.cell}`]:t["root--disableUserSelection"]},{[`&.${_.autosizing}`]:t.autosizing},{[`& .${_.editBooleanCell}`]:t.editBooleanCell},{[`& .${_["cell--editing"]}`]:t["cell--editing"]},{[`& .${_["cell--textCenter"]}`]:t["cell--textCenter"]},{[`& .${_["cell--textLeft"]}`]:t["cell--textLeft"]},{[`& .${_["cell--textRight"]}`]:t["cell--textRight"]},{[`& .${_["cell--withRenderer"]}`]:t["cell--withRenderer"]},{[`& .${_.cell}`]:t.cell},{[`& .${_["cell--rangeTop"]}`]:t["cell--rangeTop"]},{[`& .${_["cell--rangeBottom"]}`]:t["cell--rangeBottom"]},{[`& .${_["cell--rangeLeft"]}`]:t["cell--rangeLeft"]},{[`& .${_["cell--rangeRight"]}`]:t["cell--rangeRight"]},{[`& .${_["cell--withRightBorder"]}`]:t["cell--withRightBorder"]},{[`& .${_.cellContent}`]:t.cellContent},{[`& .${_.cellCheckbox}`]:t.cellCheckbox},{[`& .${_.cellSkeleton}`]:t.cellSkeleton},{[`& .${_.checkboxInput}`]:t.checkboxInput},{[`& .${_["columnHeader--alignCenter"]}`]:t["columnHeader--alignCenter"]},{[`& .${_["columnHeader--alignLeft"]}`]:t["columnHeader--alignLeft"]},{[`& .${_["columnHeader--alignRight"]}`]:t["columnHeader--alignRight"]},{[`& .${_["columnHeader--dragging"]}`]:t["columnHeader--dragging"]},{[`& .${_["columnHeader--moving"]}`]:t["columnHeader--moving"]},{[`& .${_["columnHeader--numeric"]}`]:t["columnHeader--numeric"]},{[`& .${_["columnHeader--sortable"]}`]:t["columnHeader--sortable"]},{[`& .${_["columnHeader--sorted"]}`]:t["columnHeader--sorted"]},{[`& .${_["columnHeader--withRightBorder"]}`]:t["columnHeader--withRightBorder"]},{[`& .${_.columnHeader}`]:t.columnHeader},{[`& .${_.headerFilterRow}`]:t.headerFilterRow},{[`& .${_.columnHeaderCheckbox}`]:t.columnHeaderCheckbox},{[`& .${_.columnHeaderDraggableContainer}`]:t.columnHeaderDraggableContainer},{[`& .${_.columnHeaderTitleContainer}`]:t.columnHeaderTitleContainer},{[`& .${_["columnSeparator--resizable"]}`]:t["columnSeparator--resizable"]},{[`& .${_["columnSeparator--resizing"]}`]:t["columnSeparator--resizing"]},{[`& .${_.columnSeparator}`]:t.columnSeparator},{[`& .${_.filterIcon}`]:t.filterIcon},{[`& .${_.iconSeparator}`]:t.iconSeparator},{[`& .${_.menuIcon}`]:t.menuIcon},{[`& .${_.menuIconButton}`]:t.menuIconButton},{[`& .${_.menuOpen}`]:t.menuOpen},{[`& .${_.menuList}`]:t.menuList},{[`& .${_["row--editable"]}`]:t["row--editable"]},{[`& .${_["row--editing"]}`]:t["row--editing"]},{[`& .${_["row--dragging"]}`]:t["row--dragging"]},{[`& .${_.row}`]:t.row},{[`& .${_.rowReorderCellPlaceholder}`]:t.rowReorderCellPlaceholder},{[`& .${_.rowReorderCell}`]:t.rowReorderCell},{[`& .${_["rowReorderCell--draggable"]}`]:t["rowReorderCell--draggable"]},{[`& .${_.sortIcon}`]:t.sortIcon},{[`& .${_.withBorderColor}`]:t.withBorderColor},{[`& .${_.treeDataGroupingCell}`]:t.treeDataGroupingCell},{[`& .${_.treeDataGroupingCellToggle}`]:t.treeDataGroupingCellToggle},{[`& .${_.detailPanelToggleCell}`]:t.detailPanelToggleCell},{[`& .${_["detailPanelToggleCell--expanded"]}`]:t["detailPanelToggleCell--expanded"]},t.root]})(({theme:e})=>{const t=Ff(e),r=e.shape.borderRadius;return m({"--unstable_DataGrid-radius":typeof r=="number"?`${r}px`:r,"--unstable_DataGrid-headWeight":e.typography.fontWeightMedium,"--unstable_DataGrid-overlayBackground":e.vars?`rgba(${e.vars.palette.background.defaultChannel} / ${e.vars.palette.action.disabledOpacity})`:Ct(e.palette.background.default,e.palette.action.disabledOpacity),"--DataGrid-cellOffsetMultiplier":2,flex:1,boxSizing:"border-box",position:"relative",borderWidth:"1px",borderStyle:"solid",borderColor:t,borderRadius:"var(--unstable_DataGrid-radius)",color:(e.vars||e).palette.text.primary},e.typography.body2,{outline:"none",height:"100%",display:"flex",minWidth:0,minHeight:0,flexDirection:"column",overflowAnchor:"none",[`&.${_.autoHeight}`]:{height:"auto",[`& .${_["row--lastVisible"]} .${_.cell}`]:{borderBottomColor:"transparent"}},[`&.${_.autosizing}`]:{[`& .${_.columnHeaderTitleContainerContent} > *`]:{overflow:"visible !important"},[`& .${_.cell} > *`]:{overflow:"visible !important"}},[`& .${_["virtualScrollerContent--overflowed"]} .${_["row--lastVisible"]} .${_.cell}`]:{borderBottomColor:"transparent"},[`& .${_.columnHeader}, & .${_.cell}`]:{WebkitTapHighlightColor:"transparent",lineHeight:null,padding:"0 10px",boxSizing:"border-box"},[`& .${_.columnHeader}:focus-within, & .${_.cell}:focus-within`]:{outline:`solid ${e.vars?`rgba(${e.vars.palette.primary.mainChannel} / 0.5)`:Ct(e.palette.primary.main,.5)} 1px`,outlineWidth:1,outlineOffset:-1},[`& .${_.columnHeader}:focus, & .${_.cell}:focus`]:{outline:`solid ${e.palette.primary.main} 1px`},[`& .${_.columnHeaderCheckbox}, & .${_.cellCheckbox}`]:{padding:0,justifyContent:"center",alignItems:"center"},[`& .${_.columnHeader}`]:{position:"relative",display:"flex",alignItems:"center"},[`& .${_["columnHeader--sorted"]} .${_.iconButtonContainer}, & .${_["columnHeader--filtered"]} .${_.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${_.columnHeader}:not(.${_["columnHeader--sorted"]}) .${_.sortIcon}`]:{opacity:0,transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.shorter})},[`& .${_.columnHeaderTitleContainer}`]:{display:"flex",alignItems:"center",minWidth:0,flex:1,whiteSpace:"nowrap",overflow:"hidden",position:"relative"},[`& .${_.columnHeaderTitleContainerContent}`]:{overflow:"hidden",display:"flex",alignItems:"center"},[`& .${_["columnHeader--filledGroup"]} .${_.columnHeaderTitleContainer}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${_["columnHeader--filledGroup"]}.${_["columnHeader--showColumnBorder"]} .${_.columnHeaderTitleContainer}`]:{borderBottom:"none"},[`& .${_["columnHeader--filledGroup"]}.${_["columnHeader--showColumnBorder"]}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${_.headerFilterRow}`]:{borderTop:`1px solid ${t}`},[`& .${_.sortIcon}, & .${_.filterIcon}`]:{fontSize:"inherit"},[`& .${_["columnHeader--sortable"]}`]:{cursor:"pointer"},[`& .${_["columnHeader--alignCenter"]} .${_.columnHeaderTitleContainer}`]:{justifyContent:"center"},[`& .${_["columnHeader--alignRight"]} .${_.columnHeaderDraggableContainer}, & .${_["columnHeader--alignRight"]} .${_.columnHeaderTitleContainer}`]:{flexDirection:"row-reverse"},[`& .${_["columnHeader--alignCenter"]} .${_.menuIcon}, & .${_["columnHeader--alignRight"]} .${_.menuIcon}`]:{marginRight:"auto",marginLeft:-6},[`& .${_["columnHeader--alignRight"]} .${_.menuIcon}, & .${_["columnHeader--alignRight"]} .${_.menuIcon}`]:{marginRight:"auto",marginLeft:-10},[`& .${_["columnHeader--moving"]}`]:{backgroundColor:(e.vars||e).palette.action.hover},[`& .${_.columnSeparator}`]:{visibility:"hidden",position:"absolute",zIndex:100,display:"flex",flexDirection:"column",justifyContent:"center",color:t},"@media (hover: hover)":{[`& .${_.columnHeaders}:hover`]:_n,[`& .${_.columnHeader}:hover`]:Vn,[`& .${_.columnHeader}:not(.${_["columnHeader--sorted"]}):hover .${_.sortIcon}`]:{opacity:.5}},"@media (hover: none)":{[`& .${_.columnHeaders}`]:_n,[`& .${_.columnHeader}`]:Vn},[`& .${_["columnSeparator--sideLeft"]}`]:{left:-12},[`& .${_["columnSeparator--sideRight"]}`]:{right:-12},[`& .${_["columnSeparator--resizable"]}`]:{cursor:"col-resize",touchAction:"none","&:hover":{color:(e.vars||e).palette.text.primary,"@media (hover: none)":{color:t}},[`&.${_["columnSeparator--resizing"]}`]:{color:(e.vars||e).palette.text.primary},"& svg":{pointerEvents:"none"}},[`& .${_.iconSeparator}`]:{color:"inherit"},[`& .${_.menuIcon}`]:{width:0,visibility:"hidden",fontSize:20,marginRight:-10,display:"flex",alignItems:"center"},[`.${_.menuOpen}`]:{visibility:"visible",width:"auto"},[`& .${_.row}`]:{display:"flex",width:"fit-content",breakInside:"avoid","&:hover, &.Mui-hovered":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},"&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc( - ${e.vars.palette.action.selectedOpacity} + - ${e.vars.palette.action.hoverOpacity} - ))`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`& .${_.cell}`]:{display:"flex",alignItems:"center",borderBottom:"1px solid","&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity+e.palette.action.hoverOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`&.${_["root--disableUserSelection"]} .${_.cell}`]:{userSelect:"none"},[`& .${_.row}:not(.${_["row--dynamicHeight"]}) > .${_.cell}`]:{overflow:"hidden",whiteSpace:"nowrap"},[`& .${_.cellContent}`]:{overflow:"hidden",textOverflow:"ellipsis"},[`& .${_.cell}.${_["cell--selectionMode"]}`]:{cursor:"default"},[`& .${_.cell}.${_["cell--editing"]}`]:{padding:1,display:"flex",boxShadow:e.shadows[2],backgroundColor:(e.vars||e).palette.background.paper,"&:focus-within":{outline:`solid ${(e.vars||e).palette.primary.main} 1px`,outlineOffset:"-1px"}},[`& .${_["row--editing"]}`]:{boxShadow:e.shadows[2]},[`& .${_["row--editing"]} .${_.cell}`]:{boxShadow:e.shadows[0],backgroundColor:(e.vars||e).palette.background.paper},[`& .${_.editBooleanCell}`]:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},[`& .${_.booleanCell}[data-value="true"]`]:{color:(e.vars||e).palette.text.secondary},[`& .${_.booleanCell}[data-value="false"]`]:{color:(e.vars||e).palette.text.disabled},[`& .${_.actionsCell}`]:{display:"inline-flex",alignItems:"center",gridGap:e.spacing(1)},[`& .${_.rowReorderCell}`]:{display:"inline-flex",flex:1,alignItems:"center",justifyContent:"center",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${_["rowReorderCell--draggable"]}`]:{cursor:"move",opacity:1},[`& .${_.rowReorderCellContainer}`]:{padding:0,alignItems:"stretch"},[`.${_.withBorderColor}`]:{borderColor:t},[`& .${_["cell--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${_["columnHeader--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${_["cell--textLeft"]}`]:{justifyContent:"flex-start"},[`& .${_["cell--textRight"]}`]:{justifyContent:"flex-end"},[`& .${_["cell--textCenter"]}`]:{justifyContent:"center"},[`& .${_.columnHeaderDraggableContainer}`]:{display:"flex",width:"100%",height:"100%"},[`& .${_.rowReorderCellPlaceholder}`]:{display:"none"},[`& .${_["columnHeader--dragging"]}, & .${_["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${_["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity,[`& .${_.rowReorderCellPlaceholder}`]:{display:"flex"}},[`& .${_.treeDataGroupingCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${_.treeDataGroupingCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)},[`& .${_.groupingCriteriaCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${_.groupingCriteriaCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)}})}),If=["children","className"],Mf=e=>{const{autoHeight:t,density:r,classes:o}=e,l={root:["root",t&&"autoHeight",`root--density${Dt(r)}`,"withBorderColor"]};return we(l,Ce,o)},di=a.forwardRef(function(t,r){var o;const l=J(),{children:n,className:i}=t,c=Z(t,If),d=At(),u=K(d,Ll),s=a.useRef(null),f=Pt(s,r),p=(o=l.experimentalFeatures)!=null&&o.ariaV7?null:Ea,b=typeof p=="function"?p():null,g=m({},l,{density:u}),h=Mf(g);d.current.register("public",{rootElementRef:s});const[v,S]=a.useState(!1);return Qe(()=>{S(!0)},[]),v?O.jsx(yf,m({ref:f,className:Pe(i,h.root),ownerState:g},b,c,{children:n})):null}),kf=["className"],Ef=e=>{const{classes:t}=e;return we({root:["footerContainer","withBorderColor"]},Ce,t)},Lf=_e("div",{name:"MuiDataGrid",slot:"FooterContainer",overridesResolver:(e,t)=>t.footerContainer})({display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:52,borderTop:"1px solid"}),fi=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,kf),n=J(),i=Ef(n);return O.jsx(Lf,m({ref:r,className:Pe(i.root,o),ownerState:n},l))}),Tf=["className"],Df=e=>{const{classes:t}=e;return we({root:["overlay"]},Ce,t)},$f=_e("div",{name:"MuiDataGrid",slot:"Overlay",overridesResolver:(e,t)=>t.overlay})({width:"100%",height:"100%",display:"flex",alignSelf:"center",alignItems:"center",justifyContent:"center",backgroundColor:"var(--unstable_DataGrid-overlayBackground)"}),yo=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Tf),n=J(),i=Df(n);return O.jsx($f,m({ref:r,className:Pe(i.root,o),ownerState:n},l))}),Rf=["className","children"],Af=e=>{const{classes:t}=e;return we({root:["toolbarContainer"]},Ce,t)},Hf=_e("div",{name:"MuiDataGrid",slot:"ToolbarContainer",overridesResolver:(e,t)=>t.toolbarContainer})(({theme:e})=>({display:"flex",alignItems:"center",flexWrap:"wrap",gap:e.spacing(1),padding:e.spacing(.5,.5,0)})),pi=a.forwardRef(function(t,r){const{className:o,children:l}=t,n=Z(t,Rf),i=J(),c=Af(i);return l?O.jsx(Hf,m({ref:r,className:Pe(o,c.root),ownerState:i},n,{children:l})):null}),_f=["className"],Vf=e=>{const{classes:t}=e;return we({root:["iconButtonContainer"]},Ce,t)},Gf=_e("div",{name:"MuiDataGrid",slot:"IconButtonContainer",overridesResolver:(e,t)=>t.iconButtonContainer})(()=>({display:"flex",visibility:"hidden",width:0})),gi=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,_f),n=J(),i=Vf(n);return O.jsx(Gf,m({ref:r,className:Pe(i.root,o),ownerState:n},l))}),Nf=e=>{const{classes:t}=e;return we({icon:["sortIcon"]},Ce,t)};function zf(e,t,r,o){let l;const n={};return t==="asc"?l=e.columnSortedAscendingIcon:t==="desc"?l=e.columnSortedDescendingIcon:(l=e.columnUnsortedIcon,n.sortingOrder=o),l?O.jsx(l,m({fontSize:"small",className:r},n)):null}function jf(e){var t;const{direction:r,index:o,sortingOrder:l}=e,n=fe(),i=J(),c=m({},e,{classes:i.classes}),d=Nf(c),u=zf(i.slots,r,d.icon,l);if(!u)return null;const s=O.jsx(i.slots.baseIconButton,m({tabIndex:-1,"aria-label":n.current.getLocaleText("columnHeaderSortIconLabel"),title:n.current.getLocaleText("columnHeaderSortIconLabel"),size:"small"},(t=i.slotProps)==null?void 0:t.baseIconButton,{children:u}));return O.jsxs(gi,{children:[o!=null&&O.jsx(gl,{badgeContent:o,color:"default",children:s}),o==null&&s]})}const mi=a.memo(jf),Bf=e=>{const{classes:t,open:r}=e;return we({root:["menuIcon",r&&"menuOpen"],button:["menuIconButton"]},Ce,t)},Uf=a.memo(e=>{var t,r;const{colDef:o,open:l,columnMenuId:n,columnMenuButtonId:i,iconButtonRef:c}=e,d=fe(),u=J(),s=m({},e,{classes:u.classes}),f=Bf(s),p=a.useCallback(b=>{b.preventDefault(),b.stopPropagation(),d.current.toggleColumnMenu(o.field)},[d,o.field]);return O.jsx("div",{className:f.root,children:O.jsx(u.slots.baseTooltip,m({title:d.current.getLocaleText("columnMenuLabel"),enterDelay:1e3},(t=u.slotProps)==null?void 0:t.baseTooltip,{children:O.jsx(u.slots.baseIconButton,m({ref:c,tabIndex:-1,className:f.button,"aria-label":d.current.getLocaleText("columnMenuLabel"),size:"small",onClick:p,"aria-haspopup":"menu","aria-expanded":l,"aria-controls":l?n:void 0,id:i},(r=u.slotProps)==null?void 0:r.baseIconButton,{children:O.jsx(u.slots.columnMenuIcon,{fontSize:"small"})}))}))})});function bi({columnMenuId:e,columnMenuButtonId:t,ContentComponent:r,contentComponentProps:o,field:l,open:n,target:i,onExited:c}){const d=fe(),u=d.current.getColumn(l),s=ft(f=>{f&&(f.stopPropagation(),i!=null&&i.contains(f.target))||d.current.hideColumnMenu()});return!i||!u?null:O.jsx(Ar,{placement:`bottom-${u.align==="right"?"start":"end"}`,open:n,target:i,onClose:s,onExited:c,children:O.jsx(r,m({colDef:u,hideMenu:s,open:n,id:e,labelledby:t},o))})}const qf=["className"],Wf=e=>{const{classes:t}=e;return we({root:["columnHeaderTitle"]},Ce,t)},Kf=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaderTitle",overridesResolver:(e,t)=>t.columnHeaderTitle})({textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",fontWeight:"var(--unstable_DataGrid-headWeight)"}),Qf=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,qf),n=J(),i=Wf(n);return O.jsx(Kf,m({ref:r,className:Pe(i.root,o),ownerState:n},l))});function hi(e){var t;const{label:r,description:o}=e,l=J(),n=a.useRef(null),[i,c]=a.useState(""),d=a.useCallback(()=>{if(!o&&n!=null&&n.current){const u=Rd(n.current);c(u?r:"")}},[o,r]);return O.jsx(l.slots.baseTooltip,m({title:o||i},(t=l.slotProps)==null?void 0:t.baseTooltip,{children:O.jsx(Qf,{onMouseOver:d,ref:n,children:r})}))}const Zf=["resizable","resizing","height","side"];var Hl=function(e){return e.Left="left",e.Right="right",e}(Hl||{});const Jf=e=>{const{resizable:t,resizing:r,classes:o,side:l}=e,n={root:["columnSeparator",t&&"columnSeparator--resizable",r&&"columnSeparator--resizing",l&&`columnSeparator--side${Dt(l)}`],icon:["iconSeparator"]};return we(n,Ce,o)};function Yf(e){const{height:t,side:r=Hl.Right}=e,o=Z(e,Zf),l=J(),n=m({},e,{side:r,classes:l.classes}),i=Jf(n),c=a.useCallback(d=>{d.preventDefault(),d.stopPropagation()},[]);return O.jsx("div",m({className:i.root,style:{minHeight:t,opacity:l.showColumnVerticalBorder?0:1}},o,{onClick:c,children:O.jsx(l.slots.columnResizeIcon,{className:i.icon})}))}const Ci=a.memo(Yf),Xf=["classes","columnMenuOpen","colIndex","height","isResizing","sortDirection","hasFocus","tabIndex","separatorSide","isDraggable","headerComponent","description","elementId","width","columnMenuIconButton","columnMenu","columnTitleIconButtons","headerClassName","label","resizable","draggableContainerProps","columnHeaderSeparatorProps"],wi=a.forwardRef(function(t,r){const{classes:o,columnMenuOpen:l,colIndex:n,height:i,isResizing:c,sortDirection:d,hasFocus:u,tabIndex:s,separatorSide:f,isDraggable:p,headerComponent:b,description:g,width:h,columnMenuIconButton:v=null,columnMenu:S=null,columnTitleIconButtons:w=null,headerClassName:L,label:R,resizable:V,draggableContainerProps:F,columnHeaderSeparatorProps:I}=t,y=Z(t,Xf),H=At(),T=J(),x=a.useRef(null),[A,E]=a.useState(l),C=Pt(x,r);let P="none";return d!=null&&(P=d==="asc"?"ascending":"descending"),a.useEffect(()=>{A||E(l)},[A,l]),a.useLayoutEffect(()=>{const k=H.current.state.columnMenu;if(u&&!k.open){const M=x.current.querySelector('[tabindex="0"]')||x.current;M==null||M.focus(),H.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[H,u]),O.jsxs("div",m({ref:C,className:Pe(o.root,L),style:{height:i,width:h,minWidth:h,maxWidth:h},role:"columnheader",tabIndex:s,"aria-colindex":n+1,"aria-sort":P,"aria-label":b==null?R:void 0},y,{children:[O.jsxs("div",m({className:o.draggableContainer,draggable:p,role:"presentation"},F,{children:[O.jsxs("div",{className:o.titleContainer,role:"presentation",children:[O.jsx("div",{className:o.titleContainerContent,children:b!==void 0?b:O.jsx(hi,{label:R,description:g,columnWidth:h})}),w]}),v]})),O.jsx(Ci,m({resizable:!T.disableColumnResize&&!!V,resizing:c,height:i,side:f},I)),S]}))}),ep=e=>{const{colDef:t,classes:r,isDragging:o,sortDirection:l,showRightBorder:n,filterItemsCounter:i}=e,c=l!=null,d=i!=null&&i>0,u=t.type==="number",s={root:["columnHeader",t.headerAlign==="left"&&"columnHeader--alignLeft",t.headerAlign==="center"&&"columnHeader--alignCenter",t.headerAlign==="right"&&"columnHeader--alignRight",t.sortable&&"columnHeader--sortable",o&&"columnHeader--moving",c&&"columnHeader--sorted",d&&"columnHeader--filtered",u&&"columnHeader--numeric","withBorderColor",n&&"columnHeader--withRightBorder"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer"],titleContainerContent:["columnHeaderTitleContainerContent"]};return we(s,Ce,r)};function Si(e){var t,r,o,l;const{colDef:n,columnMenuOpen:i,colIndex:c,headerHeight:d,isResizing:u,sortDirection:s,sortIndex:f,filterItemsCounter:p,hasFocus:b,tabIndex:g,disableReorder:h,separatorSide:v}=e,S=At(),w=J(),L=a.useRef(null),R=Ee(),V=Ee(),F=a.useRef(null),[I,y]=a.useState(i),H=a.useMemo(()=>!w.disableColumnReorder&&!h&&!n.disableReorder,[w.disableColumnReorder,h,n.disableReorder]);let T;n.renderHeader&&(T=n.renderHeader(S.current.getColumnHeaderParams(n.field)));const x=m({},e,{classes:w.classes,showRightBorder:w.showColumnVerticalBorder}),A=ep(x),E=a.useCallback(B=>Q=>{Q.currentTarget.contains(Q.target)&&S.current.publishEvent(B,S.current.getColumnHeaderParams(n.field),Q)},[S,n.field]),C=a.useMemo(()=>({onClick:E("columnHeaderClick"),onDoubleClick:E("columnHeaderDoubleClick"),onMouseOver:E("columnHeaderOver"),onMouseOut:E("columnHeaderOut"),onMouseEnter:E("columnHeaderEnter"),onMouseLeave:E("columnHeaderLeave"),onKeyDown:E("columnHeaderKeyDown"),onFocus:E("columnHeaderFocus"),onBlur:E("columnHeaderBlur")}),[E]),P=a.useMemo(()=>H?{onDragStart:E("columnHeaderDragStart"),onDragEnter:E("columnHeaderDragEnter"),onDragOver:E("columnHeaderDragOver"),onDragEnd:E("columnHeaderDragEnd")}:{},[H,E]),k=a.useMemo(()=>({onMouseDown:E("columnSeparatorMouseDown"),onDoubleClick:E("columnSeparatorDoubleClick")}),[E]);a.useEffect(()=>{I||y(i)},[I,i]);const D=a.useCallback(()=>{y(!1)},[]),M=!w.disableColumnMenu&&!n.disableColumnMenu&&O.jsx(Uf,{colDef:n,columnMenuId:R,columnMenuButtonId:V,open:I,iconButtonRef:F}),$=O.jsx(bi,{columnMenuId:R,columnMenuButtonId:V,field:n.field,open:i,target:F.current,ContentComponent:w.slots.columnMenu,contentComponentProps:(t=w.slotProps)==null?void 0:t.columnMenu,onExited:D}),G=(r=n.sortingOrder)!=null?r:w.sortingOrder,j=O.jsxs(a.Fragment,{children:[!w.disableColumnFilter&&O.jsx(w.slots.columnHeaderFilterIconButton,m({field:n.field,counter:p},(o=w.slotProps)==null?void 0:o.columnHeaderFilterIconButton)),n.sortable&&!n.hideSortIcons&&O.jsx(mi,{direction:s,index:f,sortingOrder:G})]});a.useLayoutEffect(()=>{const B=S.current.state.columnMenu;if(b&&!B.open){const X=L.current.querySelector('[tabindex="0"]')||L.current;X==null||X.focus(),S.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[S,b]);const z=typeof n.headerClassName=="function"?n.headerClassName({field:n.field,colDef:n}):n.headerClassName,q=(l=n.headerName)!=null?l:n.field;return O.jsx(wi,m({ref:L,classes:A,columnMenuOpen:i,colIndex:c,height:d,isResizing:u,sortDirection:s,hasFocus:b,tabIndex:g,separatorSide:v,isDraggable:H,headerComponent:T,description:n.description,elementId:n.field,width:n.computedWidth,columnMenuIconButton:M,columnTitleIconButtons:j,headerClassName:z,label:q,resizable:!w.disableColumnResize&&!!n.resizable,"data-field":n.field,columnMenu:$,draggableContainerProps:P,columnHeaderSeparatorProps:k},C))}const ir=()=>({items:[],logicOperator:Ke.And,quickFilterValues:[],quickFilterLogicOperator:Ke.And}),Gn=1e3;class tp{constructor(t=Gn){this.timeouts=new Map,this.cleanupTimeout=Gn,this.cleanupTimeout=t}register(t,r,o){this.timeouts||(this.timeouts=new Map);const l=setTimeout(()=>{typeof r=="function"&&r(),this.timeouts.delete(o.cleanupToken)},this.cleanupTimeout);this.timeouts.set(o.cleanupToken,l)}unregister(t){const r=this.timeouts.get(t.cleanupToken);r&&(this.timeouts.delete(t.cleanupToken),clearTimeout(r))}reset(){this.timeouts&&(this.timeouts.forEach((t,r)=>{this.unregister({cleanupToken:r})}),this.timeouts=void 0)}}class rp{constructor(){this.registry=new FinalizationRegistry(t=>{typeof t=="function"&&t()})}register(t,r,o){this.registry.register(t,r,o)}unregister(t){this.registry.unregister(t)}reset(){}}var gt=function(e){return e.DataGrid="DataGrid",e.DataGridPro="DataGridPro",e}(gt||{});class op{}function Pi(e){let t=0;return function(o,l,n,i){e.registry===null&&(e.registry=typeof FinalizationRegistry<"u"?new rp:new tp);const[c]=a.useState(new op),d=a.useRef(null),u=a.useRef();u.current=n;const s=a.useRef(null);if(!d.current&&u.current){const f=(p,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=u.current)==null||h.call(u,p,b,g)}};d.current=o.current.subscribeEvent(l,f,i),t+=1,s.current={cleanupToken:t},e.registry.register(c,()=>{var p;(p=d.current)==null||p.call(d),d.current=null,s.current=null},s.current)}else!u.current&&d.current&&(d.current(),d.current=null,s.current&&(e.registry.unregister(s.current),s.current=null));a.useEffect(()=>{if(!d.current&&u.current){const f=(p,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=u.current)==null||h.call(u,p,b,g)}};d.current=o.current.subscribeEvent(l,f,i)}return s.current&&e.registry&&(e.registry.unregister(s.current),s.current=null),()=>{var f;(f=d.current)==null||f.call(d),d.current=null}},[o,l,i])}}const qo={registry:null},lp=()=>{var e;(e=qo.registry)==null||e.reset(),qo.registry=null},re=Pi(qo),np={isFirst:!0};function ke(e,t,r){re(e,t,r,np)}function je(e,t){const r=a.useRef(null);if(r.current)return r.current;const o=e.current.getLogger(t);return r.current=o,o}function ap(e){return typeof e=="number"&&!Number.isNaN(e)}function xi(e){return typeof e=="function"}function _l(e){return typeof e=="object"&&e!==null}function ip(){try{const e="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}function to(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}const sr=(e,t,r)=>Math.max(t,Math.min(r,e));function It(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const l=e.length;if(l!==t.length)return!1;for(let n=0;n{let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function up(e,t,r){const o=sp(e);return()=>t+(r-t)*o()}function vi(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}const Oi=(e,t,r,o,l)=>{const n=je(e,"useNativeEventListener"),[i,c]=a.useState(!1),d=a.useRef(o),u=a.useCallback(s=>d.current&&d.current(s),[]);a.useEffect(()=>{d.current=o},[o]),a.useEffect(()=>{let s;if(xi(t)?s=t():s=t&&t.current?t.current:null,s&&r&&!i){n.debug(`Binding native ${r} event`),s.addEventListener(r,u,l);const f=s;c(!0);const p=()=>{n.debug(`Clearing native ${r} event`),f.removeEventListener(r,u,l)};e.current.subscribeEvent("unmount",p)}},[t,u,r,i,n,l,e])},pr=e=>{const t=a.useRef(!0);t.current&&(t.current=!1,e())},cp=100,dp=e=>e?0:100,Fi=(e,t)=>t>0&&e>0?Math.ceil(e/t):0;xt(["MUI: the 'rowCount' prop is undefined while using paginationMode='server'","For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation"],"error");const yi=e=>({page:0,pageSize:e?0:100}),fp=(e,t=0)=>t===0?e:Math.max(Math.min(e,t-1),0),Ii=(e,t)=>{if(t===gt.DataGrid&&e>cp)throw new Error(["MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`))},Vl=e=>e.pagination,ot=pe(Vl,e=>e.paginationModel),Mi=pe(ot,e=>e.page),ki=pe(ot,e=>e.pageSize),pp=pe(ot,Dr,(e,t)=>Fi(t,e.pageSize)),Io=Te(ot,at,Tr,Mt,Il,(e,t,r,o,l)=>{const n=l.length,i=Math.min(e.pageSize*e.page,n-1),c=Math.min(i+e.pageSize-1,n-1);if(i===-1||c===-1)return null;if(r<2)return{firstRowIndex:i,lastRowIndex:c};const d=l[i],u=c-i+1,s=o.findIndex(g=>g.id===d.id);let f=s,p=0;for(;f0)&&(f+=1),h===0&&(p+=1))}return{firstRowIndex:s,lastRowIndex:f-1}}),Ei=Te(Mt,Io,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),Gl=Te(lr,Io,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),$t=e=>e.preferencePanel;var ut=function(e){return e.filters="filters",e.columns="columns",e}(ut||{});const ur=e=>e.rowsMeta,rt=e=>e.rowSelection,Li=pe(rt,e=>e.length),Ti=Te(rt,yt,(e,t)=>new Map(e.map(r=>[r,t[r]]))),vr=Te(rt,e=>e.reduce((t,r)=>(t[r]=r,t),{})),gp=xt(["MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),Di=(e,t)=>t&&e.length>1?(gp(),[e[0]]):e,Nn=(e,t)=>r=>m({},r,{sorting:m({},r.sorting,{sortModel:Di(e,t)})}),mp=e=>e==="desc",bp=(e,t)=>{const r=t.current.getColumn(e.field);if(!r)return null;const o=mp(e.sort)?(...n)=>-1*r.sortComparator(...n):r.sortComparator;return{getSortCellParams:n=>({id:n,field:r.field,rowNode:t.current.getRowNode(n),value:t.current.getCellValue(n,r.field),api:t.current}),comparator:o}},hp=(e,t,r)=>e.reduce((o,l,n)=>{if(o!==0)return o;const i=t.params[n],c=r.params[n];return o=l.comparator(i.value,c.value,i,c),o},0),Cp=(e,t)=>{const r=e.map(o=>bp(o,t)).filter(o=>!!o);return r.length===0?null:o=>o.map(l=>({node:l,params:r.map(n=>n.getSortCellParams(l.id))})).sort((l,n)=>hp(r,l,n)).map(l=>l.node.id)},zn=(e,t)=>{const r=e.indexOf(t);return!t||r===-1||r+1===e.length?e[0]:e[r+1]},Nl=(e,t)=>e==null&&t!=null?-1:t==null&&e!=null?1:e==null&&t==null?0:null,wp=new Intl.Collator,$i=(e,t)=>{const r=Nl(e,t);return r!==null?r:typeof e=="string"?wp.compare(e.toString(),t.toString()):e-t},zl=(e,t)=>{const r=Nl(e,t);return r!==null?r:Number(e)-Number(t)},jl=(e,t)=>{const r=Nl(e,t);return r!==null?r:e>t?1:ee.headerFiltering,Ri=pe(Bl,e=>e.editing),Ai=pe(Bl,e=>e.menuOpen),Hi=(e,t)=>{const r={enabled:!t.disableVirtualization,enabledForColumns:!0};return m({},e,{virtualization:r})};function _i(e,t){const r=n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabled:n})}))};be(e,{unstable_setVirtualization:r,unstable_setColumnVirtualization:n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabledForColumns:n})}))}},"public"),a.useEffect(()=>{r(!t.disableVirtualization)},[t.disableVirtualization])}const Ul=e=>e.virtualization,Vi=pe(Ul,e=>e.enabled),ql=pe(Ul,e=>e.enabledForColumns),Sp=e=>{const{classes:t}=e;return we({icon:["filterIcon"]},Ce,t)};function Gi(e){var t,r;const{counter:o,field:l,onClick:n}=e,i=fe(),c=J(),d=m({},e,{classes:c.classes}),u=Sp(d),s=K(i,$t),f=Ee(),p=Ee(),b=a.useCallback(v=>{v.preventDefault(),v.stopPropagation();const{open:S,openedPanelValue:w}=$t(i.current.state);S&&w===ut.filters?i.current.hideFilterPanel():i.current.showFilterPanel(void 0,p,f),n&&n(i.current.getColumnHeaderParams(l),v)},[i,l,n,p,f]);if(!o)return null;const g=s.open&&s.labelId===f,h=O.jsx(c.slots.baseIconButton,m({id:f,onClick:b,color:"default","aria-label":i.current.getLocaleText("columnHeaderFiltersLabel"),size:"small",tabIndex:-1,"aria-haspopup":"menu","aria-expanded":g,"aria-controls":g?p:void 0},(t=c.slotProps)==null?void 0:t.baseIconButton,{children:O.jsx(c.slots.columnFilteredIcon,{className:u.icon,fontSize:"small"})}));return O.jsx(c.slots.baseTooltip,m({title:i.current.getLocaleText("columnHeaderFiltersTooltipActive")(o),enterDelay:1e3},(r=c.slotProps)==null?void 0:r.baseTooltip,{children:O.jsxs(gi,{children:[o>1&&O.jsx(gl,{badgeContent:o,color:"default",children:h}),o===1&&h]})}))}const Pp=["field","id","value","formattedValue","row","rowNode","colDef","isEditable","cellMode","hasFocus","tabIndex","api"],xp=e=>{const{classes:t}=e;return we({root:["checkboxInput"]},Ce,t)},Ni=a.forwardRef(function(t,r){var o;const{field:l,id:n,value:i,rowNode:c,hasFocus:d,tabIndex:u}=t,s=Z(t,Pp),f=fe(),p=J(),b={classes:p.classes},g=xp(b),h=a.useRef(null),v=a.useRef(null),S=Pt(h,r),w=f.current.getCellElement(n,l),L=I=>{const y={value:I.target.checked,id:n};f.current.publishEvent("rowSelectionCheckboxChange",y,I)};a.useLayoutEffect(()=>{u===0&&w&&(w.tabIndex=-1)},[w,u]),a.useEffect(()=>{if(d){var I;const y=(I=h.current)==null?void 0:I.querySelector("input");y==null||y.focus({preventScroll:!0})}else v.current&&v.current.stop({})},[d]);const R=a.useCallback(I=>{li(I.key)&&I.stopPropagation()},[]);if(c.type==="footer"||c.type==="pinnedRow")return null;const V=f.current.isRowSelectable(n),F=f.current.getLocaleText(i?"checkboxSelectionUnselectRow":"checkboxSelectionSelectRow");return O.jsx(p.slots.baseCheckbox,m({ref:S,tabIndex:u,checked:i,onChange:L,className:g.root,inputProps:{"aria-label":F},onKeyDown:R,disabled:!V,touchRippleRef:v},(o=p.slotProps)==null?void 0:o.baseCheckbox,s))}),zi=Ni,vp=["field","colDef"],Op=e=>{const{classes:t}=e;return we({root:["checkboxInput"]},Ce,t)},ji=a.forwardRef(function(t,r){var o;const l=Z(t,vp),[,n]=a.useState(!1),i=fe(),c=J(),d={classes:c.classes},u=Op(d),s=K(i,El),f=K(i,rt),p=K(i,lr),b=K(i,Gl),g=a.useMemo(()=>typeof c.isRowSelectable!="function"?f:f.filter(y=>i.current.getRow(y)?c.isRowSelectable(i.current.getRowParams(y)):!1),[i,c.isRowSelectable,f]),h=a.useMemo(()=>(!c.pagination||!c.checkboxSelectionVisibleOnly?p:b).reduce((H,T)=>(H[T]=!0,H),{}),[c.pagination,c.checkboxSelectionVisibleOnly,b,p]),v=a.useMemo(()=>g.filter(y=>h[y]).length,[g,h]),S=v>0&&v0,L=y=>{const H={value:y.target.checked};i.current.publishEvent("headerSelectionCheckboxChange",H)},R=s!==null&&s.field===t.field?0:-1;a.useLayoutEffect(()=>{const y=i.current.getColumnHeaderElement(t.field);R===0&&y&&(y.tabIndex=-1)},[R,i,t.field]);const V=a.useCallback(y=>{y.key===" "&&i.current.publishEvent("headerSelectionCheckboxChange",{value:!w})},[i,w]),F=a.useCallback(()=>{n(y=>!y)},[]);a.useEffect(()=>i.current.subscribeEvent("rowSelectionChange",F),[i,F]);const I=i.current.getLocaleText(w?"checkboxSelectionUnselectAllRows":"checkboxSelectionSelectAllRows");return O.jsx(c.slots.baseCheckbox,m({ref:r,indeterminate:S,checked:w,onChange:L,className:u.root,inputProps:{"aria-label":I},tabIndex:R,onKeyDown:V},(o=c.slotProps)==null?void 0:o.baseCheckbox,l))}),Wo=Ie(O.jsx("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"}),"ArrowUpward"),Ko=Ie(O.jsx("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"}),"ArrowDownward"),Qo=Ie(O.jsx("path",{d:"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"KeyboardArrowRight"),Zo=Ie(O.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),Bi=Ie(O.jsx("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList"),Jo=Ie(O.jsx("path",{d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z"}),"FilterAlt"),Ui=Ie(O.jsx("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search"),Fp=Ie(O.jsx("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu"),yp=Ie(O.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle"),qi=Ie(O.jsx("path",{d:"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"}),"ColumnIcon"),Wi=Ie(O.jsx("path",{d:"M11 19V5h2v14z"}),"Separator"),Ki=Ie(O.jsx("path",{d:"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"}),"ViewHeadline"),Qi=Ie(O.jsx("path",{d:"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z"}),"TableRows"),Zi=Ie(O.jsx("path",{d:"M4 18h17v-6H4v6zM4 5v6h17V5H4z"}),"ViewStream"),Ji=Ie(O.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"TripleDotsVertical"),ro=Ie(O.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),Yo=Ie(O.jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add"),Yi=Ie(O.jsx("path",{d:"M19 13H5v-2h14v2z"}),"Remove"),Xi=Ie(O.jsx("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}),"Load"),Xo=Ie(O.jsx("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"Drag"),es=Ie(O.jsx("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ts=Ie(O.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check"),rs=Ie(O.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert"),os=Ie(O.jsx("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff"),ls=Ie(O.jsx("g",{children:O.jsx("path",{d:"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z"})}),"ViewColumn"),ns=Ie(O.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear"),Ip=Ie(O.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),as=Ie(O.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),Mp=["hideMenu","colDef","id","labelledby","className","children","open"],kp=De(mo)(()=>({minWidth:248})),is=a.forwardRef(function(t,r){const{hideMenu:o,id:l,labelledby:n,className:i,children:c,open:d}=t,u=Z(t,Mp),s=a.useCallback(f=>{Fo(f.key)&&f.preventDefault(),Al(f.key)&&o(f)},[o]);return O.jsx(kp,m({id:l,ref:r,className:Pe(_.menuList,i),"aria-labelledby":n,onKeyDown:s,autoFocus:d},u,{children:c}))}),Ep=["displayOrder"],Lp=e=>{const t=At(),{defaultSlots:r,defaultSlotProps:o,slots:l={},slotProps:n={},hideMenu:i,colDef:c,addDividers:d=!0}=e,u=a.useMemo(()=>m({},r,l),[r,l]),s=a.useMemo(()=>{if(!n||Object.keys(n).length===0)return o;const b=m({},n);return Object.entries(o).forEach(([g,h])=>{b[g]=m({},h,n[g]||{})}),b},[o,n]),f=t.current.unstable_applyPipeProcessors("columnMenu",[],e.colDef),p=a.useMemo(()=>{const b=Object.keys(r);return Object.keys(l).filter(g=>!b.includes(g))},[l,r]);return a.useMemo(()=>{const h=Array.from(new Set([...f,...p])).filter(v=>u[v]!=null).sort((v,S)=>{const w=s[v],L=s[S],R=Number.isFinite(w==null?void 0:w.displayOrder)?w.displayOrder:100,V=Number.isFinite(L==null?void 0:L.displayOrder)?L.displayOrder:100;return R-V});return h.reduce((v,S,w)=>{let L={colDef:c,onClick:i};const R=s[S];if(R){const V=Z(R,Ep);L=m({},L,V)}return d&&w!==h.length-1?[...v,[u[S],L],[Hu,{}]]:[...v,[u[S],L]]},[])},[d,c,f,i,u,s,p])};function ss(e){const{colDef:t,onClick:r}=e,o=fe(),l=J(),c=He(o).filter(u=>u.disableColumnMenu!==!0).length===1,d=a.useCallback(u=>{c||(o.current.setColumnVisibility(t.field,!1),r(u))},[o,t.field,r,c]);return l.disableColumnSelector||t.hideable===!1?null:O.jsxs(dt,{onClick:d,disabled:c,children:[O.jsx(Tt,{children:O.jsx(l.slots.columnMenuHideIcon,{fontSize:"small"})}),O.jsx(or,{children:o.current.getLocaleText("columnMenuHideColumn")})]})}function us(e){const{onClick:t}=e,r=fe(),o=J(),l=a.useCallback(n=>{t(n),r.current.showPreferences(ut.columns)},[r,t]);return o.disableColumnSelector?null:O.jsxs(dt,{onClick:l,children:[O.jsx(Tt,{children:O.jsx(o.slots.columnMenuManageColumnsIcon,{fontSize:"small"})}),O.jsx(or,{children:r.current.getLocaleText("columnMenuManageColumns")})]})}function cs(e){return O.jsxs(a.Fragment,{children:[O.jsx(ss,m({},e)),O.jsx(us,m({},e))]})}function ds(e){const{colDef:t,onClick:r}=e,o=fe(),l=J(),n=a.useCallback(i=>{r(i),o.current.showFilterPanel(t.field)},[o,t.field,r]);return l.disableColumnFilter||!t.filterable?null:O.jsxs(dt,{onClick:n,children:[O.jsx(Tt,{children:O.jsx(l.slots.columnMenuFilterIcon,{fontSize:"small"})}),O.jsx(or,{children:o.current.getLocaleText("columnMenuFilter")})]})}function fs(e){var t;const{colDef:r,onClick:o}=e,l=fe(),n=K(l,tt),i=J(),c=a.useMemo(()=>{if(!r)return null;const s=n.find(f=>f.field===r.field);return s==null?void 0:s.sort},[r,n]),d=(t=r.sortingOrder)!=null?t:i.sortingOrder,u=a.useCallback(s=>{o(s);const f=s.currentTarget.getAttribute("data-value")||null;l.current.sortColumn(r,f===c?null:f)},[l,r,o,c]);return!r||!r.sortable||!d.some(s=>!!s)?null:O.jsxs(a.Fragment,{children:[d.includes("asc")&&c!=="asc"?O.jsxs(dt,{onClick:u,"data-value":"asc",children:[O.jsx(Tt,{children:O.jsx(i.slots.columnMenuSortAscendingIcon,{fontSize:"small"})}),O.jsx(or,{children:l.current.getLocaleText("columnMenuSortAsc")})]}):null,d.includes("desc")&&c!=="desc"?O.jsxs(dt,{onClick:u,"data-value":"desc",children:[O.jsx(Tt,{children:O.jsx(i.slots.columnMenuSortDescendingIcon,{fontSize:"small"})}),O.jsx(or,{children:l.current.getLocaleText("columnMenuSortDesc")})]}):null,d.includes(null)&&c!=null?O.jsxs(dt,{onClick:u,children:[O.jsx(Tt,{}),O.jsx(or,{children:l.current.getLocaleText("columnMenuUnsort")})]}):null]})}const Tp=["defaultSlots","defaultSlotProps","slots","slotProps"],ps={columnMenuSortItem:fs,columnMenuFilterItem:ds,columnMenuColumnsItem:cs},gs={columnMenuSortItem:{displayOrder:10},columnMenuFilterItem:{displayOrder:20},columnMenuColumnsItem:{displayOrder:30}},ms=a.forwardRef(function(t,r){const{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}=t,c=Z(t,Tp),d=Lp(m({},c,{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}));return O.jsx(is,m({ref:r},c,{children:d.map(([u,s],f)=>O.jsx(u,m({},s),f))}))}),bs=a.forwardRef(function(t,r){return O.jsx(ms,m({},t,{ref:r,defaultSlots:ps,defaultSlotProps:gs}))}),Dp=["className"],$p=e=>{const{classes:t}=e;return we({root:["panelContent"]},Ce,t)},Rp=_e("div",{name:"MuiDataGrid",slot:"PanelContent",overridesResolver:(e,t)=>t.panelContent})({display:"flex",flexDirection:"column",overflow:"auto",flex:"1 1",maxHeight:400});function Wl(e){const{className:t}=e,r=Z(e,Dp),o=J(),l=$p(o);return O.jsx(Rp,m({className:Pe(t,l.root),ownerState:o},r))}const Ap=["className"],Hp=e=>{const{classes:t}=e;return we({root:["panelFooter"]},Ce,t)},_p=_e("div",{name:"MuiDataGrid",slot:"PanelFooter",overridesResolver:(e,t)=>t.panelFooter})(({theme:e})=>({padding:e.spacing(.5),display:"flex",justifyContent:"space-between"}));function Kl(e){const{className:t}=e,r=Z(e,Ap),o=J(),l=Hp(o);return O.jsx(_p,m({className:Pe(t,l.root),ownerState:o},r))}const Vp=["className"],Gp=e=>{const{classes:t}=e;return we({root:["panelHeader"]},Ce,t)},Np=_e("div",{name:"MuiDataGrid",slot:"PanelHeader",overridesResolver:(e,t)=>t.panelHeader})(({theme:e})=>({padding:e.spacing(1)}));function hs(e){const{className:t}=e,r=Z(e,Vp),o=J(),l=Gp(o);return O.jsx(Np,m({className:Pe(t,l.root),ownerState:o},r))}const zp=["className","slotProps"],jp=e=>{const{classes:t}=e;return we({root:["panelWrapper"]},Ce,t)},Bp=De("div",{name:"MuiDataGrid",slot:"PanelWrapper",overridesResolver:(e,t)=>t.panelWrapper})({display:"flex",flexDirection:"column",flex:1,"&:focus":{outline:0}}),Up=()=>!0,Ql=a.forwardRef(function(t,r){const{className:o,slotProps:l={}}=t,n=Z(t,zp),i=J(),c=jp(i);return O.jsx(_u,m({open:!0,disableEnforceFocus:!0,isEnabled:Up},l.TrapFocus,{children:O.jsx(Bp,m({ref:r,tabIndex:-1,className:Pe(o,c.root),ownerState:i},n))}))}),Cs=!1,qp=["sort","searchPredicate","autoFocusSearchField","disableHideAllButton","disableShowAllButton","getTogglableColumns"],Wp=e=>{const{classes:t}=e;return we({root:["columnsPanel"],columnsPanelRow:["columnsPanelRow"]},Ce,t)},Kp=De("div",{name:"MuiDataGrid",slot:"ColumnsPanel",overridesResolver:(e,t)=>t.columnsPanel})({padding:"8px 0px 8px 8px"}),Qp=De("div",{name:"MuiDataGrid",slot:"ColumnsPanelRow",overridesResolver:(e,t)=>t.columnsPanelRow})(({theme:e})=>({display:"flex",justifyContent:"space-between",padding:"1px 8px 1px 7px",[`& .${Vu.root}`]:{marginRight:e.spacing(.5)}})),Zp=De(ma)({justifyContent:"flex-end"}),jn=new Intl.Collator,Jp=(e,t)=>(e.headerName||e.field).toLowerCase().indexOf(t)>-1;function ws(e){var t,r,o;const l=fe(),n=a.useRef(null),i=K(l,pt),c=K(l,it),d=J(),[u,s]=a.useState(""),f=Wp(d),{sort:p,searchPredicate:b=Jp,autoFocusSearchField:g=!0,disableHideAllButton:h=!1,disableShowAllButton:v=!1,getTogglableColumns:S}=e,w=Z(e,qp),L=a.useMemo(()=>{switch(p){case"asc":return[...i].sort((x,A)=>jn.compare(x.headerName||x.field,A.headerName||A.field));case"desc":return[...i].sort((x,A)=>-jn.compare(x.headerName||x.field,A.headerName||A.field));default:return i}},[i,p]),R=x=>{const{name:A}=x.target;l.current.setColumnVisibility(A,c[A]===!1)},V=a.useCallback(x=>{const A=it(l),E=m({},A),C=S?S(i):null;return i.forEach(P=>{P.hideable&&(C==null||C.includes(P.field))&&(x?delete E[P.field]:E[P.field]=!1)}),l.current.setColumnVisibilityModel(E)},[l,i,S]),F=a.useCallback(x=>{s(x.target.value)},[]),I=a.useMemo(()=>{const x=S?S(L):null,A=x?L.filter(({field:E})=>x.includes(E)):L;return u?A.filter(E=>b(E,u.toLowerCase())):A},[L,u,b,S]),y=a.useRef(null);a.useEffect(()=>{g?n.current.focus():y.current&&typeof y.current.focus=="function"&&y.current.focus()},[g]);let H=!1;const T=x=>H===!1&&x.hideable!==!1?(H=!0,!0):!1;return O.jsxs(Ql,m({},w,{children:[O.jsx(hs,{children:O.jsx(d.slots.baseTextField,m({label:l.current.getLocaleText("columnsPanelTextFieldLabel"),placeholder:l.current.getLocaleText("columnsPanelTextFieldPlaceholder"),inputRef:n,value:u,onChange:F,variant:"standard",fullWidth:!0},(t=d.slotProps)==null?void 0:t.baseTextField))}),O.jsx(Wl,{children:O.jsx(Kp,{className:f.root,ownerState:d,children:I.map(x=>{var A;return O.jsxs(Qp,{className:f.columnsPanelRow,ownerState:d,children:[O.jsx(Gu,{control:O.jsx(d.slots.baseSwitch,m({disabled:x.hideable===!1,checked:c[x.field]!==!1,onClick:R,name:x.field,size:"small",inputRef:T(x)?y:void 0},(A=d.slotProps)==null?void 0:A.baseSwitch)),label:x.headerName||x.field}),!d.disableColumnReorder&&Cs&&O.jsx(Zp,{draggable:!0,"aria-label":l.current.getLocaleText("columnsPanelDragIconLabel"),title:l.current.getLocaleText("columnsPanelDragIconLabel"),size:"small",disabled:!0,children:O.jsx(d.slots.columnReorderIcon,{})})]},x.field)})})}),v&&h?null:O.jsxs(Kl,{children:[h?O.jsx("span",{}):O.jsx(d.slots.baseButton,m({onClick:()=>V(!1)},(r=d.slotProps)==null?void 0:r.baseButton,{disabled:h,children:l.current.getLocaleText("columnsPanelHideAllButton")})),v?null:O.jsx(d.slots.baseButton,m({onClick:()=>V(!0)},(o=d.slotProps)==null?void 0:o.baseButton,{disabled:v,children:l.current.getLocaleText("columnsPanelShowAllButton")}))]})]}))}const Yp=["children","className","classes"],Ss=da("MuiDataGrid",["panel","paper"]),Xp=De(pl,{name:"MuiDataGrid",slot:"Panel",overridesResolver:(e,t)=>t.panel})(({theme:e})=>({zIndex:e.zIndex.modal})),eg=De(ga,{name:"MuiDataGrid",slot:"Paper",overridesResolver:(e,t)=>t.paper})(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,minWidth:300,maxHeight:450,display:"flex"})),Ps=a.forwardRef((e,t)=>{const{children:r,className:o}=e,l=Z(e,Yp),n=fe(),i=J(),c=Ss,[d,u]=a.useState(!1),s=a.useCallback(()=>{n.current.hidePreferences()},[n]),f=a.useCallback(h=>{so(h.key)&&n.current.hidePreferences()},[n]),p=a.useMemo(()=>[{name:"flip",enabled:!1},{name:"isPlaced",enabled:!0,phase:"main",fn:()=>{u(!0)},effect:()=>()=>{u(!1)}}],[]),[b,g]=a.useState(null);return a.useEffect(()=>{var h;const v=(h=n.current.rootElementRef)==null||(h=h.current)==null?void 0:h.querySelector(`.${_.columnHeaders}`);v&&g(v)},[n]),b?O.jsx(Xp,m({ref:t,placement:"bottom-start",className:Pe(o,c.panel),ownerState:i,anchorEl:b,modifiers:p},l,{children:O.jsx(pa,{mouseEvent:"onMouseUp",onClickAway:s,children:O.jsx(eg,{className:c.paper,ownerState:i,elevation:8,onKeyDown:f,children:d&&r})})})):null}),xs=a.forwardRef(function(t,r){var o,l,n;const i=fe(),c=K(i,pt),d=J(),u=K(i,$t),s=i.current.unstable_applyPipeProcessors("preferencePanel",null,(o=u.openedPanelValue)!=null?o:ut.filters);return O.jsx(d.slots.panel,m({ref:r,as:d.slots.basePopper,open:c.length>0&&u.open,id:u.panelId,"aria-labelledby":u.labelId},(l=d.slotProps)==null?void 0:l.panel,t,(n=d.slotProps)==null?void 0:n.basePopper,{children:s}))}),tg=["item","hasMultipleFilters","deleteFilter","applyFilterChanges","multiFilterOperator","showMultiFilterOperators","disableMultiFilterOperator","applyMultiFilterOperatorChanges","focusElementRef","logicOperators","columnsSort","filterColumns","deleteIconProps","logicOperatorInputProps","operatorInputProps","columnInputProps","valueInputProps","children"],rg=["InputComponentProps"],og=e=>{const{classes:t}=e;return we({root:["filterForm"],deleteIcon:["filterFormDeleteIcon"],logicOperatorInput:["filterFormLogicOperatorInput"],columnInput:["filterFormColumnInput"],operatorInput:["filterFormOperatorInput"],valueInput:["filterFormValueInput"]},Ce,t)},lg=De("div",{name:"MuiDataGrid",slot:"FilterForm",overridesResolver:(e,t)=>t.filterForm})(({theme:e})=>({display:"flex",padding:e.spacing(1)})),ng=De("div",{name:"MuiDataGrid",slot:"FilterFormDeleteIcon",overridesResolver:(e,t)=>t.filterFormDeleteIcon})(({theme:e})=>({flexShrink:0,justifyContent:"flex-end",marginRight:e.spacing(.5),marginBottom:e.spacing(.2)})),ag=De("div",{name:"MuiDataGrid",slot:"FilterFormLogicOperatorInput",overridesResolver:(e,t)=>t.filterFormLogicOperatorInput})({minWidth:55,marginRight:5,justifyContent:"end"}),ig=De("div",{name:"MuiDataGrid",slot:"FilterFormColumnInput",overridesResolver:(e,t)=>t.filterFormColumnInput})({width:150}),sg=De("div",{name:"MuiDataGrid",slot:"FilterFormOperatorInput",overridesResolver:(e,t)=>t.filterFormOperatorInput})({width:120}),ug=De("div",{name:"MuiDataGrid",slot:"FilterFormValueInput",overridesResolver:(e,t)=>t.filterFormValueInput})({width:190}),cg=e=>{switch(e){case Ke.And:return"filterPanelOperatorAnd";case Ke.Or:return"filterPanelOperatorOr";default:throw new Error("MUI: Invalid `logicOperator` property in the `GridFilterPanel`.")}},br=e=>e.headerName||e.field,Bn=new Intl.Collator,vs=a.forwardRef(function(t,r){var o,l,n,i,c,d,u,s,f,p;const{item:b,hasMultipleFilters:g,deleteFilter:h,applyFilterChanges:v,multiFilterOperator:S,showMultiFilterOperators:w,disableMultiFilterOperator:L,applyMultiFilterOperatorChanges:R,focusElementRef:V,logicOperators:F=[Ke.And,Ke.Or],columnsSort:I,filterColumns:y,deleteIconProps:H={},logicOperatorInputProps:T={},operatorInputProps:x={},columnInputProps:A={},valueInputProps:E={}}=t,C=Z(t,tg),P=fe(),k=K(P,vl),D=K(P,Ae),M=Ee(),$=Ee(),G=Ee(),j=Ee(),z=J(),q=og(z),B=a.useRef(null),Q=a.useRef(null),X=g&&F.length>0,le=((o=z.slotProps)==null?void 0:o.baseFormControl)||{},xe=(n=(((l=z.slotProps)==null?void 0:l.baseSelect)||{}).native)!=null?n:!0,de=((i=z.slotProps)==null?void 0:i.baseInputLabel)||{},oe=((c=z.slotProps)==null?void 0:c.baseSelectOption)||{},{InputComponentProps:he}=E,Se=Z(E,rg),ce=a.useMemo(()=>{if(y===void 0||typeof y!="function")return k;const te=y({field:b.field,columns:k,currentFilters:(D==null?void 0:D.items)||[]});return k.filter(ee=>te.includes(ee.field))},[y,D==null?void 0:D.items,k,b.field]),ge=a.useMemo(()=>{switch(I){case"asc":return ce.sort((te,ee)=>Bn.compare(br(te),br(ee)));case"desc":return ce.sort((te,ee)=>-Bn.compare(br(te),br(ee)));default:return ce}},[ce,I]),U=b.field?P.current.getColumn(b.field):null,W=a.useMemo(()=>{var te;return!b.operator||!U?null:(te=U.filterOperators)==null?void 0:te.find(ee=>ee.value===b.operator)},[b,U]),ne=a.useCallback(te=>{const ee=te.target.value,ue=P.current.getColumn(ee);if(ue.field===U.field)return;const se=ue.filterOperators.find(Le=>Le.value===b.operator)||ue.filterOperators[0],ve=!se.InputComponent||se.InputComponent!==(W==null?void 0:W.InputComponent);v(m({},b,{field:ee,operator:se.value,value:ve?void 0:b.value}))},[P,v,b,U,W]),me=a.useCallback(te=>{const ee=te.target.value,ue=U==null?void 0:U.filterOperators.find(ve=>ve.value===ee),se=!(ue!=null&&ue.InputComponent)||(ue==null?void 0:ue.InputComponent)!==(W==null?void 0:W.InputComponent);v(m({},b,{operator:ee,value:se?void 0:b.value}))},[v,b,U,W]),ae=a.useCallback(te=>{const ee=te.target.value===Ke.And.toString()?Ke.And:Ke.Or;R(ee)},[R]),ie=()=>{z.disableMultipleColumnsFiltering?b.value===void 0?h(b):v(m({},b,{value:void 0})):h(b)};return a.useImperativeHandle(V,()=>({focus:()=>{if(W!=null&&W.InputComponent){var te;B==null||(te=B.current)==null||te.focus()}else Q.current.focus()}}),[W]),O.jsxs(lg,m({ref:r,className:q.root,"data-id":b.id,ownerState:z},C,{children:[O.jsx(ng,m({variant:"standard",as:z.slots.baseFormControl},le,H,{className:Pe(q.deleteIcon,le.className,H.className),ownerState:z,children:O.jsx(z.slots.baseIconButton,m({"aria-label":P.current.getLocaleText("filterPanelDeleteIconLabel"),title:P.current.getLocaleText("filterPanelDeleteIconLabel"),onClick:ie,size:"small"},(d=z.slotProps)==null?void 0:d.baseIconButton,{children:O.jsx(z.slots.filterPanelDeleteIcon,{fontSize:"small"})}))})),O.jsx(ag,m({variant:"standard",as:z.slots.baseFormControl},le,T,{sx:m({display:X?"flex":"none",visibility:w?"visible":"hidden"},le.sx||{},T.sx||{}),className:Pe(q.logicOperatorInput,le.className,T.className),ownerState:z,children:O.jsx(z.slots.baseSelect,m({inputProps:{"aria-label":P.current.getLocaleText("filterPanelLogicOperator")},value:S,onChange:ae,disabled:!!L||F.length===1,native:xe},(u=z.slotProps)==null?void 0:u.baseSelect,{children:F.map(te=>a.createElement(z.slots.baseSelectOption,m({},oe,{native:xe,key:te.toString(),value:te.toString()}),P.current.getLocaleText(cg(te))))}))})),O.jsxs(ig,m({variant:"standard",as:z.slots.baseFormControl},le,A,{className:Pe(q.columnInput,le.className,A.className),ownerState:z,children:[O.jsx(z.slots.baseInputLabel,m({},de,{htmlFor:M,id:$,children:P.current.getLocaleText("filterPanelColumns")})),O.jsx(z.slots.baseSelect,m({labelId:$,id:M,label:P.current.getLocaleText("filterPanelColumns"),value:b.field||"",onChange:ne,native:xe},(s=z.slotProps)==null?void 0:s.baseSelect,{children:ge.map(te=>a.createElement(z.slots.baseSelectOption,m({},oe,{native:xe,key:te.field,value:te.field}),br(te)))}))]})),O.jsxs(sg,m({variant:"standard",as:z.slots.baseFormControl},le,x,{className:Pe(q.operatorInput,le.className,x.className),ownerState:z,children:[O.jsx(z.slots.baseInputLabel,m({},de,{htmlFor:G,id:j,children:P.current.getLocaleText("filterPanelOperator")})),O.jsx(z.slots.baseSelect,m({labelId:j,label:P.current.getLocaleText("filterPanelOperator"),id:G,value:b.operator,onChange:me,native:xe,inputRef:Q},(f=z.slotProps)==null?void 0:f.baseSelect,{children:U==null||(p=U.filterOperators)==null?void 0:p.map(te=>a.createElement(z.slots.baseSelectOption,m({},oe,{native:xe,key:te.value,value:te.value}),te.label||P.current.getLocaleText(`filterOperator${Dt(te.value)}`)))}))]})),O.jsx(ug,m({variant:"standard",as:z.slots.baseFormControl},le,Se,{className:Pe(q.valueInput,le.className,Se.className),ownerState:z,children:W!=null&&W.InputComponent?O.jsx(W.InputComponent,m({apiRef:P,item:b,applyValue:v,focusElementRef:B},W.InputComponentProps,he)):null}))]}))});class Zl{constructor(){this.currentId=0,this.clear=()=>{this.currentId!==0&&(clearTimeout(this.currentId),this.currentId=0)},this.disposeEffect=()=>this.clear}static create(){return new Zl}start(t,r){this.clear(),this.currentId=setTimeout(r,t)}}function Jl(){const e=Pl(Zl.create).current;return xa(e.disposeEffect),e}const dg=["item","applyValue","type","apiRef","focusElementRef","tabIndex","disabled","isFilterActive","clearButton","InputProps"];function ct(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:c,tabIndex:d,disabled:u,clearButton:s,InputProps:f}=e,p=Z(e,dg),b=Jl(),[g,h]=a.useState((t=o.value)!=null?t:""),[v,S]=a.useState(!1),w=Ee(),L=J(),R=a.useCallback(V=>{const{value:F}=V.target;h(String(F)),S(!0),b.start(L.filterDebounceMs,()=>{const I=m({},o,{value:F,fromInput:w});l(I),S(!1)})},[w,l,o,L.filterDebounceMs,b]);return a.useEffect(()=>{if(o.fromInput!==w){var F;h(String((F=o.value)!=null?F:""))}},[w,o]),O.jsx(L.slots.baseTextField,m({id:w,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:g,onChange:R,variant:"standard",type:n||"text",InputProps:m({},v||s?{endAdornment:v?O.jsx(L.slots.loadIcon,{fontSize:"small",color:"action"}):s}:{},{disabled:u},f,{inputProps:m({tabIndex:d},f==null?void 0:f.inputProps)}),InputLabelProps:{shrink:!0},inputRef:c},p,(r=L.slotProps)==null?void 0:r.baseTextField))}const fg=["item","applyValue","type","apiRef","focusElementRef","InputProps","isFilterActive","clearButton","tabIndex","disabled"];function Nt(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:c,InputProps:d,clearButton:u,tabIndex:s,disabled:f}=e,p=Z(e,fg),b=Jl(),[g,h]=a.useState((t=o.value)!=null?t:""),[v,S]=a.useState(!1),w=Ee(),L=J(),R=a.useCallback(V=>{const F=V.target.value;h(String(F)),S(!0),b.start(L.filterDebounceMs,()=>{l(m({},o,{value:F})),S(!1)})},[l,o,L.filterDebounceMs,b]);return a.useEffect(()=>{var V;const F=(V=o.value)!=null?V:"";h(String(F))},[o.value]),O.jsx(L.slots.baseTextField,m({fullWidth:!0,id:w,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:g,onChange:R,variant:"standard",type:n||"text",InputLabelProps:{shrink:!0},inputRef:c,InputProps:m({},v||u?{endAdornment:v?O.jsx(L.slots.loadIcon,{fontSize:"small",color:"action"}):u}:{},{disabled:f},d,{inputProps:m({max:n==="datetime-local"?"9999-12-31T23:59":"9999-12-31",tabIndex:s},d==null?void 0:d.inputProps)})},p,(r=L.slotProps)==null?void 0:r.baseTextField))}const pg=["item","applyValue","type","apiRef","focusElementRef","getOptionLabel","getOptionValue","placeholder","tabIndex","label","isFilterActive","clearButton","InputLabelProps"],gg=({column:{valueOptions:e,field:t},OptionComponent:r,getOptionLabel:o,getOptionValue:l,isSelectNative:n,baseSelectOptionProps:i})=>(typeof e=="function"?["",...e({field:t})]:["",...e||[]]).map(d=>{const u=l(d),s=o(d);return a.createElement(r,m({},i,{native:n,key:u,value:u}),s)}),mg=De("div")({display:"flex",alignItems:"flex-end",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function el(e){var t,r,o,l,n,i,c,d;const{item:u,applyValue:s,type:f,apiRef:p,focusElementRef:b,getOptionLabel:g,getOptionValue:h,placeholder:v,tabIndex:S,label:w,clearButton:L}=e,R=Z(e,pg),[V,F]=a.useState((t=u.value)!=null?t:""),I=Ee(),y=Ee(),H=J(),T=(r=(o=H.slotProps)==null||(o=o.baseSelect)==null?void 0:o.native)!=null?r:!0;let x=null;if(u.field){const D=p.current.getColumn(u.field);jt(D)&&(x=D)}const A=h||((l=x)==null?void 0:l.getOptionValue),E=g||((n=x)==null?void 0:n.getOptionLabel),C=a.useMemo(()=>{if(x)return typeof x.valueOptions=="function"?x.valueOptions({field:x.field}):x.valueOptions},[x]),P=a.useCallback(D=>{let M=D.target.value;M=Uo(M,C,A),F(String(M)),s(m({},u,{value:M}))},[C,A,s,u]);if(a.useEffect(()=>{var D;let M;if(C!==void 0){if(M=Uo(u.value,C,A),M!==u.value){s(m({},u,{value:M}));return}}else M=u.value;M=(D=M)!=null?D:"",F(String(M))},[u,C,s,A]),!jt(x)||!jt(x))return null;const k=w??p.current.getLocaleText("filterPanelInputLabel");return O.jsxs(mg,{children:[O.jsxs(H.slots.baseFormControl,{children:[O.jsx(H.slots.baseInputLabel,m({},(i=H.slotProps)==null?void 0:i.baseInputLabel,{id:y,htmlFor:I,shrink:!0,variant:"standard",children:k})),O.jsx(H.slots.baseSelect,m({id:I,label:k,labelId:y,value:V,onChange:P,variant:"standard",type:f||"text",inputProps:{tabIndex:S,ref:b,placeholder:v??p.current.getLocaleText("filterPanelInputPlaceholder")},native:T},R,(c=H.slotProps)==null?void 0:c.baseSelect,{children:gg({column:x,OptionComponent:H.slots.baseSelectOption,getOptionLabel:E,getOptionValue:A,isSelectNative:T,baseSelectOptionProps:(d=H.slotProps)==null?void 0:d.baseSelectOption})}))]}),L]})}const bg=["item","applyValue","apiRef","focusElementRef","isFilterActive","clearButton","tabIndex","label","InputLabelProps"],hg=De("div")({display:"flex",alignItems:"center",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function Os(e){var t,r,o,l;const{item:n,applyValue:i,apiRef:c,focusElementRef:d,clearButton:u,tabIndex:s,label:f}=e,p=Z(e,bg),[b,g]=a.useState(n.value||""),h=J(),v=Ee(),S=Ee(),w=((t=h.slotProps)==null?void 0:t.baseSelect)||{},L=(r=w.native)!=null?r:!0,R=((o=h.slotProps)==null?void 0:o.baseSelectOption)||{},V=a.useCallback(I=>{const y=I.target.value;g(y),i(m({},n,{value:y}))},[i,n]);a.useEffect(()=>{g(n.value||"")},[n.value]);const F=f??c.current.getLocaleText("filterPanelInputLabel");return O.jsxs(hg,{children:[O.jsxs(h.slots.baseFormControl,{fullWidth:!0,children:[O.jsx(h.slots.baseInputLabel,m({},(l=h.slotProps)==null?void 0:l.baseInputLabel,{id:v,shrink:!0,variant:"standard",children:F})),O.jsxs(h.slots.baseSelect,m({labelId:v,id:S,label:F,value:b,onChange:V,variant:"standard",native:L,displayEmpty:!0,inputProps:{ref:d,tabIndex:s}},p,w,{children:[O.jsx(h.slots.baseSelectOption,m({},R,{native:L,value:"",children:c.current.getLocaleText("filterValueAny")})),O.jsx(h.slots.baseSelectOption,m({},R,{native:L,value:"true",children:c.current.getLocaleText("filterValueTrue")})),O.jsx(h.slots.baseSelectOption,m({},R,{native:L,value:"false",children:c.current.getLocaleText("filterValueFalse")}))]}))]}),u]})}const Cg=["logicOperators","columnsSort","filterFormProps","getColumnForNewFilter","children","disableAddFilterButton","disableRemoveAllButton"],Un=e=>({field:e.field,operator:e.filterOperators[0].value,id:Math.round(Math.random()*1e5)}),Fs=a.forwardRef(function(t,r){var o,l;const n=fe(),i=J(),c=K(n,Ae),d=K(n,vl),u=a.useRef(null),s=a.useRef(null),{logicOperators:f=[Ke.And,Ke.Or],columnsSort:p,filterFormProps:b,getColumnForNewFilter:g,disableAddFilterButton:h=!1,disableRemoveAllButton:v=!1}=t,S=Z(t,Cg),w=n.current.upsertFilterItem,L=a.useCallback(x=>{n.current.setFilterLogicOperator(x)},[n]),R=a.useCallback(()=>{let x;if(g&&typeof g=="function"){const A=g({currentFilters:(c==null?void 0:c.items)||[],columns:d});if(A===null)return null;x=d.find(({field:E})=>E===A)}else x=d.find(A=>{var E;return(E=A.filterOperators)==null?void 0:E.length});return x?Un(x):null},[c==null?void 0:c.items,d,g]),V=a.useCallback(()=>{if(g===void 0||typeof g!="function")return R();const x=c.items.length?c.items:[R()].filter(Boolean),A=g({currentFilters:x,columns:d});if(A===null)return null;const E=d.find(({field:C})=>C===A);return E?Un(E):null},[c.items,d,g,R]),F=a.useMemo(()=>c.items.length?c.items:(s.current||(s.current=R()),s.current?[s.current]:[]),[c.items,R]),I=F.length>1,y=()=>{const x=V();x&&n.current.upsertFilterItems([...F,x])},H=a.useCallback(x=>{const A=F.length===1;n.current.deleteFilterItem(x),A&&n.current.hideFilterPanel()},[n,F.length]),T=()=>{F.length===1&&F[0].value===void 0&&(n.current.deleteFilterItem(F[0]),n.current.hideFilterPanel()),n.current.setFilterModel(m({},c,{items:[]}))};return a.useEffect(()=>{f.length>0&&c.logicOperator&&!f.includes(c.logicOperator)&&L(f[0])},[f,L,c.logicOperator]),a.useEffect(()=>{F.length>0&&u.current.focus()},[F.length]),O.jsxs(Ql,m({ref:r},S,{children:[O.jsx(Wl,{children:F.map((x,A)=>O.jsx(vs,m({item:x,applyFilterChanges:w,deleteFilter:H,hasMultipleFilters:I,showMultiFilterOperators:A>0,multiFilterOperator:c.logicOperator,disableMultiFilterOperator:A!==1,applyMultiFilterOperatorChanges:L,focusElementRef:A===F.length-1?u:null,logicOperators:f,columnsSort:p},b),x.id==null?A:x.id))}),!i.disableMultipleColumnsFiltering&&!(h&&v)?O.jsxs(Kl,{children:[h?O.jsx("span",{}):O.jsx(i.slots.baseButton,m({onClick:y,startIcon:O.jsx(i.slots.filterPanelAddIcon,{})},(o=i.slotProps)==null?void 0:o.baseButton,{children:n.current.getLocaleText("filterPanelAddFilter")})),v?null:O.jsx(i.slots.baseButton,m({onClick:T,startIcon:O.jsx(i.slots.filterPanelRemoveAllIcon,{})},(l=i.slotProps)==null?void 0:l.baseButton,{children:n.current.getLocaleText("filterPanelRemoveAll")}))]}):null]}))}),wg=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant"];function Yl(e){const{item:t,applyValue:r,type:o,apiRef:l,focusElementRef:n,color:i,error:c,helperText:d,size:u,variant:s}=e,f=Z(e,wg),p={color:i,error:c,helperText:d,size:u,variant:s},[b,g]=a.useState(t.value||[]),h=Ee(),v=J();a.useEffect(()=>{var w;const L=(w=t.value)!=null?w:[];g(L.map(String))},[t.value]);const S=a.useCallback((w,L)=>{g(L.map(String)),r(m({},t,{value:[...L]}))},[r,t]);return O.jsx(ba,m({multiple:!0,freeSolo:!0,options:[],filterOptions:(w,L)=>{const{inputValue:R}=L;return R==null||R===""?[]:[R]},id:h,value:b,onChange:S,renderTags:(w,L)=>w.map((R,V)=>O.jsx(v.slots.baseChip,m({variant:"outlined",size:"small",label:R},L({index:V})))),renderInput:w=>{var L;return O.jsx(v.slots.baseTextField,m({},w,{label:l.current.getLocaleText("filterPanelInputLabel"),placeholder:l.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},w.InputLabelProps,{shrink:!0}),inputRef:n,type:o||"text"},p,(L=v.slotProps)==null?void 0:L.baseTextField))}},f))}const Sg=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant","getOptionLabel","getOptionValue"],Pg=Nu();function ys(e){var t,r;const{item:o,applyValue:l,apiRef:n,focusElementRef:i,color:c,error:d,helperText:u,size:s,variant:f="standard",getOptionLabel:p,getOptionValue:b}=e,g=Z(e,Sg),h={color:c,error:d,helperText:u,size:s,variant:f},v=Ee(),S=J();let w=null;if(o.field){const T=n.current.getColumn(o.field);jt(T)&&(w=T)}const L=b||((t=w)==null?void 0:t.getOptionValue),R=p||((r=w)==null?void 0:r.getOptionLabel),V=a.useCallback((T,x)=>L(T)===L(x),[L]),F=a.useMemo(()=>{var T;return(T=w)!=null&&T.valueOptions?typeof w.valueOptions=="function"?w.valueOptions({field:w.field}):w.valueOptions:[]},[w]),I=a.useMemo(()=>F==null?void 0:F.map(L),[F,L]),y=a.useMemo(()=>Array.isArray(o.value)?F!==void 0?o.value.map(x=>I==null?void 0:I.findIndex(A=>A===x)).filter(x=>x>=0).map(x=>F[x]):o.value:[],[o.value,F,I]);a.useEffect(()=>{(!Array.isArray(o.value)||y.length!==o.value.length)&&l(m({},o,{value:y.map(L)}))},[o,y,l,L]);const H=a.useCallback((T,x)=>{l(m({},o,{value:x.map(L)}))},[l,o,L]);return O.jsx(ba,m({multiple:!0,options:F,isOptionEqualToValue:V,filterOptions:Pg,id:v,value:y,onChange:H,getOptionLabel:R,renderTags:(T,x)=>T.map((A,E)=>O.jsx(S.slots.baseChip,m({variant:"outlined",size:"small",label:R(A)},x({index:E})))),renderInput:T=>{var x;return O.jsx(S.slots.baseTextField,m({},T,{label:n.current.getLocaleText("filterPanelInputLabel"),placeholder:n.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},T.InputLabelProps,{shrink:!0}),inputRef:i,type:"singleSelect"},h,(x=S.slotProps)==null?void 0:x.baseTextField))}},g))}const xg=["onClick"],Is=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=Z(t,xg),i=Pn(),c=Pn(),d=fe(),u=J(),s=K(d,$t),f=b=>{s.open&&s.openedPanelValue===ut.columns?d.current.hidePreferences():d.current.showPreferences(ut.columns,c,i),l==null||l(b)};if(u.disableColumnSelector)return null;const p=s.open&&s.panelId===c;return O.jsx(u.slots.baseButton,m({ref:r,id:i,size:"small","aria-label":d.current.getLocaleText("toolbarColumnsLabel"),"aria-haspopup":"menu","aria-expanded":p,"aria-controls":p?c:void 0,startIcon:O.jsx(u.slots.columnSelectorIcon,{})},n,{onClick:f},(o=u.slotProps)==null?void 0:o.baseButton,{children:d.current.getLocaleText("toolbarColumns")}))}),vg=["onClick"],Ms=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=Z(t,vg),i=fe(),c=J(),d=K(i,Ll),u=Ee(),s=Ee(),[f,p]=a.useState(!1),b=a.useRef(null),g=Pt(r,b),h=[{icon:O.jsx(c.slots.densityCompactIcon,{}),label:i.current.getLocaleText("toolbarDensityCompact"),value:"compact"},{icon:O.jsx(c.slots.densityStandardIcon,{}),label:i.current.getLocaleText("toolbarDensityStandard"),value:"standard"},{icon:O.jsx(c.slots.densityComfortableIcon,{}),label:i.current.getLocaleText("toolbarDensityComfortable"),value:"comfortable"}],v=a.useMemo(()=>{switch(d){case"compact":return O.jsx(c.slots.densityCompactIcon,{});case"comfortable":return O.jsx(c.slots.densityComfortableIcon,{});default:return O.jsx(c.slots.densityStandardIcon,{})}},[d,c]),S=F=>{p(I=>!I),l==null||l(F)},w=()=>{p(!1)},L=F=>{i.current.setDensity(F),p(!1)},R=F=>{Fo(F.key)&&F.preventDefault(),Al(F.key)&&p(!1)};if(c.disableDensitySelector)return null;const V=h.map((F,I)=>O.jsxs(dt,{onClick:()=>L(F.value),selected:F.value===d,children:[O.jsx(Tt,{children:F.icon}),F.label]},I));return O.jsxs(a.Fragment,{children:[O.jsx(c.slots.baseButton,m({ref:g,size:"small",startIcon:v,"aria-label":i.current.getLocaleText("toolbarDensityLabel"),"aria-haspopup":"menu","aria-expanded":f,"aria-controls":f?s:void 0,id:u},n,{onClick:S},(o=c.slotProps)==null?void 0:o.baseButton,{children:i.current.getLocaleText("toolbarDensity")})),O.jsx(Ar,{open:f,target:b.current,onClose:w,position:"bottom-start",children:O.jsx(mo,{id:s,className:_.menuList,"aria-labelledby":u,onKeyDown:R,autoFocusItem:f,children:V})})]})}),Og=["componentsProps"],Fg=e=>{const{classes:t}=e;return we({root:["toolbarFilterList"]},Ce,t)},yg=De("ul",{name:"MuiDataGrid",slot:"ToolbarFilterList",overridesResolver:(e,t)=>t.toolbarFilterList})(({theme:e})=>({margin:e.spacing(1,1,.5),padding:e.spacing(0,1)})),ks=a.forwardRef(function(t,r){var o,l;const{componentsProps:n={}}=t,i=Z(t,Og),c=n.button||{},d=fe(),u=J(),s=K(d,kl),f=K(d,Ht),p=K(d,$t),b=Fg(u),g=Ee(),h=Ee(),v=a.useMemo(()=>{if(p.open)return d.current.getLocaleText("toolbarFiltersTooltipHide");if(s.length===0)return d.current.getLocaleText("toolbarFiltersTooltipShow");const L=V=>f[V.field].filterOperators.find(F=>F.value===V.operator).label||d.current.getLocaleText(`filterOperator${Dt(V.operator)}`).toString(),R=V=>{const{getValueAsString:F}=f[V.field].filterOperators.find(I=>I.value===V.operator);return F?F(V.value):V.value};return O.jsxs("div",{children:[d.current.getLocaleText("toolbarFiltersTooltipActive")(s.length),O.jsx(yg,{className:b.root,ownerState:u,children:s.map((V,F)=>m({},f[V.field]&&O.jsx("li",{children:`${f[V.field].headerName||V.field} - ${L(V)} - ${V.value!=null?R(V):""}`},F)))})]})},[d,u,p.open,s,f,b]),S=L=>{var R;const{open:V,openedPanelValue:F}=p;V&&F===ut.filters?d.current.hidePreferences():d.current.showPreferences(ut.filters,h,g),(R=c.onClick)==null||R.call(c,L)};if(u.disableColumnFilter)return null;const w=p.open&&p.panelId===h;return O.jsx(u.slots.baseTooltip,m({title:v,enterDelay:1e3},i,(o=u.slotProps)==null?void 0:o.baseTooltip,{children:O.jsx(u.slots.baseButton,m({ref:r,id:g,size:"small","aria-label":d.current.getLocaleText("toolbarFiltersLabel"),"aria-controls":w?h:void 0,"aria-expanded":w,"aria-haspopup":!0,startIcon:O.jsx(gl,{badgeContent:s.length,color:"primary",children:O.jsx(u.slots.openFilterButtonIcon,{})})},c,{onClick:S},(l=u.slotProps)==null?void 0:l.baseButton,{children:d.current.getLocaleText("toolbarFilters")}))}))}),Ig=["children","onClick"],Es=a.forwardRef(function(t,r){var o;const{children:l,onClick:n}=t,i=Z(t,Ig),c=fe(),d=J(),u=Ee(),s=Ee(),[f,p]=a.useState(!1),b=a.useRef(null),g=Pt(r,b),h=w=>{p(L=>!L),n==null||n(w)},v=()=>p(!1),S=w=>{Fo(w.key)&&w.preventDefault(),Al(w.key)&&v()};return l==null?null:O.jsxs(a.Fragment,{children:[O.jsx(d.slots.baseButton,m({ref:g,size:"small",startIcon:O.jsx(d.slots.exportIcon,{}),"aria-expanded":f,"aria-label":c.current.getLocaleText("toolbarExportLabel"),"aria-haspopup":"menu","aria-controls":f?s:void 0,id:u},i,{onClick:h},(o=d.slotProps)==null?void 0:o.baseButton,{children:c.current.getLocaleText("toolbarExport")})),O.jsx(Ar,{open:f,target:b.current,onClose:v,position:"bottom-start",children:O.jsx(mo,{id:s,className:_.menuList,"aria-labelledby":u,onKeyDown:S,autoFocusItem:f,children:a.Children.map(l,w=>a.isValidElement(w)?a.cloneElement(w,{hideMenu:v}):w)})})]})}),Mg=["hideMenu","options"],kg=["hideMenu","options"],Eg=["csvOptions","printOptions","excelOptions"];function Ls(e){const t=fe(),{hideMenu:r,options:o}=e,l=Z(e,Mg);return O.jsx(dt,m({onClick:()=>{t.current.exportDataAsCsv(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportCSV")}))}function Ts(e){const t=fe(),{hideMenu:r,options:o}=e,l=Z(e,kg);return O.jsx(dt,m({onClick:()=>{t.current.exportDataAsPrint(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportPrint")}))}const Ds=a.forwardRef(function(t,r){const{csvOptions:o={},printOptions:l={},excelOptions:n}=t,i=Z(t,Eg),d=fe().current.unstable_applyPipeProcessors("exportMenu",[],{excelOptions:n,csvOptions:o,printOptions:l}).sort((u,s)=>u.componentName>s.componentName?1:-1);return d.length===0?null:O.jsx(Es,m({},i,{ref:r,children:d.map((u,s)=>a.cloneElement(u.component,{key:s}))}))}),Lg=["quickFilterParser","quickFilterFormatter","debounceMs"],Tg=De(ha,{name:"MuiDataGrid",slot:"ToolbarQuickFilter",overridesResolver:(e,t)=>t.toolbarQuickFilter})(({theme:e})=>({width:"auto",paddingBottom:e.spacing(.5),"& input":{marginLeft:e.spacing(.5)},"& .MuiInput-underline:before":{borderBottom:`1px solid ${(e.vars||e).palette.divider}`},"& input[type=search]::-ms-clear,\n& input[type=search]::-ms-reveal":{display:"none",width:0,height:0},'& input[type="search"]::-webkit-search-decoration,\n & input[type="search"]::-webkit-search-cancel-button,\n & input[type="search"]::-webkit-search-results-button,\n & input[type="search"]::-webkit-search-results-decoration':{display:"none"}})),Dg=e=>e.split(" ").filter(t=>t!==""),$g=e=>e.join(" ");function $s(e){var t,r;const o=fe(),l=J(),n=K(o,Da),{quickFilterParser:i=Dg,quickFilterFormatter:c=$g,debounceMs:d=l.filterDebounceMs}=e,u=Z(e,Lg),[s,f]=a.useState(()=>c(n??[])),p=a.useRef(n);a.useEffect(()=>{It(p.current,n)||(p.current=n,f(S=>It(i(S),n)?S:c(n??[])))},[n,c,i]);const b=a.useCallback(S=>{const w=i(S);p.current=w,o.current.setQuickFilterValues(w)},[o,i]),g=a.useMemo(()=>ml(b,d),[b,d]),h=a.useCallback(S=>{const w=S.target.value;f(w),g(w)},[g]),v=a.useCallback(()=>{f(""),b("")},[b]);return O.jsx(Tg,m({as:l.slots.baseTextField,ownerState:l,variant:"standard",value:s,onChange:h,placeholder:o.current.getLocaleText("toolbarQuickFilterPlaceholder"),"aria-label":o.current.getLocaleText("toolbarQuickFilterLabel"),type:"search"},u,{InputProps:m({startAdornment:O.jsx(l.slots.quickFilterIcon,{fontSize:"small"}),endAdornment:O.jsx(l.slots.baseIconButton,m({"aria-label":o.current.getLocaleText("toolbarQuickFilterDeleteIconLabel"),size:"small",sx:{visibility:s?"visible":"hidden"},onClick:v},(t=l.slotProps)==null?void 0:t.baseIconButton,{children:O.jsx(l.slots.quickFilterClearIcon,{fontSize:"small"})}))},u.InputProps)},(r=l.slotProps)==null?void 0:r.baseTextField))}const Rg=["className","csvOptions","printOptions","excelOptions","showQuickFilter","quickFilterProps"],Ag=a.forwardRef(function(t,r){const{csvOptions:o,printOptions:l,excelOptions:n,showQuickFilter:i=!1,quickFilterProps:c={}}=t,d=Z(t,Rg),u=J();return u.disableColumnFilter&&u.disableColumnSelector&&u.disableDensitySelector&&!i?null:O.jsxs(pi,m({ref:r},d,{children:[O.jsx(Is,{}),O.jsx(ks,{}),O.jsx(Ms,{}),O.jsx(Ds,{csvOptions:o,printOptions:l,excelOptions:n}),O.jsx(zu,{sx:{flex:1}}),i&&O.jsx($s,m({},c))]}))}),Hg=["className","selectedRowCount"],_g=e=>{const{classes:t}=e;return we({root:["selectedRowCount"]},Ce,t)},Vg=_e("div",{name:"MuiDataGrid",slot:"SelectedRowCount",overridesResolver:(e,t)=>t.selectedRowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2),visibility:"hidden",width:0,height:0,[e.breakpoints.up("sm")]:{visibility:"visible",width:"auto",height:"auto"}})),Rs=a.forwardRef(function(t,r){const{className:o,selectedRowCount:l}=t,n=Z(t,Hg),i=fe(),c=J(),d=_g(c),u=i.current.getLocaleText("footerRowSelected")(l);return O.jsx(Vg,m({ref:r,className:Pe(d.root,o),ownerState:c},n,{children:u}))}),As=a.forwardRef(function(t,r){var o,l;const n=fe(),i=J(),c=K(n,Ma),d=K(n,Li),u=K(n,Dr),s=!i.hideFooterSelectedRowCount&&d>0?O.jsx(Rs,{selectedRowCount:d}):O.jsx("div",{}),f=!i.hideFooterRowCount&&!i.pagination?O.jsx(i.slots.footerRowCount,m({},(o=i.slotProps)==null?void 0:o.footerRowCount,{rowCount:c,visibleRowCount:u})):null,p=i.pagination&&!i.hideFooterPagination&&i.slots.pagination&&O.jsx(i.slots.pagination,m({},(l=i.slotProps)==null?void 0:l.pagination));return O.jsxs(fi,m({ref:r},t,{children:[s,f,p]}))});function Hs(){var e,t;const r=J();return O.jsxs(a.Fragment,{children:[O.jsx(r.slots.preferencesPanel,m({},(e=r.slotProps)==null?void 0:e.preferencesPanel)),r.slots.toolbar&&O.jsx(r.slots.toolbar,m({},(t=r.slotProps)==null?void 0:t.toolbar))]})}const _s=a.forwardRef(function(t,r){return O.jsx(yo,m({ref:r},t,{children:O.jsx(ju,{})}))}),Vs=a.forwardRef(function(t,r){const l=fe().current.getLocaleText("noRowsLabel");return O.jsx(yo,m({ref:r},t,{children:l}))}),Gg=De(Bu)(({theme:e})=>({[`& .${xn.selectLabel}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"block"}},[`& .${xn.input}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"inline-flex"}}})),Gs=a.forwardRef(function(t,r){const o=fe(),l=J(),n=K(o,ot),i=K(o,Dr),c=a.useMemo(()=>{var b,g;return(b=(g=l.rowCount)!=null?g:i)!=null?b:0},[l.rowCount,i]),d=a.useMemo(()=>Math.floor(c/(n.pageSize||1)),[c,n.pageSize]),u=a.useCallback(b=>{const g=Number(b.target.value);o.current.setPageSize(g)},[o]),s=a.useCallback((b,g)=>{o.current.setPage(g)},[o]),p=(b=>{for(let g=0;g{const{classes:t}=e;return we({root:["rowCount"]},Ce,t)},jg=_e("div",{name:"MuiDataGrid",slot:"RowCount",overridesResolver:(e,t)=>t.rowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2)})),Ns=a.forwardRef(function(t,r){const{className:o,rowCount:l,visibleRowCount:n}=t,i=Z(t,Ng),c=fe(),d=J(),u=zg(d);if(l===0)return null;const s=n{let r,o;return t.pagination&&t.paginationMode==="client"?(o=Io(e),r=Ei(e)):(r=Mt(e),r.length===0?o=null:o={firstRowIndex:0,lastRowIndex:r.length-1}),{rows:r,range:o}},Qt=(e,t)=>{const r=co(e,t);return a.useMemo(()=>({rows:r.rows,range:r.range}),[r.rows,r.range])},tl={current:null};function Hr(e){return e.isInternal=!0,e}function fo(e){return e!==void 0&&e.isInternal===!0}function Bg(e){return Hr((t,r)=>{const o=e(t,r);return o&&(l=>o(l.value,l.row,r,tl.current))})}function _r(e){return e.map(t=>m({},t,{getApplyFilterFn:Bg(t.getApplyFilterFnV7),getApplyFilterFnV7:Hr(t.getApplyFilterFnV7)}))}function zs(e){return Hr((t,r,o)=>{const l=e(t,r,o);return l&&(n=>l(n.value,n.row,r,o))})}const rl=Hr(e=>{if(!e)return null;const t=new RegExp(to(e),"i");return(r,o,l,n)=>{const i=n.current.getRowFormattedValue(o,l);return i!=null?t.test(i.toString()):!1}}),js=(e=!1)=>_r([{value:"contains",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(to(r),"i");return l=>l!=null?o.test(String(l)):!1},InputComponent:ct},{value:"equals",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?o.compare(r,l.toString())===0:!1},InputComponent:ct},{value:"startsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`^${to(r)}.*$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ct},{value:"endsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`.*${to(r)}$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ct},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t===""||t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!==""&&t!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:t=>{if(!Array.isArray(t.value)||t.value.length===0)return null;const r=e?t.value:t.value.map(l=>l.trim()),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?r.some(n=>o.compare(n,l.toString()||"")===0):!1},InputComponent:Yl}]),st={width:100,minWidth:50,maxWidth:1/0,hideable:!0,sortable:!0,resizable:!0,filterable:!0,groupable:!0,pinnable:!0,aggregable:!0,editable:!1,sortComparator:$i,type:"string",align:"left",filterOperators:js(),renderEditCell:oi,getApplyQuickFilterFn:zs(rl),getApplyQuickFilterFnV7:rl},Bs=()=>_r([{value:"is",getApplyFilterFnV7:e=>{if(!e.value)return null;const t=e.value==="true";return r=>!!r===t},InputComponent:Os}]);function Ug({value:e,api:t}){return e?t.getLocaleText("booleanCellTrueLabel"):t.getLocaleText("booleanCellFalseLabel")}const qg=e=>{switch(e.toLowerCase().trim()){case"true":case"yes":case"1":return!0;case"false":case"no":case"0":case"null":case"undefined":return!1;default:return}},Xl=m({},st,{type:"boolean",align:"center",headerAlign:"center",renderCell:Ya,renderEditCell:ei,sortComparator:zl,valueFormatter:Ug,filterOperators:Bs(),getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,aggregable:!1,pastedValueParser:e=>qg(e)}),Ft="__check__",Zt=m({},Xl,{field:Ft,type:"checkboxSelection",width:50,resizable:!1,sortable:!1,filterable:!1,aggregable:!1,disableColumnMenu:!0,disableReorder:!0,disableExport:!0,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,valueGetter:e=>vr(e.api.state,e.api.instanceId)[e.id]!==void 0,renderHeader:e=>O.jsx(ji,m({},e)),renderCell:e=>O.jsx(zi,m({},e))}),Vr="actions",Us=m({},st,{sortable:!1,filterable:!1,aggregable:!1,width:100,align:"center",headerAlign:"center",headerName:"",disableColumnMenu:!0,disableExport:!0,renderCell:ui,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0}),en="__detail_panel_toggle__",We=e=>e.editRows,Wg=["selected","hovered","rowId","row","index","style","position","rowHeight","className","visibleColumns","renderedColumns","containerWidth","firstColumnToRender","lastColumnToRender","isLastVisible","focusedCellColumnIndexNotInRange","isNotVisible","focusedCell","tabbableCell","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver"],Kg=e=>{const{editable:t,editing:r,selected:o,isLastVisible:l,rowHeight:n,classes:i}=e;return we({root:["row",o&&"selected",t&&"row--editable",r&&"row--editing",l&&"row--lastVisible",n==="auto"&&"row--dynamicHeight"]},Ce,i)};function Qg({width:e}){if(!e)return null;const t={width:e};return O.jsx("div",{className:`${_.cell} ${_.withBorderColor}`,style:t})}const Zg=a.forwardRef(function(t,r){const{selected:o,hovered:l,rowId:n,row:i,index:c,style:d,position:u,rowHeight:s,className:f,visibleColumns:p,renderedColumns:b,containerWidth:g,firstColumnToRender:h,isLastVisible:v=!1,focusedCellColumnIndexNotInRange:S,isNotVisible:w,focusedCell:L,onClick:R,onDoubleClick:V,onMouseEnter:F,onMouseLeave:I,onMouseOut:y,onMouseOver:H}=t,T=Z(t,Wg),x=fe(),A=a.useRef(null),E=J(),C=Qt(x,E),P=K(x,So),k=K(x,tt),D=K(x,Tr),M=K(x,dr),$=K(x,We),G=Pt(A,r),j=c+M+2,z={selected:o,hovered:l,isLastVisible:v,classes:E.classes,editing:x.current.getRowMode(n)===Me.Edit,editable:E.editMode===mt.Row,rowHeight:s},q=Kg(z);a.useLayoutEffect(()=>{s==="auto"&&A.current&&typeof ResizeObserver>"u"&&x.current.unstable_storeRowHeightMeasurement(n,A.current.clientHeight,u)},[x,s,n,u]),a.useLayoutEffect(()=>{if(C.range){const ve=x.current.getRowIndexRelativeToVisibleRows(n);ve!=null&&x.current.unstable_setLastMeasuredRowIndex(ve)}const ee=A.current;if(!ee||s!=="auto"||typeof ResizeObserver>"u")return;const se=new ResizeObserver(ve=>{const[Le]=ve,Ye=Le.borderBoxSize&&Le.borderBoxSize.length>0?Le.borderBoxSize[0].blockSize:Le.contentRect.height;x.current.unstable_storeRowHeightMeasurement(n,Ye,u)});return se.observe(ee),()=>se.disconnect()},[x,C.range,c,s,n,u]);const B=a.useCallback((ee,ue)=>se=>{se.target.nodeType===1&&!se.currentTarget.contains(se.target)||x.current.getRow(n)&&(x.current.publishEvent(ee,x.current.getRowParams(n),se),ue&&ue(se))},[x,n]),Q=a.useCallback(ee=>{const ue=Ad(ee.target,_.cell),se=ue==null?void 0:ue.getAttribute("data-field");if(se){if(se===Zt.field||se===en||se==="__reorder__"||x.current.getCellMode(n,se)===Oe.Edit)return;const ve=x.current.getColumn(se);if((ve==null?void 0:ve.type)===Vr)return}B("rowClick",R)(ee)},[x,R,B,n]),{slots:X,slotProps:le,disableColumnReorder:ye}=E,xe=X.cell===Bo?Bo:Wd,de=E.rowReordering,oe=(ee,ue)=>{var se,ve;const Le=ye&&ee.disableReorder||!de&&!!k.length&&D>1&&Object.keys($).length>0,Ye=(se=(ve=$[n])==null?void 0:ve[ee.field])!=null?se:null;let Xe=!1;return S!==void 0&&p[S].field===ee.field&&(Xe=!0),O.jsx(xe,m({column:ee,width:ue.width,rowId:n,height:s,showRightBorder:ue.showRightBorder,align:ee.align||"left",colIndex:ue.indexRelativeToAllColumns,colSpan:ue.colSpan,disableDragEvents:Le,editCellState:Ye,isNotVisible:Xe},le==null?void 0:le.cell),ee.field)},he=K(x,()=>m({},x.current.unstable_getRowInternalSizes(n)),xl);let Se=s;if(Se==="auto"&&he){let ee=0;const ue=Object.entries(he).reduce((se,[ve,Le])=>/^base[A-Z]/.test(ve)?(ee+=1,Le>se?Le:se):se,0);ue>0&&ee>1&&(Se=ue)}const ce=a.useMemo(()=>{if(w)return{opacity:0,width:0,height:0};const ee=m({},d,{maxHeight:s==="auto"?"none":s,minHeight:Se});if(he!=null&&he.spacingTop){const ue=E.rowSpacingType==="border"?"borderTopWidth":"marginTop";ee[ue]=he.spacingTop}if(he!=null&&he.spacingBottom){const ue=E.rowSpacingType==="border"?"borderBottomWidth":"marginBottom";let se=ee[ue];typeof se!="number"&&(se=parseInt(se||"0",10)),se+=he.spacingBottom,ee[ue]=se}return ee},[w,s,d,Se,he,E.rowSpacingType]),ge=x.current.unstable_applyPipeProcessors("rowClassName",[],n);if(typeof E.getRowClassName=="function"){var U;const ee=c-(((U=C.range)==null?void 0:U.firstRowIndex)||0),ue=m({},x.current.getRowParams(n),{isFirstVisible:ee===0,isLastVisible:ee===C.rows.length-1,indexRelativeToCurrentPage:ee});ge.push(E.getRowClassName(ue))}const W=up(1e4,20,80),ne=x.current.getRowNode(n);if(!ne)return null;const me=ne.type,ae=[];for(let ee=0;ee0&&O.jsx(Qg,{width:ie})]}))}),qs=Oo(Zg);function Ws({privateApiRef:e,props:t,children:r}){const o=a.useRef(e.current.getPublicApi());return O.jsx(Sa.Provider,{value:t,children:O.jsx(Pa.Provider,{value:e,children:O.jsx(Sl.Provider,{value:o,children:r})})})}const Jg=ip()&&window.localStorage.getItem("DEBUG")!=null,Cr=()=>{},Yg={debug:Cr,info:Cr,warn:Cr,error:Cr},qn=["debug","info","warn","error"];function Wn(e,t,r=console){const o=qn.indexOf(t);if(o===-1)throw new Error(`MUI: Log level ${t} not recognized.`);return qn.reduce((n,i,c)=>(c>=o?n[i]=(...d)=>{const[u,...s]=d;r[i](`MUI: ${e} - ${u}`,...s)}:n[i]=Cr,n),{})}const Xg=(e,t)=>{const r=a.useCallback(o=>Jg?Wn(o,"debug",t.logger):t.logLevel?Wn(o,t.logLevel.toString(),t.logger):Yg,[t.logLevel,t.logger]);be(e,{getLogger:r},"private")};class tn{static create(t){return new tn(t)}constructor(t){this.value=void 0,this.listeners=void 0,this.subscribe=r=>(this.listeners.add(r),()=>{this.listeners.delete(r)}),this.getSnapshot=()=>this.value,this.update=r=>{this.value=r,this.listeners.forEach(o=>o(r))},this.value=t,this.listeners=new Set}}class em{constructor(){this.maxListeners=20,this.warnOnce=!1,this.events={}}on(t,r,o={}){let l=this.events[t];l||(l={highPriority:new Map,regular:new Map},this.events[t]=l),o.isFirst?l.highPriority.set(r,!0):l.regular.set(r,!0)}removeListener(t,r){this.events[t]&&(this.events[t].regular.delete(r),this.events[t].highPriority.delete(r))}removeAllListeners(){this.events={}}emit(t,...r){const o=this.events[t];if(!o)return;const l=Array.from(o.highPriority.keys()),n=Array.from(o.regular.keys());for(let i=l.length-1;i>=0;i-=1){const c=l[i];o.highPriority.has(c)&&c.apply(this,r)}for(let i=0;ie.isPropagationStopped!==void 0;let Kn=0;function rm(e){var t;const r=(t=e.current)==null?void 0:t[Ks];if(r)return r;const o={},l={state:o,store:tn.create(o),instanceId:{id:Kn}};return Kn+=1,l.getPublicApi=()=>e.current,l.register=(n,i)=>{Object.keys(i).forEach(c=>{const d=i[c],u=l[c];if((u==null?void 0:u.spying)===!0?u.target=d:l[c]=d,n==="public"){const s=e.current,f=s[c];(f==null?void 0:f.spying)===!0?f.target=d:s[c]=d}})},l.register("private",{caches:{},eventManager:new em}),l}function om(e){return{get state(){return e.current.state},get store(){return e.current.store},get instanceId(){return e.current.instanceId},[Ks]:e.current}}function lm(e,t){const r=a.useRef(),o=a.useRef();o.current||(o.current=rm(r)),r.current||(r.current=om(o));const l=a.useCallback((...i)=>{const[c,d,u={}]=i;if(u.defaultMuiPrevented=!1,tm(u)&&u.isPropagationStopped())return;const s=t.signature===gt.DataGridPro?{api:o.current.getPublicApi()}:{};o.current.eventManager.emit(c,d,u,s)},[o,t.signature]),n=a.useCallback((i,c,d)=>{o.current.eventManager.on(i,c,d);const u=o.current;return()=>{u.eventManager.removeListener(i,c)}},[o]);return be(o,{subscribeEvent:n,publishEvent:l},"public"),a.useImperativeHandle(e,()=>r.current,[r]),a.useEffect(()=>{const i=o.current;return()=>{i.publishEvent("unmount")}},[o]),o}const nm=(e,t)=>{const r=a.useCallback(o=>{if(t.localeText[o]==null)throw new Error(`Missing translation for key ${o}.`);return t.localeText[o]},[t.localeText]);e.current.register("public",{getLocaleText:r})};function Or(e){"@babel/helpers - typeof";return Or=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Or(e)}function am(e,t){if(Or(e)!=="object"||e===null)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var o=r.call(e,t||"default");if(Or(o)!=="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Fr(e){var t=am(e,"string");return Or(t)==="symbol"?t:String(t)}const im=e=>{const t=a.useRef({}),r=a.useRef(!1),o=a.useCallback(s=>{r.current||!s||(r.current=!0,Object.values(s.appliers).forEach(f=>{f()}),r.current=!1)},[]),l=a.useCallback((s,f,p)=>{t.current[s]||(t.current[s]={processors:new Map,appliers:{}});const b=t.current[s];return b.processors.get(f)!==p&&(b.processors.set(f,p),o(b)),()=>{t.current[s].processors.set(f,null)}},[o]),n=a.useCallback((s,f,p)=>(t.current[s]||(t.current[s]={processors:new Map,appliers:{}}),t.current[s].appliers[f]=p,()=>{const b=t.current[s].appliers,g=Z(b,[f].map(Fr));t.current[s].appliers=g}),[]),i=a.useCallback(s=>{const f=t.current[s];o(f)},[o]),c=a.useCallback((...s)=>{const[f,p,b]=s;return t.current[f]?Array.from(t.current[f].processors.values()).reduce((h,v)=>v?v(h,b):h,p):p},[]),d={registerPipeProcessor:l,registerPipeApplier:n,requestPipeProcessorsApplication:i},u={unstable_applyPipeProcessors:c};be(e,d,"private"),be(e,u,"public")},Re=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeProcessor(t,l.current,r)},[e,r,t]);pr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},rn=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeApplier(t,l.current,r)},[e,r,t]);pr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},po=(e,t,r,o)=>{const l=a.useCallback(()=>{e.current.registerStrategyProcessor(t,r,o)},[e,o,r,t]);pr(()=>{l()});const n=a.useRef(!0);a.useEffect(()=>{n.current?n.current=!1:l()},[l])},Ut="none",Qn={rowTreeCreation:"rowTree",filtering:"rowTree",sorting:"rowTree",visibleRowsLookupCreation:"rowTree"},sm=e=>{const t=a.useRef(new Map),r=a.useRef({}),o=a.useCallback((d,u,s)=>{const f=()=>{const g=r.current[u],h=Z(g,[d].map(Fr));r.current[u]=h};r.current[u]||(r.current[u]={});const p=r.current[u],b=p[d];return p[d]=s,!b||b===s||d===e.current.getActiveStrategy(Qn[u])&&e.current.publishEvent("activeStrategyProcessorChange",u),f},[e]),l=a.useCallback((d,u)=>{const s=e.current.getActiveStrategy(Qn[d]);if(s==null)throw new Error("Can't apply a strategy processor before defining an active strategy");const f=r.current[d];if(!f||!f[s])throw new Error(`No processor found for processor "${d}" on strategy "${s}"`);const p=f[s];return p(u)},[e]),n=a.useCallback(d=>{var u;const f=Array.from(t.current.entries()).find(([,p])=>p.group!==d?!1:p.isAvailable());return(u=f==null?void 0:f[0])!=null?u:Ut},[]),i=a.useCallback((d,u,s)=>{t.current.set(u,{group:d,isAvailable:s}),e.current.publishEvent("strategyAvailabilityChange")},[e]);be(e,{registerStrategyProcessor:o,applyStrategyProcessor:l,getActiveStrategy:n,setStrategyAvailability:i},"private")},um=(e,t)=>{const r=a.useRef({}),[,o]=a.useState(),l=a.useCallback(s=>{r.current[s.stateId]=s},[]),n=a.useCallback((s,f)=>{let p;if(xi(s)?p=s(e.current.state):p=s,e.current.state===p)return!1;let b=!1;const g=[];if(Object.keys(r.current).forEach(h=>{const v=r.current[h],S=v.stateSelector(e.current.state,e.current.instanceId),w=v.stateSelector(p,e.current.instanceId);w!==S&&(g.push({stateId:v.stateId,hasPropChanged:w!==v.propModel}),v.propModel!==void 0&&w!==v.propModel&&(b=!0))}),g.length>1)throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${g[0].stateId}, therefore, you're not allowed to update ${g.map(h=>h.stateId).join(", ")} in the same transaction.`);if(b||(e.current.state=p,e.current.publishEvent&&e.current.publishEvent("stateChange",p),e.current.store.update(p)),g.length===1){const{stateId:h,hasPropChanged:v}=g[0],S=r.current[h],w=S.stateSelector(p,e.current.instanceId);if(S.propOnChange&&v){const L=t.signature===gt.DataGridPro?{api:e.current,reason:f}:{reason:f};S.propOnChange(w,L)}b||e.current.publishEvent(S.changeEvent,w,{reason:f})}return!b},[e,t.signature]),i=a.useCallback((s,f,p)=>e.current.setState(b=>m({},b,{[s]:f(b[s])}),p),[e]),c=a.useCallback(()=>o(()=>e.current.state),[e]),d={setState:n,forceUpdate:c},u={updateControlState:i,registerControlState:l};be(e,d,"public"),be(e,u,"private")},cm=(e,t)=>{const r=lm(e,t);return Xg(r,t),um(r,t),im(r),sm(r),nm(r,t),r},Ze=(e,t,r)=>{const o=a.useRef(!1);o.current||(t.current.state=e(t.current.state,r,t),o.current=!0)},dm=/(\d+)-(\d+)-(\d+)/,fm=/(\d+)-(\d+)-(\d+)T(\d+):(\d+)/;function Jt(e,t,r,o){if(!e.value)return null;const[l,n,i,c,d]=e.value.match(r?fm:dm).slice(1).map(Number),u=new Date(l,n-1,i,c||0,d||0).getTime();return s=>{if(!s)return!1;if(o)return t(s.getTime(),u);const p=new Date(s).setHours(r?s.getHours():0,r?s.getMinutes():0,0,0);return t(p,u)}}const on=e=>_r([{value:"is",getApplyFilterFnV7:t=>Jt(t,(r,o)=>r===o,e),InputComponent:Nt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"not",getApplyFilterFnV7:t=>Jt(t,(r,o)=>r!==o,e),InputComponent:Nt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"after",getApplyFilterFnV7:t=>Jt(t,(r,o)=>r>o,e),InputComponent:Nt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"onOrAfter",getApplyFilterFnV7:t=>Jt(t,(r,o)=>r>=o,e),InputComponent:Nt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"before",getApplyFilterFnV7:t=>Jt(t,(r,o)=>rJt(t,(r,o)=>r<=o,e),InputComponent:Nt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!=null,requiresFilterValue:!1}]);function Qs({value:e,columnType:t,rowId:r,field:o}){if(!(e instanceof Date))throw new Error([`MUI: \`${t}\` column type only accepts \`Date\` objects as values.`,"Use `valueGetter` to transform the value into a `Date` object.",`Row ID: ${r}, field: "${o}".`].join(` -`))}function Zs({value:e,field:t,id:r}){return e?(Qs({value:e,columnType:"date",rowId:r,field:t}),e.toLocaleDateString()):""}function Js({value:e,field:t,id:r}){return e?(Qs({value:e,columnType:"dateTime",rowId:r,field:t}),e.toLocaleString()):""}const Ys=m({},st,{type:"date",sortComparator:jl,valueFormatter:Zs,filterOperators:on(),renderEditCell:Rl,pastedValueParser:e=>new Date(e)}),Xs=m({},st,{type:"dateTime",sortComparator:jl,valueFormatter:Js,filterOperators:on(!0),renderEditCell:Rl,pastedValueParser:e=>new Date(e)}),kt=e=>e==null?null:Number(e),ol=Hr(e=>e==null||Number.isNaN(e)||e===""?null:t=>kt(t)===kt(e)),eu=()=>_r([{value:"=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)===e.value,InputComponent:ct,InputComponentProps:{type:"number"}},{value:"!=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)!==e.value,InputComponent:ct,InputComponentProps:{type:"number"}},{value:">",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>e.value,InputComponent:ct,InputComponentProps:{type:"number"}},{value:">=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>=e.value,InputComponent:ct,InputComponentProps:{type:"number"}},{value:"<",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)<=e.value,InputComponent:ct,InputComponentProps:{type:"number"}},{value:"isEmpty",getApplyFilterFnV7:()=>e=>e==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>e=>e!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:e=>!Array.isArray(e.value)||e.value.length===0?null:t=>t!=null&&e.value.includes(Number(t)),InputComponent:Yl,InputComponentProps:{type:"number"}}]),tu=m({},st,{type:"number",align:"right",headerAlign:"right",sortComparator:zl,valueParser:e=>e===""?null:Number(e),valueFormatter:({value:e})=>ap(e)?e.toLocaleString():e||"",filterOperators:eu(),getApplyQuickFilterFn:zs(ol),getApplyQuickFilterFnV7:ol}),Yt=e=>e==null||!_l(e)?e:e.value,ru=()=>_r([{value:"is",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Yt(t)===Yt(e.value),InputComponent:el},{value:"not",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Yt(t)!==Yt(e.value),InputComponent:el},{value:"isAnyOf",getApplyFilterFnV7:e=>{if(!Array.isArray(e.value)||e.value.length===0)return null;const t=e.value.map(Yt);return r=>t.includes(Yt(r))},InputComponent:ys}]),pm=e=>typeof e[0]=="object",gm=e=>_l(e)?e.value:e,mm=e=>_l(e)?e.label:String(e),ou=m({},st,{type:"singleSelect",getOptionLabel:mm,getOptionValue:gm,valueFormatter(e){const{id:t,field:r,value:o,api:l}=e,n=e.api.getColumn(r);if(!jt(n))return"";let i;if(typeof n.valueOptions=="function"?i=n.valueOptions({id:t,row:t?l.getRow(t):null,field:r}):i=n.valueOptions,o==null)return"";if(!i)return o;if(!pm(i))return n.getOptionLabel(o);const c=i.find(d=>n.getOptionValue(d)===o);return c?n.getOptionLabel(c):""},renderEditCell:ii,filterOperators:ru(),pastedValueParser:(e,t)=>{const r=t.colDef,o=r.valueOptions,l=typeof o=="function"?o({field:r.field}):o||[],n=r.getOptionValue;if(l.find(c=>n(c)===e))return e}}),ln="__default__",lu=()=>({string:st,number:tu,date:Ys,dateTime:Xs,boolean:Xl,singleSelect:ou,[Vr]:Us,[ln]:st});function ll(e,t){return typeof e=="string"&&[t,` -`,"\r",'"'].some(r=>e.includes(r))?`"${e.replace(/"/g,'""')}"`:e}const nu=(e,t)=>{const{delimiterCharacter:r,ignoreValueFormatter:o}=t;let l;if(o){var n;const c=e.colDef.type;if(c==="number")l=String(e.value);else if(c==="date"||c==="dateTime"){var i;l=(i=e.value)==null?void 0:i.toISOString()}else typeof((n=e.value)==null?void 0:n.toString)=="function"?l=e.value.toString():l=e.value}else l=e.formattedValue;return ll(l,r)};xt(["MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.","You can provide a `valueFormatter` with a string representation to be used."]);class nl{constructor(t){this.options=void 0,this.rowString="",this.isEmpty=!0,this.options=t}addValue(t){this.isEmpty||(this.rowString+=this.options.delimiterCharacter),t==null?this.rowString+="":typeof this.options.sanitizeCellValue=="function"?this.rowString+=this.options.sanitizeCellValue(t,this.options.delimiterCharacter):this.rowString+=t,this.isEmpty=!1}getRowString(){return this.rowString}}const bm=({id:e,columns:t,getCellParams:r,delimiterCharacter:o,ignoreValueFormatter:l})=>{const n=new nl({delimiterCharacter:o});return t.forEach(i=>{const c=r(e,i.field);n.addValue(nu(c,{delimiterCharacter:o,ignoreValueFormatter:l}))}),n.getRowString()};function hm(e){const{columns:t,rowIds:r,delimiterCharacter:o,includeHeaders:l,includeColumnGroupsHeaders:n,ignoreValueFormatter:i,apiRef:c}=e,d=r.reduce((b,g)=>`${b}${bm({id:g,columns:t,getCellParams:c.current.getCellParams,delimiterCharacter:o,ignoreValueFormatter:i})}\r -`,"").trim();if(!l)return d;const u=t.filter(b=>b.field!==Zt.field),s=[];if(n){const b=c.current.unstable_getAllGroupDetails();let g=0;const h=u.reduce((v,S)=>{const w=c.current.unstable_getColumnGroupPath(S.field);return v[S.field]=w,g=Math.max(g,w.length),v},{});for(let v=0;v{const L=(h[w.field]||[])[v],R=b[L];S.addValue(R?R.headerName||R.groupId:"")})}}const f=new nl({delimiterCharacter:o,sanitizeCellValue:ll});return u.forEach(b=>{f.addValue(b.headerName||b.field)}),s.push(f),`${`${s.map(b=>b.getRowString()).join(`\r -`)}\r -`}${d}`.trim()}function Zn(e){const t=document.createElement("span");t.style.whiteSpace="pre",t.style.userSelect="all",t.style.opacity="0px",t.textContent=e,document.body.appendChild(t);const r=document.createRange();r.selectNode(t);const o=window.getSelection();o.removeAllRanges(),o.addRange(r);try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function Cm(e){navigator.clipboard?navigator.clipboard.writeText(e).catch(()=>{Zn(e)}):Zn(e)}function wm(e){var t;return!!((t=window.getSelection())!=null&&t.toString()||e&&(e.selectionEnd||0)-(e.selectionStart||0)>0)}const Sm=(e,t)=>{const r=t.unstable_ignoreValueFormatterDuringExport,o=(typeof r=="object"?r==null?void 0:r.clipboardExport:r)||!1,l=t.clipboardCopyCellDelimiter,n=a.useCallback(i=>{if(!((i.ctrlKey||i.metaKey)&&i.key==="c")||wm(i.target))return;let c="";if(e.current.getSelectedRows().size>0)c=e.current.getDataAsCsv({includeHeaders:!1,delimiter:l});else{const u=Je(e);if(u){const s=e.current.getCellParams(u.id,u.field);c=nu(s,{delimiterCharacter:l,ignoreValueFormatter:o})}}c=e.current.unstable_applyPipeProcessors("clipboardCopy",c),c&&(Cm(c),e.current.publishEvent("clipboardCopy",c))},[e,o,l]);Oi(e,e.current.rootElementRef,"keydown",n),ke(e,"clipboardCopy",t.onClipboardCopy)},Pm=e=>m({},e,{columnMenu:{open:!1}}),xm=e=>{const t=je(e,"useGridColumnMenu"),r=a.useCallback(i=>{e.current.setState(d=>d.columnMenu.open&&d.columnMenu.field===i?d:(t.debug("Opening Column Menu"),m({},d,{columnMenu:{open:!0,field:i}})))&&(e.current.hidePreferences(),e.current.forceUpdate())},[e,t]),o=a.useCallback(()=>{const i=no(e.current.state);if(i.field){const d=Ht(e),u=it(e),s=St(e);let f=i.field;if(d[f]||(f=s[0]),u[f]===!1){const p=s.filter(g=>g===f?!0:u[g]!==!1),b=p.indexOf(f);f=p[b+1]||p[b-1]}e.current.setColumnHeaderFocus(f)}e.current.setState(d=>!d.columnMenu.open&&d.columnMenu.field===void 0?d:(t.debug("Hiding Column Menu"),m({},d,{columnMenu:m({},d.columnMenu,{open:!1,field:void 0})})))&&e.current.forceUpdate()},[e,t]),l=a.useCallback(i=>{t.debug("Toggle Column Menu");const c=no(e.current.state);!c.open||c.field!==i?r(i):o()},[e,t,r,o]);be(e,{showColumnMenu:r,hideColumnMenu:o,toggleColumnMenu:l},"public"),re(e,"columnResizeStart",o),re(e,"virtualScrollerWheel",e.current.hideColumnMenu),re(e,"virtualScrollerTouchMove",e.current.hideColumnMenu)},au=["maxWidth","minWidth","width","flex"];function vm({initialFreeSpace:e,totalFlexUnits:t,flexColumns:r}){const o=new Set(r.map(i=>i.field)),l={all:{},frozenFields:[],freeze:i=>{const c=l.all[i];c&&c.frozen!==!0&&(l.all[i].frozen=!0,l.frozenFields.push(i))}};function n(){if(l.frozenFields.length===o.size)return;const i={min:{},max:{}};let c=e,d=t,u=0;l.frozenFields.forEach(s=>{c-=l.all[s].computedWidth,d-=l.all[s].flex});for(let s=0;sf.maxWidth&&(u+=f.maxWidth-b,b=f.maxWidth,i.max[f.field]=!0),l.all[f.field]={frozen:!1,computedWidth:b,flex:f.flex}}u<0?Object.keys(i.max).forEach(s=>{l.freeze(s)}):u>0?Object.keys(i.min).forEach(s=>{l.freeze(s)}):r.forEach(({field:s})=>{l.freeze(s)}),n()}return n(),l.all}const al=(e,t)=>{const r={};let o=0,l=0;const n=[];e.orderedFields.forEach(c=>{const d=m({},e.lookup[c]);if(e.columnVisibilityModel[c]===!1)d.computedWidth=0;else{let u;d.flex&&d.flex>0?(o+=d.flex,u=0,n.push(d)):u=sr(d.width||st.width,d.minWidth||st.minWidth,d.maxWidth||st.maxWidth),l+=u,d.computedWidth=u}r[c]=d});const i=Math.max(t-l,0);if(o>0&&t>0){const c=vm({initialFreeSpace:i,totalFlexUnits:o,flexColumns:n});Object.keys(c).forEach(d=>{r[d].computedWidth=c[d].computedWidth})}return m({},e,{lookup:r})},Om=(e,t)=>{if(!t)return e;const{orderedFields:r=[],dimensions:o={}}=t,l=Object.keys(o);if(l.length===0&&r.length===0)return e;const n={},i=[];for(let s=0;s!n[s])],d=m({},e.lookup);for(let s=0;s{p[b]=g===-1?1/0:g}),d[f]=p}return m({},e,{orderedFields:c,lookup:d})};function Jn(e,t){let r=e[ln];return t&&e[t]&&(r=e[t]),r}const tr=({apiRef:e,columnsToUpsert:t,initialState:r,columnTypes:o,columnVisibilityModel:l=it(e),keepOnlyColumnsToUpsert:n=!1})=>{var i,c,d;const u=!e.current.state.columns;let s;if(u)s={orderedFields:[],lookup:{},columnVisibilityModel:l};else{const g=zt(e.current.state);s={orderedFields:n?[]:[...g.orderedFields],lookup:m({},g.lookup),columnVisibilityModel:l}}let f={};n&&!u&&(f=Object.keys(s.lookup).reduce((g,h)=>m({},g,{[h]:!1}),{})),t.forEach(g=>{const{field:h}=g;f[h]=!0;let v=s.lookup[h];v==null?(v=m({},Jn(o,g.type),{field:h,hasBeenResized:!1}),s.orderedFields.push(h)):n&&s.orderedFields.push(h),v&&v.type!==g.type&&(v=m({},Jn(o,g.type),{field:h}));let S=v.hasBeenResized;au.forEach(w=>{g[w]!==void 0&&(S=!0,g[w]===-1&&(g[w]=1/0))}),s.lookup[h]=m({},v,g,{hasBeenResized:S})}),n&&!u&&Object.keys(s.lookup).forEach(g=>{f[g]||delete s.lookup[g]});const p=e.current.unstable_applyPipeProcessors("hydrateColumns",s),b=Om(p,r);return al(b,(i=(c=(d=e.current).getRootDimensions)==null||(c=c.call(d))==null?void 0:c.viewportInnerSize.width)!=null?i:0)},Yn=e=>t=>m({},t,{columns:e});function il({firstColumnToRender:e,apiRef:t,firstRowToRender:r,lastRowToRender:o,visibleRows:l}){let n=e;for(let i=r;i{var o,l,n,i;const c=tr({apiRef:r,columnTypes:iu,columnsToUpsert:t.columns,initialState:(o=t.initialState)==null?void 0:o.columns,columnVisibilityModel:(l=(n=t.columnVisibilityModel)!=null?n:(i=t.initialState)==null||(i=i.columns)==null?void 0:i.columnVisibilityModel)!=null?l:{},keepOnlyColumnsToUpsert:!0});return m({},e,{columns:c})};function Im(e,t){var r,o;const l=je(e,"useGridColumns"),n=iu,i=a.useRef(t.columns),c=a.useRef(n);e.current.registerControlState({stateId:"visibleColumns",propModel:t.columnVisibilityModel,propOnChange:t.onColumnVisibilityModelChange,stateSelector:it,changeEvent:"columnVisibilityModelChange"});const d=a.useCallback(C=>{l.debug("Updating columns state."),e.current.setState(Yn(C)),e.current.forceUpdate(),e.current.publishEvent("columnsChange",C.orderedFields)},[l,e]),u=a.useCallback(C=>Ht(e)[C],[e]),s=a.useCallback(()=>pt(e),[e]),f=a.useCallback(()=>He(e),[e]),p=a.useCallback((C,P=!0)=>(P?He(e):pt(e)).findIndex(D=>D.field===C),[e]),b=a.useCallback(C=>{const P=p(C);return Bt(e)[P]},[e,p]),g=a.useCallback(C=>{it(e)!==C&&(e.current.setState(k=>m({},k,{columns:tr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,columnVisibilityModel:C,keepOnlyColumnsToUpsert:!1})})),e.current.forceUpdate())},[e,n]),h=a.useCallback(C=>{const P=tr({apiRef:e,columnTypes:n,columnsToUpsert:C,initialState:void 0,keepOnlyColumnsToUpsert:!1});d(P)},[e,d,n]),v=a.useCallback((C,P)=>{var k;const D=it(e),M=(k=D[C])!=null?k:!0;if(P!==M){const $=m({},D,{[C]:P});e.current.setColumnVisibilityModel($)}},[e]),S=a.useCallback(C=>St(e).findIndex(k=>k===C),[e]),w=a.useCallback((C,P)=>{const k=St(e),D=S(C);if(D===P)return;l.debug(`Moving column ${C} to index ${P}`);const M=[...k],$=M.splice(D,1)[0];M.splice(P,0,$),d(m({},zt(e.current.state),{orderedFields:M}));const G={column:e.current.getColumn(C),targetIndex:e.current.getColumnIndexRelativeToVisibleColumns(C),oldIndex:D};e.current.publishEvent("columnIndexChange",G)},[e,l,d,S]),L=a.useCallback((C,P)=>{var k,D;l.debug(`Updating column ${C} width to ${P}`);const M=zt(e.current.state),$=M.lookup[C],G=m({},$,{width:P,hasBeenResized:!0});d(al(m({},M,{lookup:m({},M.lookup,{[C]:G})}),(k=(D=e.current.getRootDimensions())==null?void 0:D.viewportInnerSize.width)!=null?k:0)),e.current.publishEvent("columnWidthChange",{element:e.current.getColumnHeaderElement(C),colDef:G,width:P})},[e,l,d]),R={getColumn:u,getAllColumns:s,getColumnIndex:p,getColumnPosition:b,getVisibleColumns:f,getColumnIndexRelativeToVisibleColumns:S,updateColumns:h,setColumnVisibilityModel:g,setColumnVisibility:v,setColumnWidth:L},V={setColumnIndex:w};be(e,R,"public"),be(e,V,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback((C,P)=>{var k,D;const M={},$=it(e);(!P.exportOnlyDirtyModels||t.columnVisibilityModel!=null||Object.keys((k=(D=t.initialState)==null||(D=D.columns)==null?void 0:D.columnVisibilityModel)!=null?k:{}).length>0||Object.keys($).length>0)&&(M.columnVisibilityModel=$),M.orderedFields=St(e);const j=pt(e),z={};return j.forEach(q=>{if(q.hasBeenResized){const B={};au.forEach(Q=>{let X=q[Q];X===1/0&&(X=-1),B[Q]=X}),z[q.field]=B}}),Object.keys(z).length>0&&(M.dimensions=z),m({},C,{columns:M})},[e,t.columnVisibilityModel,(r=t.initialState)==null?void 0:r.columns]),I=a.useCallback((C,P)=>{var k;const D=(k=P.stateToRestore.columns)==null?void 0:k.columnVisibilityModel,M=P.stateToRestore.columns;if(D==null&&M==null)return C;const $=tr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:M,columnVisibilityModel:D,keepOnlyColumnsToUpsert:!1});return e.current.setState(Yn($)),M!=null&&e.current.publishEvent("columnsChange",$.orderedFields),C},[e,n]),y=a.useCallback((C,P)=>{if(P===ut.columns){var k;const D=t.slots.columnsPanel;return O.jsx(D,m({},(k=t.slotProps)==null?void 0:k.columnsPanel))}return C},[t.slots.columnsPanel,(o=t.slotProps)==null?void 0:o.columnsPanel]),H=a.useCallback(C=>t.disableColumnSelector?C:[...C,"columnMenuColumnsItem"],[t.disableColumnSelector]);Re(e,"columnMenu",H),Re(e,"exportState",F),Re(e,"restoreState",I),Re(e,"preferencePanel",y);const T=a.useRef(null);re(e,"viewportInnerSizeChange",C=>{T.current!==C.width&&(T.current=C.width,d(al(zt(e.current.state),C.width)))});const A=a.useCallback(()=>{l.info("Columns pipe processing have changed, regenerating the columns");const C=tr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,keepOnlyColumnsToUpsert:!1});d(C)},[e,l,d,n]);rn(e,"hydrateColumns",A);const E=a.useRef(!0);a.useEffect(()=>{if(E.current){E.current=!1;return}if(l.info(`GridColumns have changed, new length ${t.columns.length}`),i.current===t.columns&&c.current===n)return;const C=tr({apiRef:e,columnTypes:n,initialState:void 0,columnsToUpsert:t.columns,keepOnlyColumnsToUpsert:!0});i.current=t.columns,c.current=n,d(C)},[l,e,d,t.columns,n]),a.useEffect(()=>{t.columnVisibilityModel!==void 0&&e.current.setColumnVisibilityModel(t.columnVisibilityModel)},[e,l,t.columnVisibilityModel])}const Mm=.7,km=1.3,su={compact:Mm,comfortable:km,standard:1},Em=(e,t)=>m({},e,{density:{value:t.density,factor:su[t.density]}}),Lm=(e,t)=>{const r=je(e,"useDensity"),o=a.useCallback(n=>{r.debug(`Set grid density to ${n}`),e.current.setState(i=>{const c=vo(i),d={value:n,factor:su[n]};return It(c,d)?i:m({},i,{density:d})}),e.current.forceUpdate()},[r,e]);a.useEffect(()=>{e.current.setDensity(t.density)},[e,t.density]),be(e,{setDensity:o},"public")};function Tm(e,t="csv",r=document.title||"untitled"){const o=`${r}.${t}`;if("download"in HTMLAnchorElement.prototype){const l=URL.createObjectURL(e),n=document.createElement("a");n.href=l,n.download=o,n.click(),setTimeout(()=>{URL.revokeObjectURL(l)});return}throw new Error("MUI: exportAs not supported")}const uu=({apiRef:e,options:t})=>{const r=pt(e);return t.fields?t.fields.reduce((l,n)=>{const i=r.find(c=>c.field===n);return i&&l.push(i),l},[]):(t.allColumns?r:He(e)).filter(l=>!l.disableExport)},Dm=({apiRef:e})=>{var t,r;const o=Aa(e),l=at(e),n=e.current.getSelectedRows(),i=o.filter(s=>l[s].type!=="footer"),c=fr(e),d=(c==null||(t=c.top)==null?void 0:t.map(s=>s.id))||[],u=(c==null||(r=c.bottom)==null?void 0:r.map(s=>s.id))||[];return i.unshift(...d),i.push(...u),n.size>0?i.filter(s=>n.has(s)):i},$m=(e,t)=>{const r=je(e,"useGridCsvExport"),o=t.unstable_ignoreValueFormatterDuringExport,l=(typeof o=="object"?o==null?void 0:o.csvExport:o)||!1,n=a.useCallback((u={})=>{var s,f,p;r.debug("Get data as CSV");const b=uu({apiRef:e,options:u}),h=((s=u.getRowsToExport)!=null?s:Dm)({apiRef:e});return hm({columns:b,rowIds:h,delimiterCharacter:u.delimiter||",",includeHeaders:(f=u.includeHeaders)!=null?f:!0,includeColumnGroupsHeaders:(p=u.includeColumnGroupsHeaders)!=null?p:!0,ignoreValueFormatter:l,apiRef:e})},[r,e,l]),i=a.useCallback(u=>{r.debug("Export data as CSV");const s=n(u),f=new Blob([u!=null&&u.utf8WithBom?new Uint8Array([239,187,191]):"",s],{type:"text/csv"});Tm(f,"csv",u==null?void 0:u.fileName)},[r,n]);be(e,{getDataAsCsv:n,exportDataAsCsv:i},"public");const d=a.useCallback((u,s)=>{var f;return(f=s.csvOptions)!=null&&f.disableToolbarButton?u:[...u,{component:O.jsx(Ls,{options:s.csvOptions}),componentName:"csvExport"}]},[]);Re(e,"exportMenu",d)},Rm=(e,t)=>{var r,o;const l=m({},yi(t.autoPageSize),(r=t.paginationModel)!=null?r:(o=t.initialState)==null||(o=o.pagination)==null?void 0:o.paginationModel);return Ii(l.pageSize,t.signature),m({},e,{pagination:{paginationModel:l}})},oo=(e,t,r)=>o=>{var l;let n=o.paginationModel;const i=(l=r==null?void 0:r.pageSize)!=null?l:n.pageSize,c=Fi(e,i);r&&((r==null?void 0:r.page)!==n.page||(r==null?void 0:r.pageSize)!==n.pageSize)&&(n=r);const d=fp(n.page,c);return d!==n.page&&(n=m({},n,{page:d})),Ii(n.pageSize,t),{paginationModel:n}},Am=(e,t)=>{var r;const o=je(e,"useGridPagination"),l=K(e,Dr),n=K(e,Kt),i=Math.floor(t.rowHeight*n);e.current.registerControlState({stateId:"pagination",propModel:t.paginationModel,propOnChange:t.onPaginationModelChange,stateSelector:ot,changeEvent:"paginationModelChange"});const c=a.useCallback(h=>{const v=ot(e);h!==v.page&&(o.debug(`Setting page to ${h}`),e.current.setPaginationModel({page:h,pageSize:v.pageSize}))},[e,o]),d=a.useCallback(h=>{const v=ot(e);h!==v.pageSize&&(o.debug(`Setting page size to ${h}`),e.current.setPaginationModel({pageSize:h,page:v.page}))},[e,o]),u=a.useCallback(h=>{var v;const S=ot(e);h!==S&&(o.debug("Setting 'paginationModel' to",h),e.current.updateControlState("pagination",oo((v=t.rowCount)!=null?v:l,t.signature,h),"setPaginationModel"),e.current.forceUpdate())},[e,o,t.rowCount,t.signature,l]);be(e,{setPage:c,setPageSize:d,setPaginationModel:u},"public");const f=a.useCallback((h,v)=>{var S;const w=ot(e);return!v.exportOnlyDirtyModels||t.paginationModel!=null||((S=t.initialState)==null||(S=S.pagination)==null?void 0:S.paginationModel)!=null||w.page!==0&&w.pageSize!==dp(t.autoPageSize)?m({},h,{pagination:m({},h.pagination,{paginationModel:w})}):h},[e,t.paginationModel,(r=t.initialState)==null||(r=r.pagination)==null?void 0:r.paginationModel,t.autoPageSize]),p=a.useCallback((h,v)=>{var S,w,L;const R=(S=v.stateToRestore.pagination)!=null&&S.paginationModel?m({},yi(t.autoPageSize),(w=v.stateToRestore.pagination)==null?void 0:w.paginationModel):ot(e);return e.current.updateControlState("pagination",oo((L=t.rowCount)!=null?L:l,t.signature,R),"stateRestorePreProcessing"),h},[e,t.autoPageSize,t.rowCount,t.signature,l]);Re(e,"exportState",f),Re(e,"restoreState",p);const b=()=>{var h;const v=ot(e);(h=e.current.virtualScrollerRef)!=null&&h.current&&e.current.scrollToIndexes({rowIndex:v.page*v.pageSize}),e.current.forceUpdate()},g=a.useCallback(()=>{const h=e.current.getRootDimensions();if(!t.autoPageSize||!h)return;const v=Ua(e),S=Math.floor((h.viewportInnerSize.height-v.top-v.bottom)/i);e.current.setPageSize(S)},[e,t.autoPageSize,i]);re(e,"viewportInnerSizeChange",g),re(e,"paginationModelChange",b),a.useEffect(()=>{},[t.rowCount,t.paginationMode]),a.useEffect(()=>{var h;e.current.updateControlState("pagination",oo((h=t.rowCount)!=null?h:l,t.signature,t.paginationModel))},[e,t.paginationModel,t.rowCount,t.paginationMode,l,t.signature]),a.useEffect(()=>{g()},[g])};function Hm(){return new Promise(e=>{requestAnimationFrame(()=>{e()})})}function _m(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}const Vm=(e,t)=>{const r=je(e,"useGridPrintExport"),o=a.useRef(null),l=a.useRef(null),n=a.useRef({}),i=a.useRef([]);a.useEffect(()=>{o.current=yr(e.current.rootElementRef.current)},[e]);const c=a.useCallback((g,h,v)=>new Promise(S=>{const w=uu({apiRef:e,options:{fields:g,allColumns:h}}).map(V=>V.field),L=pt(e),R={};L.forEach(V=>{R[V.field]=w.includes(V.field)}),v&&(R[Zt.field]=!0),e.current.setColumnVisibilityModel(R),S()}),[e]),d=a.useCallback(g=>{const v=g({apiRef:e}).map(S=>e.current.getRow(S));e.current.setRows(v)},[e]),u=a.useCallback((g,h)=>{var v,S;const w=m({copyStyles:!0,hideToolbar:!1,hideFooter:!1,includeCheckboxes:!1},h),L=g.contentDocument;if(!L)return;const R=ur(e.current.state),V=e.current.rootElementRef.current,F=V.cloneNode(!0),I=F.querySelector(`.${_.main}`);I.style.overflow="visible",F.style.contain="size";const H=F.querySelector(`.${_.columnHeaders}`).querySelector(`.${_.columnHeadersInner}`);H.style.width="100%";let T=((v=V.querySelector(`.${_.toolbarContainer}`))==null?void 0:v.offsetHeight)||0,x=((S=V.querySelector(`.${_.footerContainer}`))==null?void 0:S.offsetHeight)||0;if(w.hideToolbar){var A;(A=F.querySelector(`.${_.toolbarContainer}`))==null||A.remove(),T=0}if(w.hideFooter){var E;(E=F.querySelector(`.${_.footerContainer}`))==null||E.remove(),x=0}const C=R.currentPageTotalHeight+nn(e,t.columnHeaderHeight)+T+x;if(F.style.height=`${C}px`,F.style.boxSizing="content-box",h!=null&&h.getRowsToExport){const M=F.querySelector(`.${_.footerContainer}`);M.style.position="absolute",M.style.width="100%",M.style.top=`${C-x}px`}const P=document.createElement("div");P.appendChild(F),L.body.innerHTML=P.innerHTML;const k=typeof w.pageStyle=="function"?w.pageStyle():w.pageStyle;if(typeof k=="string"){const M=L.createElement("style");M.appendChild(L.createTextNode(k)),L.head.appendChild(M)}w.bodyClassName&&L.body.classList.add(...w.bodyClassName.split(" "));const D=[];if(w.copyStyles){const M=V.getRootNode(),G=(M.constructor.name==="ShadowRoot"?M:o.current).querySelectorAll("style, link[rel='stylesheet']");for(let j=0;j{q.addEventListener("load",()=>B())})),L.head.appendChild(q)}}}Promise.all(D).then(()=>{g.contentWindow.print()})},[e,o,t.columnHeaderHeight]),s=a.useCallback(g=>{var h;o.current.body.removeChild(g),e.current.restoreState(l.current||{}),(h=l.current)!=null&&(h=h.columns)!=null&&h.columnVisibilityModel||e.current.setColumnVisibilityModel(n.current),e.current.unstable_setVirtualization(!0),e.current.setRows(i.current),l.current=null,n.current={},i.current=[]},[e]),p={exportDataAsPrint:a.useCallback(async g=>{if(r.debug("Export data as Print"),!e.current.rootElementRef.current)throw new Error("MUI: No grid root element available.");if(l.current=e.current.exportState(),n.current=it(e),i.current=e.current.getSortedRows(),t.pagination){const v=Ml(e),S={page:0,pageSize:v};e.current.updateControlState("pagination",oo(v,"DataGridPro",S)),e.current.forceUpdate()}await c(g==null?void 0:g.fields,g==null?void 0:g.allColumns,g==null?void 0:g.includeCheckboxes),g!=null&&g.getRowsToExport&&d(g.getRowsToExport),e.current.unstable_setVirtualization(!1),await Hm();const h=_m(g==null?void 0:g.fileName);h.onload=()=>{u(h,g),h.contentWindow.matchMedia("print").addEventListener("change",S=>{S.matches===!1&&s(h)})},o.current.body.appendChild(h)},[t,r,e,u,s,c,d])};be(e,p,"public");const b=a.useCallback((g,h)=>{var v;return(v=h.printOptions)!=null&&v.disableToolbarButton?g:[...g,{component:O.jsx(Ts,{options:h.printOptions}),componentName:"printExport"}]},[]);Re(e,"exportMenu",b)},Gm=typeof window>"u"?globalThis:window,cu=Gm[atob("ZXZhbA==")];let sl;try{sl=cu("true")}catch{sl=!1}const ul=(e,t)=>{const r=m({},e);if(r.id==null&&(r.id=Math.round(Math.random()*1e5)),r.operator==null){const o=Ht(t)[r.field];r.operator=o&&o.filterOperators[0].value}return r},Nm=xt(["MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),zm=xt("MUI: The `id` field is required on `filterModel.items` when you use multiple filters.","error"),jm=xt("MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.","error"),du=(e,t,r)=>{const o=e.items.length>1;let l;o&&t?(Nm(),l=[e.items[0]]):l=e.items;const n=o&&l.some(c=>c.id==null),i=l.some(c=>c.operator==null);return n&&zm(),i&&jm(),i||n?m({},e,{items:l.map(c=>ul(c,r))}):e.items!==l?m({},e,{items:l}):e},Xn=(e,t,r)=>o=>m({},o,{filterModel:du(e,t,r)}),fu=(e,t)=>{if(!e.field||!e.operator)return null;const r=t.current.getColumn(e.field);if(!r)return null;let o;if(r.valueParser){var l;const f=r.valueParser;o=Array.isArray(e.value)?(l=e.value)==null?void 0:l.map(p=>f(p)):f(e.value)}else o=e.value;const n=m({},e,{value:o}),i=r.filterOperators;if(!(i!=null&&i.length))throw new Error(`MUI: No filter operators found for column '${r.field}'.`);const c=i.find(f=>f.value===n.operator);if(!c)throw new Error(`MUI: No filter operator found for column '${r.field}' and operator value '${n.operator}'.`);const d=!fo(c.getApplyFilterFn),u=!fo(c.getApplyFilterFnV7);if(c.getApplyFilterFnV7&&!(d&&!u)){const f=c.getApplyFilterFnV7(n,r);return typeof f!="function"?null:{v7:!0,item:n,fn:p=>{const b=t.current.getRowValue(p,r);return f(b,p,r,t)}}}const s=c.getApplyFilterFn(n,r);return typeof s!="function"?null:{v7:!1,item:n,fn:f=>{const p=t.current.getCellParams(f,n.field);tl.current=t;const b=s(p);return tl.current=null,b}}};let ea=1;const Bm=(e,t,r,o)=>{const{items:l}=t,n=l.map(u=>fu(u,r)).filter(u=>!!u);if(n.length===0)return null;if(!sl||o)return(u,s)=>{const f={};for(let p=0;p`const shouldApply${s} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(u.item.field)});`).join(` -`)} - - const result$$ = { - ${n.map((u,s)=>`${JSON.stringify(String(u.item.id))}: - !shouldApply${s} ? - false : - ${u.v7?`appliers[${s}].fn(row)`:`appliers[${s}].fn(${e?"getRowId(row)":"row.id"})`}, - `).join(` -`)}}; - - return result$$; - })`,c=cu(i.replaceAll("$$",String(ea))),d=(u,s)=>c(e,n,u,s);return ea+=1,d},Um=(e,t,r)=>{var o,l,n;const i=(o=(l=t.quickFilterValues)==null?void 0:l.filter(Boolean))!=null?o:[];if(i.length===0)return null;const d=((n=t.quickFilterExcludeHiddenColumns)!=null?n:!1)?kr(r):St(r),u=[];return d.forEach(s=>{const f=r.current.getColumn(s),p=f==null?void 0:f.getApplyQuickFilterFn,b=f==null?void 0:f.getApplyQuickFilterFnV7,g=!fo(p),h=!fo(b);b&&!(g&&!h)?u.push({column:f,appliers:i.map(v=>({v7:!0,fn:b(v,f,r)}))}):p&&u.push({column:f,appliers:i.map(v=>({v7:!1,fn:p(v,f,r)}))})}),function(f,p){const b={},g={};e:for(let v=0;v{const l=Bm(e,t,r,o),n=Um(e,t,r);return function(c,d,u){var s,f;u.passingFilterItems=(s=l==null?void 0:l(c,d))!=null?s:null,u.passingQuickFilterValues=(f=n==null?void 0:n(c,d))!=null?f:null}},ta=e=>e!=null,Wm=(e,t,r)=>(e.cleanedFilterItems||(e.cleanedFilterItems=r.filter(o=>fu(o,t)!==null)),e.cleanedFilterItems),Km=(e,t,r,o,l)=>{const n=Wm(l,o,r.items),i=e.filter(ta),c=t.filter(ta);if(i.length>0){var d;const s=p=>i.some(b=>b[p.id]);if(((d=r.logicOperator)!=null?d:ir().logicOperator)===Ke.And){if(!n.every(s))return!1}else if(!n.some(s))return!1}if(c.length>0&&r.quickFilterValues!=null){var u;const s=p=>c.some(b=>b[p]);if(((u=r.quickFilterLogicOperator)!=null?u:ir().quickFilterLogicOperator)===Ke.And){if(!r.quickFilterValues.every(s))return!1}else if(!r.quickFilterValues.some(s))return!1}return!0},Qm=(e,t,r)=>{var o,l,n;const i=(o=(l=t.filterModel)!=null?l:(n=t.initialState)==null||(n=n.filter)==null?void 0:n.filterModel)!=null?o:ir();return m({},e,{filter:{filterModel:du(i,t.disableMultipleColumnsFiltering,r),filteredRowsLookup:{},filteredDescendantCountLookup:{}},visibleRowsLookup:{}})},Zm=e=>e.filteredRowsLookup;function ra(e,t){return e.current.applyStrategyProcessor("visibleRowsLookupCreation",{tree:t.rows.tree,filteredRowsLookup:t.filter.filteredRowsLookup})}function Jm(){return wo(Object.values)}const Ym=(e,t)=>{var r,o;const l=je(e,"useGridFilter");e.current.registerControlState({stateId:"filter",propModel:t.filterModel,propOnChange:t.onFilterModelChange,stateSelector:Ae,changeEvent:"filterModelChange"});const n=a.useCallback(()=>{e.current.setState(T=>{const x=Ae(T,e.current.instanceId),A=t.filterMode==="client"?qm(t.getRowId,x,e,t.disableEval):null,E=e.current.applyStrategyProcessor("filtering",{isRowMatchingFilters:A,filterModel:x??ir()}),C=m({},T,{filter:m({},T.filter,E)}),P=ra(e,C);return m({},C,{visibleRowsLookup:P})}),e.current.publishEvent("filteredRowsSet")},[e,t.filterMode,t.getRowId,t.disableEval]),i=a.useCallback((T,x)=>x==null||x.filterable===!1||t.disableColumnFilter?T:[...T,"columnMenuFilterItem"],[t.disableColumnFilter]),c=a.useCallback(()=>{n(),e.current.forceUpdate()},[e,n]),d=a.useCallback(T=>{const x=Ae(e),A=[...x.items],E=A.findIndex(C=>C.id===T.id);E===-1?A.push(T):A[E]=T,e.current.setFilterModel(m({},x,{items:A}),"upsertFilterItem")},[e]),u=a.useCallback(T=>{const x=Ae(e),A=[...x.items];T.forEach(E=>{const C=T.findIndex(P=>P.id===E.id);C===-1?A.push(E):A[C]=E}),e.current.setFilterModel(m({},x,{items:T}),"upsertFilterItems")},[e]),s=a.useCallback(T=>{const x=Ae(e),A=x.items.filter(E=>E.id!==T.id);A.length!==x.items.length&&e.current.setFilterModel(m({},x,{items:A}),"deleteFilterItem")},[e]),f=a.useCallback((T,x,A)=>{if(l.debug("Displaying filter panel"),T){const E=Ae(e),C=E.items.filter(M=>{var $;if(M.value!==void 0)return!(Array.isArray(M.value)&&M.value.length===0);const j=($=e.current.getColumn(M.field).filterOperators)==null?void 0:$.find(q=>q.value===M.operator);return!(typeof(j==null?void 0:j.requiresFilterValue)>"u"?!0:j==null?void 0:j.requiresFilterValue)});let P;const k=C.find(M=>M.field===T),D=e.current.getColumn(T);k?P=C:t.disableMultipleColumnsFiltering?P=[ul({field:T,operator:D.filterOperators[0].value},e)]:P=[...C,ul({field:T,operator:D.filterOperators[0].value},e)],e.current.setFilterModel(m({},E,{items:P}))}e.current.showPreferences(ut.filters,x,A)},[e,l,t.disableMultipleColumnsFiltering]),p=a.useCallback(()=>{l.debug("Hiding filter panel"),e.current.hidePreferences()},[e,l]),b=a.useCallback(T=>{const x=Ae(e);x.logicOperator!==T&&e.current.setFilterModel(m({},x,{logicOperator:T}),"changeLogicOperator")},[e]),g=a.useCallback(T=>{const x=Ae(e);It(x.quickFilterValues,T)||e.current.setFilterModel(m({},x,{quickFilterValues:[...T]}))},[e]),h=a.useCallback((T,x)=>{Ae(e)!==T&&(l.debug("Setting filter model"),e.current.updateControlState("filter",Xn(T,t.disableMultipleColumnsFiltering,e),x),e.current.unstable_applyFilters())},[e,l,t.disableMultipleColumnsFiltering]);be(e,{setFilterLogicOperator:b,unstable_applyFilters:c,deleteFilterItem:s,upsertFilterItem:d,upsertFilterItems:u,setFilterModel:h,showFilterPanel:f,hideFilterPanel:p,setQuickFilterValues:g},"public");const S=a.useCallback((T,x)=>{var A;const E=Ae(e);return!x.exportOnlyDirtyModels||t.filterModel!=null||((A=t.initialState)==null||(A=A.filter)==null?void 0:A.filterModel)!=null||!It(E,ir())?m({},T,{filter:{filterModel:E}}):T},[e,t.filterModel,(r=t.initialState)==null||(r=r.filter)==null?void 0:r.filterModel]),w=a.useCallback((T,x)=>{var A;const E=(A=x.stateToRestore.filter)==null?void 0:A.filterModel;return E==null?T:(e.current.updateControlState("filter",Xn(E,t.disableMultipleColumnsFiltering,e),"restoreState"),m({},T,{callbacks:[...T.callbacks,e.current.unstable_applyFilters]}))},[e,t.disableMultipleColumnsFiltering]),L=a.useCallback((T,x)=>{if(x===ut.filters){var A;const E=t.slots.filterPanel;return O.jsx(E,m({},(A=t.slotProps)==null?void 0:A.filterPanel))}return T},[t.slots.filterPanel,(o=t.slotProps)==null?void 0:o.filterPanel]),{getRowId:R}=t,V=Pl(Jm),F=a.useCallback(T=>{if(t.filterMode!=="client"||!T.isRowMatchingFilters)return{filteredRowsLookup:{},filteredDescendantCountLookup:{}};const x=yt(e),A={},{isRowMatchingFilters:E}=T,C={},P={passingFilterItems:null,passingQuickFilterValues:null},k=V.current(e.current.state.rows.dataRowIdToModelLookup);for(let $=0;${l.debug("onColUpdated - GridColumns changed, applying filters");const T=Ae(e),x=Oa(e),A=T.items.filter(E=>E.field&&x[E.field]);A.length{T==="filtering"&&e.current.unstable_applyFilters()},[e]),H=a.useCallback(()=>{e.current.setState(T=>m({},T,{visibleRowsLookup:ra(e,T)})),e.current.forceUpdate()},[e]);re(e,"rowsSet",n),re(e,"columnsChange",I),re(e,"activeStrategyProcessorChange",y),re(e,"rowExpansionChange",H),re(e,"columnVisibilityModelChange",()=>{const T=Ae(e);T.quickFilterValues&&T.quickFilterExcludeHiddenColumns&&e.current.unstable_applyFilters()}),pr(()=>{e.current.unstable_applyFilters()}),Qe(()=>{t.filterModel!==void 0&&e.current.setFilterModel(t.filterModel)},[e,l,t.filterModel])},Xm=e=>m({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},tabIndex:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}),eb=(e,t)=>{const r=je(e,"useGridFocus"),o=a.useRef(null),l=a.useCallback((I,y)=>{I&&e.current.getRow(I.id)&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(I.id,I.field),y)},[e]),n=a.useCallback((I,y)=>{const H=Je(e);(H==null?void 0:H.id)===I&&(H==null?void 0:H.field)===y||(e.current.setState(T=>(r.debug(`Focusing on cell with id=${I} and field=${y}`),m({},T,{tabIndex:{cell:{id:I,field:y},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},focus:{cell:{id:I,field:y},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))),e.current.forceUpdate(),e.current.getRow(I)&&(H&&l(H,{}),e.current.publishEvent("cellFocusIn",e.current.getCellParams(I,y))))},[e,r,l]),i=a.useCallback((I,y={})=>{const H=Je(e);l(H,y),e.current.setState(T=>(r.debug(`Focusing on column header with colIndex=${I}`),m({},T,{tabIndex:{columnHeader:{field:I},columnHeaderFilter:null,cell:null,columnGroupHeader:null},focus:{columnHeader:{field:I},columnHeaderFilter:null,cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),c=a.useCallback((I,y={})=>{const H=Je(e);l(H,y),e.current.setState(T=>(r.debug(`Focusing on column header filter with colIndex=${I}`),m({},T,{tabIndex:{columnHeader:null,columnHeaderFilter:{field:I},cell:null,columnGroupHeader:null},focus:{columnHeader:null,columnHeaderFilter:{field:I},cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),d=a.useCallback((I,y,H={})=>{const T=Je(e);T&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(T.id,T.field),H),e.current.setState(x=>m({},x,{tabIndex:{columnGroupHeader:{field:I,depth:y},columnHeader:null,columnHeaderFilter:null,cell:null},focus:{columnGroupHeader:{field:I,depth:y},columnHeader:null,columnHeaderFilter:null,cell:null}})),e.current.forceUpdate()},[e]),u=a.useCallback(()=>Sr(e),[e]),s=a.useCallback((I,y,H)=>{let T=e.current.getColumnIndex(y);const x=He(e),A=co(e,{pagination:t.pagination,paginationMode:t.paginationMode}),E=fr(e),C=[].concat(E.top||[],A.rows,E.bottom||[]);let P=C.findIndex($=>$.id===I);H==="right"?T+=1:H==="left"?T-=1:P+=1,T>=x.length?(P+=1,P=0&&(T=x.length-1)),P=sr(P,0,C.length-1);const k=C[P];if(!k)return;const D=e.current.unstable_getCellColSpanInfo(k.id,T);D&&D.spannedByColSpan&&(H==="left"||H==="below"?T=D.leftVisibleCellIndex:H==="right"&&(T=D.rightVisibleCellIndex)),T=sr(T,0,x.length-1);const M=x[T];e.current.setCellFocus(k.id,M.field)},[e,t.pagination,t.paginationMode]),f=a.useCallback(({id:I,field:y})=>{e.current.setCellFocus(I,y)},[e]),p=a.useCallback((I,y)=>{y.key==="Enter"||y.key==="Tab"||y.key==="Shift"||uo(y.key)||e.current.setCellFocus(I.id,I.field)},[e]),b=a.useCallback(({field:I},y)=>{y.target===y.currentTarget&&e.current.setColumnHeaderFocus(I,y)},[e]),g=a.useCallback(({fields:I,depth:y},H)=>{if(H.target!==H.currentTarget)return;const T=Sr(e);T!==null&&T.depth===y&&I.includes(T.field)||e.current.setColumnGroupHeaderFocus(I[0],y,H)},[e]),h=a.useCallback((I,y)=>{var H;(H=y.relatedTarget)!=null&&H.className.includes(_.columnHeader)||(r.debug("Clearing focus"),e.current.setState(T=>m({},T,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})))},[r,e]),v=a.useCallback(I=>{o.current=I},[]),S=a.useCallback(I=>{const y=o.current;o.current=null;const H=Je(e);if(!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:I,cell:y}))return;if(!H){y&&e.current.setCellFocus(y.id,y.field);return}if((y==null?void 0:y.id)===H.id&&(y==null?void 0:y.field)===H.field)return;const x=e.current.getCellElement(H.id,H.field);x!=null&&x.contains(I.target)||(y?e.current.setCellFocus(y.id,y.field):(e.current.setState(A=>m({},A,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})),e.current.forceUpdate(),l(H,I)))},[e,l]),w=a.useCallback(I=>{if(I.cellMode==="view")return;const y=Je(e);((y==null?void 0:y.id)!==I.id||(y==null?void 0:y.field)!==I.field)&&e.current.setCellFocus(I.id,I.field)},[e]),L=a.useCallback(()=>{const I=Je(e);I&&!e.current.getRow(I.id)&&e.current.setState(y=>m({},y,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))},[e]),R=ft(()=>{const I=Je(e);if(!I)return;const y=co(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(y.rows.find(x=>x.id===I.id))return;const T=He(e);e.current.setState(x=>m({},x,{tabIndex:{cell:{id:y.rows[0].id,field:T[0].field},columnGroupHeader:null,columnHeader:null,columnHeaderFilter:null}}))}),V={setCellFocus:n,setColumnHeaderFocus:i,setColumnHeaderFilterFocus:c},F={moveFocusToRelativeCell:s,setColumnGroupHeaderFocus:d,getColumnGroupHeaderFocus:u};be(e,V,"public"),be(e,F,"private"),a.useEffect(()=>{const I=yr(e.current.rootElementRef.current);return I.addEventListener("mouseup",S),()=>{I.removeEventListener("mouseup",S)}},[e,S]),re(e,"columnHeaderBlur",h),re(e,"cellDoubleClick",f),re(e,"cellMouseDown",v),re(e,"cellKeyDown",p),re(e,"cellModeChange",w),re(e,"columnHeaderFocus",b),re(e,"columnGroupHeaderFocus",g),re(e,"rowsSet",L),re(e,"paginationModelChange",R)};function tb(e,t){const r=fr(e)||{};return[...r.top||[],...t,...r.bottom||[]]}const Ao=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(et)return e-1;return null},Ho=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(e>t)return e-1}else if(o==="ltr"&&e{const r=je(e,"useGridKeyboardNavigation"),o=Qt(e,t).rows,l=Ir(),n=a.useMemo(()=>tb(e,o),[e,o]),i=t.signature!=="DataGrid"&&t.unstable_headerFilters,c=a.useCallback((S,w,L="left")=>{const R=Mt(e),V=e.current.unstable_getCellColSpanInfo(w,S);V&&V.spannedByColSpan&&(L==="left"?S=V.leftVisibleCellIndex:L==="right"&&(S=V.rightVisibleCellIndex));const F=R.findIndex(y=>y.id===w);r.debug(`Navigating to cell row ${F}, col ${S}`),e.current.scrollToIndexes({colIndex:S,rowIndex:F});const I=e.current.getVisibleColumns()[S].field;e.current.setCellFocus(w,I)},[e,r]),d=a.useCallback((S,w)=>{r.debug(`Navigating to header col ${S}`),e.current.scrollToIndexes({colIndex:S});const L=e.current.getVisibleColumns()[S].field;e.current.setColumnHeaderFocus(L,w)},[e,r]),u=a.useCallback((S,w)=>{r.debug(`Navigating to header filter col ${S}`),e.current.scrollToIndexes({colIndex:S});const L=e.current.getVisibleColumns()[S].field;e.current.setColumnHeaderFilterFocus(L,w)},[e,r]),s=a.useCallback((S,w,L)=>{r.debug(`Navigating to header col ${S}`),e.current.scrollToIndexes({colIndex:S});const{field:R}=e.current.getVisibleColumns()[S];e.current.setColumnGroupHeaderFocus(R,w,L)},[e,r]),f=a.useCallback(S=>{var w;return(w=n[S])==null?void 0:w.id},[n]),p=a.useCallback((S,w)=>{const L=w.currentTarget.querySelector(`.${_.columnHeaderTitleContainerContent}`);if(!!L&&L.contains(w.target)&&S.field!==Zt.field||!e.current.getRootDimensions())return;const F=e.current.getViewportPageSize(),I=S.field?e.current.getColumnIndex(S.field):0,y=n.length>0?0:null,H=n.length-1,T=0,x=He(e).length-1,A=dr(e);let E=!0;switch(w.key){case"ArrowDown":{y!==null&&(i?u(I,w):c(I,f(y)));break}case"ArrowRight":{const C=Ho({currentColIndex:I,firstColIndex:T,lastColIndex:x,direction:l.direction});C!==null&&d(C,w);break}case"ArrowLeft":{const C=Ao({currentColIndex:I,firstColIndex:T,lastColIndex:x,direction:l.direction});C!==null&&d(C,w);break}case"ArrowUp":{A>0&&s(I,A-1,w);break}case"PageDown":{y!==null&&H!==null&&c(I,f(Math.min(y+F,H)));break}case"Home":{d(T,w);break}case"End":{d(x,w);break}case"Enter":{(w.ctrlKey||w.metaKey)&&e.current.toggleColumnMenu(S.field);break}case" ":break;default:E=!1}E&&w.preventDefault()},[e,n.length,i,u,c,f,l.direction,d,s]),b=a.useCallback((S,w)=>{if(!e.current.getRootDimensions())return;const R=Ri(e)===S.field,V=Ai(e)===S.field;if(R||V||!uo(w.key))return;const F=e.current.getViewportPageSize(),I=S.field?e.current.getColumnIndex(S.field):0,y=0,H=n.length-1,T=0,x=He(e).length-1;let A=!0;switch(w.key){case"ArrowDown":{const E=f(y);E!=null&&c(I,E);break}case"ArrowRight":{const E=Ho({currentColIndex:I,firstColIndex:T,lastColIndex:x,direction:l.direction});E!==null&&u(E,w);break}case"ArrowLeft":{const E=Ao({currentColIndex:I,firstColIndex:T,lastColIndex:x,direction:l.direction});E!==null?u(E,w):e.current.setColumnHeaderFilterFocus(S.field,w);break}case"ArrowUp":{d(I,w);break}case"PageDown":{H!==null&&c(I,f(Math.min(y+F,H)));break}case"Home":{u(T,w);break}case"End":{u(x,w);break}case" ":break;default:A=!1}A&&w.preventDefault()},[e,n.length,u,l.direction,d,c,f]),g=a.useCallback((S,w)=>{if(!e.current.getRootDimensions())return;const R=Sr(e);if(R===null)return;const{field:V,depth:F}=R,{fields:I,depth:y,maxDepth:H}=S,T=e.current.getViewportPageSize(),x=e.current.getColumnIndex(V),A=V?e.current.getColumnIndex(V):0,E=0,C=n.length-1,P=0,k=He(e).length-1;let D=!0;switch(w.key){case"ArrowDown":{y===H-1?d(x,w):s(x,F+1,w);break}case"ArrowUp":{y>0&&s(x,F-1,w);break}case"ArrowRight":{const M=I.length-I.indexOf(V)-1;x+M+1<=k&&s(x+M+1,F,w);break}case"ArrowLeft":{const M=I.indexOf(V);x-M-1>=P&&s(x-M-1,F,w);break}case"PageDown":{C!==null&&c(A,f(Math.min(E+T,C)));break}case"Home":{s(P,F,w);break}case"End":{s(k,F,w);break}case" ":break;default:D=!1}D&&w.preventDefault()},[e,n.length,d,s,c,f]),h=a.useCallback((S,w)=>{if(!w.currentTarget.contains(w.target))return;const L=e.current.getCellParams(S.id,S.field);if(L.cellMode===Oe.Edit||!uo(w.key)||!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:w,cell:L}))return;const V=e.current.getRootDimensions();if(n.length===0||!V)return;const F=l.direction,I=e.current.getViewportPageSize(),y=S.field?e.current.getColumnIndex(S.field):0,H=n.findIndex(P=>P.id===S.id),T=0,x=n.length-1,A=0,E=He(e).length-1;let C=!0;switch(w.key){case"ArrowDown":{HT?c(y,f(H-1)):i?u(y,w):d(y,w);break}case"ArrowRight":{const P=Ho({currentColIndex:y,firstColIndex:A,lastColIndex:E,direction:F});P!==null&&c(P,f(H),F==="rtl"?"left":"right");break}case"ArrowLeft":{const P=Ao({currentColIndex:y,firstColIndex:A,lastColIndex:E,direction:F});P!==null&&c(P,f(H),F==="rtl"?"right":"left");break}case"Tab":{w.shiftKey&&y>A?c(y-1,f(H),"left"):!w.shiftKey&&y=T?c(y,f(P)):d(y,w);break}case"Home":{w.ctrlKey||w.metaKey||w.shiftKey?c(A,f(T)):c(A,f(H));break}case"End":{w.ctrlKey||w.metaKey||w.shiftKey?c(E,f(x)):c(E,f(H));break}default:C=!1}C&&w.preventDefault()},[e,n,l.direction,c,f,i,u,d]),v=a.useCallback((S,{event:w})=>w.key===" "?!1:S,[]);Re(e,"canStartEditing",v),re(e,"columnHeaderKeyDown",p),re(e,"headerFilterKeyDown",b),re(e,"columnGroupHeaderKeyDown",g),re(e,"cellKeyDown",h)},ob=(e,t)=>{var r,o;return m({},e,{preferencePanel:(r=(o=t.initialState)==null?void 0:o.preferencePanel)!=null?r:{open:!1}})},lb=(e,t)=>{var r;const o=je(e,"useGridPreferencesPanel"),l=a.useRef(),n=a.useRef(),i=a.useCallback(()=>{o.debug("Hiding Preferences Panel");const p=$t(e.current.state);p.openedPanelValue&&e.current.publishEvent("preferencePanelClose",{openedPanelValue:p.openedPanelValue}),e.current.setState(b=>m({},b,{preferencePanel:{open:!1}})),e.current.forceUpdate()},[e,o]),c=a.useCallback(()=>{n.current=setTimeout(()=>clearTimeout(l.current),0)},[]),d=a.useCallback(()=>{l.current=setTimeout(i,100)},[i]),u=a.useCallback((p,b,g)=>{o.debug("Opening Preferences Panel"),c(),e.current.setState(h=>m({},h,{preferencePanel:m({},h.preferencePanel,{open:!0,openedPanelValue:p,panelId:b,labelId:g})})),e.current.publishEvent("preferencePanelOpen",{openedPanelValue:p}),e.current.forceUpdate()},[o,c,e]);be(e,{showPreferences:u,hidePreferences:d},"public");const s=a.useCallback((p,b)=>{var g;const h=$t(e.current.state);return!b.exportOnlyDirtyModels||((g=t.initialState)==null?void 0:g.preferencePanel)!=null||h.open?m({},p,{preferencePanel:h}):p},[e,(r=t.initialState)==null?void 0:r.preferencePanel]),f=a.useCallback((p,b)=>{const g=b.stateToRestore.preferencePanel;return g!=null&&e.current.setState(h=>m({},h,{preferencePanel:g})),p},[e]);Re(e,"exportState",s),Re(e,"restoreState",f),a.useEffect(()=>()=>{clearTimeout(l.current),clearTimeout(n.current)},[])},nb=["id","field"],ab=["id","field"],ib=xt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),sb=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),{processRowUpdate:i,onProcessRowUpdateError:c,cellModesModel:d,onCellModesModelChange:u}=t,s=C=>(...P)=>{t.editMode===mt.Cell&&C(...P)},f=a.useCallback((C,P)=>{const k=e.current.getCellParams(C,P);if(!e.current.isCellEditable(k))throw new Error(`MUI: The cell with id=${C} and field=${P} is not editable.`)},[e]),p=a.useCallback((C,P,k)=>{if(e.current.getCellMode(C,P)!==k)throw new Error(`MUI: The cell with id=${C} and field=${P} is not in ${k} mode.`)},[e]),b=a.useCallback((C,P)=>{if(!C.isEditable||C.cellMode===Oe.Edit)return;const k=m({},C,{reason:vt.cellDoubleClick});e.current.publishEvent("cellEditStart",k,P)},[e]),g=a.useCallback((C,P)=>{if(C.cellMode===Oe.View||e.current.getCellMode(C.id,C.field)===Oe.View)return;const k=m({},C,{reason:nt.cellFocusOut});e.current.publishEvent("cellEditStop",k,P)},[e]),h=a.useCallback((C,P)=>{if(C.cellMode===Oe.Edit){if(P.which===229)return;let k;if(P.key==="Escape"?k=nt.escapeKeyDown:P.key==="Enter"?k=nt.enterKeyDown:P.key==="Tab"&&(k=P.shiftKey?nt.shiftTabKeyDown:nt.tabKeyDown,P.preventDefault()),k){const D=m({},C,{reason:k});e.current.publishEvent("cellEditStop",D,P)}}else if(C.isEditable){let k;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:P,cellParams:C,editMode:"cell"}))return;if(ni(P)||(P.ctrlKey||P.metaKey)&&P.key==="v"?k=vt.printableKeyDown:P.key==="Enter"?k=vt.enterKeyDown:(P.key==="Delete"||P.key==="Backspace")&&(k=vt.deleteKeyDown),k){const M=m({},C,{reason:k,key:P.key});e.current.publishEvent("cellEditStart",M,P)}}},[e]),v=a.useCallback(C=>{const{id:P,field:k,reason:D,key:M,colDef:$}=C,G={id:P,field:k};if(D===vt.printableKeyDown)if(a.version.startsWith("17"))G.deleteValue=!0;else{const j=$.valueParser?$.valueParser(M):M;G.initialValue=j}else D===vt.deleteKeyDown&&(G.deleteValue=!0);e.current.startCellEditMode(G)},[e]),S=a.useCallback(C=>{const{id:P,field:k,reason:D}=C;e.current.runPendingEditCellValueMutation(P,k);let M;D===nt.enterKeyDown?M="below":D===nt.tabKeyDown?M="right":D===nt.shiftTabKeyDown&&(M="left");const $=D==="escapeKeyDown";e.current.stopCellEditMode({id:P,field:k,ignoreModifications:$,cellToFocusAfter:M})},[e]);re(e,"cellDoubleClick",s(b)),re(e,"cellFocusOut",s(g)),re(e,"cellKeyDown",s(h)),re(e,"cellEditStart",s(v)),re(e,"cellEditStop",s(S)),ke(e,"cellEditStart",t.onCellEditStart),ke(e,"cellEditStop",t.onCellEditStop);const w=a.useCallback((C,P)=>{const k=We(e.current.state);return k[C]&&k[C][P]?Oe.Edit:Oe.View},[e]),L=ft(C=>{const P=C!==t.cellModesModel;u&&P&&u(C,{}),!(t.cellModesModel&&P)&&(o(C),l.current=C,e.current.publishEvent("cellModesModelChange",C))}),R=a.useCallback((C,P,k)=>{const D=m({},l.current);if(k!==null)D[C]=m({},D[C],{[P]:m({},k)});else{const M=D[C],$=Z(M,[P].map(Fr));D[C]=$,Object.keys(D[C]).length===0&&delete D[C]}L(D)},[L]),V=a.useCallback((C,P,k)=>{e.current.setState(D=>{const M=m({},D.editRows);return k!==null?M[C]=m({},M[C],{[P]:m({},k)}):(delete M[C][P],Object.keys(M[C]).length===0&&delete M[C]),m({},D,{editRows:M})}),e.current.forceUpdate()},[e]),F=a.useCallback(C=>{const{id:P,field:k}=C,D=Z(C,nb);f(P,k),p(P,k,Oe.View),R(P,k,m({mode:Oe.Edit},D))},[f,p,R]),I=ft(C=>{const{id:P,field:k,deleteValue:D,initialValue:M}=C;let $=e.current.getCellValue(P,k),G=!1;(D||M)&&($=D?"":M,G=!0),V(P,k,{value:$,error:!1,isProcessingProps:!1,unstable_updateValueOnRender:G}),e.current.setCellFocus(P,k)}),y=a.useCallback(C=>{const{id:P,field:k}=C,D=Z(C,ab);p(P,k,Oe.Edit),R(P,k,m({mode:Oe.View},D))},[p,R]),H=ft(async C=>{const{id:P,field:k,ignoreModifications:D,cellToFocusAfter:M="none"}=C;p(P,k,Oe.Edit),e.current.runPendingEditCellValueMutation(P,k);const $=()=>{V(P,k,null),R(P,k,null),M!=="none"&&e.current.moveFocusToRelativeCell(P,k,M)};if(D){$();return}const G=We(e.current.state),{error:j,isProcessingProps:z}=G[P][k];if(j||z){n.current[P][k].mode=Oe.Edit,R(P,k,{mode:Oe.Edit});return}const q=e.current.getRowWithUpdatedValuesFromCellEditing(P,k);if(i){const B=Q=>{n.current[P][k].mode=Oe.Edit,R(P,k,{mode:Oe.Edit}),c?c(Q):ib()};try{const Q=e.current.getRow(P);Promise.resolve(i(q,Q)).then(X=>{e.current.updateRows([X]),$()}).catch(B)}catch(Q){B(Q)}}else e.current.updateRows([q]),$()}),T=a.useCallback(async C=>{var P;const{id:k,field:D,value:M,debounceMs:$,unstable_skipValueParser:G}=C;f(k,D),p(k,D,Oe.Edit);const j=e.current.getColumn(D),z=e.current.getRow(k);let q=M;j.valueParser&&!G&&(q=j.valueParser(M,e.current.getCellParams(k,D)));let B=We(e.current.state),Q=m({},B[k][D],{value:q,changeReason:$?"debouncedSetEditCellValue":"setEditCellValue"});if(j.preProcessEditCellProps){const X=M!==B[k][D].value;Q=m({},Q,{isProcessingProps:!0}),V(k,D,Q),Q=await Promise.resolve(j.preProcessEditCellProps({id:k,row:z,props:Q,hasChanged:X}))}return e.current.getCellMode(k,D)===Oe.View?!1:(B=We(e.current.state),Q=m({},Q,{isProcessingProps:!1}),Q.value=j.preProcessEditCellProps?B[k][D].value:q,V(k,D,Q),B=We(e.current.state),!((P=B[k])!=null&&(P=P[D])!=null&&P.error))},[e,f,p,V]),x=a.useCallback((C,P)=>{const k=e.current.getColumn(P),D=We(e.current.state),M=e.current.getRow(C);if(!D[C]||!D[C][P])return e.current.getRow(C);const{value:$}=D[C][P];return k.valueSetter?k.valueSetter({value:$,row:M}):m({},M,{[P]:$})},[e]),A={getCellMode:w,startCellEditMode:F,stopCellEditMode:y},E={setCellEditingEditCellValue:T,getRowWithUpdatedValuesFromCellEditing:x};be(e,A,"public"),be(e,E,"private"),a.useEffect(()=>{d&&L(d)},[d,L]),a.useEffect(()=>{const C=wr(e),P=n.current;n.current=vi(r),Object.entries(r).forEach(([k,D])=>{Object.entries(D).forEach(([M,$])=>{var G,j;const z=((G=P[k])==null||(G=G[M])==null?void 0:G.mode)||Oe.View,q=(j=C[k])!=null?j:k;$.mode===Oe.Edit&&z===Oe.View?I(m({id:q,field:M},$)):$.mode===Oe.View&&z===Oe.Edit&&H(m({id:q,field:M},$))})})},[e,r,I,H])},ub=["id"],cb=["id"],db=xt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),fb=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),i=a.useRef(null),c=a.useRef(null),{processRowUpdate:d,onProcessRowUpdateError:u,rowModesModel:s,onRowModesModelChange:f}=t,p=M=>(...$)=>{t.editMode===mt.Row&&M(...$)},b=a.useCallback((M,$)=>{const G=e.current.getCellParams(M,$);if(!e.current.isCellEditable(G))throw new Error(`MUI: The cell with id=${M} and field=${$} is not editable.`)},[e]),g=a.useCallback((M,$)=>{if(e.current.getRowMode(M)!==$)throw new Error(`MUI: The row with id=${M} is not in ${$} mode.`)},[e]),h=a.useCallback((M,$)=>{if(!M.isEditable||e.current.getRowMode(M.id)===Me.Edit)return;const G=e.current.getRowParams(M.id),j=m({},G,{field:M.field,reason:Ot.cellDoubleClick});e.current.publishEvent("rowEditStart",j,$)},[e]),v=a.useCallback(M=>{c.current=M},[]),S=a.useCallback((M,$)=>{M.isEditable&&e.current.getRowMode(M.id)!==Me.View&&(c.current=null,i.current=setTimeout(()=>{var G;if(i.current=null,((G=c.current)==null?void 0:G.id)!==M.id){if(!e.current.getRow(M.id)||e.current.getRowMode(M.id)===Me.View)return;const j=e.current.getRowParams(M.id),z=m({},j,{field:M.field,reason:wt.rowFocusOut});e.current.publishEvent("rowEditStop",z,$)}}))},[e]);a.useEffect(()=>()=>{clearTimeout(i.current)},[]);const w=a.useCallback((M,$)=>{if(M.cellMode===Me.Edit){if($.which===229)return;let G;if($.key==="Escape")G=wt.escapeKeyDown;else if($.key==="Enter")G=wt.enterKeyDown;else if($.key==="Tab"){const j=kr(e).filter(z=>e.current.getColumn(z).type===Vr?!0:e.current.isCellEditable(e.current.getCellParams(M.id,z)));if($.shiftKey?M.field===j[0]&&(G=wt.shiftTabKeyDown):M.field===j[j.length-1]&&(G=wt.tabKeyDown),$.preventDefault(),!G){const z=j.findIndex(B=>B===M.field),q=j[$.shiftKey?z-1:z+1];e.current.setCellFocus(M.id,q)}}if(G){const j=m({},e.current.getRowParams(M.id),{reason:G,field:M.field});e.current.publishEvent("rowEditStop",j,$)}}else if(M.isEditable){let G;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:$,cellParams:M,editMode:"row"}))return;if(ni($)||($.ctrlKey||$.metaKey)&&$.key==="v"?G=Ot.printableKeyDown:$.key==="Enter"?G=Ot.enterKeyDown:($.key==="Delete"||$.key==="Backspace")&&(G=Ot.deleteKeyDown),G){const z=e.current.getRowParams(M.id),q=m({},z,{field:M.field,key:$.key,reason:G});e.current.publishEvent("rowEditStart",q,$)}}},[e]),L=a.useCallback(M=>{const{id:$,field:G,reason:j,key:z,columns:q}=M,B={id:$,fieldToFocus:G};if(j===Ot.printableKeyDown)if(a.version.startsWith("17"))B.deleteValue=!!G;else{const Q=q.find(X=>X.field===G);B.initialValue=Q.valueParser?Q.valueParser(z):z}else j===Ot.deleteKeyDown&&(B.deleteValue=!!G);e.current.startRowEditMode(B)},[e]),R=a.useCallback(M=>{const{id:$,reason:G,field:j}=M;e.current.runPendingEditCellValueMutation($);let z;G===wt.enterKeyDown?z="below":G===wt.tabKeyDown?z="right":G===wt.shiftTabKeyDown&&(z="left");const q=G==="escapeKeyDown";e.current.stopRowEditMode({id:$,ignoreModifications:q,field:j,cellToFocusAfter:z})},[e]);re(e,"cellDoubleClick",p(h)),re(e,"cellFocusIn",p(v)),re(e,"cellFocusOut",p(S)),re(e,"cellKeyDown",p(w)),re(e,"rowEditStart",p(L)),re(e,"rowEditStop",p(R)),ke(e,"rowEditStart",t.onRowEditStart),ke(e,"rowEditStop",t.onRowEditStop);const V=a.useCallback(M=>{if(t.editMode===mt.Cell)return Me.View;const $=We(e.current.state);return $[M]&&Object.keys($[M]).length>0?Me.Edit:Me.View},[e,t.editMode]),F=ft(M=>{const $=M!==t.rowModesModel;f&&$&&f(M,{}),!(t.rowModesModel&&$)&&(o(M),l.current=M,e.current.publishEvent("rowModesModelChange",M))}),I=a.useCallback((M,$)=>{const G=m({},l.current);$!==null?G[M]=m({},$):delete G[M],F(G)},[F]),y=a.useCallback((M,$)=>{e.current.setState(G=>{const j=m({},G.editRows);return $!==null?j[M]=$:delete j[M],m({},G,{editRows:j})}),e.current.forceUpdate()},[e]),H=a.useCallback((M,$,G)=>{e.current.setState(j=>{const z=m({},j.editRows);return G!==null?z[M]=m({},z[M],{[$]:m({},G)}):(delete z[M][$],Object.keys(z[M]).length===0&&delete z[M]),m({},j,{editRows:z})}),e.current.forceUpdate()},[e]),T=a.useCallback(M=>{const{id:$}=M,G=Z(M,ub);g($,Me.View),I($,m({mode:Me.Edit},G))},[g,I]),x=ft(M=>{const{id:$,fieldToFocus:G,deleteValue:j,initialValue:z}=M,B=St(e).reduce((Q,X)=>{if(!e.current.getCellParams($,X).isEditable)return Q;let ye=e.current.getCellValue($,X),xe=!1;return G===X&&(j||z)&&(ye=j?"":z,xe=!0),Q[X]={value:ye,error:!1,isProcessingProps:!1,unstable_updateValueOnRender:xe},Q},{});y($,B),G&&e.current.setCellFocus($,G)}),A=a.useCallback(M=>{const{id:$}=M,G=Z(M,cb);g($,Me.Edit),I($,m({mode:Me.View},G))},[g,I]),E=ft(M=>{const{id:$,ignoreModifications:G,field:j,cellToFocusAfter:z="none"}=M;e.current.runPendingEditCellValueMutation($);const q=()=>{z!=="none"&&j&&e.current.moveFocusToRelativeCell($,j,z),y($,null),I($,null)};if(G){q();return}const B=We(e.current.state),Q=e.current.getRow($);if(Object.values(B[$]).some(xe=>xe.isProcessingProps)){n.current[$].mode=Me.Edit;return}if(Object.values(B[$]).some(xe=>xe.error)){n.current[$].mode=Me.Edit,I($,{mode:Me.Edit});return}const ye=e.current.getRowWithUpdatedValuesFromRowEditing($);if(d){const xe=de=>{n.current[$].mode=Me.Edit,I($,{mode:Me.Edit}),u?u(de):db()};try{Promise.resolve(d(ye,Q)).then(de=>{e.current.updateRows([de]),q()}).catch(xe)}catch(de){xe(de)}}else e.current.updateRows([ye]),q()}),C=a.useCallback(M=>{const{id:$,field:G,value:j,debounceMs:z,unstable_skipValueParser:q}=M;b($,G);const B=e.current.getColumn(G),Q=e.current.getRow($);let X=j;B.valueParser&&!q&&(X=B.valueParser(j,e.current.getCellParams($,G)));let le=We(e.current.state),ye=m({},le[$][G],{value:X,changeReason:z?"debouncedSetEditCellValue":"setEditCellValue"});return B.preProcessEditCellProps||H($,G,ye),new Promise(xe=>{const de=[];if(B.preProcessEditCellProps){const oe=ye.value!==le[$][G].value;ye=m({},ye,{isProcessingProps:!0}),H($,G,ye);const he=le[$],Se=Z(he,[G].map(Fr)),ce=Promise.resolve(B.preProcessEditCellProps({id:$,row:Q,props:ye,hasChanged:oe,otherFieldsProps:Se})).then(ge=>{if(e.current.getRowMode($)===Me.View){xe(!1);return}le=We(e.current.state),ge=m({},ge,{isProcessingProps:!1}),ge.value=B.preProcessEditCellProps?le[$][G].value:X,H($,G,ge)});de.push(ce)}Object.entries(le[$]).forEach(([oe,he])=>{if(oe===G)return;const Se=e.current.getColumn(oe);if(!Se.preProcessEditCellProps)return;he=m({},he,{isProcessingProps:!0}),H($,oe,he),le=We(e.current.state);const ce=le[$],ge=Z(ce,[oe].map(Fr)),U=Promise.resolve(Se.preProcessEditCellProps({id:$,row:Q,props:he,hasChanged:!1,otherFieldsProps:ge})).then(W=>{if(e.current.getRowMode($)===Me.View){xe(!1);return}W=m({},W,{isProcessingProps:!1}),H($,oe,W)});de.push(U)}),Promise.all(de).then(()=>{e.current.getRowMode($)===Me.Edit?(le=We(e.current.state),xe(!le[$][G].error)):xe(!1)})})},[e,b,H]),P=a.useCallback(M=>{const $=We(e.current.state),G=e.current.getRow(M);if(!$[M])return e.current.getRow(M);let j=m({},G);return Object.entries($[M]).forEach(([z,q])=>{const B=e.current.getColumn(z);B.valueSetter?j=B.valueSetter({value:q.value,row:j}):j[z]=q.value}),j},[e]),k={getRowMode:V,startRowEditMode:T,stopRowEditMode:A},D={setRowEditingEditCellValue:C,getRowWithUpdatedValuesFromRowEditing:P};be(e,k,"public"),be(e,D,"private"),a.useEffect(()=>{s&&F(s)},[s,F]),a.useEffect(()=>{const M=wr(e),$=n.current;n.current=vi(r),Object.entries(r).forEach(([G,j])=>{var z,q;const B=((z=$[G])==null?void 0:z.mode)||Me.View,Q=(q=M[G])!=null?q:G;j.mode===Me.Edit&&B===Me.View?x(m({id:Q},j)):j.mode===Me.View&&B===Me.Edit&&E(m({id:Q},j))})},[e,r,x,E])},pb=e=>m({},e,{editRows:{}}),gb=(e,t)=>{sb(e,t),fb(e,t);const r=a.useRef({}),{isCellEditable:o}=t,l=a.useCallback(p=>xr(p.rowNode)||!p.colDef.editable||!p.colDef.renderEditCell?!1:o?o(p):!0,[o]),n=(p,b,g,h)=>{if(!g){h();return}if(r.current[p]||(r.current[p]={}),r.current[p][b]){const[w]=r.current[p][b];clearTimeout(w)}const v=()=>{const[w]=r.current[p][b];clearTimeout(w),h(),delete r.current[p][b]},S=setTimeout(()=>{h(),delete r.current[p][b]},g);r.current[p][b]=[S,v]};a.useEffect(()=>{const p=r.current;return()=>{Object.entries(p).forEach(([b,g])=>{Object.keys(g).forEach(h=>{const[v]=p[b][h];clearTimeout(v),delete p[b][h]})})}},[]);const i=a.useCallback((p,b)=>{if(r.current[p]){if(!b)Object.keys(r.current[p]).forEach(g=>{const[,h]=r.current[p][g];h()});else if(r.current[p][b]){const[,g]=r.current[p][b];g()}}},[]),c=a.useCallback(p=>{const{id:b,field:g,debounceMs:h}=p;return new Promise(v=>{n(b,g,h,async()=>{const S=t.editMode===mt.Row?e.current.setRowEditingEditCellValue:e.current.setCellEditingEditCellValue;if(e.current.getCellMode(b,g)===Oe.Edit){const w=await S(p);v(w)}})})},[e,t.editMode]),d=a.useCallback((p,b)=>t.editMode===mt.Cell?e.current.getRowWithUpdatedValuesFromCellEditing(p,b):e.current.getRowWithUpdatedValuesFromRowEditing(p),[e,t.editMode]),u=a.useCallback((p,b)=>{var g,h;return(g=(h=We(e.current.state)[p])==null?void 0:h[b])!=null?g:null},[e]),s={isCellEditable:l,setEditCellValue:c,getRowWithUpdatedValues:d,unstable_getEditCellMeta:u},f={runPendingEditCellValueMutation:i};be(e,s,"public"),be(e,f,"private")},mb=(e,t,r)=>(r.current.caches.rows=eo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),m({},e,{rows:Ba({apiRef:r,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:null,previousTreeDepths:null})})),bb=(e,t)=>{const r=je(e,"useGridRows"),o=Qt(e,t),l=a.useRef(Date.now()),n=Jl(),i=a.useCallback(E=>{const C=yt(e)[E];if(C)return C;const P=e.current.getRowNode(E);return P&&xr(P)?{[nr]:E}:null},[e]),c=t.getRowId,d=a.useCallback(E=>nr in E?E[nr]:c?c(E):E.id,[c]),u=a.useMemo(()=>o.rows.reduce((E,{id:C},P)=>(E[C]=P,E),{}),[o.rows]),s=a.useCallback(({cache:E,throttle:C})=>{const P=()=>{l.current=Date.now(),e.current.setState(D=>m({},D,{rows:Ba({apiRef:e,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:at(e),previousTreeDepths:jo(e)})})),e.current.publishEvent("rowsSet"),e.current.forceUpdate()};if(n.clear(),e.current.caches.rows=E,!C){P();return}const k=t.throttleRowsMs-(Date.now()-l.current);if(k>0){n.start(k,P);return}P()},[t.throttleRowsMs,t.rowCount,t.loading,e,n]),f=a.useCallback(E=>{r.debug(`Updating all rows, new length ${E.length}`);const C=eo({rows:E,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),P=e.current.caches.rows;C.rowsBeforePartialUpdates=P.rowsBeforePartialUpdates,s({cache:C,throttle:!0})},[r,t.getRowId,t.loading,t.rowCount,s,e]),p=a.useCallback(E=>{if(t.signature===gt.DataGrid&&E.length>1)throw new Error(["MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`));const C=[];E.forEach(k=>{const D=ao(k,t.getRowId,"A row was provided without id when calling updateRows():"),M=e.current.getRowNode(D);if((M==null?void 0:M.type)==="pinnedRow"){const $=e.current.caches.pinnedRows,G=$.idLookup[D];G&&($.idLookup[D]=m({},G,k))}else C.push(k)});const P=Ed({updates:C,getRowId:t.getRowId,previousCache:e.current.caches.rows});s({cache:P,throttle:!0})},[t.signature,t.getRowId,s,e]),b=a.useCallback(()=>{const E=hr(e),C=yt(e);return new Map(E.map(P=>{var k;return[P,(k=C[P])!=null?k:{}]}))},[e]),g=a.useCallback(()=>Lr(e),[e]),h=a.useCallback(()=>hr(e),[e]),v=a.useCallback(E=>u[E],[u]),S=a.useCallback((E,C)=>{const P=e.current.getRowNode(E);if(!P)throw new Error(`MUI: No row with id #${E} found`);if(P.type!=="group")throw new Error("MUI: Only group nodes can be expanded or collapsed");const k=m({},P,{childrenExpanded:C});e.current.setState(D=>m({},D,{rows:m({},D.rows,{tree:m({},D.rows.tree,{[E]:k})})})),e.current.forceUpdate(),e.current.publishEvent("rowExpansionChange",k)},[e]),w=a.useCallback(E=>{var C;return(C=at(e)[E])!=null?C:null},[e]),L=a.useCallback(({skipAutoGeneratedRows:E=!0,groupId:C,applySorting:P,applyFiltering:k})=>{const D=at(e);let M;if(P){const $=D[C];if(!$)return[];const G=Po(e);M=[];const j=G.findIndex(z=>z===C)+1;for(let z=j;z$.depth;z+=1){const q=G[z];(!E||!xr(D[q]))&&M.push(q)}}else M=Tl(D,C,E);if(k){const $=yl(e);M=M.filter(G=>$[G]!==!1)}return M},[e]),R=a.useCallback((E,C)=>{const P=e.current.getRowNode(E);if(!P)throw new Error(`MUI: No row with id #${E} found`);if(P.parent!==Ue)throw new Error("MUI: The row reordering do not support reordering of grouped rows yet");if(P.type!=="leaf")throw new Error("MUI: The row reordering do not support reordering of footer or grouping rows");e.current.setState(k=>{const D=at(k,e.current.instanceId)[Ue],M=D.children,$=M.findIndex(j=>j===E);if($===-1||$===C)return k;r.debug(`Moving row ${E} to index ${C}`);const G=[...M];return G.splice(C,0,G.splice($,1)[0]),m({},k,{rows:m({},k.rows,{tree:m({},k.rows.tree,{[Ue]:m({},D,{children:G})})})})}),e.current.publishEvent("rowsSet")},[e,r]),V=a.useCallback((E,C)=>{if(t.signature===gt.DataGrid&&C.length>1)throw new Error(["MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`));if(C.length===0)return;if(Tr(e)>1)throw new Error("`apiRef.current.unstable_replaceRows` is not compatible with tree data and row grouping");const k=m({},at(e)),D=m({},yt(e)),M=m({},wr(e)),$=k[Ue],G=[...$.children];for(let z=0;zk[z].type==="leaf");e.current.caches.rows.dataRowIdToModelLookup=D,e.current.caches.rows.dataRowIdToIdLookup=M,e.current.setState(z=>m({},z,{rows:m({},z.rows,{dataRowIdToModelLookup:D,dataRowIdToIdLookup:M,dataRowIds:j,tree:k})})),e.current.publishEvent("rowsSet")},[e,t.signature,t.getRowId]),F={getRow:i,getRowId:d,getRowModels:b,getRowsCount:g,getAllRowIds:h,setRows:f,updateRows:p,getRowNode:w,getRowIndexRelativeToVisibleRows:v,unstable_replaceRows:V},I={setRowIndex:R,setRowChildrenExpansion:S,getRowGroupChildren:L},y=a.useCallback(()=>{r.info("Row grouping pre-processing have changed, regenerating the row tree");let E;e.current.caches.rows.rowsBeforePartialUpdates===t.rows?E=m({},e.current.caches.rows,{updates:{type:"full",rows:hr(e)}}):E=eo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),s({cache:E,throttle:!1})},[r,e,t.rows,t.getRowId,t.loading,t.rowCount,s]),H=a.useCallback(E=>{E==="rowTreeCreation"&&y()},[y]),T=a.useCallback(()=>{e.current.getActiveStrategy("rowTree")!==ka(e)&&y()},[e,y]);re(e,"activeStrategyProcessorChange",H),re(e,"strategyAvailabilityChange",T);const x=a.useCallback(()=>{e.current.setState(E=>{const C=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:at(E,e.current.instanceId),treeDepths:jo(E,e.current.instanceId),dataRowIds:hr(E,e.current.instanceId),dataRowIdToModelLookup:yt(E,e.current.instanceId),dataRowIdToIdLookup:wr(E,e.current.instanceId)});return m({},E,{rows:m({},E.rows,C,{totalTopLevelRowCount:ja({tree:C.tree,rowCountProp:t.rowCount})})})}),e.current.publishEvent("rowsSet"),e.current.forceUpdate()},[e,t.rowCount]);rn(e,"hydrateRows",x),be(e,F,"public"),be(e,I,t.signature===gt.DataGrid?"private":"public");const A=a.useRef(!0);a.useEffect(()=>{if(A.current){A.current=!1;return}const E=e.current.caches.rows.rowsBeforePartialUpdates===t.rows,C=e.current.caches.rows.loadingPropBeforePartialUpdates===t.loading,P=e.current.caches.rows.rowCountPropBeforePartialUpdates===t.rowCount;if(E){C||(e.current.setState(k=>m({},k,{rows:m({},k.rows,{loading:t.loading})})),e.current.caches.rows.loadingPropBeforePartialUpdates=t.loading,e.current.forceUpdate()),P||(e.current.setState(k=>m({},k,{rows:m({},k.rows,{totalRowCount:Math.max(t.rowCount||0,k.rows.totalRowCount),totalTopLevelRowCount:Math.max(t.rowCount||0,k.rows.totalTopLevelRowCount)})})),e.current.caches.rows.rowCountPropBeforePartialUpdates=t.rowCount,e.current.forceUpdate());return}r.debug(`Updating all rows, new length ${t.rows.length}`),s({cache:eo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),throttle:!1})},[t.rows,t.rowCount,t.getRowId,t.loading,r,s,e])},hb=e=>{const t={[Ue]:m({},kd(),{children:e})};for(let r=0;r{const r=m({},e),o={};for(let i=0;i!o[i])),r[Ue]=m({},l,{children:n}),{groupingName:Ut,tree:r,treeDepths:{0:n.length},dataRowIds:n}},wb=e=>e.updates.type==="full"?hb(e.updates.rows):Cb({previousTree:e.previousTree,actions:e.updates.actions}),Sb=e=>{po(e,Ut,"rowTreeCreation",wb)},pu=(e,t)=>e==null||Array.isArray(e)?e:t&&t[0]===e?t:[e],Pb=(e,t)=>{var r;return m({},e,{rowSelection:t.rowSelection?(r=pu(t.rowSelectionModel))!=null?r:[]:[]})},xb=(e,t)=>{const r=je(e,"useGridSelection"),o=C=>(...P)=>{t.rowSelection&&C(...P)},l=a.useMemo(()=>pu(t.rowSelectionModel,rt(e.current.state)),[e,t.rowSelectionModel]),n=a.useRef(null);e.current.registerControlState({stateId:"rowSelection",propModel:l,propOnChange:t.onRowSelectionModelChange,stateSelector:rt,changeEvent:"rowSelectionChange"});const{checkboxSelection:i,disableMultipleRowSelection:c,disableRowSelectionOnClick:d,isRowSelectable:u}=t,s=!c||i,f=Qt(e,t),p=a.useCallback(C=>{var P;let k=C;const D=(P=n.current)!=null?P:C,M=e.current.isRowSelected(C);if(M){const $=lr(e),G=$.findIndex(z=>z===D),j=$.findIndex(z=>z===k);if(G===j)return;G>j?k=$[j+1]:k=$[j-1]}n.current=C,e.current.selectRowRange({startId:D,endId:k},!M)},[e]),b=a.useCallback(C=>{if(t.signature===gt.DataGrid&&!t.checkboxSelection&&Array.isArray(C)&&C.length>1)throw new Error(["MUI: `rowSelectionModel` can only contain 1 item in DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection."].join(` -`));rt(e.current.state)!==C&&(r.debug("Setting selection model"),e.current.setState(k=>m({},k,{rowSelection:t.rowSelection?C:[]})),e.current.forceUpdate())},[e,r,t.rowSelection,t.signature,t.checkboxSelection]),g=a.useCallback(C=>rt(e.current.state).includes(C),[e]),h=a.useCallback(C=>{if(u&&!u(e.current.getRowParams(C)))return!1;const P=e.current.getRowNode(C);return!((P==null?void 0:P.type)==="footer"||(P==null?void 0:P.type)==="pinnedRow")},[e,u]),v=a.useCallback(()=>Ti(e),[e]),S=a.useCallback((C,P=!0,k=!1)=>{if(e.current.isRowSelectable(C))if(n.current=C,k)r.debug(`Setting selection for row ${C}`),e.current.setRowSelectionModel(P?[C]:[]);else{r.debug(`Toggling selection for row ${C}`);const M=rt(e.current.state).filter(G=>G!==C);P&&M.push(C),(M.length<2||s)&&e.current.setRowSelectionModel(M)}},[e,r,s]),w=a.useCallback((C,P=!0,k=!1)=>{r.debug("Setting selection for several rows");const D=C.filter(G=>e.current.isRowSelectable(G));let M;if(k)M=P?D:[];else{const G=m({},vr(e));D.forEach(j=>{P?G[j]=j:delete G[j]}),M=Object.values(G)}(M.length<2||s)&&e.current.setRowSelectionModel(M)},[e,r,s]),L=a.useCallback(({startId:C,endId:P},k=!0,D=!1)=>{if(!e.current.getRow(C)||!e.current.getRow(P))return;r.debug(`Expanding selection from row ${C} to row ${P}`);const M=lr(e),$=M.indexOf(C),G=M.indexOf(P),[j,z]=$>G?[G,$]:[$,G],q=M.slice(j,z+1);e.current.selectRows(q,k,D)},[e,r]),R={selectRow:S,setRowSelectionModel:b,getSelectedRows:v,isRowSelected:g,isRowSelectable:h},V={selectRows:w,selectRowRange:L};be(e,R,"public"),be(e,V,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback(()=>{if(t.keepNonExistentRowsSelected)return;const C=rt(e.current.state),P=yt(e),k=m({},vr(e));let D=!1;C.forEach(M=>{P[M]||(delete k[M],D=!0)}),D&&e.current.setRowSelectionModel(Object.values(k))},[e,t.keepNonExistentRowsSelected]),I=a.useCallback((C,P)=>{const k=P.metaKey||P.ctrlKey,D=!i&&!k&&!df(P),M=!s||D,$=e.current.isRowSelected(C);M?e.current.selectRow(C,D?!0:!$,!0):e.current.selectRow(C,!$,!1)},[e,s,i]),y=a.useCallback((C,P)=>{var k;if(d)return;const D=(k=P.target.closest(`.${_.cell}`))==null?void 0:k.getAttribute("data-field");if(D===Zt.field||D===en)return;if(D){const $=e.current.getColumn(D);if(($==null?void 0:$.type)===Vr)return}e.current.getRowNode(C.id).type!=="pinnedRow"&&(P.shiftKey&&(s||i)?p(C.id):I(C.id,P))},[d,s,i,e,p,I]),H=a.useCallback((C,P)=>{if(s&&P.shiftKey){var k;(k=window.getSelection())==null||k.removeAllRanges()}},[s]),T=a.useCallback((C,P)=>{P.nativeEvent.shiftKey?p(C.id):e.current.selectRow(C.id,C.value)},[e,p]),x=a.useCallback(C=>{const k=t.checkboxSelectionVisibleOnly&&t.pagination?Gl(e):lr(e);e.current.selectRows(k,C.value)},[e,t.checkboxSelectionVisibleOnly,t.pagination]),A=a.useCallback((C,P)=>{if(e.current.getCellMode(C.id,C.field)!==Oe.Edit&&P.currentTarget.contains(P.target)){if(uo(P.key)&&P.shiftKey){const k=Je(e);if(k&&k.id!==C.id){P.preventDefault();const D=e.current.isRowSelected(k.id);if(!s){e.current.selectRow(k.id,!D,!0);return}const M=e.current.getRowIndexRelativeToVisibleRows(k.id),$=e.current.getRowIndexRelativeToVisibleRows(C.id);let G,j;M>$?D?(G=$,j=M-1):(G=$,j=M):D?(G=M+1,j=$):(G=M,j=$);const z=f.rows.slice(G,j+1).map(q=>q.id);e.current.selectRows(z,!D);return}}if(P.key===" "&&P.shiftKey){P.preventDefault(),I(C.id,P);return}P.key==="a"&&(P.ctrlKey||P.metaKey)&&(P.preventDefault(),w(e.current.getAllRowIds(),!0))}},[e,I,w,f.rows,s]);re(e,"sortedRowsSet",o(F)),re(e,"rowClick",o(y)),re(e,"rowSelectionCheckboxChange",o(T)),re(e,"headerSelectionCheckboxChange",x),re(e,"cellMouseDown",o(H)),re(e,"cellKeyDown",o(A)),a.useEffect(()=>{l!==void 0&&e.current.setRowSelectionModel(l)},[e,l,t.rowSelection]),a.useEffect(()=>{t.rowSelection||e.current.setRowSelectionModel([])},[e,t.rowSelection]);const E=l!=null;a.useEffect(()=>{if(E||!t.rowSelection)return;const C=rt(e.current.state);if(h){const P=C.filter(k=>h(k));P.length{if(!t.rowSelection||E)return;const C=rt(e.current.state);!s&&C.length>1&&e.current.setRowSelectionModel([])},[e,s,i,E,t.rowSelection])},an={noRowsLabel:"No rows",noResultsOverlayLabel:"No results found.",toolbarDensity:"Density",toolbarDensityLabel:"Density",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comfortable",toolbarColumns:"Columns",toolbarColumnsLabel:"Select columns",toolbarFilters:"Filters",toolbarFiltersLabel:"Show filters",toolbarFiltersTooltipHide:"Hide filters",toolbarFiltersTooltipShow:"Show filters",toolbarFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,toolbarQuickFilterPlaceholder:"Search…",toolbarQuickFilterLabel:"Search",toolbarQuickFilterDeleteIconLabel:"Clear",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download as CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download as Excel",columnsPanelTextFieldLabel:"Find column",columnsPanelTextFieldPlaceholder:"Column title",columnsPanelDragIconLabel:"Reorder column",columnsPanelShowAllButton:"Show all",columnsPanelHideAllButton:"Hide all",filterPanelAddFilter:"Add filter",filterPanelRemoveAll:"Remove all",filterPanelDeleteIconLabel:"Delete",filterPanelLogicOperator:"Logic operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"Columns",filterPanelInputLabel:"Value",filterPanelInputPlaceholder:"Filter value",filterOperatorContains:"contains",filterOperatorEquals:"equals",filterOperatorStartsWith:"starts with",filterOperatorEndsWith:"ends with",filterOperatorIs:"is",filterOperatorNot:"is not",filterOperatorAfter:"is after",filterOperatorOnOrAfter:"is on or after",filterOperatorBefore:"is before",filterOperatorOnOrBefore:"is on or before",filterOperatorIsEmpty:"is empty",filterOperatorIsNotEmpty:"is not empty",filterOperatorIsAnyOf:"is any of","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contains",headerFilterOperatorEquals:"Equals",headerFilterOperatorStartsWith:"Starts with",headerFilterOperatorEndsWith:"Ends with",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is not",headerFilterOperatorAfter:"Is after",headerFilterOperatorOnOrAfter:"Is on or after",headerFilterOperatorBefore:"Is before",headerFilterOperatorOnOrBefore:"Is on or before",headerFilterOperatorIsEmpty:"Is empty",headerFilterOperatorIsNotEmpty:"Is not empty",headerFilterOperatorIsAnyOf:"Is any of","headerFilterOperator=":"Equals","headerFilterOperator!=":"Not equals","headerFilterOperator>":"Greater than","headerFilterOperator>=":"Greater than or equal to","headerFilterOperator<":"Less than","headerFilterOperator<=":"Less than or equal to",filterValueAny:"any",filterValueTrue:"true",filterValueFalse:"false",columnMenuLabel:"Menu",columnMenuShowColumns:"Show columns",columnMenuManageColumns:"Manage columns",columnMenuFilter:"Filter",columnMenuHideColumn:"Hide column",columnMenuUnsort:"Unsort",columnMenuSortAsc:"Sort by ASC",columnMenuSortDesc:"Sort by DESC",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,columnHeaderFiltersLabel:"Show filters",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rows selected`:`${e.toLocaleString()} row selected`,footerTotalRows:"Total Rows:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} of ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selection",checkboxSelectionSelectAllRows:"Select all rows",checkboxSelectionUnselectAllRows:"Unselect all rows",checkboxSelectionSelectRow:"Select row",checkboxSelectionUnselectRow:"Unselect row",booleanCellTrueLabel:"yes",booleanCellFalseLabel:"no",actionsCellMore:"more",pinToLeft:"Pin to left",pinToRight:"Pin to right",unpin:"Unpin",treeDataGroupingHeaderName:"Group",treeDataExpand:"see children",treeDataCollapse:"hide children",groupingColumnHeaderName:"Group",groupColumn:e=>`Group by ${e}`,unGroupColumn:e=>`Stop grouping by ${e}`,detailPanelToggle:"Detail panel toggle",expandDetailPanel:"Expand",collapseDetailPanel:"Collapse",MuiTablePagination:{},rowReorderingHeaderName:"Row reordering",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"size"},vb=e=>{const{classes:t}=e;return a.useMemo(()=>we({cellCheckbox:["cellCheckbox"],columnHeaderCheckbox:["columnHeaderCheckbox"]},Ce,t),[t])},Ob=(e,t)=>{const r={classes:t.classes},o=vb(r),l=a.useCallback(n=>{const i=m({},Zt,{cellClassName:o.cellCheckbox,headerClassName:o.columnHeaderCheckbox,headerName:e.current.getLocaleText("checkboxSelectionHeaderName")}),c=t.checkboxSelection,d=n.lookup[Ft]!=null;return c&&!d?(n.lookup[Ft]=i,n.orderedFields=[Ft,...n.orderedFields]):!c&&d?(delete n.lookup[Ft],n.orderedFields=n.orderedFields.filter(u=>u!==Ft)):c&&d&&(n.lookup[Ft]=m({},i,n.lookup[Ft])),n},[e,o,t.checkboxSelection]);Re(e,"hydrateColumns",l)},Fb=(e,t)=>{var r,o,l;const n=(r=(o=t.sortModel)!=null?o:(l=t.initialState)==null||(l=l.sorting)==null?void 0:l.sortModel)!=null?r:[];return m({},e,{sorting:{sortModel:Di(n,t.disableMultipleColumnsSorting),sortedRows:[]}})},yb=(e,t)=>{var r;const o=je(e,"useGridSorting");e.current.registerControlState({stateId:"sortModel",propModel:t.sortModel,propOnChange:t.onSortModelChange,stateSelector:tt,changeEvent:"sortModelChange"});const l=a.useCallback((F,I)=>{const y=tt(e),H=y.findIndex(x=>x.field===F);let T=[...y];return H>-1?I?T.splice(H,1,I):T.splice(H,1):T=[...y,I],T},[e]),n=a.useCallback((F,I)=>{var y;const T=tt(e).find(A=>A.field===F.field);if(T){var x;const A=I===void 0?zn((x=F.sortingOrder)!=null?x:t.sortingOrder,T.sort):I;return A==null?void 0:m({},T,{sort:A})}return{field:F.field,sort:I===void 0?zn((y=F.sortingOrder)!=null?y:t.sortingOrder):I}},[e,t.sortingOrder]),i=a.useCallback((F,I)=>I==null||I.sortable===!1?F:(I.sortingOrder||t.sortingOrder).some(H=>!!H)?[...F,"columnMenuSortItem"]:F,[t.sortingOrder]),c=a.useCallback(()=>{e.current.setState(F=>{if(t.sortingMode==="server")return o.debug("Skipping sorting rows as sortingMode = server"),m({},F,{sorting:m({},F.sorting,{sortedRows:Tl(at(e),Ue,!1)})});const I=tt(F,e.current.instanceId),y=Cp(I,e),H=e.current.applyStrategyProcessor("sorting",{sortRowList:y});return m({},F,{sorting:m({},F.sorting,{sortedRows:H})})}),e.current.publishEvent("sortedRowsSet"),e.current.forceUpdate()},[e,o,t.sortingMode]),d=a.useCallback(F=>{tt(e)!==F&&(o.debug("Setting sort model"),e.current.setState(Nn(F,t.disableMultipleColumnsSorting)),e.current.forceUpdate(),e.current.applySorting())},[e,o,t.disableMultipleColumnsSorting]),u=a.useCallback((F,I,y)=>{if(!F.sortable)return;const H=n(F,I);let T;!y||t.disableMultipleColumnsSorting?T=H?[H]:[]:T=l(F.field,H),e.current.setSortModel(T)},[e,l,n,t.disableMultipleColumnsSorting]),s=a.useCallback(()=>tt(e),[e]),f=a.useCallback(()=>xo(e).map(I=>I.model),[e]),p=a.useCallback(()=>Po(e),[e]),b=a.useCallback(F=>e.current.getSortedRowIds()[F],[e]);be(e,{getSortModel:s,getSortedRows:f,getSortedRowIds:p,getRowIdFromRowIndex:b,setSortModel:d,sortColumn:u,applySorting:c},"public");const h=a.useCallback((F,I)=>{var y;const H=tt(e);return!I.exportOnlyDirtyModels||t.sortModel!=null||((y=t.initialState)==null||(y=y.sorting)==null?void 0:y.sortModel)!=null||H.length>0?m({},F,{sorting:{sortModel:H}}):F},[e,t.sortModel,(r=t.initialState)==null||(r=r.sorting)==null?void 0:r.sortModel]),v=a.useCallback((F,I)=>{var y;const H=(y=I.stateToRestore.sorting)==null?void 0:y.sortModel;return H==null?F:(e.current.setState(Nn(H,t.disableMultipleColumnsSorting)),m({},F,{callbacks:[...F.callbacks,e.current.applySorting]}))},[e,t.disableMultipleColumnsSorting]),S=a.useCallback(F=>{const I=at(e),y=I[Ue],H=F.sortRowList?F.sortRowList(y.children.map(T=>I[T])):[...y.children];return y.footerId!=null&&H.push(y.footerId),H},[e]);Re(e,"exportState",h),Re(e,"restoreState",v),po(e,Ut,"sorting",S);const w=a.useCallback(({colDef:F},I)=>{const y=I.shiftKey||I.metaKey||I.ctrlKey;u(F,void 0,y)},[u]),L=a.useCallback(({colDef:F},I)=>{af(I.key)&&!I.ctrlKey&&!I.metaKey&&u(F,void 0,I.shiftKey)},[u]),R=a.useCallback(()=>{const F=tt(e),I=Ht(e);if(F.length>0){const y=F.filter(H=>I[H.field]);y.length{F==="sorting"&&e.current.applySorting()},[e]);Re(e,"columnMenu",i),re(e,"columnHeaderClick",w),re(e,"columnHeaderKeyDown",L),re(e,"rowsSet",e.current.applySorting),re(e,"columnsChange",R),re(e,"activeStrategyProcessorChange",V),pr(()=>{e.current.applySorting()}),Qe(()=>{t.sortModel!==void 0&&e.current.setSortModel(t.sortModel)},[e,t.sortModel])};function oa(e){const{clientHeight:t,scrollTop:r,offsetHeight:o,offsetTop:l}=e,n=l+o;if(o>t)return l;if(n-t>r)return n-t;if(l{const r=Ir(),o=je(e,"useGridScroll"),l=e.current.columnHeadersElementRef,n=e.current.virtualScrollerRef,i=K(e,Mt),c=a.useCallback(f=>{const p=Lr(e),b=He(e);if(!(f.rowIndex==null)&&p===0||b.length===0)return!1;o.debug(`Scrolling to cell at row ${f.rowIndex}, col: ${f.colIndex} `);let h={};if(f.colIndex!=null){const L=Bt(e);let R;if(typeof f.rowIndex<"u"){var v;const V=(v=i[f.rowIndex])==null?void 0:v.id,F=e.current.unstable_getCellColSpanInfo(V,f.colIndex);F&&!F.spannedByColSpan&&(R=F.cellProps.width)}typeof R>"u"&&(R=b[f.colIndex].computedWidth),h.left=oa({clientHeight:n.current.clientWidth,scrollTop:Math.abs(n.current.scrollLeft),offsetHeight:R,offsetTop:L[f.colIndex]})}if(f.rowIndex!=null){var S,w;const L=ur(e.current.state),R=Mi(e),V=ki(e),F=t.pagination?f.rowIndex-R*V:f.rowIndex,I=L.positions[F+1]?L.positions[F+1]-L.positions[F]:L.currentPageTotalHeight-L.positions[F],y=((S=n.current.querySelector(`.${_["pinnedRows--top"]}`))==null?void 0:S.clientHeight)||0,H=((w=n.current.querySelector(`.${_["pinnedRows--bottom"]}`))==null?void 0:w.clientHeight)||0;h.top=oa({clientHeight:n.current.clientHeight-y-H,scrollTop:n.current.scrollTop,offsetHeight:I,offsetTop:L.positions[F]})}return h=e.current.unstable_applyPipeProcessors("scrollToIndexes",h,f),typeof h.left!==void 0||typeof h.top!==void 0?(e.current.scroll(h),!0):!1},[o,e,n,t.pagination,i]),d=a.useCallback(f=>{if(n.current&&f.left!=null&&l.current){const p=r.direction==="rtl"?-1:1;l.current.scrollLeft=f.left,n.current.scrollLeft=p*f.left,o.debug(`Scrolling left: ${f.left}`)}n.current&&f.top!=null&&(n.current.scrollTop=f.top,o.debug(`Scrolling top: ${f.top}`)),o.debug("Scrolling, updating container, and viewport")},[n,r.direction,l,o]),u=a.useCallback(()=>n!=null&&n.current?{top:n.current.scrollTop,left:n.current.scrollLeft}:{top:0,left:0},[n]);be(e,{scroll:d,scrollToIndexes:c,getScrollPosition:u},"public")};function Mb(e,t){ke(e,"columnHeaderClick",t.onColumnHeaderClick),ke(e,"columnHeaderDoubleClick",t.onColumnHeaderDoubleClick),ke(e,"columnHeaderOver",t.onColumnHeaderOver),ke(e,"columnHeaderOut",t.onColumnHeaderOut),ke(e,"columnHeaderEnter",t.onColumnHeaderEnter),ke(e,"columnHeaderLeave",t.onColumnHeaderLeave),ke(e,"cellClick",t.onCellClick),ke(e,"cellDoubleClick",t.onCellDoubleClick),ke(e,"cellKeyDown",t.onCellKeyDown),ke(e,"preferencePanelClose",t.onPreferencePanelClose),ke(e,"preferencePanelOpen",t.onPreferencePanelOpen),ke(e,"menuOpen",t.onMenuOpen),ke(e,"menuClose",t.onMenuClose),ke(e,"rowDoubleClick",t.onRowDoubleClick),ke(e,"rowClick",t.onRowClick),ke(e,"stateChange",t.onStateChange)}const kb=({content:e,container:t,scrollBarSize:r})=>{const o=e.width>t.width,l=e.height>t.height;let n=!1,i=!1;return(o||l)&&(n=o,i=e.height+(n?r:0)>t.height,i&&(n=e.width+r>t.width)),{hasScrollX:n,hasScrollY:i}};function Eb(e,t){const r=je(e,"useResizeContainer"),o=a.useRef(!1),l=a.useRef(null),n=a.useRef(null),i=K(e,ur),c=K(e,Kt),d=Math.floor(t.rowHeight*c),u=nn(e,t.columnHeaderHeight),s=a.useCallback(()=>{var I;const y=(I=e.current.rootElementRef)==null?void 0:I.current,H=So(e),T=Ua(e);if(!l.current)return;let x;if(t.scrollbarSize!=null)x=t.scrollbarSize;else if(!H||!y)x=0;else{const $=yr(y).createElement("div");$.style.width="99px",$.style.height="99px",$.style.position="absolute",$.style.overflow="scroll",$.className="scrollDiv",y.appendChild($),x=$.offsetWidth-$.clientWidth,y.removeChild($)}let A,E,C;if(t.autoHeight)C=!1,E=Math.round(H)>Math.round(l.current.width),A={width:l.current.width,height:i.currentPageTotalHeight+(E?x:0)};else{A={width:l.current.width,height:Math.max(l.current.height-u,0)};const M=kb({content:{width:Math.round(H),height:i.currentPageTotalHeight},container:{width:Math.round(A.width),height:A.height-T.top-T.bottom},scrollBarSize:x});C=M.hasScrollY,E=M.hasScrollX}const P={width:A.width-(C?x:0),height:A.height-(E?x:0)},k={viewportOuterSize:A,viewportInnerSize:P,hasScrollX:E,hasScrollY:C,scrollBarSize:x},D=n.current;n.current=k,(k.viewportInnerSize.width!==(D==null?void 0:D.viewportInnerSize.width)||k.viewportInnerSize.height!==(D==null?void 0:D.viewportInnerSize.height))&&e.current.publishEvent("viewportInnerSizeChange",k.viewportInnerSize)},[e,t.scrollbarSize,t.autoHeight,i.currentPageTotalHeight,u]),[f,p]=a.useState(),b=a.useMemo(()=>ml(p,60),[]),g=a.useRef();Qe(()=>{f&&(s(),e.current.publishEvent("debouncedResize",l.current))},[e,f,s]);const h=a.useCallback(()=>{e.current.computeSizeAndPublishResizeEvent()},[e]),v=a.useCallback(()=>n.current,[]),S=a.useCallback(()=>{const I=e.current.getRootDimensions();if(!I)return 0;const y=co(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(t.getRowHeight){const T=e.current.getRenderContext(),x=T.lastRowIndex-T.firstRowIndex;return Math.min(x-1,y.rows.length)}const H=Math.floor(I.viewportInnerSize.height/d);return Math.min(H,y.rows.length)},[e,t.pagination,t.paginationMode,t.getRowHeight,d]),w=a.useCallback(()=>{var I,y,H;const T=(I=e.current.mainElementRef)==null?void 0:I.current;if(!T)return;const A=Uu(T).getComputedStyle(T),E=parseFloat(A.height)||0,C=parseFloat(A.width)||0,P=E!==((y=g.current)==null?void 0:y.height),k=C!==((H=g.current)==null?void 0:H.width);if(!g.current||P||k){const D={width:C,height:E};e.current.publishEvent("resize",D),g.current=D}},[e]),L={resize:h,getRootDimensions:v},R={getViewportPageSize:S,updateGridDimensionsRef:s,computeSizeAndPublishResizeEvent:w};be(e,L,"public"),be(e,R,"private");const V=a.useRef(!0),F=a.useCallback(I=>{l.current=I;const y=/jsdom/.test(window.navigator.userAgent);if(I.height===0&&!o.current&&!t.autoHeight&&!y&&(r.error(["The parent DOM element of the data grid has an empty height.","Please make sure that this element has an intrinsic height.","The grid displays with a height of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` -`)),o.current=!0),I.width===0&&!o.current&&!y&&(r.error(["The parent DOM element of the data grid has an empty width.","Please make sure that this element has an intrinsic width.","The grid displays with a width of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` -`)),o.current=!0),V.current){p(I),V.current=!1;return}b(I)},[t.autoHeight,b,r]);Qe(()=>s(),[s]),ke(e,"sortedRowsSet",s),ke(e,"paginationModelChange",s),ke(e,"columnsChange",s),re(e,"resize",F),ke(e,"debouncedResize",t.onResize)}const Lb=["style"],Tb=["style"];function ar(e,t,r=0,o=t.length){if(t.length<=0)return-1;if(r>=o)return r;const l=r+Math.floor((o-r)/2),n=t[l];return e<=n?ar(e,t,r,l):ar(e,t,l+1,o)}function Db(e,t,r){let o=1;for(;r[sr(e-r,o,l),sr(t+r,o,l)],gu=(e,t)=>e===t?!0:e.firstRowIndex===t.firstRowIndex&&e.lastRowIndex===t.lastRowIndex&&e.firstColumnIndex===t.firstColumnIndex&&e.lastColumnIndex===t.lastColumnIndex,$b={maxSize:3},Rb=e=>{var t,r;const o=At(),l=J(),n=K(o,He),i=K(o,Vi),c=K(o,ql),{ref:d,onRenderZonePositioning:u,renderZoneMinColumnIndex:s=0,renderZoneMaxColumnIndex:f=n.length,getRowProps:p}=e,b=Ir(),g=K(o,Bt),h=K(o,So),v=K(o,Je),S=K(o,Pr),w=K(o,ur),L=K(o,vr),R=Qt(o,l),V=a.useRef(null),F=a.useRef(null),I=Pt(d,F),[y,H]=a.useState(null),T=a.useRef(y),x=a.useRef({top:0,left:0}),[A,E]=a.useState({width:null,height:null}),C=a.useRef(h),[P,k]=a.useState(null),D=a.useRef(Object.create(null)),M=a.useRef(),$=a.useRef(),G=a.useRef(wo((U,W,ne,me,ae,ie)=>{let te;const ee=U.slice(W,ne);return ie>-1&&(W>ie&&ie>=me||nev!==null?n.findIndex(U=>U.field===v.field):-1,[v,n]),z=a.useCallback(U=>{var W,ne;const me=o.current.getLastMeasuredRowIndex();let ae=me===1/0;(W=R.range)!=null&&W.lastRowIndex&&!ae&&(ae=me>=R.range.lastRowIndex);const ie=sr(me-(((ne=R.range)==null?void 0:ne.firstRowIndex)||0),0,w.positions.length);return ae||w.positions[ie]>=U?ar(U,w.positions):Db(U,w.positions,ie)},[o,(t=R.range)==null?void 0:t.firstRowIndex,(r=R.range)==null?void 0:r.lastRowIndex,w.positions]),q=a.useCallback(()=>{if(!i)return{firstRowIndex:0,lastRowIndex:R.rows.length,firstColumnIndex:0,lastColumnIndex:n.length};const{top:U,left:W}=x.current,ne=Math.min(z(U),w.positions.length-1),me=l.autoHeight?ne+R.rows.length:z(U+A.height);let ae=0,ie=g.length;if(c){let te=!1;const[ee,ue]=Et({firstIndex:ne,lastIndex:me,minFirstIndex:0,maxLastIndex:R.rows.length,buffer:l.rowBuffer});for(let se=ee;se{i?(F.current.scrollLeft=0,F.current.scrollTop=0):V.current.style.transform="translate3d(0px, 0px, 0px)"},[i]),Qe(()=>{E({width:F.current.clientWidth,height:F.current.clientHeight})},[w.currentPageTotalHeight]);const B=a.useCallback(()=>{F.current&&E({width:F.current.clientWidth,height:F.current.clientHeight})},[]);re(o,"debouncedResize",B);const Q=a.useCallback(U=>{const[W,ne]=Et({firstIndex:U.firstRowIndex,lastIndex:U.lastRowIndex,minFirstIndex:0,maxLastIndex:R.rows.length,buffer:l.rowBuffer}),[me]=Et({firstIndex:U.firstColumnIndex,lastIndex:U.lastColumnIndex,minFirstIndex:s,maxLastIndex:f,buffer:l.columnBuffer}),ae=il({firstColumnToRender:me,apiRef:o,firstRowToRender:W,lastRowToRender:ne,visibleRows:R.rows}),ie=b.direction==="ltr"?1:-1,te=ur(o.current.state).positions[W],ee=ie*Bt(o)[ae];V.current.style.transform=`translate3d(${ee}px, ${te}px, 0px)`,typeof u=="function"&&u({top:te,left:ee})},[o,R.rows,u,s,f,l.columnBuffer,l.rowBuffer,b.direction]),X=a.useCallback(()=>T.current,[]),le=a.useCallback(U=>{if(T.current&&gu(U,T.current)){Q(U);return}H(U),Q(U);const[W,ne]=Et({firstIndex:U.firstRowIndex,lastIndex:U.lastRowIndex,minFirstIndex:0,maxLastIndex:R.rows.length,buffer:l.rowBuffer});o.current.publishEvent("renderedRowsIntervalChange",{firstRowToRender:W,lastRowToRender:ne}),T.current=U},[o,H,T,R.rows.length,l.rowBuffer,Q]);Qe(()=>{if(A.width==null)return;const U=q();le(U);const{top:W,left:ne}=x.current,me={top:W,left:ne,renderContext:U};o.current.publishEvent("scrollPositionChange",me)},[o,q,A.width,le]);const ye=ft(U=>{const{scrollTop:W,scrollLeft:ne}=U.currentTarget;if(x.current.top=W,x.current.left=ne,!T.current||W<0||b.direction==="ltr"&&ne<0||b.direction==="rtl"&&ne>0)return;const me=i?q():T.current,ae=Math.abs(me.firstRowIndex-T.current.firstRowIndex),ie=Math.abs(me.lastRowIndex-T.current.lastRowIndex),te=Math.abs(me.firstColumnIndex-T.current.firstColumnIndex),ee=Math.abs(me.lastColumnIndex-T.current.lastColumnIndex),ue=ae>=l.rowThreshold||ie>=l.rowThreshold||te>=l.columnThreshold||ee>=l.columnThreshold||C.current!==h;o.current.publishEvent("scrollPositionChange",{top:W,left:ne,renderContext:ue?me:T.current},U),ue&&(Ca.flushSync(()=>{le(me)}),C.current=h)}),xe=ft(U=>{o.current.publishEvent("virtualScrollerWheel",{},U)}),de=ft(U=>{o.current.publishEvent("virtualScrollerTouchMove",{},U)}),oe=a.useMemo(()=>v!==null?R.rows.findIndex(U=>U.id===v.id):-1,[v,R.rows]);re(o,"rowMouseOver",(U,W)=>{var ne;W.currentTarget.contains(W.relatedTarget)||k((ne=U.id)!=null?ne:null)}),re(o,"rowMouseOut",(U,W)=>{W.currentTarget.contains(W.relatedTarget)||k(null)});const he=(U={renderContext:y})=>{var W;const{onRowRender:ne,renderContext:me,minFirstColumn:ae=s,maxLastColumn:ie=f,availableSpace:te=A.width,rowIndexOffset:ee=0,position:ue="center"}=U;if(!me||te==null)return null;const se=i?l.rowBuffer:0,ve=i?l.columnBuffer:0,[Le,Ye]=Et({firstIndex:me.firstRowIndex,lastIndex:me.lastRowIndex,minFirstIndex:0,maxLastIndex:R.rows.length,buffer:se}),Xe=[];if(U.rows)U.rows.forEach(Ge=>{Xe.push(Ge),o.current.calculateColSpan({rowId:Ge.id,minFirstColumn:ae,maxLastColumn:ie,columns:n})});else{if(!R.range)return null;for(let Ge=Le;Ge-1){const Ge=R.rows[oe];(Le>oe||YeLe?Xe.push(Ge):Xe.unshift(Ge),o.current.calculateColSpan({rowId:Ge.id,minFirstColumn:ae,maxLastColumn:ie,columns:n}))}const[ko,Be]=Et({firstIndex:me.firstColumnIndex,lastIndex:me.lastColumnIndex,minFirstIndex:ae,maxLastIndex:ie,buffer:ve}),Ve=il({firstColumnToRender:ko,apiRef:o,firstRowToRender:Le,lastRowToRender:Ye,visibleRows:R.rows});let Vt=!1;(Ve>j||Be=A.width,ce=a.useMemo(()=>{const U=Math.max(w.currentPageTotalHeight,1);let W=!1;F!=null&&F.current&&U<=(F==null?void 0:F.current.clientHeight)&&(W=!0);const ne={width:Se?h:"auto",height:U,minHeight:W?"100%":"auto"};return l.autoHeight&&R.rows.length===0&&(ne.height=qa(o,l.rowHeight)),ne},[o,F,h,w.currentPageTotalHeight,Se,l.autoHeight,l.rowHeight,R.rows.length]);a.useEffect(()=>{o.current.publishEvent("virtualScrollerContentSizeChange")},[o,ce]);const ge=a.useMemo(()=>{const U={};return Se||(U.overflowX="hidden"),l.autoHeight&&(U.overflowY="hidden"),U},[Se,l.autoHeight]);return o.current.register("private",{getRenderContext:X}),{renderContext:y,updateRenderZonePosition:Q,getRows:he,getRootProps:(U={})=>m({ref:I,onScroll:ye,onWheel:xe,onTouchMove:de},U,{style:U.style?m({},U.style,ge):ge,role:"presentation"}),getContentProps:({style:U}={})=>({style:U?m({},U,ce):ce,role:"presentation"}),getRenderZoneProps:()=>({ref:V,role:"rowgroup"})}},Ab=e=>{const{classes:t,headerAlign:r,isDragging:o,showColumnBorder:l,groupId:n}=e;return we({root:["columnHeader",r==="left"&&"columnHeader--alignLeft",r==="center"&&"columnHeader--alignCenter",r==="right"&&"columnHeader--alignRight",o&&"columnHeader--moving",l&&"columnHeader--showColumnBorder",l&&"columnHeader--withRightBorder","withBorderColor",n===null?"columnHeader--emptyGroup":"columnHeader--filledGroup"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer","withBorderColor"],titleContainerContent:["columnHeaderTitleContainerContent"]},Ce,t)};function Hb(e){var t;const{groupId:r,width:o,depth:l,maxDepth:n,fields:i,height:c,colIndex:d,hasFocus:u,tabIndex:s,isLastColumn:f}=e,p=J(),b=a.useRef(null),g=fe(),h=K(g,Ol),v=r?h[r]:{},{headerName:S=r??"",description:w="",headerAlign:L=void 0}=v;let R;const V=r&&((t=h[r])==null?void 0:t.renderHeaderGroup),F=a.useMemo(()=>({groupId:r,headerName:S,description:w,depth:l,maxDepth:n,fields:i,colIndex:d,isLastColumn:f}),[r,S,w,l,n,i,d,f]);r&&V&&(R=V(F));const I=p.showColumnVerticalBorder,y=m({},e,{classes:p.classes,showColumnBorder:I,headerAlign:L,depth:l,isDragging:!1}),H=S??r,T=Ee(),x=r===null?`empty-group-cell-${T}`:r,A=Ab(y);a.useLayoutEffect(()=>{if(u){const D=b.current.querySelector('[tabindex="0"]')||b.current;D==null||D.focus()}},[g,u]);const E=a.useCallback(k=>D=>{D.currentTarget.contains(D.target)&&g.current.publishEvent(k,F,D)},[g,F]),C=a.useMemo(()=>({onKeyDown:E("columnGroupHeaderKeyDown"),onFocus:E("columnGroupHeaderFocus"),onBlur:E("columnGroupHeaderBlur")}),[E]),P=typeof v.headerClassName=="function"?v.headerClassName(F):v.headerClassName;return O.jsx(wi,m({ref:b,classes:A,columnMenuOpen:!1,colIndex:d,height:c,isResizing:!1,sortDirection:null,hasFocus:!1,tabIndex:s,isDraggable:!1,headerComponent:R,headerClassName:P,description:w,elementId:x,width:o,columnMenuIconButton:null,columnTitleIconButtons:null,resizable:!1,label:H,"aria-colspan":i.length,"data-fields":`|-${i.join("-|-")}-|`},C))}const la=De("div",{name:"MuiDataGrid",slot:"ColumnHeaderRow",overridesResolver:(e,t)=>t.columnHeaderRow})(()=>({display:"flex"}));function _b(e){return!!e.target}const Vb=e=>{const{innerRef:t,minColumnIndex:r=0,visibleColumns:o,sortColumnLookup:l,filterColumnLookup:n,columnPositions:i,columnHeaderTabIndexState:c,columnGroupHeaderTabIndexState:d,columnHeaderFocus:u,columnGroupHeaderFocus:s,densityFactor:f,headerGroupingMaxDepth:p,columnMenuState:b,columnVisibility:g,columnGroupsHeaderStructure:h,hasOtherElementInTabSequence:v}=e,S=Ir(),[w,L]=a.useState(""),[R,V]=a.useState(""),F=At(),I=K(F,ql),y=J(),H=a.useRef(null),T=Pt(t,H),[x,A]=a.useState(null),E=a.useRef(x),C=a.useRef(0),P=Qt(F,y),k=nn(F,y.columnHeaderHeight),D=Math.floor(y.columnHeaderHeight*f),M=a.useCallback(de=>{x&&de&&gu(x,de)||A(de)},[x]);a.useEffect(()=>{F.current.columnHeadersContainerElementRef.current.scrollLeft=0},[F]);const $=a.useRef(wo(Fm,{equalityCheck:(de,oe)=>["firstColumnIndex","minColumnIndex","columnBuffer"].every(he=>de[he]===oe[he])})),G=a.useCallback(de=>{const[oe,he]=Et({firstIndex:de.firstRowIndex,lastIndex:de.lastRowIndex,minFirstIndex:0,maxLastIndex:P.rows.length,buffer:y.rowBuffer}),Se=$.current({firstColumnIndex:de.firstColumnIndex,minColumnIndex:r,columnBuffer:y.columnBuffer,firstRowToRender:oe,lastRowToRender:he,apiRef:F,visibleRows:P.rows}),ce=S.direction==="ltr"?1:-1,ge=Se>0?C.current-ce*i[Se]:C.current;H.current.style.transform=`translate3d(${-ge}px, 0px, 0px)`},[i,r,y.columnBuffer,F,P.rows,y.rowBuffer,S.direction]);a.useLayoutEffect(()=>{x&&G(x)},[x,G]);const j=a.useCallback(({left:de,renderContext:oe=null},he)=>{var Se,ce;if(!H.current||C.current===de&&((Se=E.current)==null?void 0:Se.firstColumnIndex)===(oe==null?void 0:oe.firstColumnIndex)&&((ce=E.current)==null?void 0:ce.lastColumnIndex)===(oe==null?void 0:oe.lastColumnIndex))return;C.current=de;let ge=!1;oe!==E.current||!E.current?(_b(he)?(Ca.flushSync(()=>{M(oe)}),ge=!0):M(oe),E.current=oe):ge=!0,oe&&ge&&G(oe)},[G,M]),z=a.useCallback(de=>V(de.field),[]),q=a.useCallback(()=>V(""),[]),B=a.useCallback(de=>L(de.field),[]),Q=a.useCallback(()=>L(""),[]);re(F,"columnResizeStart",z),re(F,"columnResizeStop",q),re(F,"columnHeaderDragStart",B),re(F,"columnHeaderDragEnd",Q),re(F,"scrollPositionChange",j);const X=de=>{const{renderContext:oe=x,minFirstColumn:he=r,maxLastColumn:Se=o.length}=de||{};if(!oe)return null;const[ce,ge]=Et({firstIndex:oe.firstRowIndex,lastIndex:oe.lastRowIndex,minFirstIndex:0,maxLastIndex:P.rows.length,buffer:y.rowBuffer}),U=I?$.current({firstColumnIndex:oe.firstColumnIndex,minColumnIndex:he,columnBuffer:y.columnBuffer,apiRef:F,firstRowToRender:ce,lastRowToRender:ge,visibleRows:P.rows}):0,W=I?Math.min(oe.lastColumnIndex+y.columnBuffer,Se):Se;return{renderedColumns:o.slice(U,W),firstColumnToRender:U,lastColumnToRender:W,minFirstColumn:he,maxLastColumn:Se}},le=(de,oe={})=>{const he=X(de);if(he==null)return null;const{renderedColumns:Se,firstColumnToRender:ce}=he,ge=[];for(let U=0;U{if(p===0)return null;const oe=X(de);if(oe==null||oe.renderedColumns.length===0)return null;const{firstColumnToRender:he,lastColumnToRender:Se}=oe,ce=[],ge=[];for(let ne=0;neBe===ie&&Ve.includes(ae)),ee=o[Se-1].field,ue=(W=F.current.unstable_getColumnGroupPath(ee)[ne])!=null?W:null,se=me.findIndex(({groupId:Be,columnFields:Ve})=>Be===ue&&Ve.includes(ee)),ve=me.slice(te,se+1).map(Be=>m({},Be,{columnFields:Be.columnFields.filter(Ve=>g[Ve]!==!1)})).filter(Be=>Be.columnFields.length>0),Le=ve[0].columnFields.indexOf(ae),Xe=ve[0].columnFields.slice(0,Le).reduce((Be,Ve)=>{var Vt;const Gt=F.current.getColumn(Ve);return Be+((Vt=Gt.computedWidth)!=null?Vt:0)},0);let _t=he;const ko=ve.map(({groupId:Be,columnFields:Ve})=>{const Vt=s!==null&&s.depth===ne&&Ve.includes(s.field),Gt=d!==null&&d.depth===ne&&Ve.includes(d.field)?0:-1,Nr={groupId:Be,width:Ve.reduce((zr,gr)=>zr+F.current.getColumn(gr).computedWidth,0),fields:Ve,colIndex:_t,hasFocus:Vt,tabIndex:Gt};return _t+=Ve.length,Nr});ge.push({leftOverflow:Xe,elements:ko})}return ge.forEach((ne,me)=>{ce.push(O.jsx(la,{style:{height:`${D}px`,transform:`translateX(-${ne.leftOverflow}px)`},role:"row","aria-rowindex":me+1,ownerState:y,children:ne.elements.map(({groupId:ae,width:ie,fields:te,colIndex:ee,hasFocus:ue,tabIndex:se},ve)=>O.jsx(Hb,{groupId:ae,width:ie,fields:te,colIndex:ee,depth:me,isLastColumn:ee===o.length-te.length,maxDepth:ge.length,height:D,hasFocus:ue,tabIndex:se},ve))},me))}),ce},xe={minHeight:k,maxHeight:k,lineHeight:`${D}px`};return{renderContext:x,getColumnHeaders:le,getColumnsToRender:X,getColumnGroupHeaders:ye,isDragging:!!w,getRootProps:(de={})=>m({style:xe},de),getInnerProps:()=>({ref:T,role:"rowgroup"}),headerHeight:D}},Gb=["className"],Nb=e=>{const{classes:t}=e;return we({root:["columnHeaders","withBorderColor"]},Ce,t)},zb=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaders",overridesResolver:(e,t)=>t.columnHeaders})({position:"relative",overflow:"hidden",display:"flex",alignItems:"center",boxSizing:"border-box",borderBottom:"1px solid",borderTopLeftRadius:"var(--unstable_DataGrid-radius)",borderTopRightRadius:"var(--unstable_DataGrid-radius)"}),jb=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Gb),n=J(),i=Nb(n);return O.jsx(zb,m({ref:r,className:Pe(o,i.root),ownerState:n},l,{role:"presentation"}))}),Bb=["isDragging","className"],Ub=e=>{const{isDragging:t,hasScrollX:r,classes:o}=e;return we({root:["columnHeadersInner",t&&"columnHeaderDropZone",r&&"columnHeadersInner--scrollable"]},Ce,o)},qb=_e("div",{name:"MuiDataGrid",slot:"columnHeadersInner",overridesResolver:(e,t)=>[{[`&.${_.columnHeaderDropZone}`]:t.columnHeaderDropZone},t.columnHeadersInner]})(()=>({display:"flex",alignItems:"flex-start",flexDirection:"column",[`&.${_.columnHeaderDropZone} .${_.columnHeaderDraggableContainer}`]:{cursor:"move"},[`&.${_["columnHeadersInner--scrollable"]} .${_.columnHeader}:last-child`]:{borderRight:"none"}})),Wb=a.forwardRef(function(t,r){var o,l;const{isDragging:n,className:i}=t,c=Z(t,Bb),d=fe(),u=J(),s=m({},u,{isDragging:n,hasScrollX:(o=(l=d.current.getRootDimensions())==null?void 0:l.hasScrollX)!=null?o:!1}),f=Ub(s);return O.jsx(qb,m({ref:r,className:Pe(i,f.root),ownerState:s},c))}),Kb=["innerRef","className","visibleColumns","sortColumnLookup","filterColumnLookup","columnPositions","columnHeaderTabIndexState","columnGroupHeaderTabIndexState","columnHeaderFocus","columnGroupHeaderFocus","densityFactor","headerGroupingMaxDepth","columnMenuState","columnVisibility","columnGroupsHeaderStructure","hasOtherElementInTabSequence"],Qb=a.forwardRef(function(t,r){const{innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:c,columnHeaderTabIndexState:d,columnGroupHeaderTabIndexState:u,columnHeaderFocus:s,columnGroupHeaderFocus:f,densityFactor:p,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:v,hasOtherElementInTabSequence:S}=t,w=Z(t,Kb),{isDragging:L,getRootProps:R,getInnerProps:V,getColumnHeaders:F,getColumnGroupHeaders:I}=Vb({innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:c,columnHeaderTabIndexState:d,columnGroupHeaderTabIndexState:u,columnHeaderFocus:s,columnGroupHeaderFocus:f,densityFactor:p,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:v,hasOtherElementInTabSequence:S});return O.jsx(jb,m({ref:r},R(w),{children:O.jsxs(Wb,m({isDragging:L},V(),{children:[I(),F()]}))}))}),mu=Oo(Qb),Zb=a.forwardRef(function(t,r){const l=fe().current.getLocaleText("noResultsOverlayLabel");return O.jsx(yo,m({ref:r},t,{children:l}))}),Jb=["sortingOrder"],Yb=a.memo(function(t){const{sortingOrder:r}=t,o=Z(t,Jb),l=J(),[n]=r,i=n==="asc"?l.slots.columnSortedAscendingIcon:l.slots.columnSortedDescendingIcon;return i?O.jsx(i,m({},o)):null}),Xb=["native"];function eh(e){let{native:t}=e,r=Z(e,Xb);return t?O.jsx("option",m({},r)):O.jsx(dt,m({},r))}const th={BooleanCellTrueIcon:ts,BooleanCellFalseIcon:ro,ColumnMenuIcon:Ji,OpenFilterButtonIcon:Bi,FilterPanelDeleteIcon:ro,ColumnFilteredIcon:Jo,ColumnSelectorIcon:qi,ColumnUnsortedIcon:Yb,ColumnSortedAscendingIcon:Wo,ColumnSortedDescendingIcon:Ko,ColumnResizeIcon:Wi,DensityCompactIcon:Ki,DensityStandardIcon:Qi,DensityComfortableIcon:Zi,ExportIcon:es,MoreActionsIcon:rs,TreeDataCollapseIcon:Zo,TreeDataExpandIcon:Qo,GroupingCriteriaCollapseIcon:Zo,GroupingCriteriaExpandIcon:Qo,DetailPanelExpandIcon:Yo,DetailPanelCollapseIcon:Yi,RowReorderIcon:Xo,QuickFilterIcon:Ui,QuickFilterClearIcon:ro,ColumnMenuHideIcon:os,ColumnMenuSortAscendingIcon:Wo,ColumnMenuSortDescendingIcon:Ko,ColumnMenuFilterIcon:Jo,ColumnMenuManageColumnsIcon:ls,ColumnMenuClearIcon:ns,LoadIcon:Xi,FilterPanelAddIcon:Yo,FilterPanelRemoveAllIcon:as,ColumnReorderIcon:Xo},rh=m({},th,{BaseCheckbox:qu,BaseTextField:ha,BaseFormControl:Wu,BaseSelect:Ku,BaseSwitch:Qu,BaseButton:Zu,BaseIconButton:ma,BaseInputAdornment:Ju,BaseTooltip:Yu,BasePopper:pl,BaseInputLabel:Xu,BaseSelectOption:eh,BaseChip:ec}),oh=rh,lh=m({},oh,{Cell:Bo,SkeletonCell:ci,ColumnHeaderFilterIconButton:Gi,ColumnMenu:bs,ColumnHeaders:mu,Footer:As,FooterRowCount:Ns,Toolbar:null,PreferencesPanel:xs,LoadingOverlay:_s,NoResultsOverlay:Zb,NoRowsOverlay:Vs,Pagination:Gs,FilterPanel:Fs,ColumnsPanel:ws,Panel:Ps,Row:qs}),bu=e=>{if(e!==void 0)return Object.keys(e).reduce((t,r)=>m({},t,{[`${r.charAt(0).toLowerCase()}${r.slice(1)}`]:e[r]}),{})};function nh({defaultSlots:e,slots:t,components:r}){const o=t??(r?bu(r):null);return!o||Object.keys(o).length===0?e:m({},e,o)}const ah=["components","componentsProps"];function ih(e){var t;const r=Object.keys(e);if(!r.some(n=>n.startsWith("aria-")||n.startsWith("data-")))return e;const o={},l=(t=e.forwardedProps)!=null?t:{};for(let n=0;n{const{components:t,componentsProps:r}=e,o=Z(e,ah);return[t,r,ih(o)]},[e])}const uh={disableMultipleColumnsFiltering:!0,disableMultipleColumnsSorting:!0,disableMultipleRowSelection:!0,throttleRowsMs:void 0,hideFooterRowCount:!1,pagination:!0,checkboxSelectionVisibleOnly:!1,disableColumnReorder:!0,disableColumnResize:!0,keepColumnPositionIfDraggedOutside:!1,signature:"DataGrid"},Gr={autoHeight:!1,autoPageSize:!1,checkboxSelection:!1,checkboxSelectionVisibleOnly:!1,columnBuffer:3,rowBuffer:3,columnThreshold:3,rowThreshold:3,rowSelection:!0,density:"standard",disableColumnFilter:!1,disableColumnMenu:!1,disableColumnSelector:!1,disableDensitySelector:!1,disableEval:!1,disableMultipleColumnsFiltering:!1,disableMultipleRowSelection:!1,disableMultipleColumnsSorting:!1,disableRowSelectionOnClick:!1,disableVirtualization:!1,editMode:mt.Cell,filterMode:"client",filterDebounceMs:150,columnHeaderHeight:56,hideFooter:!1,hideFooterPagination:!1,hideFooterRowCount:!1,hideFooterSelectedRowCount:!1,logger:console,logLevel:"error",pagination:!1,paginationMode:"client",rowHeight:52,pageSizeOptions:[25,50,100],rowSpacingType:"margin",showCellVerticalBorder:!1,showColumnVerticalBorder:!1,sortingOrder:["asc","desc",null],sortingMode:"client",throttleRowsMs:0,disableColumnReorder:!1,disableColumnResize:!1,keepNonExistentRowsSelected:!1,keepColumnPositionIfDraggedOutside:!1,unstable_ignoreValueFormatterDuringExport:!1,clipboardCopyCellDelimiter:" ",rowPositionsDebounceMs:166},ch=bu(lh),dh=e=>{const[t,r,o]=sh(tc({props:e,name:"MuiDataGrid"})),l=a.useMemo(()=>m({},an,o.localeText),[o.localeText]),n=a.useMemo(()=>nh({defaultSlots:ch,slots:o.slots,components:t}),[t,o.slots]);return a.useMemo(()=>{var i;return m({},Gr,o,{localeText:l,slots:n,slotProps:(i=o.slotProps)!=null?i:r},uh)},[o,l,n,r])},fh=e=>m({},e,{rowsMeta:{currentPageTotalHeight:0,positions:[]}}),na=(e,t,r)=>typeof e=="number"&&e>0?e:t,ph=(e,t)=>{const{getRowHeight:r,getRowSpacing:o,getEstimatedRowHeight:l}=t,n=a.useRef(Object.create(null)),i=a.useRef(-1),c=a.useRef(!1),d=K(e,Kt),u=K(e,Ae),s=K(e,Vl),f=K(e,tt),p=Qt(e,t),b=K(e,fr),g=na(t.rowHeight,Gr.rowHeight),h=Math.floor(g*d),v=a.useCallback(()=>{var A,E;c.current=!1;const C=D=>{n.current[D.id]||(n.current[D.id]={sizes:{baseCenter:h},isResized:!1,autoHeight:!1,needsFirstMeasurement:!0});const{isResized:M,needsFirstMeasurement:$,sizes:G}=n.current[D.id];let j=typeof h=="number"&&h>0?h:52;const z=G.baseCenter;if(M)j=z;else if(r){const le=r(m({},D,{densityFactor:d}));if(le==="auto"){if($){const ye=l?l(m({},D,{densityFactor:d})):h;j=ye??h}else j=z;c.current=!0,n.current[D.id].autoHeight=!0}else j=na(le,h),n.current[D.id].needsFirstMeasurement=!1,n.current[D.id].autoHeight=!1}else n.current[D.id].needsFirstMeasurement=!1;const q={};for(const le in G)/^base[A-Z]/.test(le)&&(q[le]=G[le]);if(q.baseCenter=j,o){var B,Q;const le=e.current.getRowIndexRelativeToVisibleRows(D.id),ye=o(m({},D,{isFirstVisible:le===0,isLastVisible:le===p.rows.length-1,indexRelativeToCurrentPage:le}));q.spacingTop=(B=ye.top)!=null?B:0,q.spacingBottom=(Q=ye.bottom)!=null?Q:0}const X=e.current.unstable_applyPipeProcessors("rowHeight",q,D);return n.current[D.id].sizes=X,X},P=[],k=p.rows.reduce((D,M)=>{P.push(D);let $=0,G=0;const j=C(M);for(const z in j){const q=j[z];/^base[A-Z]/.test(z)?$=q>$?q:$:G+=q}return D+$+G},0);b==null||(A=b.top)==null||A.forEach(D=>{C(D)}),b==null||(E=b.bottom)==null||E.forEach(D=>{C(D)}),e.current.setState(D=>m({},D,{rowsMeta:{currentPageTotalHeight:k,positions:P}})),c.current||(i.current=1/0),e.current.forceUpdate()},[e,p.rows,h,r,o,l,b,d]),S=a.useCallback(A=>{const E=n.current[A];return E?E.sizes.baseCenter:h},[h]),w=A=>{var E;return(E=n.current[A])==null?void 0:E.sizes},L=a.useCallback((A,E)=>{n.current[A].sizes.baseCenter=E,n.current[A].isResized=!0,n.current[A].needsFirstMeasurement=!1,v()},[v]),R=a.useMemo(()=>ml(v,t.rowPositionsDebounceMs),[v,t.rowPositionsDebounceMs]),V=a.useCallback((A,E,C)=>{if(!n.current[A]||!n.current[A].autoHeight)return;const P=n.current[A].sizes[`base${Dt(C)}`]!==E;n.current[A].needsFirstMeasurement=!1,n.current[A].sizes[`base${Dt(C)}`]=E,P&&R()},[R]),F=a.useCallback(A=>{var E;return((E=n.current[A])==null?void 0:E.autoHeight)||!1},[]),I=a.useCallback(()=>i.current,[]),y=a.useCallback(A=>{c.current&&A>i.current&&(i.current=A)},[]),H=a.useCallback(()=>{n.current={},v()},[v]);a.useEffect(()=>{v()},[h,u,s,f,v]),rn(e,"rowHeight",v);const T={unstable_setLastMeasuredRowIndex:y,unstable_getRowHeight:S,unstable_getRowInternalSizes:w,unstable_setRowHeight:L,unstable_storeRowHeightMeasurement:V,resetRowHeights:H},x={getLastMeasuredRowIndex:I,rowHasAutoHeight:F};be(e,T,"public"),be(e,x,"private")},gh=e=>{const t=a.useCallback((l={})=>e.current.unstable_applyPipeProcessors("exportState",{},l),[e]),r=a.useCallback(l=>{e.current.unstable_applyPipeProcessors("restoreState",{callbacks:[]},{stateToRestore:l}).callbacks.forEach(i=>{i()}),e.current.forceUpdate()},[e]);be(e,{exportState:t,restoreState:r},"public")},mh=e=>{const t=a.useRef({}),r=a.useCallback((u,s,f)=>{const p=t.current;p[u]||(p[u]={}),p[u][s]=f},[]),o=a.useCallback((u,s)=>{var f;return(f=t.current[u])==null?void 0:f[s]},[]),l=a.useCallback(u=>{const{columnIndex:s,rowId:f,minFirstColumnIndex:p,maxLastColumnIndex:b,columns:g}=u,h=g.length,v=g[s],S=typeof v.colSpan=="function"?v.colSpan(e.current.getCellParams(f,v.field)):v.colSpan;if(!S||S===1)return r(f,s,{spannedByColSpan:!1,cellProps:{colSpan:1,width:v.computedWidth}}),{colSpan:1};let w=v.computedWidth;for(let L=1;L=p&&R{for(let b=s;b1&&(b+=g.colSpan-1)}},[l]),i={unstable_getCellColSpanInfo:o},c={calculateColSpan:n};be(e,i,"public"),be(e,c,"private");const d=a.useCallback(()=>{t.current={}},[]);re(e,"columnOrderChange",d)},hu=(e,t,r)=>{if(Dl(e)){if(r[e.field]!==void 0)throw new Error(["MUI: columnGroupingModel contains duplicated field",`column field ${e.field} occurs two times in the grouping model:`,`- ${r[e.field].join(" > ")}`,`- ${t.join(" > ")}`].join(` -`));r[e.field]=t;return}const{groupId:o,children:l}=e;l.forEach(n=>{hu(n,[...t,o],r)})},cl=e=>{if(!e)return{};const t={};return e.forEach(r=>{hu(r,[],t)}),t},dl=(e,t,r)=>{const o=d=>{var u;return(u=t[d])!=null?u:[]},l=[],n=Math.max(...e.map(d=>o(d).length)),i=(d,u,s)=>It(o(d).slice(0,s+1),o(u).slice(0,s+1)),c=(d,u)=>!!(r!=null&&r.left&&r.left.includes(d)&&!r.left.includes(u)||r!=null&&r.right&&!r.right.includes(d)&&r.right.includes(u));for(let d=0;d{var p;const b=(p=o(f)[d])!=null?p:null;if(s.length===0)return[{columnFields:[f],groupId:b}];const g=s[s.length-1],h=g.columnFields[g.columnFields.length-1];return g.groupId!==b||!i(h,f,d)||c(h,f)?[...s,{columnFields:[f],groupId:b}]:[...s.slice(0,s.length-1),{columnFields:[...g.columnFields,f],groupId:b}]},[]);l.push(u)}return l},bh=["groupId","children"],sn=e=>{let t={};return e.forEach(r=>{if(Dl(r))return;const{groupId:o,children:l}=r,n=Z(r,bh);if(!o)throw new Error("MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.");l||console.warn(`MUI: group groupId=${o} has no children.`);const i=m({},n,{groupId:o}),c=sn(l);if(c[o]!==void 0||t[o]!==void 0)throw new Error(`MUI: The groupId ${o} is used multiple times in the columnGroupingModel.`);t=m({},t,c,{[o]:i})}),m({},t)},hh=(e,t,r)=>{var o,l,n,i;if(!((o=t.experimentalFeatures)!=null&&o.columnGrouping))return e;const c=St(r),d=kr(r),u=sn((l=t.columnGroupingModel)!=null?l:[]),s=cl((n=t.columnGroupingModel)!=null?n:[]),f=dl(c,s,(i=r.current.state.pinnedColumns)!=null?i:{}),p=d.length===0?0:Math.max(...d.map(b=>{var g,h;return(g=(h=s[b])==null?void 0:h.length)!=null?g:0}));return m({},e,{columnGrouping:{lookup:u,unwrappedGroupingModel:s,headerStructure:f,maxDepth:p}})},Ch=(e,t)=>{var r;const o=a.useCallback(d=>{var u;return(u=Fa(e)[d])!=null?u:[]},[e]),l=a.useCallback(()=>Ol(e),[e]);be(e,{unstable_getColumnGroupPath:o,unstable_getAllGroupDetails:l},"public");const i=a.useCallback(()=>{var d;const u=cl((d=t.columnGroupingModel)!=null?d:[]);e.current.setState(s=>{var f,p,b;const g=(f=(p=s.columns)==null?void 0:p.orderedFields)!=null?f:[],h=(b=s.pinnedColumns)!=null?b:{},v=dl(g,u,h);return m({},s,{columnGrouping:m({},s.columnGrouping,{headerStructure:v})})})},[e,t.columnGroupingModel]),c=a.useCallback(d=>{var u,s,f,p;if(!((u=t.experimentalFeatures)!=null&&u.columnGrouping))return;const b=(s=(f=(p=e.current).getPinnedColumns)==null?void 0:f.call(p))!=null?s:{},g=St(e),h=kr(e),v=sn(d??[]),S=cl(d??[]),w=dl(g,S,b),L=h.length===0?0:Math.max(...h.map(R=>{var V,F;return(V=(F=S[R])==null?void 0:F.length)!=null?V:0}));e.current.setState(R=>m({},R,{columnGrouping:{lookup:v,unwrappedGroupingModel:S,headerStructure:w,maxDepth:L}}))},[e,(r=t.experimentalFeatures)==null?void 0:r.columnGrouping]);re(e,"columnIndexChange",i),re(e,"columnsChange",()=>{c(t.columnGroupingModel)}),re(e,"columnVisibilityModelChange",()=>{c(t.columnGroupingModel)}),a.useEffect(()=>{c(t.columnGroupingModel)},[c,t.columnGroupingModel])},wh=(e,t)=>{const r=cm(e,t);return Ob(r,t),Sb(r),Ze(Pb,r,t),Ze(ym,r,t),Ze(mb,r,t),Ze(pb,r,t),Ze(Xm,r,t),Ze(Fb,r,t),Ze(ob,r,t),Ze(Qm,r,t),Ze(Em,r,t),Ze(Rm,r,t),Ze(fh,r,t),Ze(Pm,r,t),Ze(hh,r,t),Ze(Hi,r,t),rb(r,t),xb(r,t),Im(r,t),bb(r,t),Gd(r,t),mh(r),Ch(r,t),gb(r,t),eb(r,t),lb(r,t),Ym(r,t),yb(r,t),Lm(r,t),Am(r,t),ph(r,t),Ib(r,t),xm(r),$m(r,t),Vm(r,t),Sm(r,t),Eb(r,t),Mb(r,t),gh(r),_i(r,t),r},Sh=e=>{const{classes:t}=e;return we({root:["virtualScroller"]},Ce,t)},Ph=_e("div",{name:"MuiDataGrid",slot:"VirtualScroller",overridesResolver:(e,t)=>t.virtualScroller})({overflow:"auto",height:"100%",position:"relative","@media print":{overflow:"hidden"},zIndex:0}),xh=a.forwardRef(function(t,r){const o=J(),l=Sh(o);return O.jsx(Ph,m({ref:r},t,{className:Pe(l.root,t.className),ownerState:o}))}),vh=(e,t)=>{const{classes:r}=e;return we({root:["virtualScrollerContent",t&&"virtualScrollerContent--overflowed"]},Ce,r)},Oh=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerContent",overridesResolver:(e,t)=>t.virtualScrollerContent})({}),Fh=a.forwardRef(function(t,r){var o;const l=J(),n=!l.autoHeight&&((o=t.style)==null?void 0:o.minHeight)==="auto",i=vh(l,n);return O.jsx(Oh,m({ref:r},t,{ownerState:l,className:Pe(i.root,t.className)}))}),yh=["className"],Ih=e=>{const{classes:t}=e;return we({root:["virtualScrollerRenderZone"]},Ce,t)},Mh=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerRenderZone",overridesResolver:(e,t)=>t.virtualScrollerRenderZone})({position:"absolute",display:"flex",flexDirection:"column"}),kh=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,yh),n=J(),i=Ih(n);return O.jsx(Mh,m({ref:r,className:Pe(i.root,o),ownerState:n},l))}),Eh=["className"],Lh=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Eh),{getRootProps:n,getContentProps:i,getRenderZoneProps:c,getRows:d}=Rb({ref:r});return O.jsxs(xh,m({className:o},n(l),{children:[O.jsx(Wa,{}),O.jsx(Fh,m({},i(),{children:O.jsx(kh,m({},c(),{children:d()}))}))]}))}),Cu=a.forwardRef(function(t,r){const o=dh(t),l=wh(o.apiRef,o);return O.jsx(Ws,{privateApiRef:l,props:o,children:O.jsxs(di,m({className:o.className,style:o.style,sx:o.sx,ref:r},o.forwardedProps,{children:[O.jsx(Hs,{}),O.jsx(Ga,{VirtualScrollerComponent:Lh}),O.jsx(Na,{})]}))})}),Th=a.memo(Cu),Dh=Gr.filterDebounceMs,$h=Gr.filterDebounceMs;Cu.propTypes={apiRef:N.shape({current:N.object.isRequired}),"aria-label":N.string,"aria-labelledby":N.string,autoHeight:N.bool,autoPageSize:N.bool,cellModesModel:N.object,checkboxSelection:N.bool,classes:N.object,clipboardCopyCellDelimiter:N.string,columnBuffer:N.number,columnGroupingModel:N.arrayOf(N.object),columnHeaderHeight:N.number,columns:ic(N.array.isRequired),columnThreshold:N.number,columnVisibilityModel:N.object,components:N.object,componentsProps:N.object,density:N.oneOf(["comfortable","compact","standard"]),disableColumnFilter:N.bool,disableColumnMenu:N.bool,disableColumnSelector:N.bool,disableDensitySelector:N.bool,disableEval:N.bool,disableRowSelectionOnClick:N.bool,disableVirtualization:N.bool,editMode:N.oneOf(["cell","row"]),experimentalFeatures:N.shape({ariaV7:N.bool,columnGrouping:N.bool,warnIfFocusStateIsNotSynced:N.bool}),filterDebounceMs:N.number,filterMode:N.oneOf(["client","server"]),filterModel:N.shape({items:N.arrayOf(N.shape({field:N.string.isRequired,id:N.oneOfType([N.number,N.string]),operator:N.string.isRequired,value:N.any})).isRequired,logicOperator:N.oneOf(["and","or"]),quickFilterExcludeHiddenColumns:N.bool,quickFilterLogicOperator:N.oneOf(["and","or"]),quickFilterValues:N.array}),forwardedProps:N.object,getCellClassName:N.func,getDetailPanelContent:N.func,getEstimatedRowHeight:N.func,getRowClassName:N.func,getRowHeight:N.func,getRowId:N.func,getRowSpacing:N.func,hideFooter:N.bool,hideFooterPagination:N.bool,hideFooterSelectedRowCount:N.bool,initialState:N.object,isCellEditable:N.func,isRowSelectable:N.func,keepNonExistentRowsSelected:N.bool,loading:N.bool,localeText:N.object,logger:N.shape({debug:N.func.isRequired,error:N.func.isRequired,info:N.func.isRequired,warn:N.func.isRequired}),logLevel:N.oneOf(["debug","error","info","warn",!1]),nonce:N.string,onCellClick:N.func,onCellDoubleClick:N.func,onCellEditStart:N.func,onCellEditStop:N.func,onCellKeyDown:N.func,onCellModesModelChange:N.func,onClipboardCopy:N.func,onColumnHeaderClick:N.func,onColumnHeaderDoubleClick:N.func,onColumnHeaderEnter:N.func,onColumnHeaderLeave:N.func,onColumnHeaderOut:N.func,onColumnHeaderOver:N.func,onColumnOrderChange:N.func,onColumnVisibilityModelChange:N.func,onFilterModelChange:N.func,onMenuClose:N.func,onMenuOpen:N.func,onPaginationModelChange:N.func,onPreferencePanelClose:N.func,onPreferencePanelOpen:N.func,onProcessRowUpdateError:N.func,onResize:N.func,onRowClick:N.func,onRowDoubleClick:N.func,onRowEditCommit:N.func,onRowEditStart:N.func,onRowEditStop:N.func,onRowModesModelChange:N.func,onRowSelectionModelChange:N.func,onSortModelChange:N.func,onStateChange:N.func,pageSizeOptions:N.arrayOf(N.oneOfType([N.number,N.shape({label:N.string.isRequired,value:N.number.isRequired})]).isRequired),pagination:e=>e.pagination===!1?new Error(["MUI: `` is not a valid prop.","Infinite scrolling is not available in the MIT version.","","You need to upgrade to DataGridPro or DataGridPremium component to disable the pagination."].join(` -`)):null,paginationMode:N.oneOf(["client","server"]),paginationModel:N.shape({page:N.number.isRequired,pageSize:N.number.isRequired}),processRowUpdate:N.func,rowBuffer:N.number,rowCount:N.number,rowHeight:N.number,rowModesModel:N.object,rowPositionsDebounceMs:N.number,rows:N.arrayOf(N.object).isRequired,rowSelection:N.bool,rowSelectionModel:N.oneOfType([N.arrayOf(N.oneOfType([N.number,N.string]).isRequired),N.number,N.string]),rowSpacingType:N.oneOf(["border","margin"]),rowThreshold:N.number,scrollbarSize:N.number,showCellVerticalBorder:N.bool,showColumnVerticalBorder:N.bool,slotProps:N.object,slots:N.object,sortingMode:N.oneOf(["client","server"]),sortingOrder:N.arrayOf(N.oneOf(["asc","desc"])),sortModel:N.arrayOf(N.shape({field:N.string.isRequired,sort:N.oneOf(["asc","desc"])})),sx:N.oneOfType([N.arrayOf(N.oneOfType([N.func,N.object,N.bool])),N.func,N.object]),unstable_ignoreValueFormatterDuringExport:N.oneOfType([N.shape({clipboardExport:N.bool,csvExport:N.bool}),N.bool])};const Rh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"إظهار المسار"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل إلى الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة",labelRowsPerPage:"عدد الصفوف في الصفحة:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} من ${r!==-1?r:` أكثر من${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"نجوم":"نجمة"}`,emptyLabelText:"فارغ"}},MuiAutocomplete:{defaultProps:{clearText:"مسح",closeText:"إغلاق",loadingText:"جار التحميل...",noOptionsText:"لا يوجد خيارات",openText:"فتح"}},MuiAlert:{defaultProps:{closeText:"إغلاق"}},MuiPagination:{defaultProps:{"aria-label":"التنقل عبر الصفحات",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"انتقل إلى "} صفحة ${t}`:e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل الي الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة"}}}},Ah={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показване на пътя"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница",labelRowsPerPage:"Редове на страница:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Звезд${e!==1?"и":"а"}`,emptyLabelText:"Изчисти"}},MuiAutocomplete:{defaultProps:{clearText:"Изчисти",closeText:"Затвори",loadingText:"Зареждане…",noOptionsText:"Няма налични опции",openText:"Отвори"}},MuiAlert:{defaultProps:{closeText:"Затвори"}},MuiPagination:{defaultProps:{"aria-label":"Пагинация",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Към "}страница ${t}`:e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница"}}}},Hh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázat cestu"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku",labelRowsPerPage:"Řádků na stránce:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`více než ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hvězdička`:e>=2&&e<=4?`${e} hvězdičky`:`${e} hvězdiček`,emptyLabelText:"Prázdné"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazat",closeText:"Zavřít",loadingText:"Načítání…",noOptionsText:"Žádné možnosti",openText:"Otevřít"}},MuiAlert:{defaultProps:{closeText:"Zavřít"}},MuiPagination:{defaultProps:{"aria-label":"Navigace stránkováním",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Jít na "}${t}. stránku`:e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku"}}}},_h={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side",labelRowsPerPage:"Rækker pr side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} af ${r!==-1?r:`mere end ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjern${e!==1?"er":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Slet",closeText:"Luk",loadingText:"Indlæser…",noOptionsText:"Ingen muligheder",openText:"Åben"}},MuiAlert:{defaultProps:{closeText:"Luk"}},MuiPagination:{defaultProps:{"aria-label":"Sideinddelings navigation",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Go to "}page ${t}`:e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side"}}}},Vh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pfad anzeigen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite",labelRowsPerPage:"Zeilen pro Seite:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} von ${r!==-1?r:`mehr als ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Sterne":"Stern"}`,emptyLabelText:"Keine Wertung"}},MuiAutocomplete:{defaultProps:{clearText:"Leeren",closeText:"Schließen",loadingText:"Wird geladen…",noOptionsText:"Keine Optionen",openText:"Öffnen"}},MuiAlert:{defaultProps:{closeText:"Schließen"}},MuiPagination:{defaultProps:{"aria-label":"Navigation via Seitennummerierung",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gehe zu "}Seite ${t}`:e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite"}}}},Gh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Εμφάνιση διαδρομής"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα",labelRowsPerPage:"Γραμμές ανα σελίδα:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} από ${r!==-1?r:`πάνω από ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Αστέρι${e!==1?"α":""}`,emptyLabelText:"Χωρίς βαθμολόγηση"}},MuiAutocomplete:{defaultProps:{clearText:"Καθαρισμός",closeText:"Κλείσιμο",loadingText:"Φόρτωση…",noOptionsText:"Δεν υπάρχουν επιλογές",openText:"Άνοιγμα"}},MuiAlert:{defaultProps:{closeText:"Κλείσιμο"}},MuiPagination:{defaultProps:{"aria-label":"Πλοήγηση σε σελίδες",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Μετάβαση "}σελίδα ${t}`:e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα"}}}},Nh={},zh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar ruta"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior",labelRowsPerPage:"Filas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`más de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrella${e!==1?"s":""}`,emptyLabelText:"Vacío"}},MuiAutocomplete:{defaultProps:{clearText:"Limpiar",closeText:"Cerrar",loadingText:"Cargando…",noOptionsText:"Sin opciones",openText:"Abierto"}},MuiAlert:{defaultProps:{closeText:"Cerrar"}},MuiPagination:{defaultProps:{"aria-label":"Paginador",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir a la "}página ${t}`:e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior"}}}},jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"نمایش مسیر"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی",labelRowsPerPage:"تعداد سطرهای هر صفحه:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} از ${r!==-1?r:`بیشتر از ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ستاره`,emptyLabelText:"خالی"}},MuiAutocomplete:{defaultProps:{clearText:"پاک‌کردن",closeText:"بستن",loadingText:"در حال بارگذاری…",noOptionsText:"بی‌نتیجه",openText:"بازکردن"}},MuiAlert:{defaultProps:{closeText:"بستن"}},MuiPagination:{defaultProps:{"aria-label":"ناوبری صفحه",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"رفتن به "}صفحهٔ ${t}`:e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی"}}}},Bh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Näytä reitti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle",labelRowsPerPage:"Rivejä per sivu:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`enemmän kuin ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Täht${e!==1?"eä":"i"}`,emptyLabelText:"Tyhjä"}},MuiAutocomplete:{defaultProps:{clearText:"Tyhjennä",closeText:"Sulje",loadingText:"Ladataan…",noOptionsText:"Ei valintoja",openText:"Avaa"}},MuiAlert:{defaultProps:{closeText:"Sulje"}},MuiPagination:{defaultProps:{"aria-label":"Sivutus navigaatio",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"sivu":"Mene sivulle"} ${t}`:e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle"}}}},Uh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Montrer le chemin"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente",labelRowsPerPage:"Lignes par page :",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} sur ${r!==-1?r:`plus que ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Etoile${e!==1?"s":""}`,emptyLabelText:"Vide"}},MuiAutocomplete:{defaultProps:{clearText:"Vider",closeText:"Fermer",loadingText:"Chargement…",noOptionsText:"Pas de résultats",openText:"Ouvrir"}},MuiAlert:{defaultProps:{closeText:"Fermer"}},MuiPagination:{defaultProps:{"aria-label":"navigation de pagination",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Aller à la "}page ${t}`:e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente"}}}},qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"הצג נתיב"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם",labelRowsPerPage:"שורות בעמוד:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} מתוך ${r!==-1?r:`יותר מ ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} כוכב${e!==1?"ים":""}`,emptyLabelText:"ריק"}},MuiAutocomplete:{defaultProps:{clearText:"נקה",closeText:"סגור",loadingText:"טוען…",noOptionsText:"אין אופציות",openText:"פתח"}},MuiAlert:{defaultProps:{closeText:"סגור"}},MuiPagination:{defaultProps:{"aria-label":"ניווט בעמודים",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"ל "}עמוד ${t}`:e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם"}}}},Wh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Útvonal"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra",labelRowsPerPage:"Sorok száma:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Csillag`,emptyLabelText:"Üres"}},MuiAutocomplete:{defaultProps:{clearText:"Törlés",closeText:"Bezárás",loadingText:"Töltés…",noOptionsText:"Nincs találat",openText:"Megnyitás"}},MuiAlert:{defaultProps:{closeText:"Bezárás"}},MuiPagination:{defaultProps:{"aria-label":"Lapozás",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. oldal${r?"":"ra"}`:e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra"}}}},Kh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visualizza percorso"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente",labelRowsPerPage:"Righe per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} di ${r!==-1?r:`più di ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stell${e!==1?"e":"a"}`,emptyLabelText:"Vuoto"}},MuiAutocomplete:{defaultProps:{clearText:"Svuota",closeText:"Chiudi",loadingText:"Caricamento in corso…",noOptionsText:"Nessuna opzione",openText:"Apri"}},MuiAlert:{defaultProps:{closeText:"Chiudi"}},MuiPagination:{defaultProps:{"aria-label":"Navigazione impaginata",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Vai alla "}pagina ${t}`:e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente"}}}},Qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"すべて表示"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ",labelRowsPerPage:"ページあたりの行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}~${t} / ${r!==-1?r:`${t}以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`星${e}`,emptyLabelText:"星なし"}},MuiAutocomplete:{defaultProps:{clearText:"クリア",closeText:"閉じる",loadingText:"読み込み中…",noOptionsText:"データがありません",openText:"開く"}},MuiAlert:{defaultProps:{closeText:"閉じる"}},MuiPagination:{defaultProps:{"aria-label":"ページ選択",getItemAriaLabel:(e,t,r)=>e==="page"?`ページ${t}${r?"":"へ"}`:e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ"}}}},Zh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"경로 보기"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동",labelRowsPerPage:"페이지 당 행:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`${t}개 이상`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 점`,emptyLabelText:"빈 텍스트"}},MuiAutocomplete:{defaultProps:{clearText:"지우기",closeText:"닫기",loadingText:"불러오는 중…",noOptionsText:"옵션 없음",openText:"열기"}},MuiAlert:{defaultProps:{closeText:"닫기"}},MuiPagination:{defaultProps:{"aria-label":"페이지네이션 네비게이션",getItemAriaLabel:(e,t,r)=>e==="page"?`${t} 번째 페이지${r?"":"로 이동"}`:e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동"}}}},Jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side",labelRowsPerPage:"Rader per side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`mer enn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjerne${e!==1?"r":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Tøm",closeText:"Lukk",loadingText:"Laster inn…",noOptionsText:"Ingen alternativer",openText:"Åpne"}},MuiAlert:{defaultProps:{closeText:"Lukk"}},MuiPagination:{defaultProps:{"aria-label":"Paginering navigasjon",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå til "}side ${t}`:e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side"}}}},Yh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pad tonen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina",labelRowsPerPage:"Regels per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} van ${r!==-1?r:`meer dan ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Ster${e!==1?"ren":""}`,emptyLabelText:"Leeg"}},MuiAutocomplete:{defaultProps:{clearText:"Wissen",closeText:"Sluiten",loadingText:"Laden…",noOptionsText:"Geen opties",openText:"Openen"}},MuiAlert:{defaultProps:{closeText:"Sluiten"}},MuiPagination:{defaultProps:{"aria-label":"Navigatie via paginering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ga naar "}pagina ${t}`:e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina"}}}},Xh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pokaż ścieżkę"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony",labelRowsPerPage:"Wierszy na stronę:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`ponad ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="gwiazdek";const r=e%10;return(e<10||e>20)&&r>1&&r<5?t="gwiazdki":e===1&&(t="gwiazdka"),`${e} ${t}`},emptyLabelText:"Brak gwiazdek"}},MuiAutocomplete:{defaultProps:{clearText:"Wyczyść",closeText:"Zamknij",loadingText:"Ładowanie…",noOptionsText:"Brak opcji",openText:"Otwórz"}},MuiAlert:{defaultProps:{closeText:"Zamknij"}},MuiPagination:{defaultProps:{"aria-label":"Nawigacja podziału na strony",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t}. strona`:`Przejdź do ${t}. strony`:e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony"}}}},eC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar caminho"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior",labelRowsPerPage:"Linhas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`mais de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrela${e!==1?"s":""}`,emptyLabelText:"Vazio"}},MuiAutocomplete:{defaultProps:{clearText:"Limpar",closeText:"Fechar",loadingText:"Carregando…",noOptionsText:"Sem opções",openText:"Abrir"}},MuiAlert:{defaultProps:{closeText:"Fechar"}},MuiPagination:{defaultProps:{"aria-label":"Navegar pela paginação",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir para a "}página ${t}`:e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior"}}}},tC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Arată calea"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă",labelRowsPerPage:"Rânduri pe pagină:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} St${e!==1?"ele":"ea"}`,emptyLabelText:"Gol"}},MuiAutocomplete:{defaultProps:{clearText:"Șterge",closeText:"Închide",loadingText:"Se încarcă…",noOptionsText:"Nicio opțiune",openText:"Deschide"}},MuiAlert:{defaultProps:{closeText:"Închide"}},MuiPagination:{defaultProps:{"aria-label":"Navigare prin paginare",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Mergi la "}pagina ${t}`:e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă"}}}},rC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показать полный путь"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу",labelRowsPerPage:"Строк на странице:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} из ${r!==-1?r:`более чем ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Звёзд";const r=e%10;return r>1&&r<5?t="Звезды":r===1&&(t="Звезда"),`${e} ${t}`},emptyLabelText:"Рейтинг отсутствует"}},MuiAutocomplete:{defaultProps:{clearText:"Очистить",closeText:"Закрыть",loadingText:"Загрузка…",noOptionsText:"Нет доступных вариантов",openText:"Открыть"}},MuiAlert:{defaultProps:{closeText:"Закрыть"}},MuiPagination:{defaultProps:{"aria-label":"Навигация по страницам",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t} страница`:`Перейти на ${t} страницу`:e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу"}}}},oC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázať cestu "}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku",labelRowsPerPage:"Riadkov na stránke:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`viac ako ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hviezdička`:e>=2&&e<=4?`${e} hviezdičky`:`${e} hviezdičiek`,emptyLabelText:"Prázdne"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazať",closeText:"Zavrieť",loadingText:"Načítanie…",noOptionsText:"Žiadne možnosti",openText:"Otvoriť"}},MuiAlert:{defaultProps:{closeText:"Zavrieť"}},MuiPagination:{defaultProps:{"aria-label":"Navigácia stránkovanim",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ísť na "}stránku ${t}`:e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku"}}}},lC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visa sökväg"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida",labelRowsPerPage:"Rader per sida:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`fler än ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Stjärnor":"Stjärna"}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Rensa",closeText:"Stäng",loadingText:"Laddar…",noOptionsText:"Inga alternativ",openText:"Öppna"}},MuiAlert:{defaultProps:{closeText:"Stäng"}},MuiPagination:{defaultProps:{"aria-label":"Sidnavigering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå till "}sida ${t}`:e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida"}}}},nC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Yolu göster"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git",labelRowsPerPage:"Sayfa başına satır:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} / ${r!==-1?r:`${t}'den fazla`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Yıldız`,emptyLabelText:"Boş"}},MuiAutocomplete:{defaultProps:{clearText:"Temizle",closeText:"Kapat",loadingText:"Yükleniyor…",noOptionsText:"Seçenek yok",openText:"Aç"}},MuiAlert:{defaultProps:{closeText:"Kapat"}},MuiPagination:{defaultProps:{"aria-label":"Sayfa navigasyonu",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. ${r?"sayfa":"sayfaya git"}`:e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git"}}}},aC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показати шлях сторінок"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку",labelRowsPerPage:"Рядків на сторінці:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`понад ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Зірок";const r=e%10;return r>1&&r<5?t="Зірки":r===1&&(t="Зірка"),`${e} ${t}`},emptyLabelText:"Рейтинг відсутній"}},MuiAutocomplete:{defaultProps:{clearText:"Очистити",closeText:"Згорнути",loadingText:"Завантаження…",noOptionsText:"Немає варіантів",openText:"Розгорнути"}},MuiAlert:{defaultProps:{closeText:"Згорнути"}},MuiPagination:{defaultProps:{"aria-label":"Навігація сторінками",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Перейти на "}сторінку ${t}`:e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку"}}}},iC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mở ra"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó",labelRowsPerPage:"Số hàng mỗi trang:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} trong ${r!==-1?r:`nhiều hơn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} sao`,emptyLabelText:"Không có dữ liệu"}},MuiAutocomplete:{defaultProps:{clearText:"Xóa",closeText:"Đóng",loadingText:"Đang tải…",noOptionsText:"Không có lựa chọn nào",openText:"Mở"}},MuiAlert:{defaultProps:{closeText:"Đóng"}},MuiPagination:{defaultProps:{"aria-label":"Thanh điều khiển trang",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Tới "}trang ${t}`:e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó"}}}},sC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展开"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一页":e==="last"?"最后一页":e==="next"?"下一页":"上一页",labelRowsPerPage:"每页行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`第 ${e} 条到第 ${t} 条,${r!==-1?`共 ${r} 条`:`至少 ${t} 条`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 颗星`,emptyLabelText:"无标签"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"关闭",loadingText:"加载中……",noOptionsText:"没有可用选项",openText:"打开"}},MuiAlert:{defaultProps:{closeText:"关闭"}}}},uC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展開"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一頁":e==="last"?"最後一頁":e==="next"?"下一頁":"上一頁",labelRowsPerPage:"每頁數量:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e} ~ ${t} / ${r!==-1?r:`${t} 以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 顆星`,emptyLabelText:"無標籤"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"關閉",loadingText:"載入中…",noOptionsText:"沒有可用選項",openText:"打開"}},MuiAlert:{defaultProps:{closeText:"關閉"}}}},Fe=(e,t)=>{var r;return{components:{MuiDataGrid:{defaultProps:{localeText:m({},e,{MuiTablePagination:(t==null||(r=t.components)==null||(r=r.MuiTablePagination)==null?void 0:r.defaultProps)||{}})}}}}},cC={noRowsLabel:"لا توجد صفوف",noResultsOverlayLabel:"لم يتم العثور على نتائج.",toolbarDensity:"الكثافة",toolbarDensityLabel:"الكثافة",toolbarDensityCompact:"مضغوط",toolbarDensityStandard:"قياسي",toolbarDensityComfortable:"مريح",toolbarColumns:"الأعمدة",toolbarColumnsLabel:"حدد أعمدة",toolbarFilters:"المُرشِحات",toolbarFiltersLabel:"إظهار المرشِحات",toolbarFiltersTooltipHide:"إخفاء المرشِحات",toolbarFiltersTooltipShow:"اظهر المرشِحات",toolbarFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",toolbarQuickFilterPlaceholder:"بحث...",toolbarQuickFilterLabel:"بحث",toolbarQuickFilterDeleteIconLabel:"أزال",toolbarExport:"تصدير",toolbarExportLabel:"تصدير",toolbarExportCSV:"تنزيل كملف CSV",toolbarExportPrint:"طباعة",toolbarExportExcel:"تحميل كملف الإكسل",columnsPanelTextFieldLabel:"البحث عن العمود",columnsPanelTextFieldPlaceholder:"عنوان العمود",columnsPanelDragIconLabel:"إعادة ترتيب العمود",columnsPanelShowAllButton:"إظهار الكل",columnsPanelHideAllButton:"إخفاء الكل",filterPanelAddFilter:"إضافة مرشِح",filterPanelRemoveAll:"حذف الكل",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عامل منطقي",filterPanelOperator:"عامل",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"أو",filterPanelColumns:"الأعمدة",filterPanelInputLabel:"القيمة",filterPanelInputPlaceholder:"ترشِيح قيمة",filterOperatorContains:"يحتوي",filterOperatorEquals:"يساوي",filterOperatorStartsWith:"يبدأ بـ",filterOperatorEndsWith:"ينتهي بـ",filterOperatorIs:"يكون",filterOperatorNot:"ليس",filterOperatorAfter:"بعد",filterOperatorOnOrAfter:"عند أو بعد",filterOperatorBefore:"قبل",filterOperatorOnOrBefore:"عند أو قبل",filterOperatorIsEmpty:"خالي",filterOperatorIsNotEmpty:"غير خالي",filterOperatorIsAnyOf:"أي من","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"يحتوي على",headerFilterOperatorEquals:"يساوي",headerFilterOperatorStartsWith:"يبدأ ب",headerFilterOperatorEndsWith:"ينتهي ب",headerFilterOperatorIs:"هو",headerFilterOperatorNot:"هو ليس",headerFilterOperatorAfter:"يقع بعد",headerFilterOperatorOnOrAfter:"هو على او بعد",headerFilterOperatorBefore:"يقع قبل",headerFilterOperatorOnOrBefore:"هو على او بعد",headerFilterOperatorIsEmpty:"هو فارغ",headerFilterOperatorIsNotEmpty:"هو ليس فارغ",headerFilterOperatorIsAnyOf:"هو أي من","headerFilterOperator=":"يساوي","headerFilterOperator!=":"لا يساوي","headerFilterOperator>":"أكبر من","headerFilterOperator>=":"أكبر من او يساوي","headerFilterOperator<":"اصغر من","headerFilterOperator<=":"اصغر من او يساوي",filterValueAny:"أي",filterValueTrue:"صائب",filterValueFalse:"خاطئ",columnMenuLabel:"القائمة",columnMenuShowColumns:"إظهار الأعمدة",columnMenuFilter:"المرشِح",columnMenuHideColumn:"إخفاء",columnMenuUnsort:"الغاء الفرز",columnMenuSortAsc:"الفرز تصاعدياً",columnMenuSortDesc:"الفرز تنازلياً",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",columnHeaderFiltersLabel:"إظهار المرشحات",columnHeaderSortIconLabel:"فرز",footerRowSelected:e=>e!==1?`تم تحديد ${e.toLocaleString()} من الصفوف`:"تم تحديد صف واحد",footerTotalRows:"إجمالي الصفوف:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} من ${t.toLocaleString()}`,checkboxSelectionHeaderName:"تحديد خانة الاختيار",checkboxSelectionSelectAllRows:"تحديد كل الصفوف",checkboxSelectionUnselectAllRows:"الغاء تحديد كل الصفوف",checkboxSelectionSelectRow:"تحديد صف",checkboxSelectionUnselectRow:"الغاء تحديد الصف",booleanCellTrueLabel:"نعم",booleanCellFalseLabel:"لا",actionsCellMore:"المزيد",pinToLeft:"التدبيس يميناً",pinToRight:"التدبيس يساراً",unpin:"الغاء التدبيس",treeDataGroupingHeaderName:"تجميع",treeDataExpand:"رؤية الأبناء",treeDataCollapse:"إخفاء الأبناء",groupingColumnHeaderName:"تجميع",groupColumn:e=>`تجميع حسب ${e}`,unGroupColumn:e=>`إيقاف التجميع حسب ${e}`,detailPanelToggle:"اظهار/اخفاء لوحة التفاصيل",expandDetailPanel:"توسيع",collapseDetailPanel:"طوي",rowReorderingHeaderName:"أعادة ترتيب الصفوف",aggregationMenuItemHeader:"الدلالات الحسابية",aggregationFunctionLabelSum:"مجموع",aggregationFunctionLabelAvg:"معدل",aggregationFunctionLabelMin:"الحد الادنى",aggregationFunctionLabelMax:"الحد الاقصى",aggregationFunctionLabelSize:"الحجم"},dC=Fe(cC,Rh),fC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перайсці на першую старонку":e==="last"?"Перайсці на апошнюю старонку":e==="next"?"Перайсці на наступную старонку":"Перайсці на папярэднюю старонку",labelRowsPerPage:"Радкоў на старонцы:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`больш чым ${t}`}`}}}},pC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"پہلے صفحے پر جائیں":e==="last"?"آخری صفحے پر جائیں":e==="next"?"اگلے صفحے پر جائیں":"پچھلے صفحے پر جائیں",labelRowsPerPage:"ایک صفحے پر قطاریں:",labelDisplayedRows:({from:e,to:t,count:r})=>`${r!==-1?`${r} میں سے`:`${t} سے ذیادہ میں سے`} ${e} سے ${t} قطاریں`}}}},_o=(e,t)=>{let r=t.other;const o=e%10;return o>1&&o<5&&(e<10||e>20)?r=t.twoToFour:o===1&&e%100!==11&&(r=t.one),`${e} ${r}`},gC={noRowsLabel:"Няма радкоў",noResultsOverlayLabel:"Дадзеныя не знойдзены.",toolbarDensity:"Вышыня радка",toolbarDensityLabel:"Вышыня радка",toolbarDensityCompact:"Кампактны",toolbarDensityStandard:"Стандартны",toolbarDensityComfortable:"Камфортны",toolbarColumns:"Слупкі",toolbarColumnsLabel:"Выберыце слупкі",toolbarFilters:"Фільтры",toolbarFiltersLabel:"Паказаць фільтры",toolbarFiltersTooltipHide:"Схаваць фільтры",toolbarFiltersTooltipShow:"Паказаць фільтры",toolbarFiltersTooltipActive:e=>_o(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Ачысціць",toolbarExport:"Экспарт",toolbarExportLabel:"Экспарт",toolbarExportCSV:"Спампаваць у фармаце CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Спампаваць у фармаце Excel",columnsPanelTextFieldLabel:"Знайсці слупок",columnsPanelTextFieldPlaceholder:"Загаловак слупка",columnsPanelDragIconLabel:"Змяніць чарговасць слупкоў",columnsPanelShowAllButton:"Паказаць усе",columnsPanelHideAllButton:"Схаваць усе",filterPanelAddFilter:"Дадаць фільтр",filterPanelDeleteIconLabel:"Выдаліць",filterPanelLogicOperator:"Лагічныя аператары",filterPanelOperator:"Аператары",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Слупкі",filterPanelInputLabel:"Значэнне",filterPanelInputPlaceholder:"Значэнне фільтра",filterOperatorContains:"змяшчае",filterOperatorEquals:"роўны",filterOperatorStartsWith:"пачынаецца з",filterOperatorEndsWith:"скончваецца на",filterOperatorIs:"роўны",filterOperatorNot:"не роўны",filterOperatorAfter:"больш чым",filterOperatorOnOrAfter:"больш ці роўны",filterOperatorBefore:"меньш чым",filterOperatorOnOrBefore:"меньш ці роўны",filterOperatorIsEmpty:"пусты",filterOperatorIsNotEmpty:"не пусты",filterOperatorIsAnyOf:"усякі з",filterValueAny:"усякі",filterValueTrue:"праўда",filterValueFalse:"няпраўда",columnMenuLabel:"Меню",columnMenuShowColumns:"Паказаць слупкі",columnMenuManageColumns:"Кіраваць слупкамі",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Схаваць",columnMenuUnsort:"Скасаваць сартыроўку",columnMenuSortAsc:"Сартыраваць па нарастанню",columnMenuSortDesc:"Сартыраваць па спаданню",columnHeaderFiltersTooltipActive:e=>_o(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),columnHeaderFiltersLabel:"Паказаць фільтры",columnHeaderSortIconLabel:"Сартыраваць",footerRowSelected:e=>_o(e,{one:"абраны радок",twoToFour:"абраных радка",other:"абраных радкоў"}),footerTotalRows:"Усяго радкоў:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбар сцяжка",checkboxSelectionSelectAllRows:"Абраць усе радкі",checkboxSelectionUnselectAllRows:"Скасаваць выбар усіх радкоў",checkboxSelectionSelectRow:"Абраць радок",checkboxSelectionUnselectRow:"Скасаваць выбар радка",booleanCellTrueLabel:"праўда",booleanCellFalseLabel:"няпраўда",actionsCellMore:"больш",pinToLeft:"Замацаваць злева",pinToRight:"Замацаваць справа",unpin:"Адмацаваць",treeDataGroupingHeaderName:"Група",treeDataExpand:"паказаць даччыныя элементы",treeDataCollapse:"схаваць даччыныя элементы",groupingColumnHeaderName:"Група",groupColumn:e=>`Групаваць па ${e}`,unGroupColumn:e=>`Разгрупаваць па ${e}`,detailPanelToggle:"Дэталі",expandDetailPanel:"Разгарнуць",collapseDetailPanel:"Згарнуць",rowReorderingHeaderName:"Змяненне чарговасці радкоў",aggregationMenuItemHeader:"Аб'яднанне дадзеных",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сярэдняе",aggregationFunctionLabelMin:"мінімум",aggregationFunctionLabelMax:"максімум",aggregationFunctionLabelSize:"памер"},mC=Fe(gC,fC),bC={noRowsLabel:"Няма редове",noResultsOverlayLabel:"Няма намерени резултати.",toolbarDensity:"Гъстота",toolbarDensityLabel:"Гъстота",toolbarDensityCompact:"Компактна",toolbarDensityStandard:"Стандартна",toolbarDensityComfortable:"Комфортна",toolbarColumns:"Колони",toolbarColumnsLabel:"Покажи селектора на колони",toolbarFilters:"Филтри",toolbarFiltersLabel:"Покажи Филтрите",toolbarFiltersTooltipHide:"Скрий Филтрите",toolbarFiltersTooltipShow:"Покажи Филтрите",toolbarFiltersTooltipActive:e=>`${e} активни филтри`,toolbarQuickFilterPlaceholder:"Търси…",toolbarQuickFilterLabel:"Търсене",toolbarQuickFilterDeleteIconLabel:"Изчисти",toolbarExport:"Изтегли",toolbarExportLabel:"Изтегли",toolbarExportCSV:"Изтегли като CSV",toolbarExportPrint:"Принтиране",toolbarExportExcel:"Изтегли като Excel",columnsPanelTextFieldLabel:"Намери колона",columnsPanelTextFieldPlaceholder:"Заглавие на колона",columnsPanelDragIconLabel:"Пренареди на колона",columnsPanelShowAllButton:"Покажи Всички",columnsPanelHideAllButton:"Скрий Всички",filterPanelAddFilter:"Добави Филтър",filterPanelRemoveAll:"Премахни всички",filterPanelDeleteIconLabel:"Изтрий",filterPanelLogicOperator:"Логически оператор",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Колони",filterPanelInputLabel:"Стойност",filterPanelInputPlaceholder:"Стойност на филтъра",filterOperatorContains:"съдържа",filterOperatorEquals:"равно",filterOperatorStartsWith:"започва с",filterOperatorEndsWith:"завършва с",filterOperatorIs:"е",filterOperatorNot:"не е",filterOperatorAfter:"е след",filterOperatorOnOrAfter:"е на или след",filterOperatorBefore:"е преди",filterOperatorOnOrBefore:"е на или преди",filterOperatorIsEmpty:"е празен",filterOperatorIsNotEmpty:"не е празен",filterOperatorIsAnyOf:"е някой от",filterValueAny:"всякакви",filterValueTrue:"вярно",filterValueFalse:"невярно",columnMenuLabel:"Меню",columnMenuShowColumns:"Покажи колоните",columnMenuManageColumns:"Управление на колони",columnMenuFilter:"Филтри",columnMenuHideColumn:"Скрий",columnMenuUnsort:"Отмени сортирането",columnMenuSortAsc:"Сортирай по възходящ ред",columnMenuSortDesc:"Сортирай по низходящ ред",columnHeaderFiltersTooltipActive:e=>`${e} активни филтри`,columnHeaderFiltersLabel:"Покажи Филтрите",columnHeaderSortIconLabel:"Сортирай",footerRowSelected:e=>e!==1?`${e.toLocaleString()} избрани редове`:`${e.toLocaleString()} избран ред`,footerTotalRows:"Общо Редове:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} от ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Избор на квадратче",checkboxSelectionSelectAllRows:"Избери всички редове",checkboxSelectionUnselectAllRows:"Отмени избора на всички редове",checkboxSelectionSelectRow:"Избери ред",checkboxSelectionUnselectRow:"Отмени избора на ред",booleanCellTrueLabel:"да",booleanCellFalseLabel:"не",actionsCellMore:"още",pinToLeft:"Закачи в ляво",pinToRight:"Закачи в дясно",unpin:"Откачи",treeDataGroupingHeaderName:"Група",treeDataExpand:"виж деца",treeDataCollapse:"скрий децата",groupingColumnHeaderName:"Група",groupColumn:e=>`Групирай по ${e}`,unGroupColumn:e=>`Спри групиране по ${e}`,expandDetailPanel:"Разгъване",collapseDetailPanel:"Свиване",rowReorderingHeaderName:"Подредба на редове"},hC=Fe(bC,Ah),CC={noRowsLabel:"Žádné záznamy",noResultsOverlayLabel:"Nenašly se žadné výsledky.",toolbarDensity:"Zobrazení",toolbarDensityLabel:"Zobrazení",toolbarDensityCompact:"Kompaktní",toolbarDensityStandard:"Standartní",toolbarDensityComfortable:"Komfortní",toolbarColumns:"Sloupce",toolbarColumnsLabel:"Vybrat sloupec",toolbarFilters:"Filtry",toolbarFiltersLabel:"Zobrazit filtry",toolbarFiltersTooltipHide:"Skrýt filtry",toolbarFiltersTooltipShow:"Zobrazit filtry",toolbarFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Hledat…",toolbarQuickFilterLabel:"Hledat",toolbarQuickFilterDeleteIconLabel:"Vymazat",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stáhnout jako CSV",toolbarExportPrint:"Vytisknout",toolbarExportExcel:"Stáhnout jako Excel",columnsPanelTextFieldLabel:"Najít sloupec",columnsPanelTextFieldPlaceholder:"Název sloupce",columnsPanelDragIconLabel:"Uspořádat sloupce",columnsPanelShowAllButton:"Zobrazit vše",columnsPanelHideAllButton:"Skrýt vše",filterPanelAddFilter:"Přidat filtr",filterPanelRemoveAll:"Odstranit vše",filterPanelDeleteIconLabel:"Odstranit",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Nebo",filterPanelColumns:"Sloupce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtru",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná se",filterOperatorStartsWith:"začíná na",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"není",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je po včetně",filterOperatorBefore:"je před",filterOperatorOnOrBefore:"je před včetně",filterOperatorIsEmpty:"je prázdný",filterOperatorIsNotEmpty:"není prázdný",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná se",headerFilterOperatorStartsWith:"Začíná na",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Není",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je po včetně",headerFilterOperatorBefore:"Je před",headerFilterOperatorOnOrBefore:"Je před včetně",headerFilterOperatorIsEmpty:"Je prázdný",headerFilterOperatorIsNotEmpty:"Není prázdný",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná se","headerFilterOperator!=":"Nerovná se","headerFilterOperator>":"Větší než","headerFilterOperator>=":"Větší než nebo rovno","headerFilterOperator<":"Menší než","headerFilterOperator<=":"Menší než nebo rovno",filterValueAny:"jakýkoliv",filterValueTrue:"ano",filterValueFalse:"ne",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobrazit sloupce",columnMenuManageColumns:"Spravovat sloupce",columnMenuFilter:"Filtr",columnMenuHideColumn:"Skrýt",columnMenuUnsort:"Zrušit filtry",columnMenuSortAsc:"Seřadit vzestupně",columnMenuSortDesc:"Seřadit sestupně",columnHeaderFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobrazit filtry",columnHeaderSortIconLabel:"Filtrovat",footerRowSelected:e=>{let t="vybraných záznamů";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Celkem řádků:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"ze":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výběr řádku",checkboxSelectionSelectAllRows:"Označit všechny řádky",checkboxSelectionUnselectAllRows:"Odznačit všechny řádky",checkboxSelectionSelectRow:"Označit řádek",checkboxSelectionUnselectRow:"Odznačit řádek",booleanCellTrueLabel:"ano",booleanCellFalseLabel:"ne",actionsCellMore:"více",pinToLeft:"Připnout na levo",pinToRight:"Připnout na pravo",unpin:"Odepnout",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobrazit potomky",treeDataCollapse:"skrýt potomky",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Zeskupit podle ${e}`,unGroupColumn:e=>`Přestat zeskupovat podle ${e}`,detailPanelToggle:"Přepnout detail panelu",expandDetailPanel:"Rozbalit",collapseDetailPanel:"Sbalit",rowReorderingHeaderName:"Přeuspořádávání řádků",aggregationMenuItemHeader:"Seskupování",aggregationFunctionLabelSum:"součet",aggregationFunctionLabelAvg:"průměr",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},wC=Fe(CC,Hh),SC={noRowsLabel:"Ingen rækker",noResultsOverlayLabel:"Ingen resultater",toolbarDensity:"Tæthed",toolbarDensityLabel:"Tæthed",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Luftig",toolbarColumns:"Kolonne",toolbarColumnsLabel:"Vælg kolonne",toolbarFilters:"Filtre",toolbarFiltersLabel:"Vis filtre",toolbarFiltersTooltipHide:"Skjul filtre",toolbarFiltersTooltipShow:"Vis filtre",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søg…",toolbarQuickFilterLabel:"Søg",toolbarQuickFilterDeleteIconLabel:"Ryd",toolbarExport:"Eksport",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Download som CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download som Excel",columnsPanelTextFieldLabel:"Find kolonne",columnsPanelTextFieldPlaceholder:"Kolonne titel",columnsPanelDragIconLabel:"Reorder kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Tilføj filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slet",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operatorer",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonne",filterPanelInputLabel:"Værdi",filterPanelInputPlaceholder:"Filter værdi",filterOperatorContains:"Indeholder",filterOperatorEquals:"Lig med",filterOperatorStartsWith:"Begynder med",filterOperatorEndsWith:"Ender med",filterOperatorIs:"Er lig med",filterOperatorNot:"Er ikke lig med",filterOperatorAfter:"Efter",filterOperatorOnOrAfter:"På eller efter",filterOperatorBefore:"Før",filterOperatorOnOrBefore:"På eller før",filterOperatorIsEmpty:"Indeholder ikke data",filterOperatorIsNotEmpty:"Indeholder data",filterOperatorIsAnyOf:"indeholder en af",filterValueAny:"hvilken som helst",filterValueTrue:"positiv",filterValueFalse:"negativ",columnMenuLabel:"Menu",columnMenuShowColumns:"Vis Kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filtre",columnMenuHideColumn:"Skjul",columnMenuUnsort:"Fjern sortering",columnMenuSortAsc:"Sorter stigende",columnMenuSortDesc:"Sorter faldende",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:"Ét aktivt filter",columnHeaderFiltersLabel:"Vis filtre",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rækker valgt`:"Én række valgt",footerTotalRows:"Antal rækker i alt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} af ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Afkrydsningsvalg",checkboxSelectionSelectAllRows:"Vælg alle rækker",checkboxSelectionUnselectAllRows:"Fravælg alle rækker",checkboxSelectionSelectRow:"Vælg række",checkboxSelectionUnselectRow:"Fravælg række",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mere",pinToLeft:"Fastgør til venstre",pinToRight:"Fastgør til højre",unpin:"Frigiv",treeDataGroupingHeaderName:"Gruppering",treeDataExpand:"Vis underelementer",treeDataCollapse:"Skjul underelementer",groupingColumnHeaderName:"Gruppér",groupColumn:e=>`Gruppér efter ${e}`,unGroupColumn:e=>`Fjern gruppéring efter ${e}`,detailPanelToggle:"Udvid/kollaps detaljepanel",expandDetailPanel:"Udvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Omarrangering af rækker",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"gns",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"størrelse"},PC=Fe(SC,_h),xC={noRowsLabel:"Keine Einträge",noResultsOverlayLabel:"Keine Ergebnisse gefunden.",toolbarDensity:"Zeilenhöhe",toolbarDensityLabel:"Zeilenhöhe",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Breit",toolbarColumns:"Spalten",toolbarColumnsLabel:"Zeige Spaltenauswahl",toolbarFilters:"Filter",toolbarFiltersLabel:"Zeige Filter",toolbarFiltersTooltipHide:"Verberge Filter",toolbarFiltersTooltipShow:"Zeige Filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,toolbarQuickFilterPlaceholder:"Suchen…",toolbarQuickFilterLabel:"Suchen",toolbarQuickFilterDeleteIconLabel:"Löschen",toolbarExport:"Exportieren",toolbarExportLabel:"Exportieren",toolbarExportCSV:"Download als CSV",toolbarExportPrint:"Drucken",toolbarExportExcel:"Download als Excel",columnsPanelTextFieldLabel:"Finde Spalte",columnsPanelTextFieldPlaceholder:"Spaltenüberschrift",columnsPanelDragIconLabel:"Spalte umsortieren",columnsPanelShowAllButton:"Zeige alle",columnsPanelHideAllButton:"Verberge alle",filterPanelAddFilter:"Filter hinzufügen",filterPanelRemoveAll:"Alle entfernen",filterPanelDeleteIconLabel:"Löschen",filterPanelLogicOperator:"Logische Operatoren",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"Und",filterPanelOperatorOr:"Oder",filterPanelColumns:"Spalten",filterPanelInputLabel:"Wert",filterPanelInputPlaceholder:"Wert filtern",filterOperatorContains:"enthält",filterOperatorEquals:"ist gleich",filterOperatorStartsWith:"beginnt mit",filterOperatorEndsWith:"endet mit",filterOperatorIs:"ist",filterOperatorNot:"ist nicht",filterOperatorAfter:"ist nach",filterOperatorOnOrAfter:"ist am oder nach",filterOperatorBefore:"ist vor",filterOperatorOnOrBefore:"ist am oder vor",filterOperatorIsEmpty:"ist leer",filterOperatorIsNotEmpty:"ist nicht leer",filterOperatorIsAnyOf:"ist einer der Werte","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Enthält",headerFilterOperatorEquals:"Gleich",headerFilterOperatorStartsWith:"Beginnt mit",headerFilterOperatorEndsWith:"Endet mit",headerFilterOperatorIs:"Ist",headerFilterOperatorNot:"Ist nicht",headerFilterOperatorAfter:"Ist nach",headerFilterOperatorOnOrAfter:"Ist am oder nach",headerFilterOperatorBefore:"Ist vor",headerFilterOperatorOnOrBefore:"Ist am oder vor",headerFilterOperatorIsEmpty:"Ist leer",headerFilterOperatorIsNotEmpty:"Ist nicht leer",headerFilterOperatorIsAnyOf:"Ist eines von","headerFilterOperator=":"Gleich","headerFilterOperator!=":"Ungleich","headerFilterOperator>":"Größer als","headerFilterOperator>=":"Größer als oder gleich","headerFilterOperator<":"Kleiner als","headerFilterOperator<=":"Kleiner als oder gleich",filterValueAny:"Beliebig",filterValueTrue:"Ja",filterValueFalse:"Nein",columnMenuLabel:"Menü",columnMenuShowColumns:"Zeige alle Spalten",columnMenuManageColumns:"Spalten verwalten",columnMenuFilter:"Filter",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Sortierung deaktivieren",columnMenuSortAsc:"Sortiere aufsteigend",columnMenuSortDesc:"Sortiere absteigend",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,columnHeaderFiltersLabel:"Zeige Filter",columnHeaderSortIconLabel:"Sortieren",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Einträge ausgewählt`:`${e.toLocaleString()} Eintrag ausgewählt`,footerTotalRows:"Gesamt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} von ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Auswahl",checkboxSelectionSelectAllRows:"Alle Zeilen auswählen",checkboxSelectionUnselectAllRows:"Alle Zeilen abwählen",checkboxSelectionSelectRow:"Zeile auswählen",checkboxSelectionUnselectRow:"Zeile abwählen",booleanCellTrueLabel:"Ja",booleanCellFalseLabel:"Nein",actionsCellMore:"Mehr",pinToLeft:"Links anheften",pinToRight:"Rechts anheften",unpin:"Loslösen",treeDataGroupingHeaderName:"Gruppe",treeDataExpand:"Kinder einblenden",treeDataCollapse:"Kinder ausblenden",groupingColumnHeaderName:"Gruppierung",groupColumn:e=>`Gruppieren nach ${e}`,unGroupColumn:e=>`Gruppierung nach ${e} aufheben`,detailPanelToggle:"Detailansicht Kippschalter",expandDetailPanel:"Aufklappen",collapseDetailPanel:"Zuklappen",rowReorderingHeaderName:"Reihen neu ordnen",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"Summe",aggregationFunctionLabelAvg:"Mittelwert",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Anzahl"},vC=Fe(xC,Vh),OC={noRowsLabel:"Δεν υπάρχουν καταχωρήσεις",noResultsOverlayLabel:"Δεν βρέθηκαν αποτελέσματα.",toolbarDensity:"Ύψος σειράς",toolbarDensityLabel:"Ύψος σειράς",toolbarDensityCompact:"Συμπαγής",toolbarDensityStandard:"Προκαθορισμένο",toolbarDensityComfortable:"Πλατύ",toolbarColumns:"Στήλες",toolbarColumnsLabel:"Επιλέξτε στήλες",toolbarFilters:"Φίλτρα",toolbarFiltersLabel:"Εμφάνιση φίλτρων",toolbarFiltersTooltipHide:"Απόκρυψη φίλτρων",toolbarFiltersTooltipShow:"Εμφάνιση φίλτρων",toolbarFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,toolbarQuickFilterPlaceholder:"Αναζήτηση…",toolbarQuickFilterLabel:"Αναζήτηση",toolbarQuickFilterDeleteIconLabel:"Καθαρισμός",toolbarExport:"Εξαγωγή",toolbarExportLabel:"Εξαγωγή",toolbarExportCSV:"Λήψη ως CSV",toolbarExportPrint:"Εκτύπωση",toolbarExportExcel:"Λήψη ως Excel",columnsPanelTextFieldLabel:"Εύρεση στήλης",columnsPanelTextFieldPlaceholder:"Επικεφαλίδα στήλης",columnsPanelDragIconLabel:"Αναδιάταξη στήλης",columnsPanelShowAllButton:"Προβολή όλων",columnsPanelHideAllButton:"Απόκρυψη όλων",filterPanelAddFilter:"Προσθήκη φίλτρου",filterPanelRemoveAll:"Αφαίρεση όλων",filterPanelDeleteIconLabel:"Διαγραφή",filterPanelLogicOperator:"Λογικός τελεστής",filterPanelOperator:"Τελεστές",filterPanelOperatorAnd:"Καί",filterPanelOperatorOr:"Ή",filterPanelColumns:"Στήλες",filterPanelInputLabel:"Τιμή",filterPanelInputPlaceholder:"Τιμή φίλτρου",filterOperatorContains:"περιέχει",filterOperatorEquals:"ισούται",filterOperatorStartsWith:"ξεκινάει με",filterOperatorEndsWith:"τελειώνει με",filterOperatorIs:"είναι",filterOperatorNot:"δεν είναι",filterOperatorAfter:"είναι μετά",filterOperatorOnOrAfter:"είναι ίσο ή μετά",filterOperatorBefore:"είναι πριν",filterOperatorOnOrBefore:"είναι ίσο ή πριν",filterOperatorIsEmpty:"είναι κενό",filterOperatorIsNotEmpty:"δεν είναι κενό",filterOperatorIsAnyOf:"είναι οποιοδήποτε από","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Περιέχει",headerFilterOperatorEquals:"Ισούται",headerFilterOperatorStartsWith:"Ξεκινάει με",headerFilterOperatorEndsWith:"Τελειώνει με",headerFilterOperatorIs:"Είναι",headerFilterOperatorNot:"Δεν είναι",headerFilterOperatorAfter:"Είναι μετά",headerFilterOperatorOnOrAfter:"Είναι ίσο ή μετά",headerFilterOperatorBefore:"Είναι πριν",headerFilterOperatorOnOrBefore:"Είναι ίσο ή πριν",headerFilterOperatorIsEmpty:"Είναι κενό",headerFilterOperatorIsNotEmpty:"Δεν είναι κενό",headerFilterOperatorIsAnyOf:"Είναι οποιοδήποτε από","headerFilterOperator=":"Ισούται","headerFilterOperator!=":"Δεν ισούται","headerFilterOperator>":"Μεγαλύτερο από","headerFilterOperator>=":"Μεγαλύτερο ή ίσο με","headerFilterOperator<":"Μικρότερο από","headerFilterOperator<=":"Μικρότερο ή ίσο με",filterValueAny:"οποιοδήποτε",filterValueTrue:"αληθές",filterValueFalse:"ψευδές",columnMenuLabel:"Μενού",columnMenuShowColumns:"Εμφάνιση στηλών",columnMenuManageColumns:"Διαχείριση στηλών",columnMenuFilter:"Φίλτρο",columnMenuHideColumn:"Απόκρυψη",columnMenuUnsort:"Απενεργοποίηση ταξινόμησης",columnMenuSortAsc:"Ταξινόμηση σε αύξουσα σειρά",columnMenuSortDesc:"Ταξινόμηση σε φθίνουσα σειρά",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,columnHeaderFiltersLabel:"Εμφάνιση φίλτρων",columnHeaderSortIconLabel:"Ταξινόμηση",footerRowSelected:e=>e!==1?`${e.toLocaleString()} επιλεγμένες γραμμές`:`${e.toLocaleString()} επιλεγμένη γραμμή`,footerTotalRows:"Σύνολο Γραμμών:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} από ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Επιλογή πλαισίου ελέγχου",checkboxSelectionSelectAllRows:"Επιλέξτε όλες τις σειρές",checkboxSelectionUnselectAllRows:"Καταργήση επιλογής όλων των σειρών",checkboxSelectionSelectRow:"Επιλογή γραμμής",checkboxSelectionUnselectRow:"Καταργήση επιλογής γραμμής",booleanCellTrueLabel:"ναί",booleanCellFalseLabel:"όχι",actionsCellMore:"περισσότερα",pinToLeft:"Καρφιτσώμα στα αριστερά",pinToRight:"Καρφιτσώμα στα δεξιά",unpin:"Ξεκαρφίτσωμα",treeDataGroupingHeaderName:"Ομαδοποίηση",treeDataExpand:"εμφάνιση περιεχομένων",treeDataCollapse:"απόκρυψη περιεχομένων",groupingColumnHeaderName:"Ομαδοποίηση",groupColumn:e=>`Ομαδοποίηση κατά ${e}`,unGroupColumn:e=>`Διακοπή ομαδοποίησης κατά ${e}`,detailPanelToggle:"Εναλλαγή πίνακα λεπτομερειών",expandDetailPanel:"Ανάπτυξη",collapseDetailPanel:"Σύμπτυξη",rowReorderingHeaderName:"Αναδιάταξη γραμμών",aggregationMenuItemHeader:"Συσσωμάτωση",aggregationFunctionLabelSum:"άθροισμα",aggregationFunctionLabelAvg:"μέση τιμή",aggregationFunctionLabelMin:"ελάχιστο",aggregationFunctionLabelMax:"μέγιστο",aggregationFunctionLabelSize:"μέγεθος"},FC=Fe(OC,Gh),yC=Fe(an,Nh),IC={noRowsLabel:"Sin filas",noResultsOverlayLabel:"Resultados no encontrados",toolbarDensity:"Densidad",toolbarDensityLabel:"Densidad",toolbarDensityCompact:"Compacta",toolbarDensityStandard:"Estándar",toolbarDensityComfortable:"Cómoda",toolbarColumns:"Columnas",toolbarColumnsLabel:"Seleccionar columnas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Mostrar filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Mostrar filtros",toolbarFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,toolbarQuickFilterPlaceholder:"Buscar…",toolbarQuickFilterLabel:"Buscar",toolbarQuickFilterDeleteIconLabel:"Limpiar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Descargar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Descargar como Excel",columnsPanelTextFieldLabel:"Columna de búsqueda",columnsPanelTextFieldPlaceholder:"Título de columna",columnsPanelDragIconLabel:"Reordenar columna",columnsPanelShowAllButton:"Mostrar todo",columnsPanelHideAllButton:"Ocultar todo",filterPanelAddFilter:"Agregar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Borrar",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operadores",filterPanelOperatorAnd:"Y",filterPanelOperatorOr:"O",filterPanelColumns:"Columnas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Valor de filtro",filterOperatorContains:"contiene",filterOperatorEquals:"es igual",filterOperatorStartsWith:"comienza con",filterOperatorEndsWith:"termina con",filterOperatorIs:"es",filterOperatorNot:"no es",filterOperatorAfter:"es posterior",filterOperatorOnOrAfter:"es en o posterior",filterOperatorBefore:"es anterior",filterOperatorOnOrBefore:"es en o anterior",filterOperatorIsEmpty:"esta vacío",filterOperatorIsNotEmpty:"no esta vacío",filterOperatorIsAnyOf:"es cualquiera de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"Es igual a",headerFilterOperatorStartsWith:"Comienza con",headerFilterOperatorEndsWith:"Termina con",headerFilterOperatorIs:"Es",headerFilterOperatorNot:"No es",headerFilterOperatorAfter:"Esta después de",headerFilterOperatorOnOrAfter:"Esta en o después de",headerFilterOperatorBefore:"Esta antes de",headerFilterOperatorOnOrBefore:"Esta en o antes de",headerFilterOperatorIsEmpty:"Esta vacío",headerFilterOperatorIsNotEmpty:"No esta vacío",headerFilterOperatorIsAnyOf:"Es cualquiera de","headerFilterOperator=":"Es igual a","headerFilterOperator!=":"Es diferente a","headerFilterOperator>":"Es mayor que","headerFilterOperator>=":"Es mayor o igual que","headerFilterOperator<":"Es menor que","headerFilterOperator<=":"Es menor o igual que",filterValueAny:"cualquiera",filterValueTrue:"verdadero",filterValueFalse:"falso",columnMenuLabel:"Menú",columnMenuShowColumns:"Mostrar columnas",columnMenuManageColumns:"Administrar columnas",columnMenuFilter:"Filtro",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desordenar",columnMenuSortAsc:"Ordenar ASC",columnMenuSortDesc:"Ordenar DESC",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,columnHeaderFiltersLabel:"Mostrar filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e>1?`${e.toLocaleString()} filas seleccionadas`:`${e.toLocaleString()} fila seleccionada`,footerTotalRows:"Filas Totales:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleccionar casilla",checkboxSelectionSelectAllRows:"Seleccionar todas las filas",checkboxSelectionUnselectAllRows:"Deseleccionar todas las filas",checkboxSelectionSelectRow:"Seleccionar fila",checkboxSelectionUnselectRow:"Deseleccionar fila",booleanCellTrueLabel:"si",booleanCellFalseLabel:"no",actionsCellMore:"más",pinToLeft:"Anclar a la izquierda",pinToRight:"Anclar a la derecha",unpin:"Desanclar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar hijos",treeDataCollapse:"ocultar hijos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`No agrupar por ${e}`,detailPanelToggle:"Alternar detalle",expandDetailPanel:"Expandir",collapseDetailPanel:"Contraer",rowReorderingHeaderName:"Reordenar filas",aggregationMenuItemHeader:"Agregación",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"tamaño"},MC=Fe(IC,zh),kC={noRowsLabel:"بدون سطر",noResultsOverlayLabel:"نتیجه ای پیدا نشد.",toolbarDensity:"تراکم",toolbarDensityLabel:"تراکم",toolbarDensityCompact:"فشرده",toolbarDensityStandard:"استاندارد",toolbarDensityComfortable:"راحت",toolbarColumns:"ستون‌ها",toolbarColumnsLabel:"ستون‌ها را انتخاب کنید",toolbarFilters:"فیلترها",toolbarFiltersLabel:"نمایش فیلترها",toolbarFiltersTooltipHide:"مخفی کردن فیلترها",toolbarFiltersTooltipShow:"نمایش فیلترها",toolbarFiltersTooltipActive:e=>e!==1?`${e} فیلترهای فعال`:`${e} فیلتر فعال`,toolbarQuickFilterPlaceholder:"جستجو...",toolbarQuickFilterLabel:"جستجو",toolbarQuickFilterDeleteIconLabel:"حذف",toolbarExport:"خروجی",toolbarExportLabel:"خروجی",toolbarExportCSV:"دانلود به صورت CSV",toolbarExportPrint:"چاپ",toolbarExportExcel:"دانلود به صورت اکسل",columnsPanelTextFieldLabel:"پیداکردن ستون",columnsPanelTextFieldPlaceholder:"عنوان ستون",columnsPanelDragIconLabel:"جا‌به‌جایی ستون",columnsPanelShowAllButton:"نمایش همه",columnsPanelHideAllButton:"مخفی همه",filterPanelAddFilter:"افزودن فیلتر",filterPanelRemoveAll:"حذف همه",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عملگر منطقی",filterPanelOperator:"عملگرها",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"یا",filterPanelColumns:"ستون‌ها",filterPanelInputLabel:"مقدار",filterPanelInputPlaceholder:"فیلتر مقدار",filterOperatorContains:"شامل",filterOperatorEquals:"مساوی",filterOperatorStartsWith:"شروع با",filterOperatorEndsWith:"پایان با",filterOperatorIs:"هست",filterOperatorNot:"نیست",filterOperatorAfter:"بعد از",filterOperatorOnOrAfter:"معادل یا بعدش",filterOperatorBefore:"قبلش",filterOperatorOnOrBefore:"معادل یا قبلش",filterOperatorIsEmpty:"خالی است",filterOperatorIsNotEmpty:"خالی نیست",filterOperatorIsAnyOf:"هر یک از","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"شامل",headerFilterOperatorEquals:"مساوی",headerFilterOperatorStartsWith:"شروع با",headerFilterOperatorEndsWith:"پایان با",headerFilterOperatorIs:"هست",headerFilterOperatorNot:"نیست",headerFilterOperatorAfter:"بعد از",headerFilterOperatorOnOrAfter:"معادل یا بعد از",headerFilterOperatorBefore:"قبل از",headerFilterOperatorOnOrBefore:"معادل یا قبل از",headerFilterOperatorIsEmpty:"خالی است",headerFilterOperatorIsNotEmpty:"خالی نیست",headerFilterOperatorIsAnyOf:"هر یک از","headerFilterOperator=":"مساوی","headerFilterOperator!=":"نامساوی","headerFilterOperator>":"بزرگتر","headerFilterOperator>=":"بزرگتر یا مساوی","headerFilterOperator<":"کوچکتر","headerFilterOperator<=":"کوچکتر یا مساوی",filterValueAny:"هرچیزی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"فهرست",columnMenuShowColumns:"نمایش ستون‌ها",columnMenuManageColumns:"مدیریت ستون‌ها",columnMenuFilter:"فیلتر",columnMenuHideColumn:"مخفی",columnMenuUnsort:"نامرتب‌کردن",columnMenuSortAsc:"مرتب‌کردن صعودی",columnMenuSortDesc:"مرتب‌کردن نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فیلتر‌های فعال`:`${e} فیلتر فعال`,columnHeaderFiltersLabel:"نمایش فیلترها",columnHeaderSortIconLabel:"مرتب‌کردن",footerRowSelected:e=>e!==1?`${e.toLocaleString()} سطرهای انتخاب شده`:`${e.toLocaleString()} سطر انتخاب شده`,footerTotalRows:"مجموع سطرها:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} از ${t.toLocaleString()}`,checkboxSelectionHeaderName:"چک‌باکس انتخاب",checkboxSelectionSelectAllRows:"انتخاب همه‌ی ردیف‌ها",checkboxSelectionUnselectAllRows:"لغو انتخاب همه‌ی ردیف‌ها",checkboxSelectionSelectRow:"انتخاب ردیف",checkboxSelectionUnselectRow:"لغو انتخاب ردیف",booleanCellTrueLabel:"صحیح",booleanCellFalseLabel:"غلط",actionsCellMore:"بیشتر",pinToLeft:"سنجاق کردن به چپ",pinToRight:"سنجاق کردن به راست",unpin:"برداشتن سنجاق",treeDataGroupingHeaderName:"گروه‌بندی",treeDataExpand:"نمایش فرزندان",treeDataCollapse:"پنهان‌سازی فرزندان",groupingColumnHeaderName:"گروه‌بندی",groupColumn:e=>`گروه‌بندی براساس ${e}`,unGroupColumn:e=>`لغو گروه‌بندی براساس ${e}`,detailPanelToggle:"پنل جزئیات",expandDetailPanel:"بازکردن پنل جزئیات",collapseDetailPanel:"بستن پنل جزئیات",rowReorderingHeaderName:"ترتیب مجدد سطر",aggregationMenuItemHeader:"تجمیع",aggregationFunctionLabelSum:"جمع",aggregationFunctionLabelAvg:"میانگین",aggregationFunctionLabelMin:"حداقل",aggregationFunctionLabelMax:"حداکثر",aggregationFunctionLabelSize:"اندازه"},EC=Fe(kC,jh),LC={noRowsLabel:"Ei rivejä",noResultsOverlayLabel:"Ei tuloksia.",toolbarDensity:"Tiiveys",toolbarDensityLabel:"Tiiveys",toolbarDensityCompact:"Kompakti",toolbarDensityStandard:"Vakio",toolbarDensityComfortable:"Mukava",toolbarColumns:"Sarakkeet",toolbarColumnsLabel:"Valitse sarakkeet",toolbarFilters:"Suodattimet",toolbarFiltersLabel:"Näytä suodattimet",toolbarFiltersTooltipHide:"Piilota suodattimet",toolbarFiltersTooltipShow:"Näytä suodattimet",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,toolbarQuickFilterPlaceholder:"Hae…",toolbarQuickFilterLabel:"Hae",toolbarQuickFilterDeleteIconLabel:"Tyhjennä",toolbarExport:"Vie",toolbarExportLabel:"Vie",toolbarExportCSV:"Lataa CSV-muodossa",toolbarExportPrint:"Tulosta",toolbarExportExcel:"Lataa Excel-muodossa",columnsPanelTextFieldLabel:"Etsi sarake",columnsPanelTextFieldPlaceholder:"Sarakkeen otsikko",columnsPanelDragIconLabel:"Järjestä sarake uudelleen",columnsPanelShowAllButton:"Näytä kaikki",columnsPanelHideAllButton:"Piilota kaikki",filterPanelAddFilter:"Lisää suodatin",filterPanelRemoveAll:"Poista kaikki",filterPanelDeleteIconLabel:"Poista",filterPanelLogicOperator:"Logiikkaoperaattori",filterPanelOperator:"Operaattorit",filterPanelOperatorAnd:"Ja",filterPanelOperatorOr:"Tai",filterPanelColumns:"Sarakkeet",filterPanelInputLabel:"Arvo",filterPanelInputPlaceholder:"Suodattimen arvo",filterOperatorContains:"sisältää",filterOperatorEquals:"on yhtä suuri kuin",filterOperatorStartsWith:"alkaa",filterOperatorEndsWith:"päättyy",filterOperatorIs:"on",filterOperatorNot:"ei ole",filterOperatorAfter:"on jälkeen",filterOperatorOnOrAfter:"on sama tai jälkeen",filterOperatorBefore:"on ennen",filterOperatorOnOrBefore:"on sama tai ennen",filterOperatorIsEmpty:"on tyhjä",filterOperatorIsNotEmpty:"ei ole tyhjä",filterOperatorIsAnyOf:"on mikä tahansa seuraavista","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Sisältää",headerFilterOperatorEquals:"On yhtä suuri kuin",headerFilterOperatorStartsWith:"Alkaa",headerFilterOperatorEndsWith:"Päättyy",headerFilterOperatorIs:"On",headerFilterOperatorNot:"Ei ole",headerFilterOperatorAfter:"On jälkeen",headerFilterOperatorOnOrAfter:"On sama tai jälkeen",headerFilterOperatorBefore:"On ennen",headerFilterOperatorOnOrBefore:"On sama tai ennen",headerFilterOperatorIsEmpty:"On tyhjä",headerFilterOperatorIsNotEmpty:"Ei ole tyhjä",headerFilterOperatorIsAnyOf:"On mikä tahansa seuraavista","headerFilterOperator=":"On yhtä suuri kuin","headerFilterOperator!=":"Ei ole yhtä suuri kuin","headerFilterOperator>":"Enemmän kuin","headerFilterOperator>=":"Enemmän tai yhtä paljon kuin","headerFilterOperator<":"Vähemmän kuin","headerFilterOperator<=":"Vähemmän tai yhtä paljon kuin",filterValueAny:"mikä tahansa",filterValueTrue:"tosi",filterValueFalse:"epätosi",columnMenuLabel:"Valikko",columnMenuShowColumns:"Näytä sarakkeet",columnMenuManageColumns:"Hallitse sarakkeita",columnMenuFilter:"Suodata",columnMenuHideColumn:"Piilota",columnMenuUnsort:"Poista järjestys",columnMenuSortAsc:"Järjestä nousevasti",columnMenuSortDesc:"Järjestä laskevasti",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,columnHeaderFiltersLabel:"Näytä suodattimet",columnHeaderSortIconLabel:"Järjestä",footerRowSelected:e=>e!==1?`${e.toLocaleString()} riviä valittu`:`${e.toLocaleString()} rivi valittu`,footerTotalRows:"Rivejä yhteensä:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Valintaruutu",checkboxSelectionSelectAllRows:"Valitse kaikki rivit",checkboxSelectionUnselectAllRows:"Poista kaikkien rivien valinta",checkboxSelectionSelectRow:"Valitse rivi",checkboxSelectionUnselectRow:"Poista rivin valinta",booleanCellTrueLabel:"tosi",booleanCellFalseLabel:"epätosi",actionsCellMore:"lisää",pinToLeft:"Kiinnitä vasemmalle",pinToRight:"Kiinnitä oikealle",unpin:"Irrota kiinnitys",treeDataGroupingHeaderName:"Ryhmä",treeDataExpand:"Laajenna",treeDataCollapse:"Supista",groupingColumnHeaderName:"Ryhmä",groupColumn:e=>`Ryhmittelyperuste ${e}`,unGroupColumn:e=>`Poista ryhmittelyperuste ${e}`,detailPanelToggle:"Yksityiskohtapaneelin vaihto",expandDetailPanel:"Laajenna",collapseDetailPanel:"Tiivistä",rowReorderingHeaderName:"Rivien uudelleenjärjestely",aggregationMenuItemHeader:"Koostaminen",aggregationFunctionLabelSum:"summa",aggregationFunctionLabelAvg:"ka.",aggregationFunctionLabelMin:"min.",aggregationFunctionLabelMax:"maks.",aggregationFunctionLabelSize:"koko"},TC=Fe(LC,Bh),DC={noRowsLabel:"Pas de résultats",noResultsOverlayLabel:"Aucun résultat.",toolbarDensity:"Densité",toolbarDensityLabel:"Densité",toolbarDensityCompact:"Compacte",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Confortable",toolbarColumns:"Colonnes",toolbarColumnsLabel:"Choisir les colonnes",toolbarFilters:"Filtres",toolbarFiltersLabel:"Afficher les filtres",toolbarFiltersTooltipHide:"Cacher les filtres",toolbarFiltersTooltipShow:"Afficher les filtres",toolbarFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,toolbarQuickFilterPlaceholder:"Rechercher…",toolbarQuickFilterLabel:"Recherche",toolbarQuickFilterDeleteIconLabel:"Supprimer",toolbarExport:"Exporter",toolbarExportLabel:"Exporter",toolbarExportCSV:"Télécharger en CSV",toolbarExportPrint:"Imprimer",toolbarExportExcel:"Télécharger pour Excel",columnsPanelTextFieldLabel:"Chercher une colonne",columnsPanelTextFieldPlaceholder:"Titre de la colonne",columnsPanelDragIconLabel:"Réorganiser la colonne",columnsPanelShowAllButton:"Tout afficher",columnsPanelHideAllButton:"Tout cacher",filterPanelAddFilter:"Ajouter un filtre",filterPanelRemoveAll:"Tout supprimer",filterPanelDeleteIconLabel:"Supprimer",filterPanelLogicOperator:"Opérateur logique",filterPanelOperator:"Opérateur",filterPanelOperatorAnd:"Et",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valeur",filterPanelInputPlaceholder:"Filtrer la valeur",filterOperatorContains:"contient",filterOperatorEquals:"est égal à",filterOperatorStartsWith:"commence par",filterOperatorEndsWith:"se termine par",filterOperatorIs:"est",filterOperatorNot:"n'est pas",filterOperatorAfter:"postérieur",filterOperatorOnOrAfter:"égal ou postérieur",filterOperatorBefore:"antérieur",filterOperatorOnOrBefore:"égal ou antérieur",filterOperatorIsEmpty:"est vide",filterOperatorIsNotEmpty:"n'est pas vide",filterOperatorIsAnyOf:"fait partie de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contient",headerFilterOperatorEquals:"Est égal à",headerFilterOperatorStartsWith:"Commence par",headerFilterOperatorEndsWith:"Se termine par",headerFilterOperatorIs:"Est",headerFilterOperatorNot:"N'est pas",headerFilterOperatorAfter:"Postérieur",headerFilterOperatorOnOrAfter:"Égal ou postérieur",headerFilterOperatorBefore:"Antérieur",headerFilterOperatorOnOrBefore:"Égal ou antérieur",headerFilterOperatorIsEmpty:"Est vide",headerFilterOperatorIsNotEmpty:"N'est pas vide",headerFilterOperatorIsAnyOf:"Fait partie de","headerFilterOperator=":"Est égal à","headerFilterOperator!=":"N'est pas égal à","headerFilterOperator>":"Est supérieur à","headerFilterOperator>=":"Est supérieur ou égal à","headerFilterOperator<":"Est inférieur à","headerFilterOperator<=":"Est inférieur ou égal à",filterValueAny:"tous",filterValueTrue:"vrai",filterValueFalse:"faux",columnMenuLabel:"Menu",columnMenuShowColumns:"Afficher les colonnes",columnMenuManageColumns:"Gérer les colonnes",columnMenuFilter:"Filtrer",columnMenuHideColumn:"Cacher",columnMenuUnsort:"Annuler le tri",columnMenuSortAsc:"Tri ascendant",columnMenuSortDesc:"Tri descendant",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,columnHeaderFiltersLabel:"Afficher les filtres",columnHeaderSortIconLabel:"Trier",footerRowSelected:e=>e>1?`${e.toLocaleString()} lignes sélectionnées`:`${e.toLocaleString()} ligne sélectionnée`,footerTotalRows:"Total de lignes :",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} sur ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Sélection",checkboxSelectionSelectAllRows:"Sélectionner toutes les lignes",checkboxSelectionUnselectAllRows:"Désélectionner toutes les lignes",checkboxSelectionSelectRow:"Sélectionner la ligne",checkboxSelectionUnselectRow:"Désélectionner la ligne",booleanCellTrueLabel:"vrai",booleanCellFalseLabel:"faux",actionsCellMore:"Plus",pinToLeft:"Épingler à gauche",pinToRight:"Épingler à droite",unpin:"Désépingler",treeDataGroupingHeaderName:"Groupe",treeDataExpand:"afficher les enfants",treeDataCollapse:"masquer les enfants",groupingColumnHeaderName:"Groupe",groupColumn:e=>`Grouper par ${e}`,unGroupColumn:e=>`Arrêter de grouper par ${e}`,detailPanelToggle:"Afficher/masquer les détails",expandDetailPanel:"Afficher",collapseDetailPanel:"Masquer",rowReorderingHeaderName:"Positionnement des lignes",aggregationMenuItemHeader:"Agrégation",aggregationFunctionLabelSum:"Somme",aggregationFunctionLabelAvg:"Moyenne",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Nombre d'éléments"},$C=Fe(DC,Uh),RC={noRowsLabel:"אין שורות",noResultsOverlayLabel:"לא נמצאו תוצאות.",toolbarDensity:"צפיפות",toolbarDensityLabel:"צפיפות",toolbarDensityCompact:"דחוסה",toolbarDensityStandard:"רגילה",toolbarDensityComfortable:"אוורירית",toolbarColumns:"עמודות",toolbarColumnsLabel:"בחר עמודות",toolbarFilters:"סינון",toolbarFiltersLabel:"הצג מסננים",toolbarFiltersTooltipHide:"הסתר מסננים",toolbarFiltersTooltipShow:"הצג מסננים",toolbarFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",toolbarQuickFilterPlaceholder:"חיפוש…",toolbarQuickFilterLabel:"חיפוש",toolbarQuickFilterDeleteIconLabel:"ניקוי",toolbarExport:"ייצוא",toolbarExportLabel:"ייצוא",toolbarExportCSV:"ייצוא ל- CSV",toolbarExportPrint:"הדפסה",toolbarExportExcel:"ייצוא ל- Excel",columnsPanelTextFieldLabel:"חפש עמודה",columnsPanelTextFieldPlaceholder:"כותרת עמודה",columnsPanelDragIconLabel:"סדר עמודות מחדש",columnsPanelShowAllButton:"הצג הכל",columnsPanelHideAllButton:"הסתר הכל",filterPanelAddFilter:"הוסף מסנן",filterPanelRemoveAll:"מחק הכל",filterPanelDeleteIconLabel:"מחק",filterPanelLogicOperator:"אופרטור לוגי",filterPanelOperator:"אופרטור",filterPanelOperatorAnd:"וגם",filterPanelOperatorOr:"או",filterPanelColumns:"עמודות",filterPanelInputLabel:"ערך",filterPanelInputPlaceholder:"ערך מסנן",filterOperatorContains:"מכיל",filterOperatorEquals:"שווה",filterOperatorStartsWith:"מתחיל ב-",filterOperatorEndsWith:"נגמר ב-",filterOperatorIs:"הינו",filterOperatorNot:"אינו",filterOperatorAfter:"אחרי",filterOperatorOnOrAfter:"ב- או אחרי",filterOperatorBefore:"לפני",filterOperatorOnOrBefore:"ב- או לפני",filterOperatorIsEmpty:"ריק",filterOperatorIsNotEmpty:"אינו ריק",filterOperatorIsAnyOf:"הוא אחד מ-",headerFilterOperatorContains:"מכיל",headerFilterOperatorEquals:"שווה",headerFilterOperatorStartsWith:"מתחיל ב-",headerFilterOperatorEndsWith:"נגמר ב-",headerFilterOperatorIs:"הינו",headerFilterOperatorNot:"אינו",headerFilterOperatorAfter:"אחרי",headerFilterOperatorOnOrAfter:"ב- או אחרי",headerFilterOperatorBefore:"לפני",headerFilterOperatorOnOrBefore:"ב- או לפני",headerFilterOperatorIsEmpty:"ריק",headerFilterOperatorIsNotEmpty:"אינו ריק",headerFilterOperatorIsAnyOf:"הוא אחד מ-","headerFilterOperator=":"שווה","headerFilterOperator!=":"אינו שווה","headerFilterOperator>":"גדול מ-","headerFilterOperator>=":"גדול שווה ל-","headerFilterOperator<":"קטן מ-","headerFilterOperator<=":"קטן שווה ל-",filterValueAny:"כל ערך",filterValueTrue:"כן",filterValueFalse:"לא",columnMenuLabel:"תפריט",columnMenuShowColumns:"הצג עמודות",columnMenuManageColumns:"נהל עמודות",columnMenuFilter:"סנן",columnMenuHideColumn:"הסתר",columnMenuUnsort:"בטל מיון",columnMenuSortAsc:"מיין בסדר עולה",columnMenuSortDesc:"מיין בסדר יורד",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",columnHeaderFiltersLabel:"הצג מסננים",columnHeaderSortIconLabel:"מיין",footerRowSelected:e=>e!==1?`${e.toLocaleString()} שורות נבחרו`:"שורה אחת נבחרה",footerTotalRows:"סך הכל:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} מתוך ${t.toLocaleString()}`,checkboxSelectionHeaderName:"בחירה",checkboxSelectionSelectAllRows:"בחר הכל",checkboxSelectionUnselectAllRows:"בטל הכל",checkboxSelectionSelectRow:"בחר שורה",checkboxSelectionUnselectRow:"בטל בחירת שורה",booleanCellTrueLabel:"כן",booleanCellFalseLabel:"לא",actionsCellMore:"עוד",pinToLeft:"נעץ משמאל",pinToRight:"נעץ מימין",treeDataGroupingHeaderName:"קבוצה",treeDataExpand:"הרחב",treeDataCollapse:"כווץ",groupingColumnHeaderName:"קבוצה",groupColumn:e=>`קבץ לפי ${e}`,unGroupColumn:e=>`הפסק לקבץ לפי ${e}`,expandDetailPanel:"הרחב",collapseDetailPanel:"כווץ",rowReorderingHeaderName:"סידור שורות",aggregationMenuItemHeader:"צבירה",aggregationFunctionLabelSum:"סכום",aggregationFunctionLabelAvg:"ממוצע",aggregationFunctionLabelMin:"מינימום",aggregationFunctionLabelMax:"מקסימום",aggregationFunctionLabelSize:"גודל"},AC=Fe(RC,qh),HC={noRowsLabel:"Nincsenek sorok",noResultsOverlayLabel:"Nincs találat.",toolbarDensity:"Sormagasság",toolbarDensityLabel:"Sormagasság",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Normál",toolbarDensityComfortable:"Kényelmes",toolbarColumns:"Oszlopok",toolbarColumnsLabel:"Oszlopok kiválasztása",toolbarFilters:"Szűrők",toolbarFiltersLabel:"Szűrők megjelenítése",toolbarFiltersTooltipHide:"Szűrők elrejtése",toolbarFiltersTooltipShow:"Szűrők megjelenítése",toolbarFiltersTooltipActive:e=>`${e} aktív szűrő`,toolbarQuickFilterPlaceholder:"Keresés…",toolbarQuickFilterLabel:"Keresés",toolbarQuickFilterDeleteIconLabel:"Törlés",toolbarExport:"Exportálás",toolbarExportLabel:"Exportálás",toolbarExportCSV:"Mentés CSV fájlként",toolbarExportPrint:"Nyomtatás",toolbarExportExcel:"Mentés Excel fájlként",columnsPanelTextFieldLabel:"Oszlop keresése",columnsPanelTextFieldPlaceholder:"Oszlop neve",columnsPanelDragIconLabel:"Oszlop átrendezése",columnsPanelShowAllButton:"Összes megjelenítése",columnsPanelHideAllButton:"Összes elrejtése",filterPanelAddFilter:"Szűrő hozzáadása",filterPanelRemoveAll:"Összes törlése",filterPanelDeleteIconLabel:"Törlés",filterPanelLogicOperator:"Logikai operátor",filterPanelOperator:"Operátorok",filterPanelOperatorAnd:"És",filterPanelOperatorOr:"Vagy",filterPanelColumns:"Oszlopok",filterPanelInputLabel:"Érték",filterPanelInputPlaceholder:"Érték szűrése",filterOperatorContains:"tartalmazza:",filterOperatorEquals:"egyenlő ezzel:",filterOperatorStartsWith:"ezzel kezdődik:",filterOperatorEndsWith:"ezzel végződik:",filterOperatorIs:"a következő:",filterOperatorNot:"nem a következő:",filterOperatorAfter:"ezutáni:",filterOperatorOnOrAfter:"ekkori vagy ezutáni:",filterOperatorBefore:"ezelőtti:",filterOperatorOnOrBefore:"ekkori vagy ezelőtti:",filterOperatorIsEmpty:"üres",filterOperatorIsNotEmpty:"nem üres",filterOperatorIsAnyOf:"a következők egyike:","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Tartalmazza:",headerFilterOperatorEquals:"Egyenlő ezzel:",headerFilterOperatorStartsWith:"Ezzel kezdődik:",headerFilterOperatorEndsWith:"Ezzel végződik:",headerFilterOperatorAfter:"Ezutáni:",headerFilterOperatorOnOrAfter:"Ekkozori vagy ezutáni:",headerFilterOperatorBefore:"Ezelőtti:",headerFilterOperatorOnOrBefore:"Ekkori vagy ezelőtti:",headerFilterOperatorIsEmpty:"Üres",headerFilterOperatorIsNotEmpty:"Nem üres",headerFilterOperatorIsAnyOf:"A következők egyike:","headerFilterOperator=":"Egyenlő","headerFilterOperator!=":"Nem egyenlő","headerFilterOperator>":"Nagyobb mint","headerFilterOperator>=":"Nagyobb vagy egyenlő","headerFilterOperator<":"Kissebb mint","headerFilterOperator<=":"Kissebb vagy enygenlő",filterValueAny:"bármilyen",filterValueTrue:"igaz",filterValueFalse:"hamis",columnMenuLabel:"Menü",columnMenuShowColumns:"Oszlopok megjelenítése",columnMenuManageColumns:"Oszlopok kezelése",columnMenuFilter:"Szűrők",columnMenuHideColumn:"Elrejtés",columnMenuUnsort:"Sorrend visszaállítása",columnMenuSortAsc:"Növekvő sorrendbe",columnMenuSortDesc:"Csökkenő sorrendbe",columnHeaderFiltersTooltipActive:e=>`${e} aktív szűrő`,columnHeaderFiltersLabel:"Szűrők megjelenítése",columnHeaderSortIconLabel:"Átrendezés",footerRowSelected:e=>`${e.toLocaleString()} sor kiválasztva`,footerTotalRows:"Összesen:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} (összesen: ${t.toLocaleString()})`,checkboxSelectionHeaderName:"Jelölőnégyzetes kijelölés",checkboxSelectionSelectAllRows:"Minden sor kijelölése",checkboxSelectionUnselectAllRows:"Minden sor kijelölésének törlése",checkboxSelectionSelectRow:"Sor kijelölése",checkboxSelectionUnselectRow:"Sor kijelölésének törlése",booleanCellTrueLabel:"igen",booleanCellFalseLabel:"nem",actionsCellMore:"további",pinToLeft:"Rögzítés balra",pinToRight:"Rögzítés jobbra",unpin:"Rögzítés törlése",treeDataGroupingHeaderName:"Csoport",treeDataExpand:"gyermekek megjelenítése",treeDataCollapse:"gyermekek elrejtése",groupingColumnHeaderName:"Csoportosítás",groupColumn:e=>`Csoportosítás ${e} szerint`,unGroupColumn:e=>`${e} szerinti csoportosítás törlése`,detailPanelToggle:"Részletek panel váltása",expandDetailPanel:"Kibontás",collapseDetailPanel:"Összecsukás",rowReorderingHeaderName:"Sorok újrarendezése",aggregationMenuItemHeader:"Összesítés",aggregationFunctionLabelSum:"Összeg",aggregationFunctionLabelAvg:"Átlag",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Darabszám"},_C=Fe(HC,Wh),VC={noRowsLabel:"Nessun record",noResultsOverlayLabel:"Nessun record trovato.",toolbarDensity:"Densità",toolbarDensityLabel:"Densità",toolbarDensityCompact:"Compatta",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comoda",toolbarColumns:"Colonne",toolbarColumnsLabel:"Seleziona le colonne",toolbarFilters:"Filtri",toolbarFiltersLabel:"Mostra i filtri",toolbarFiltersTooltipHide:"Nascondi i filtri",toolbarFiltersTooltipShow:"Mostra i filtri",toolbarFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,toolbarQuickFilterPlaceholder:"Cerca…",toolbarQuickFilterLabel:"Cerca",toolbarQuickFilterDeleteIconLabel:"Resetta",toolbarExport:"Esporta",toolbarExportLabel:"Esporta",toolbarExportCSV:"Esporta in CSV",toolbarExportPrint:"Stampa",toolbarExportExcel:"Scarica come Excel",columnsPanelTextFieldLabel:"Cerca colonna",columnsPanelTextFieldPlaceholder:"Titolo della colonna",columnsPanelDragIconLabel:"Riordina la colonna",columnsPanelShowAllButton:"Mostra tutto",columnsPanelHideAllButton:"Nascondi tutto",filterPanelAddFilter:"Aggiungi un filtro",filterPanelRemoveAll:"Rimuovi filtri",filterPanelDeleteIconLabel:"Rimuovi",filterPanelLogicOperator:"Operatore logico",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"E (and)",filterPanelOperatorOr:"O (or)",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valore",filterPanelInputPlaceholder:"Filtra il valore",filterOperatorContains:"contiene",filterOperatorEquals:"uguale a",filterOperatorStartsWith:"comincia per",filterOperatorEndsWith:"termina per",filterOperatorIs:"uguale a",filterOperatorNot:"diversa da",filterOperatorAfter:"dopo il",filterOperatorOnOrAfter:"a partire dal",filterOperatorBefore:"prima del",filterOperatorOnOrBefore:"fino al",filterOperatorIsEmpty:"è vuoto",filterOperatorIsNotEmpty:"non è vuoto",filterOperatorIsAnyOf:"è uno tra","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"uguale a",headerFilterOperatorStartsWith:"comincia per",headerFilterOperatorEndsWith:"termina per",headerFilterOperatorIs:"uguale a",headerFilterOperatorNot:"diversa da",headerFilterOperatorAfter:"dopo il",headerFilterOperatorOnOrAfter:"a partire dal",headerFilterOperatorBefore:"prima del",headerFilterOperatorOnOrBefore:"fino al",headerFilterOperatorIsEmpty:"è vuoto",headerFilterOperatorIsNotEmpty:"non è vuoto",headerFilterOperatorIsAnyOf:"è uno tra","headerFilterOperator=":"uguale a","headerFilterOperator!=":"diverso da","headerFilterOperator>":"maggiore di","headerFilterOperator>=":"maggiore o uguale a","headerFilterOperator<":"minore di","headerFilterOperator<=":"minore o uguale a",filterValueAny:"qualunque",filterValueTrue:"vero",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Mostra le colonne",columnMenuManageColumns:"Gestisci colonne",columnMenuFilter:"Filtra",columnMenuHideColumn:"Nascondi",columnMenuUnsort:"Annulla l'ordinamento",columnMenuSortAsc:"Ordinamento crescente",columnMenuSortDesc:"Ordinamento decrescente",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,columnHeaderFiltersLabel:"Mostra i filtri",columnHeaderSortIconLabel:"Ordina",footerRowSelected:e=>e>1?`${e.toLocaleString()} record selezionati`:`${e.toLocaleString()} record selezionato`,footerTotalRows:"Record totali:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} di ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleziona",checkboxSelectionSelectAllRows:"Seleziona tutte le righe",checkboxSelectionUnselectAllRows:"Deseleziona tutte le righe",checkboxSelectionSelectRow:"Seleziona riga",checkboxSelectionUnselectRow:"Deseleziona riga",booleanCellTrueLabel:"vero",booleanCellFalseLabel:"falso",actionsCellMore:"più",pinToLeft:"Blocca a sinistra",pinToRight:"Blocca a destra",unpin:"Sblocca",treeDataGroupingHeaderName:"Gruppo",treeDataExpand:"mostra figli",treeDataCollapse:"nascondi figli",groupingColumnHeaderName:"Gruppo",groupColumn:e=>`Raggruppa per ${e}`,unGroupColumn:e=>`Annulla raggruppamento per ${e}`,detailPanelToggle:"Abilita pannello dettagli",expandDetailPanel:"Espandi",collapseDetailPanel:"Comprimi",rowReorderingHeaderName:"Riordinamento righe",aggregationMenuItemHeader:"aggregazione",aggregationFunctionLabelSum:"somma",aggregationFunctionLabelAvg:"media",aggregationFunctionLabelMin:"minimo",aggregationFunctionLabelMax:"massimo",aggregationFunctionLabelSize:"numero di elementi"},GC=Fe(VC,Kh),NC={noRowsLabel:"行がありません。",noResultsOverlayLabel:"結果がありません。",toolbarDensity:"行間隔",toolbarDensityLabel:"行間隔",toolbarDensityCompact:"コンパクト",toolbarDensityStandard:"標準",toolbarDensityComfortable:"広め",toolbarColumns:"列一覧",toolbarColumnsLabel:"列選択",toolbarFilters:"フィルター",toolbarFiltersLabel:"フィルター表示",toolbarFiltersTooltipHide:"フィルター非表示",toolbarFiltersTooltipShow:"フィルター表示",toolbarFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,toolbarQuickFilterPlaceholder:"検索…",toolbarQuickFilterLabel:"検索",toolbarQuickFilterDeleteIconLabel:"クリア",toolbarExport:"エクスポート",toolbarExportLabel:"エクスポート",toolbarExportCSV:"CSVダウンロード",toolbarExportPrint:"印刷",toolbarExportExcel:"Excelダウンロード",columnsPanelTextFieldLabel:"列検索",columnsPanelTextFieldPlaceholder:"検索クエリを入力…",columnsPanelDragIconLabel:"列並べ替え",columnsPanelShowAllButton:"すべて表示",columnsPanelHideAllButton:"すべて非表示",filterPanelAddFilter:"フィルター追加",filterPanelRemoveAll:"すべて削除",filterPanelDeleteIconLabel:"削除",filterPanelLogicOperator:"論理演算子",filterPanelOperator:"演算子",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"列",filterPanelInputLabel:"値",filterPanelInputPlaceholder:"値を入力…",filterOperatorContains:"...を含む",filterOperatorEquals:"...に等しい",filterOperatorStartsWith:"...で始まる",filterOperatorEndsWith:"...で終わる",filterOperatorIs:"...である",filterOperatorNot:"...でない",filterOperatorAfter:"...より後ろ",filterOperatorOnOrAfter:"...以降",filterOperatorBefore:"...より前",filterOperatorOnOrBefore:"...以前",filterOperatorIsEmpty:"...空である",filterOperatorIsNotEmpty:"...空でない",filterOperatorIsAnyOf:"...のいずれか","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"含む",headerFilterOperatorEquals:"等しい",headerFilterOperatorStartsWith:"で始まる",headerFilterOperatorEndsWith:"で終わる",headerFilterOperatorIs:"である",headerFilterOperatorNot:"ではない",headerFilterOperatorAfter:"...より後ろ",headerFilterOperatorOnOrAfter:"...以降",headerFilterOperatorBefore:"...より前",headerFilterOperatorOnOrBefore:"...以前",headerFilterOperatorIsEmpty:"空白",headerFilterOperatorIsNotEmpty:"空白ではない",headerFilterOperatorIsAnyOf:"いずれか","headerFilterOperator=":"等しい","headerFilterOperator!=":"等しくない","headerFilterOperator>":"より大きい","headerFilterOperator>=":"以上","headerFilterOperator<":"未満","headerFilterOperator<=":"以下",filterValueAny:"いずれか",filterValueTrue:"真",filterValueFalse:"偽",columnMenuLabel:"メニュー",columnMenuShowColumns:"列表示",columnMenuManageColumns:"列管理",columnMenuFilter:"フィルター",columnMenuHideColumn:"列非表示",columnMenuUnsort:"ソート解除",columnMenuSortAsc:"昇順ソート",columnMenuSortDesc:"降順ソート",columnHeaderFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,columnHeaderFiltersLabel:"フィルター表示",columnHeaderSortIconLabel:"ソート",footerRowSelected:e=>`${e}行を選択中`,footerTotalRows:"総行数:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"チェックボックス",checkboxSelectionSelectAllRows:"すべての行を選択",checkboxSelectionUnselectAllRows:"すべての行選択を解除",checkboxSelectionSelectRow:"行を選択",checkboxSelectionUnselectRow:"行選択を解除",booleanCellTrueLabel:"真",booleanCellFalseLabel:"偽",actionsCellMore:"もっと見る",pinToLeft:"左側に固定",pinToRight:"右側に固定",unpin:"固定解除",treeDataGroupingHeaderName:"グループ",treeDataExpand:"展開",treeDataCollapse:"折りたたみ",groupingColumnHeaderName:"グループ",groupColumn:e=>`${e}でグループ化`,unGroupColumn:e=>`${e}のグループを解除`,detailPanelToggle:"詳細パネルの切り替え",expandDetailPanel:"展開",collapseDetailPanel:"折りたたみ",rowReorderingHeaderName:"行並び替え",aggregationMenuItemHeader:"合計",aggregationFunctionLabelSum:"和",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小値",aggregationFunctionLabelMax:"最大値",aggregationFunctionLabelSize:"サイズ"},zC=Fe(NC,Qh),jC={noRowsLabel:"행이 없습니다.",noResultsOverlayLabel:"결과값이 없습니다.",toolbarDensity:"행 간격",toolbarDensityLabel:"행 간격",toolbarDensityCompact:"좁게",toolbarDensityStandard:"기본",toolbarDensityComfortable:"넓게",toolbarColumns:"열 목록",toolbarColumnsLabel:"열 선택",toolbarFilters:"필터",toolbarFiltersLabel:"필터 표시",toolbarFiltersTooltipHide:"필터 숨기기",toolbarFiltersTooltipShow:"필터 표시",toolbarFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,toolbarQuickFilterPlaceholder:"검색…",toolbarQuickFilterLabel:"검색",toolbarQuickFilterDeleteIconLabel:"초기화",toolbarExport:"내보내기",toolbarExportLabel:"내보내기",toolbarExportCSV:"CSV로 내보내기",toolbarExportPrint:"프린트",toolbarExportExcel:"Excel로 내보내기",columnsPanelTextFieldLabel:"열 검색",columnsPanelTextFieldPlaceholder:"열 이름",columnsPanelDragIconLabel:"열 정렬",columnsPanelShowAllButton:"모두 보기",columnsPanelHideAllButton:"모두 숨기기",filterPanelAddFilter:"필터 추가",filterPanelDeleteIconLabel:"삭제",filterPanelLogicOperator:"논리 연산자",filterPanelOperator:"연산자",filterPanelOperatorAnd:"그리고",filterPanelOperatorOr:"또는",filterPanelColumns:"목록",filterPanelInputLabel:"값",filterPanelInputPlaceholder:"값 입력",filterOperatorContains:"포함하는",filterOperatorEquals:"값이 같은",filterOperatorStartsWith:"시작하는",filterOperatorEndsWith:"끝나는",filterOperatorIs:"~인",filterOperatorNot:"~아닌",filterOperatorAfter:"더 이후",filterOperatorOnOrAfter:"이후",filterOperatorBefore:"더 이전",filterOperatorOnOrBefore:"이전",filterOperatorIsEmpty:"값이 없는",filterOperatorIsNotEmpty:"값이 있는",filterOperatorIsAnyOf:"값 중 하나인",filterValueAny:"아무값",filterValueTrue:"참",filterValueFalse:"거짓",columnMenuLabel:"메뉴",columnMenuShowColumns:"열 표시",columnMenuFilter:"필터",columnMenuHideColumn:"열 숨기기",columnMenuUnsort:"정렬 해제",columnMenuSortAsc:"오름차순 정렬",columnMenuSortDesc:"내림차순 정렬",columnHeaderFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,columnHeaderFiltersLabel:"필터 표시",columnHeaderSortIconLabel:"정렬",footerRowSelected:e=>`${e}행 선택중`,footerTotalRows:"총 행수:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"선택",checkboxSelectionSelectAllRows:"모든 행 선택",checkboxSelectionUnselectAllRows:"모든 행 선택 해제",checkboxSelectionSelectRow:"행 선택",checkboxSelectionUnselectRow:"행 선택 해제",booleanCellTrueLabel:"참",booleanCellFalseLabel:"거짓",actionsCellMore:"더보기",pinToLeft:"왼쪽에 고정",pinToRight:"오른쪽에 고정",unpin:"고정 해제",treeDataGroupingHeaderName:"그룹",treeDataExpand:"하위노드 펼치기",treeDataCollapse:"하위노드 접기",groupingColumnHeaderName:"그룹",groupColumn:e=>`${e} 값으로 그룹 생성`,unGroupColumn:e=>`${e} 값으로 그룹 해제`,detailPanelToggle:"상세 패널 토글",expandDetailPanel:"열기",collapseDetailPanel:"접기",rowReorderingHeaderName:"행 재배치",aggregationMenuItemHeader:"총계",aggregationFunctionLabelSum:"합",aggregationFunctionLabelAvg:"평균",aggregationFunctionLabelMin:"최소값",aggregationFunctionLabelMax:"최대값",aggregationFunctionLabelSize:"크기"},BC=Fe(jC,Zh),UC={noRowsLabel:"Ingen rader",noResultsOverlayLabel:"Fant ingen resultat.",toolbarDensity:"Tetthet",toolbarDensityLabel:"Tetthet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfortabelt",toolbarColumns:"Kolonner",toolbarColumnsLabel:"Velg kolonner",toolbarFilters:"Filter",toolbarFiltersLabel:"Vis filter",toolbarFiltersTooltipHide:"Skjul fitler",toolbarFiltersTooltipShow:"Vis filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søk…",toolbarQuickFilterLabel:"Søk",toolbarQuickFilterDeleteIconLabel:"Slett",toolbarExport:"Eksporter",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Last ned som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Last ned som Excel",columnsPanelTextFieldLabel:"Finn kolonne",columnsPanelTextFieldPlaceholder:"Kolonne tittel",columnsPanelDragIconLabel:"Reorganiser kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Legg til filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slett",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operatører",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonner",filterPanelInputLabel:"Verdi",filterPanelInputPlaceholder:"Filter verdi",filterOperatorContains:"inneholder",filterOperatorEquals:"er lik",filterOperatorStartsWith:"starter med",filterOperatorEndsWith:"slutter med",filterOperatorIs:"er",filterOperatorNot:"er ikke",filterOperatorAfter:"er etter",filterOperatorOnOrAfter:"er på eller etter",filterOperatorBefore:"er før",filterOperatorOnOrBefore:"er på eller før",filterOperatorIsEmpty:"er tom",filterOperatorIsNotEmpty:"er ikke tom",filterOperatorIsAnyOf:"er en av",filterValueAny:"noen",filterValueTrue:"sant",filterValueFalse:"usant",columnMenuLabel:"Meny",columnMenuShowColumns:"Vis kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filter",columnMenuHideColumn:"Skjul",columnMenuUnsort:"Usorter",columnMenuSortAsc:"Sorter ØKENDE",columnMenuSortDesc:"Sorter SYNKENDE",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Vis filter",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader valgt`:`${e.toLocaleString()} rad valgt`,footerTotalRows:"Totalt antall rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Avmerkingsboks valgt",checkboxSelectionSelectAllRows:"Velg alle rader",checkboxSelectionUnselectAllRows:"Velg bort alle rader",checkboxSelectionSelectRow:"Velg rad",checkboxSelectionUnselectRow:"Velg bort rad",booleanCellTrueLabel:"sant",booleanCellFalseLabel:"usant",actionsCellMore:"mer",pinToLeft:"Fest til venstre",pinToRight:"Fest til høyre",unpin:"Løsne",treeDataGroupingHeaderName:"Grupper",treeDataExpand:"se barn",treeDataCollapse:"skjul barn",groupingColumnHeaderName:"Grupper",groupColumn:e=>`Grupper på ${e}`,unGroupColumn:e=>`Stopp å grupper på ${e}`,detailPanelToggle:"Utvid/kollaps detalj panel",expandDetailPanel:"Utvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Rad reorganisering",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"snitt",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"størrelse"},qC=Fe(UC,Jh),WC={noRowsLabel:"Geen resultaten.",noResultsOverlayLabel:"Geen resultaten gevonden.",toolbarDensity:"Grootte",toolbarDensityLabel:"Grootte",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Normaal",toolbarDensityComfortable:"Breed",toolbarColumns:"Kolommen",toolbarColumnsLabel:"Kies kolommen",toolbarFilters:"Filters",toolbarFiltersLabel:"Toon filters",toolbarFiltersTooltipHide:"Verberg filters",toolbarFiltersTooltipShow:"Toon filters",toolbarFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,toolbarQuickFilterPlaceholder:"Zoeken…",toolbarQuickFilterLabel:"Zoeken",toolbarQuickFilterDeleteIconLabel:"Wissen",toolbarExport:"Exporteren",toolbarExportLabel:"Exporteren",toolbarExportCSV:"Exporteer naar CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Downloaden als Excel-bestand",columnsPanelTextFieldLabel:"Zoek kolom",columnsPanelTextFieldPlaceholder:"Kolomtitel",columnsPanelDragIconLabel:"Kolom herschikken",columnsPanelShowAllButton:"Alles tonen",columnsPanelHideAllButton:"Alles verbergen",filterPanelAddFilter:"Filter toevoegen",filterPanelRemoveAll:"Alles verwijderen",filterPanelDeleteIconLabel:"Verwijderen",filterPanelLogicOperator:"Logische operator",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"En",filterPanelOperatorOr:"Of",filterPanelColumns:"Kolommen",filterPanelInputLabel:"Waarde",filterPanelInputPlaceholder:"Filter waarde",filterOperatorContains:"bevat",filterOperatorEquals:"gelijk aan",filterOperatorStartsWith:"begint met",filterOperatorEndsWith:"eindigt met",filterOperatorIs:"is",filterOperatorNot:"is niet",filterOperatorAfter:"is na",filterOperatorOnOrAfter:"is gelijk of er na",filterOperatorBefore:"is voor",filterOperatorOnOrBefore:"is gelijk of er voor",filterOperatorIsEmpty:"is leeg",filterOperatorIsNotEmpty:"is niet leeg",filterOperatorIsAnyOf:"is een van","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Bevat",headerFilterOperatorEquals:"Gelijk aan",headerFilterOperatorStartsWith:"Begint met",headerFilterOperatorEndsWith:"Eindigt met",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is niet",headerFilterOperatorAfter:"Is na",headerFilterOperatorOnOrAfter:"Is op of na",headerFilterOperatorBefore:"Is voor",headerFilterOperatorOnOrBefore:"Is op of voor",headerFilterOperatorIsEmpty:"Is leeg",headerFilterOperatorIsNotEmpty:"Is niet leeg",headerFilterOperatorIsAnyOf:"Is een van","headerFilterOperator=":"Gelijk aan","headerFilterOperator!=":"Niet gelijk aan","headerFilterOperator>":"Is groter dan","headerFilterOperator>=":"Is groter dan of gelijk aan","headerFilterOperator<":"Is kleiner dan","headerFilterOperator<=":"Is kleiner dan of gelijk aan",filterValueAny:"alles",filterValueTrue:"waar",filterValueFalse:"onwaar",columnMenuLabel:"Menu",columnMenuShowColumns:"Toon kolommen",columnMenuManageColumns:"Kolommen beheren",columnMenuFilter:"Filteren",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Annuleer sortering",columnMenuSortAsc:"Oplopend sorteren",columnMenuSortDesc:"Aflopend sorteren",columnHeaderFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,columnHeaderFiltersLabel:"Toon filters",columnHeaderSortIconLabel:"Sorteren",footerRowSelected:e=>e>1?`${e.toLocaleString()} rijen geselecteerd`:`${e.toLocaleString()} rij geselecteerd`,footerTotalRows:"Totaal:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} van ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selectie",checkboxSelectionSelectAllRows:"Alle rijen selecteren",checkboxSelectionUnselectAllRows:"Alle rijen de-selecteren",checkboxSelectionSelectRow:"Rij selecteren",checkboxSelectionUnselectRow:"Rij de-selecteren",booleanCellTrueLabel:"waar",booleanCellFalseLabel:"onwaar",actionsCellMore:"meer",pinToLeft:"Links vastzetten",pinToRight:"Rechts vastzetten",unpin:"Losmaken",treeDataGroupingHeaderName:"Groep",treeDataExpand:"Uitvouwen",treeDataCollapse:"Inklappen",groupingColumnHeaderName:"Groep",groupColumn:e=>`Groepeer op ${e}`,unGroupColumn:e=>`Stop groeperen op ${e}`,detailPanelToggle:"Detailmenu in- of uitklappen",expandDetailPanel:"Uitklappen",collapseDetailPanel:"Inklappen",rowReorderingHeaderName:"Rijen hersorteren",aggregationMenuItemHeader:"Aggregatie",aggregationFunctionLabelSum:"som",aggregationFunctionLabelAvg:"gem",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"grootte"},KC=Fe(WC,Yh),QC={noRowsLabel:"Brak danych",noResultsOverlayLabel:"Nie znaleziono wyników.",toolbarDensity:"Wysokość rzędu",toolbarDensityLabel:"Wysokość rzędu",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfort",toolbarColumns:"Kolumny",toolbarColumnsLabel:"Zaznacz kolumny",toolbarFilters:"Filtry",toolbarFiltersLabel:"Pokaż filtry",toolbarFiltersTooltipHide:"Ukryj filtry",toolbarFiltersTooltipShow:"Pokaż filtry",toolbarFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,toolbarQuickFilterPlaceholder:"Wyszukaj…",toolbarQuickFilterLabel:"Szukaj",toolbarQuickFilterDeleteIconLabel:"Wyczyść",toolbarExport:"Eksportuj",toolbarExportLabel:"Eksportuj",toolbarExportCSV:"Pobierz jako plik CSV",toolbarExportPrint:"Drukuj",toolbarExportExcel:"Pobierz jako plik Excel",columnsPanelTextFieldLabel:"Znajdź kolumnę",columnsPanelTextFieldPlaceholder:"Tytuł kolumny",columnsPanelDragIconLabel:"Zmień kolejność kolumn",columnsPanelShowAllButton:"Pokaż wszystko",columnsPanelHideAllButton:"Ukryj wszystko",filterPanelAddFilter:"Dodaj filtr",filterPanelRemoveAll:"Usuń wszystkie",filterPanelDeleteIconLabel:"Usuń",filterPanelLogicOperator:"Operator logiczny",filterPanelOperator:"Operator",filterPanelOperatorAnd:"I",filterPanelOperatorOr:"Lub",filterPanelColumns:"Kolumny",filterPanelInputLabel:"Wartość",filterPanelInputPlaceholder:"Filtrowana wartość",filterOperatorContains:"zawiera",filterOperatorEquals:"równa się",filterOperatorStartsWith:"zaczyna się od",filterOperatorEndsWith:"kończy się na",filterOperatorIs:"równa się",filterOperatorNot:"różne",filterOperatorAfter:"większe niż",filterOperatorOnOrAfter:"większe lub równe",filterOperatorBefore:"mniejsze niż",filterOperatorOnOrBefore:"mniejsze lub równe",filterOperatorIsEmpty:"jest pusty",filterOperatorIsNotEmpty:"nie jest pusty",filterOperatorIsAnyOf:"jest jednym z",headerFilterOperatorContains:"Zawiera",headerFilterOperatorEquals:"Równa się",headerFilterOperatorStartsWith:"Zaczyna się od",headerFilterOperatorEndsWith:"Kończy się na",headerFilterOperatorNot:"Niepuste",filterValueAny:"dowolny",filterValueTrue:"prawda",filterValueFalse:"fałsz",columnMenuLabel:"Menu",columnMenuShowColumns:"Pokaż wszystkie kolumny",columnMenuManageColumns:"Zarządzaj kolumnami",columnMenuFilter:"Filtr",columnMenuHideColumn:"Ukryj",columnMenuUnsort:"Anuluj sortowanie",columnMenuSortAsc:"Sortuj rosnąco",columnMenuSortDesc:"Sortuj malejąco",columnHeaderFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,columnHeaderFiltersLabel:"Pokaż filtry",columnHeaderSortIconLabel:"Sortuj",footerRowSelected:e=>`Liczba wybranych wierszy: ${e.toLocaleString()}`,footerTotalRows:"Łączna liczba wierszy:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} z ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Pole wyboru",checkboxSelectionSelectAllRows:"Zaznacz wszystkie wiersze",checkboxSelectionUnselectAllRows:"Odznacz wszystkie wiersze",checkboxSelectionSelectRow:"Zaznacz wiersz",checkboxSelectionUnselectRow:"Odznacz wiersz",booleanCellTrueLabel:"tak",booleanCellFalseLabel:"nie",actionsCellMore:"więcej",pinToLeft:"Przypnij do lewej",pinToRight:"Przypnij do prawej",unpin:"Odepnij",treeDataGroupingHeaderName:"Grupa",treeDataExpand:"pokaż elementy potomne",treeDataCollapse:"ukryj elementy potomne",groupingColumnHeaderName:"Grupa",groupColumn:e=>`Grupuj według ${e}`,unGroupColumn:e=>`Rozgrupuj ${e}`,expandDetailPanel:"Rozwiń",collapseDetailPanel:"Zwiń",rowReorderingHeaderName:"Porządkowanie wierszy"},ZC=Fe(QC,Xh),JC={noRowsLabel:"Nenhuma linha",noResultsOverlayLabel:"Nenhum resultado encontrado.",toolbarDensity:"Densidade",toolbarDensityLabel:"Densidade",toolbarDensityCompact:"Compacto",toolbarDensityStandard:"Padrão",toolbarDensityComfortable:"Confortável",toolbarColumns:"Colunas",toolbarColumnsLabel:"Exibir seletor de colunas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Exibir filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Exibir filtros",toolbarFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,toolbarQuickFilterPlaceholder:"Procurar…",toolbarQuickFilterLabel:"Procurar",toolbarQuickFilterDeleteIconLabel:"Limpar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Baixar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Baixar como Excel",columnsPanelTextFieldLabel:"Localizar coluna",columnsPanelTextFieldPlaceholder:"Título da coluna",columnsPanelDragIconLabel:"Reordenar Coluna",columnsPanelShowAllButton:"Mostrar todas",columnsPanelHideAllButton:"Ocultar todas",filterPanelAddFilter:"Adicionar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Excluir",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operador",filterPanelOperatorAnd:"E",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colunas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Filtrar valor",filterOperatorContains:"contém",filterOperatorEquals:"é igual a",filterOperatorStartsWith:"começa com",filterOperatorEndsWith:"termina com",filterOperatorIs:"é",filterOperatorNot:"não é",filterOperatorAfter:"após",filterOperatorOnOrAfter:"em ou após",filterOperatorBefore:"antes de",filterOperatorOnOrBefore:"em ou antes de",filterOperatorIsEmpty:"está vazio",filterOperatorIsNotEmpty:"não está vazio",filterOperatorIsAnyOf:"é qualquer um dos","filterOperator=":"igual à","filterOperator!=":"diferente de","filterOperator>":"maior que","filterOperator>=":"maior ou igual que","filterOperator<":"menor que","filterOperator<=":"menor ou igual que",headerFilterOperatorContains:"Contém",headerFilterOperatorEquals:"Igual",headerFilterOperatorStartsWith:"Começa com",headerFilterOperatorEndsWith:"Termina com",headerFilterOperatorIs:"É",headerFilterOperatorNot:"Não é",headerFilterOperatorAfter:"Depois de",headerFilterOperatorOnOrAfter:"Está entre ou depois de",headerFilterOperatorBefore:"Antes de",headerFilterOperatorOnOrBefore:"Está entre ou antes de",headerFilterOperatorIsEmpty:"É vazio",headerFilterOperatorIsNotEmpty:"Não é vazio",headerFilterOperatorIsAnyOf:"É algum","headerFilterOperator=":"Igual","headerFilterOperator!=":"Não igual","headerFilterOperator>":"Maior que","headerFilterOperator>=":"Maior que ou igual a","headerFilterOperator<":"Menor que","headerFilterOperator<=":"Menor que ou igual a",filterValueAny:"qualquer",filterValueTrue:"verdadeiro",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Exibir colunas",columnMenuManageColumns:"Gerir colunas",columnMenuFilter:"Filtrar",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desfazer ordenação",columnMenuSortAsc:"Ordenar do menor para o maior",columnMenuSortDesc:"Ordenar do maior para o menor",columnHeaderFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,columnHeaderFiltersLabel:"Exibir Filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e!==1?`${e.toLocaleString()} linhas selecionadas`:`${e.toLocaleString()} linha selecionada`,footerTotalRows:"Total de linhas:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleção",checkboxSelectionSelectAllRows:"Selecionar todas linhas",checkboxSelectionUnselectAllRows:"Deselecionar todas linhas",checkboxSelectionSelectRow:"Selecionar linha",checkboxSelectionUnselectRow:"Deselecionar linha",booleanCellTrueLabel:"sim",booleanCellFalseLabel:"não",actionsCellMore:"mais",pinToLeft:"Fixar à esquerda",pinToRight:"Fixar à direita",unpin:"Desafixar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar filhos",treeDataCollapse:"esconder filhos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`Parar agrupamento por ${e}`,detailPanelToggle:"Painel de detalhes",expandDetailPanel:"Expandir",collapseDetailPanel:"Esconder",rowReorderingHeaderName:"Reorganizar linhas",aggregationMenuItemHeader:"Agrupar",aggregationFunctionLabelSum:"soma",aggregationFunctionLabelAvg:"média",aggregationFunctionLabelMin:"mín",aggregationFunctionLabelMax:"máx",aggregationFunctionLabelSize:"tamanho"},YC=Fe(JC,eC),XC={noRowsLabel:"Lipsă date",noResultsOverlayLabel:"Nu au fost găsite rezultate.",toolbarDensity:"Înălțime rând",toolbarDensityLabel:"Înălțime rând",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Lat",toolbarColumns:"Coloane",toolbarColumnsLabel:"Afișează selecție coloane",toolbarFilters:"Filtru",toolbarFiltersLabel:"Afișează filtru",toolbarFiltersTooltipHide:"Ascunde filtru",toolbarFiltersTooltipShow:"Afișează filtru",toolbarFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,toolbarQuickFilterPlaceholder:"Căutare…",toolbarQuickFilterLabel:"Căutare",toolbarQuickFilterDeleteIconLabel:"Ștergere",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download în format CSV",toolbarExportPrint:"Printare",toolbarExportExcel:"Download în format Excel",columnsPanelTextFieldLabel:"Găsește coloana",columnsPanelTextFieldPlaceholder:"Titlu coloană",columnsPanelDragIconLabel:"Resortare coloană",columnsPanelShowAllButton:"Afișează tot",columnsPanelHideAllButton:"Ascunde tot",filterPanelAddFilter:"Adăugare filtru",filterPanelRemoveAll:"Șterge tot",filterPanelDeleteIconLabel:"Ștergere",filterPanelLogicOperator:"Operatori logici",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"Și",filterPanelOperatorOr:"Sau",filterPanelColumns:"Coloane",filterPanelInputLabel:"Valoare",filterPanelInputPlaceholder:"Filtrare valoare",filterOperatorContains:"conține",filterOperatorEquals:"este egal cu",filterOperatorStartsWith:"începe cu",filterOperatorEndsWith:"se termină cu",filterOperatorIs:"este",filterOperatorNot:"nu este",filterOperatorAfter:"este după",filterOperatorOnOrAfter:"este la sau după",filterOperatorBefore:"este înainte de",filterOperatorOnOrBefore:"este la sau înainte de",filterOperatorIsEmpty:"este gol",filterOperatorIsNotEmpty:"nu este gol",filterOperatorIsAnyOf:"este una din valori","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Conține",headerFilterOperatorEquals:"Egal cu",headerFilterOperatorStartsWith:"Începe cu",headerFilterOperatorEndsWith:"Se termină cu",headerFilterOperatorIs:"Este",headerFilterOperatorNot:"Nu este",headerFilterOperatorAfter:"Este după",headerFilterOperatorOnOrAfter:"Este la sau după",headerFilterOperatorBefore:"Este înainte de",headerFilterOperatorOnOrBefore:"este la sau înainte de",headerFilterOperatorIsEmpty:"Este gol",headerFilterOperatorIsNotEmpty:"Nu este gol",headerFilterOperatorIsAnyOf:"Este una din valori","headerFilterOperator=":"Egal cu","headerFilterOperator!=":"Nu este egal cu","headerFilterOperator>":"Mai mare decât","headerFilterOperator>=":"Mai mare sau egal cu","headerFilterOperator<":"Mai mic decât","headerFilterOperator<=":"Mai mic sau egal cu",filterValueAny:"Aleatoriu",filterValueTrue:"Da",filterValueFalse:"Nu",columnMenuLabel:"Meniu",columnMenuShowColumns:"Afișează toate coloanele",columnMenuManageColumns:"Gestionează coloane",columnMenuFilter:"Filtru",columnMenuHideColumn:"Ascunde",columnMenuUnsort:"Dezactivare sortare",columnMenuSortAsc:"Sortează crescător",columnMenuSortDesc:"Sortează descrescător",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,columnHeaderFiltersLabel:"Afișează filtru",columnHeaderSortIconLabel:"Sortare",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Înregistrări selectate`:`${e.toLocaleString()} Înregistrare selectată`,footerTotalRows:"Total:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} din ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Selecție",checkboxSelectionSelectAllRows:"Selectare toate rândurile",checkboxSelectionUnselectAllRows:"Deselectare toate rândurile",checkboxSelectionSelectRow:"Selectare rând",checkboxSelectionUnselectRow:"Deselectare rând",booleanCellTrueLabel:"Da",booleanCellFalseLabel:"Nu",actionsCellMore:"Mai multe",pinToLeft:"Fixare în stânga",pinToRight:"Fixare în dreapta",unpin:"Anulare fixare",treeDataGroupingHeaderName:"Grup",treeDataExpand:"Afișare copii",treeDataCollapse:"Ascundere copii",groupingColumnHeaderName:"Grupare",groupColumn:e=>`Grupare după ${e}`,unGroupColumn:e=>`Anulare Grupare după ${e}`,detailPanelToggle:"Comutare panou detalii",expandDetailPanel:"Extindere",collapseDetailPanel:"Restrângere",rowReorderingHeaderName:"Reordonare rânduri",aggregationMenuItemHeader:"Agregare",aggregationFunctionLabelSum:"Sumă",aggregationFunctionLabelAvg:"Medie",aggregationFunctionLabelMin:"Minim",aggregationFunctionLabelMax:"Maxim",aggregationFunctionLabelSize:"Numărul elementelor"},ew=Fe(XC,tC),tw={noRowsLabel:"Нет строк",noResultsOverlayLabel:"Данные не найдены.",toolbarDensity:"Высота строки",toolbarDensityLabel:"Высота строки",toolbarDensityCompact:"Компактная",toolbarDensityStandard:"Стандартная",toolbarDensityComfortable:"Комфортная",toolbarColumns:"Столбцы",toolbarColumnsLabel:"Выделите столбцы",toolbarFilters:"Фильтры",toolbarFiltersLabel:"Показать фильтры",toolbarFiltersTooltipHide:"Скрыть фильтры",toolbarFiltersTooltipShow:"Показать фильтры",toolbarFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Поиск…",toolbarQuickFilterLabel:"Поиск",toolbarQuickFilterDeleteIconLabel:"Очистить",toolbarExport:"Экспорт",toolbarExportLabel:"Экспорт",toolbarExportCSV:"Скачать в формате CSV",toolbarExportPrint:"Печать",toolbarExportExcel:"Скачать в формате Excel",columnsPanelTextFieldLabel:"Найти столбец",columnsPanelTextFieldPlaceholder:"Заголовок столбца",columnsPanelDragIconLabel:"Изменить порядок столбца",columnsPanelShowAllButton:"Показать все",columnsPanelHideAllButton:"Скрыть все",filterPanelAddFilter:"Добавить фильтр",filterPanelRemoveAll:"Очистить фильтр",filterPanelDeleteIconLabel:"Удалить",filterPanelLogicOperator:"Логические операторы",filterPanelOperator:"Операторы",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Столбцы",filterPanelInputLabel:"Значение",filterPanelInputPlaceholder:"Значение фильтра",filterOperatorContains:"содержит",filterOperatorEquals:"равен",filterOperatorStartsWith:"начинается с",filterOperatorEndsWith:"заканчивается на",filterOperatorIs:"равен",filterOperatorNot:"не равен",filterOperatorAfter:"больше чем",filterOperatorOnOrAfter:"больше или равно",filterOperatorBefore:"меньше чем",filterOperatorOnOrBefore:"меньше или равно",filterOperatorIsEmpty:"пустой",filterOperatorIsNotEmpty:"не пустой",filterOperatorIsAnyOf:"любой из","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"содержит",headerFilterOperatorEquals:"равен",headerFilterOperatorStartsWith:"начинается с",headerFilterOperatorEndsWith:"заканчивается на",headerFilterOperatorIs:"равен",headerFilterOperatorNot:"не равен",headerFilterOperatorAfter:"больше чем",headerFilterOperatorOnOrAfter:"больше или равно",headerFilterOperatorBefore:"меньше чем",headerFilterOperatorOnOrBefore:"меньше или равно",headerFilterOperatorIsEmpty:"пустой",headerFilterOperatorIsNotEmpty:"не пустой",headerFilterOperatorIsAnyOf:"любой из","headerFilterOperator=":"содержит","headerFilterOperator!=":"не содержит","headerFilterOperator>":"больше чем","headerFilterOperator>=":"больше или равно","headerFilterOperator<":"меньше чем","headerFilterOperator<=":"меньше или равно",filterValueAny:"любой",filterValueTrue:"истина",filterValueFalse:"ложь",columnMenuLabel:"Меню",columnMenuShowColumns:"Показать столбцы",columnMenuManageColumns:"Управление колонками",columnMenuFilter:"Фильтр",columnMenuHideColumn:"Скрыть",columnMenuUnsort:"Отменить сортировку",columnMenuSortAsc:"Сортировать по возрастанию",columnMenuSortDesc:"Сортировать по убыванию",columnHeaderFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},columnHeaderFiltersLabel:"Показать фильтры",columnHeaderSortIconLabel:"Сортировать",footerRowSelected:e=>{let t="строк выбрано";const r=e%10;return r>1&&r<5?t="строки выбраны":r===1&&(t="строка выбрана"),`${e} ${t}`},footerTotalRows:"Всего строк:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} из ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбор флажка",checkboxSelectionSelectAllRows:"Выбрать все строки",checkboxSelectionUnselectAllRows:"Отменить выбор всех строк",checkboxSelectionSelectRow:"Выбрать строку",checkboxSelectionUnselectRow:"Отменить выбор строки",booleanCellTrueLabel:"истина",booleanCellFalseLabel:"ложь",actionsCellMore:"ещё",pinToLeft:"Закрепить слева",pinToRight:"Закрепить справа",unpin:"Открепить",treeDataGroupingHeaderName:"Группа",treeDataExpand:"показать дочерние элементы",treeDataCollapse:"скрыть дочерние элементы",groupingColumnHeaderName:"Группа",groupColumn:e=>`Сгруппировать по ${e}`,unGroupColumn:e=>`Разгруппировать по ${e}`,detailPanelToggle:"Детали",expandDetailPanel:"Развернуть",collapseDetailPanel:"Свернуть",rowReorderingHeaderName:"Изменение порядка строк",aggregationMenuItemHeader:"Объединение данных",aggregationFunctionLabelSum:"сумм",aggregationFunctionLabelAvg:"срзнач",aggregationFunctionLabelMin:"мин",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"счет"},rw=Fe(tw,rC),ow={noRowsLabel:"Žiadne záznamy",noResultsOverlayLabel:"Nenašli sa žadne výsledky.",toolbarDensity:"Hustota",toolbarDensityLabel:"Hustota",toolbarDensityCompact:"Kompaktná",toolbarDensityStandard:"Štandartná",toolbarDensityComfortable:"Komfortná",toolbarColumns:"Stĺpce",toolbarColumnsLabel:"Vybrať stĺpce",toolbarFilters:"Filtre",toolbarFiltersLabel:"Zobraziť filtre",toolbarFiltersTooltipHide:"Skryť filtre ",toolbarFiltersTooltipShow:"Zobraziť filtre",toolbarFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Vyhľadať…",toolbarQuickFilterLabel:"Vyhľadať",toolbarQuickFilterDeleteIconLabel:"Vymazať",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stiahnuť ako CSV",toolbarExportPrint:"Vytlačiť",toolbarExportExcel:"Stiahnuť ako Excel",columnsPanelTextFieldLabel:"Nájsť stĺpec",columnsPanelTextFieldPlaceholder:"Názov stĺpca",columnsPanelDragIconLabel:"Usporiadť stĺpce",columnsPanelShowAllButton:"Zobraziť všetko",columnsPanelHideAllButton:"Skryť všetko",filterPanelAddFilter:"Pridať filter",filterPanelRemoveAll:"Odstrániť všetky",filterPanelDeleteIconLabel:"Odstrániť",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Alebo",filterPanelColumns:"Stĺpce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtra",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná sa",filterOperatorStartsWith:"začína s",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"nie je",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je na alebo po",filterOperatorBefore:"je pred",filterOperatorOnOrBefore:"je na alebo skôr",filterOperatorIsEmpty:"je prázdny",filterOperatorIsNotEmpty:"nie je prázdny",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná sa",headerFilterOperatorStartsWith:"Začína s",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Nie je",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je na alebo po",headerFilterOperatorBefore:"Je pred",headerFilterOperatorOnOrBefore:"Je na alebo skôr",headerFilterOperatorIsEmpty:"Je prázdny",headerFilterOperatorIsNotEmpty:"Nie je prázdny",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná sa","headerFilterOperator!=":"Nerovná sa","headerFilterOperator>":"Väčší ako","headerFilterOperator>=":"Väčší ako alebo rovný","headerFilterOperator<":"Menší ako","headerFilterOperator<=":"Menší ako alebo rovný",filterValueAny:"akýkoľvek",filterValueTrue:"áno",filterValueFalse:"nie",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobraziť stĺpce",columnMenuManageColumns:"Spravovať stĺpce",columnMenuFilter:"Filter",columnMenuHideColumn:"Skryť",columnMenuUnsort:"Zrušiť filtre",columnMenuSortAsc:"Zoradiť vzostupne",columnMenuSortDesc:"Zoradiť zostupne",columnHeaderFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobraziť filtre",columnHeaderSortIconLabel:"Filtrovať",footerRowSelected:e=>{let t="vybraných záznamov";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Riadkov spolu:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"zo":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výber riadku",checkboxSelectionSelectAllRows:"Vybrať všetky riadky",checkboxSelectionUnselectAllRows:"Zrušiť výber všetkých riadkov",checkboxSelectionSelectRow:"Vyber riadok",checkboxSelectionUnselectRow:"Zruš výber riadku",booleanCellTrueLabel:"áno",booleanCellFalseLabel:"nie",actionsCellMore:"viac",pinToLeft:"Pripnúť na ľavo",pinToRight:"Pripnúť na pravo",unpin:"Odopnúť",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobraziť potomkov",treeDataCollapse:"skryť potomkov",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Zoskupiť podľa ${e}`,unGroupColumn:e=>`Prestať zoskupovať podľa ${e}`,detailPanelToggle:"Prepnúť detail panelu",expandDetailPanel:"Rozbaliť",collapseDetailPanel:"Zbaliť",rowReorderingHeaderName:"Preusporiadávanie riadkov",aggregationMenuItemHeader:"Agregácia",aggregationFunctionLabelSum:"suma",aggregationFunctionLabelAvg:"priemer",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},lw=Fe(ow,oC),nw={noRowsLabel:"Inga rader",noResultsOverlayLabel:"Inga resultat funna.",toolbarDensity:"Densitet",toolbarDensityLabel:"Densitet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Bekväm",toolbarColumns:"Kolumner",toolbarColumnsLabel:"Välj kolumner",toolbarFilters:"Filter",toolbarFiltersLabel:"Visa filter",toolbarFiltersTooltipHide:"Dölj filter",toolbarFiltersTooltipShow:"Visa filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Sök…",toolbarQuickFilterLabel:"Sök",toolbarQuickFilterDeleteIconLabel:"Rensa",toolbarExport:"Exportera",toolbarExportLabel:"Exportera",toolbarExportCSV:"Ladda ner som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Ladda ner som Excel",columnsPanelTextFieldLabel:"Hitta kolumn",columnsPanelTextFieldPlaceholder:"Kolumntitel",columnsPanelDragIconLabel:"Ordna om kolumnen",columnsPanelShowAllButton:"Visa alla",columnsPanelHideAllButton:"Dölj alla",filterPanelAddFilter:"Lägg till filter",filterPanelRemoveAll:"Ta bort alla",filterPanelDeleteIconLabel:"Ta bort",filterPanelLogicOperator:"Logisk operatör",filterPanelOperator:"Operatör",filterPanelOperatorAnd:"Och",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolumner",filterPanelInputLabel:"Värde",filterPanelInputPlaceholder:"Filtervärde",filterOperatorContains:"innehåller",filterOperatorEquals:"är lika med",filterOperatorStartsWith:"börjar med",filterOperatorEndsWith:"slutar med",filterOperatorIs:"är",filterOperatorNot:"är inte",filterOperatorAfter:"är efter",filterOperatorOnOrAfter:"är på eller efter",filterOperatorBefore:"är innan",filterOperatorOnOrBefore:"är på eller innan",filterOperatorIsEmpty:"är tom",filterOperatorIsNotEmpty:"är inte tom",filterOperatorIsAnyOf:"är någon av",filterValueAny:"något",filterValueTrue:"sant",filterValueFalse:"falskt",columnMenuLabel:"Meny",columnMenuShowColumns:"Visa kolumner",columnMenuManageColumns:"Hantera kolumner",columnMenuFilter:"Filtrera",columnMenuHideColumn:"Dölj",columnMenuUnsort:"Osortera",columnMenuSortAsc:"Sortera stigande",columnMenuSortDesc:"Sortera fallande",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Visa filter",columnHeaderSortIconLabel:"Sortera",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader markerade`:`${e.toLocaleString()} rad markerad`,footerTotalRows:"Totalt antal rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Markering med kryssruta",checkboxSelectionSelectAllRows:"Markera alla rader",checkboxSelectionUnselectAllRows:"Avmarkera alla rader",checkboxSelectionSelectRow:"Markera rad",checkboxSelectionUnselectRow:"Avmarkera rad",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mer",pinToLeft:"Fäst till vänster",pinToRight:"Fäst till höger",unpin:"Ta bort fästning",treeDataGroupingHeaderName:"Grupp",treeDataExpand:"visa underordnade",treeDataCollapse:"dölj underordnade",groupingColumnHeaderName:"Grupp",groupColumn:e=>`Gruppera efter ${e}`,unGroupColumn:e=>`Sluta gruppera efter ${e}`,detailPanelToggle:"Växla detaljpanel",expandDetailPanel:"Expandera",collapseDetailPanel:"Kollapsa",rowReorderingHeaderName:"Ordna om rader",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"medel",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"antal"},aw=Fe(nw,lC),iw={noRowsLabel:"Satır yok",noResultsOverlayLabel:"Sonuç bulunamadı.",toolbarDensity:"Yoğunluk",toolbarDensityLabel:"Yoğunluk",toolbarDensityCompact:"Sıkı",toolbarDensityStandard:"Standart",toolbarDensityComfortable:"Rahat",toolbarColumns:"Sütunlar",toolbarColumnsLabel:"Sütun seç",toolbarFilters:"Filtreler",toolbarFiltersLabel:"Filtreleri göster",toolbarFiltersTooltipHide:"Filtreleri gizle",toolbarFiltersTooltipShow:"Filtreleri göster",toolbarFiltersTooltipActive:e=>`${e} aktif filtre`,toolbarQuickFilterPlaceholder:"Ara…",toolbarQuickFilterLabel:"Ara",toolbarQuickFilterDeleteIconLabel:"Temizle",toolbarExport:"Dışa aktar",toolbarExportLabel:"Dışa aktar",toolbarExportCSV:"CSV olarak aktar",toolbarExportPrint:"Yazdır",toolbarExportExcel:"Excel olarak aktar",columnsPanelTextFieldLabel:"Sütun ara",columnsPanelTextFieldPlaceholder:"Sütun adı",columnsPanelDragIconLabel:"Sütunları yeniden sırala",columnsPanelShowAllButton:"Hepsini göster",columnsPanelHideAllButton:"Hepsini gizle",filterPanelAddFilter:"Filtre Ekle",filterPanelRemoveAll:"Hepsini kaldır",filterPanelDeleteIconLabel:"Kaldır",filterPanelLogicOperator:"Mantıksal operatörler",filterPanelOperator:"Operatör",filterPanelOperatorAnd:"Ve",filterPanelOperatorOr:"Veya",filterPanelColumns:"Sütunlar",filterPanelInputLabel:"Değer",filterPanelInputPlaceholder:"Filtre değeri",filterOperatorContains:"içerir",filterOperatorEquals:"eşittir",filterOperatorStartsWith:"ile başlar",filterOperatorEndsWith:"ile biter",filterOperatorIs:"eşittir",filterOperatorNot:"eşit değildir",filterOperatorAfter:"büyük",filterOperatorOnOrAfter:"büyük eşit",filterOperatorBefore:"küçük",filterOperatorOnOrBefore:"küçük eşit",filterOperatorIsEmpty:"boş",filterOperatorIsNotEmpty:"dolu",filterOperatorIsAnyOf:"herhangi biri","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Şunu içerir",headerFilterOperatorEquals:"Şuna eşittir",headerFilterOperatorStartsWith:"Şununla başlar",headerFilterOperatorEndsWith:"Şununla biter",filterValueAny:"herhangi",filterValueTrue:"doğru",filterValueFalse:"yanlış",columnMenuLabel:"Menü",columnMenuShowColumns:"Sütunları göster",columnMenuManageColumns:"Sütunları yönet",columnMenuFilter:"Filtre Ekle",columnMenuHideColumn:"Gizle",columnMenuUnsort:"Varsayılan Sıralama",columnMenuSortAsc:"Sırala - Artan",columnMenuSortDesc:"Sırala - Azalan",columnHeaderFiltersTooltipActive:e=>`${e} filtre aktif`,columnHeaderFiltersLabel:"Filtreleri göster",columnHeaderSortIconLabel:"Sırala",footerRowSelected:e=>`${e.toLocaleString()} satır seçildi`,footerTotalRows:"Toplam Satır:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seçim",checkboxSelectionSelectAllRows:"Tüm satırları seç",checkboxSelectionUnselectAllRows:"Tüm satırların seçimini kaldır",checkboxSelectionSelectRow:"Satırı seç",checkboxSelectionUnselectRow:"Satır seçimini bırak",booleanCellTrueLabel:"Evet",booleanCellFalseLabel:"Hayır",actionsCellMore:"daha fazla",pinToLeft:"Sola sabitle",pinToRight:"Sağa sabitle",unpin:"Sabitlemeyi kaldır",treeDataGroupingHeaderName:"Grup",treeDataExpand:"göster",treeDataCollapse:"gizle",groupingColumnHeaderName:"Grup",groupColumn:e=>`${e} için grupla`,unGroupColumn:e=>`${e} için gruplamayı kaldır`,detailPanelToggle:"Detay görünümüne geçiş",expandDetailPanel:"Genişlet",collapseDetailPanel:"Gizle",rowReorderingHeaderName:"Satırı yeniden sırala",aggregationMenuItemHeader:"Toplama",aggregationFunctionLabelSum:"top",aggregationFunctionLabelAvg:"ort",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"boyut"},sw=Fe(iw,nC),Vo=(e,t)=>{let r=t.many;const o=e%10;return o>1&&o<5?r=t.few:o===1&&(r=t.one),`${e} ${r}`},uw={noRowsLabel:"Немає рядків",noResultsOverlayLabel:"Дані не знайдено.",toolbarDensity:"Висота рядка",toolbarDensityLabel:"Висота рядка",toolbarDensityCompact:"Компактний",toolbarDensityStandard:"Стандартний",toolbarDensityComfortable:"Комфортний",toolbarColumns:"Стовпці",toolbarColumnsLabel:"Виділіть стовпці",toolbarFilters:"Фільтри",toolbarFiltersLabel:"Показати фільтри",toolbarFiltersTooltipHide:"Приховати фільтри",toolbarFiltersTooltipShow:"Показати фільтри",toolbarFiltersTooltipActive:e=>Vo(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Очистити",toolbarExport:"Експорт",toolbarExportLabel:"Експорт",toolbarExportCSV:"Завантажити у форматі CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Завантажити у форматі Excel",columnsPanelTextFieldLabel:"Знайти стовпець",columnsPanelTextFieldPlaceholder:"Заголовок стовпця",columnsPanelDragIconLabel:"Змінити порядок стовпця",columnsPanelShowAllButton:"Показати всі",columnsPanelHideAllButton:"Приховати всі",filterPanelAddFilter:"Додати фільтр",filterPanelRemoveAll:"Видалити всі",filterPanelDeleteIconLabel:"Видалити",filterPanelLogicOperator:"Логічна функція",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Стовпці",filterPanelInputLabel:"Значення",filterPanelInputPlaceholder:"Значення фільтра",filterOperatorContains:"містить",filterOperatorEquals:"дорівнює",filterOperatorStartsWith:"починається з",filterOperatorEndsWith:"закінчується на",filterOperatorIs:"дорівнює",filterOperatorNot:"не дорівнює",filterOperatorAfter:"більше ніж",filterOperatorOnOrAfter:"більше або дорівнює",filterOperatorBefore:"менше ніж",filterOperatorOnOrBefore:"менше або дорівнює",filterOperatorIsEmpty:"порожній",filterOperatorIsNotEmpty:"не порожній",filterOperatorIsAnyOf:"будь-що із","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Містить",headerFilterOperatorEquals:"Дорівнює",headerFilterOperatorStartsWith:"Починається з",headerFilterOperatorEndsWith:"Закінчується на",headerFilterOperatorIs:"Дорівнює",headerFilterOperatorNot:"Не дорівнює",headerFilterOperatorAfter:"Після",headerFilterOperatorOnOrAfter:"Після (включаючи)",headerFilterOperatorBefore:"Раніше",headerFilterOperatorOnOrBefore:"Раніше (включаючи)",headerFilterOperatorIsEmpty:"Порожнє",headerFilterOperatorIsNotEmpty:"Не порожнє",headerFilterOperatorIsAnyOf:"Будь-що із","headerFilterOperator=":"Дорівнює","headerFilterOperator!=":"Не дорівнює","headerFilterOperator>":"Більше ніж","headerFilterOperator>=":"Більше або дорівнює","headerFilterOperator<":"Менше ніж","headerFilterOperator<=":"Менше або дорівнює",filterValueAny:"будь-який",filterValueTrue:"так",filterValueFalse:"ні",columnMenuLabel:"Меню",columnMenuShowColumns:"Показати стовпці",columnMenuManageColumns:"Керування стовпцями",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Приховати",columnMenuUnsort:"Скасувати сортування",columnMenuSortAsc:"Сортувати за зростанням",columnMenuSortDesc:"Сортувати за спаданням",columnHeaderFiltersTooltipActive:e=>Vo(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),columnHeaderFiltersLabel:"Показати фільтри",columnHeaderSortIconLabel:"Сортувати",footerRowSelected:e=>Vo(e,{one:"вибраний рядок",few:"вибрані рядки",many:"вибраних рядків"}),footerTotalRows:"Усього рядків:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Вибір прапорця",checkboxSelectionSelectAllRows:"Вибрати всі рядки",checkboxSelectionUnselectAllRows:"Скасувати вибір всіх рядків",checkboxSelectionSelectRow:"Вибрати рядок",checkboxSelectionUnselectRow:"Скасувати вибір рядка",booleanCellTrueLabel:"так",booleanCellFalseLabel:"ні",actionsCellMore:"більше",pinToLeft:"Закріпити ліворуч",pinToRight:"Закріпити праворуч",unpin:"Відкріпити",treeDataGroupingHeaderName:"Група",treeDataExpand:"показати дочірні елементи",treeDataCollapse:"приховати дочірні елементи",groupingColumnHeaderName:"Група",groupColumn:e=>`Групувати за ${e}`,unGroupColumn:e=>`Відмінити групування за ${e}`,detailPanelToggle:"Перемикач панелі деталей",expandDetailPanel:"Показати",collapseDetailPanel:"Приховати",rowReorderingHeaderName:"Порядок рядків",aggregationMenuItemHeader:"Агрегація",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сер",aggregationFunctionLabelMin:"мін",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"кількість"},cw=Fe(uw,aC),dw={noRowsLabel:"کوئی قطاریں نہیں",noResultsOverlayLabel:"کوئی نتائج نہیں",toolbarDensity:"کثافت",toolbarDensityLabel:"کثافت",toolbarDensityCompact:"تنگ",toolbarDensityStandard:"درمیانہ",toolbarDensityComfortable:"مناسب",toolbarColumns:"کالمز",toolbarColumnsLabel:"کالمز کو منتخب کریں",toolbarFilters:"فلٹرز",toolbarFiltersLabel:"فلٹرز دکھائیں",toolbarFiltersTooltipHide:"فلٹرز چھپائیں",toolbarFiltersTooltipShow:"فلٹرز دکھائیں",toolbarFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,toolbarQuickFilterPlaceholder:"تلاش کریں۔۔۔",toolbarQuickFilterLabel:"تلاش کریں",toolbarQuickFilterDeleteIconLabel:"کلئیر کریں",toolbarExport:"ایکسپورٹ",toolbarExportLabel:"ایکسپورٹ",toolbarExportCSV:"CSV کے طور پر ڈاوٴنلوڈ کریں",toolbarExportPrint:"پرنٹ کریں",toolbarExportExcel:"ایکسل کے طور پر ڈاوٴنلوڈ کریں",columnsPanelTextFieldLabel:"کالم کو تلاش کریں",columnsPanelTextFieldPlaceholder:"کالم کا عنوان",columnsPanelDragIconLabel:"کالم کی ترتیب تبدیل کریں",columnsPanelShowAllButton:"سارے دکھائیں",columnsPanelHideAllButton:"سارے چھپائیں",filterPanelAddFilter:"نیا فلٹر",filterPanelDeleteIconLabel:"ختم کریں",filterPanelLogicOperator:"لاجک آپریٹر",filterPanelOperator:"آپریٹر",filterPanelOperatorAnd:"اور",filterPanelOperatorOr:"یا",filterPanelColumns:"کالمز",filterPanelInputLabel:"ویلیو",filterPanelInputPlaceholder:"ویلیو کو فلٹر کریں",filterOperatorContains:"شامل ہے",filterOperatorEquals:"برابر ہے",filterOperatorStartsWith:"شروع ہوتا ہے",filterOperatorEndsWith:"ختم ہوتا ہے",filterOperatorIs:"ہے",filterOperatorNot:"نہیں",filterOperatorAfter:"بعد میں ہے",filterOperatorOnOrAfter:"پر یا بعد میں ہے",filterOperatorBefore:"پہلے ہے",filterOperatorOnOrBefore:"پر یا پہلے ہے",filterOperatorIsEmpty:"خالی ہے",filterOperatorIsNotEmpty:"خالی نہیں ہے",filterOperatorIsAnyOf:"ان میں سے کوئی ہے",filterValueAny:"کوئی بھی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"مینیو",columnMenuShowColumns:"کالم دکھائیں",columnMenuManageColumns:"کالم مینج کریں",columnMenuFilter:"فلٹر",columnMenuHideColumn:"چھپائیں",columnMenuUnsort:"sort ختم کریں",columnMenuSortAsc:"ترتیب صعودی",columnMenuSortDesc:"ترتیب نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,columnHeaderFiltersLabel:"فلٹرز دکھائیں",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} منتخب قطاریں`:`${e.toLocaleString()} منتخب قطار`,footerTotalRows:"کل قطاریں:",footerTotalVisibleRows:(e,t)=>`${t.toLocaleString()} میں سے ${e.toLocaleString()}`,checkboxSelectionHeaderName:"چیک باکس منتخب کریں",checkboxSelectionSelectAllRows:"تمام قطاریں منتخب کریں",checkboxSelectionUnselectAllRows:"تمام قطاریں نامنتخب کریں ",checkboxSelectionSelectRow:"قطار منتخب کریں",checkboxSelectionUnselectRow:"قطار نامنتخب کریں",booleanCellTrueLabel:"ہاں",booleanCellFalseLabel:"نہیں",actionsCellMore:"ذیادہ",pinToLeft:"بائیں جانب pin کریں",pinToRight:"دائیں جانب pin کریں",unpin:"pin ختم کریں",treeDataGroupingHeaderName:"گروپ",treeDataExpand:"شاخیں دیکھیں",treeDataCollapse:"شاخیں چھپائیں",groupingColumnHeaderName:"گروپ",groupColumn:e=>`${e} سے گروپ کریں`,unGroupColumn:e=>`${e} سے گروپ ختم کریں`,detailPanelToggle:"ڈیٹیل پینل کھولیں / بند کریں",expandDetailPanel:"پھیلائیں",collapseDetailPanel:"تنگ کریں",rowReorderingHeaderName:"قطاروں کی ترتیب تبدیل کریں",aggregationMenuItemHeader:"ایگریگیشن",aggregationFunctionLabelSum:"کل",aggregationFunctionLabelAvg:"اوسط",aggregationFunctionLabelMin:"کم از کم",aggregationFunctionLabelMax:"زیادہ سے زیادہ",aggregationFunctionLabelSize:"سائز"},fw=Fe(dw,pC),pw={noRowsLabel:"Không có dữ liệu",noResultsOverlayLabel:"Không tìm thấy kết quả.",toolbarDensity:"Độ giãn",toolbarDensityLabel:"Độ giãn",toolbarDensityCompact:"Trung bình",toolbarDensityStandard:"Tiêu chuẩn",toolbarDensityComfortable:"Rộng",toolbarColumns:"Cột",toolbarColumnsLabel:"Chọn cột",toolbarFilters:"Bộ lọc",toolbarFiltersLabel:"Hiển thị bộ lọc",toolbarFiltersTooltipHide:"Ẩn",toolbarFiltersTooltipShow:"Hiện",toolbarFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,toolbarQuickFilterPlaceholder:"Tìm kiếm…",toolbarQuickFilterLabel:"Tìm kiếm",toolbarQuickFilterDeleteIconLabel:"Xóa tìm kiếm",toolbarExport:"Xuất",toolbarExportLabel:"Xuất",toolbarExportCSV:"Xuất CSV",toolbarExportPrint:"In",toolbarExportExcel:"Xuất Excel",columnsPanelTextFieldLabel:"Tìm kiếm",columnsPanelTextFieldPlaceholder:"Tiêu đề cột",columnsPanelDragIconLabel:"Sắp xếp",columnsPanelShowAllButton:"Hiện tất cả",columnsPanelHideAllButton:"Ẩn tất cả",filterPanelAddFilter:"Thêm bộ lọc",filterPanelRemoveAll:"Xóa tất cả",filterPanelDeleteIconLabel:"Xóa",filterPanelLogicOperator:"Toán tử logic",filterPanelOperator:"Toán tử",filterPanelOperatorAnd:"Và",filterPanelOperatorOr:"Hoặc",filterPanelColumns:"Cột",filterPanelInputLabel:"Giá trị",filterPanelInputPlaceholder:"Lọc giá trị",filterOperatorContains:"Chứa",filterOperatorEquals:"Bằng",filterOperatorStartsWith:"Bắt đầu bằng",filterOperatorEndsWith:"Kết thúc bằng",filterOperatorIs:"Là",filterOperatorNot:"Không là",filterOperatorAfter:"Trước",filterOperatorOnOrAfter:"bằng hoặc sau",filterOperatorBefore:"Sau",filterOperatorOnOrBefore:"bằng hoặc trước",filterOperatorIsEmpty:"Rỗng",filterOperatorIsNotEmpty:"Khác rỗng",filterOperatorIsAnyOf:"Bất kỳ","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Chứa",headerFilterOperatorEquals:"Bằng",headerFilterOperatorStartsWith:"Bắt đầu với",headerFilterOperatorEndsWith:"Kết thúc với",headerFilterOperatorIs:"là",headerFilterOperatorNot:"Không là",headerFilterOperatorAfter:"Sau",headerFilterOperatorOnOrAfter:"Đang hoặc sau",headerFilterOperatorBefore:"Trước",headerFilterOperatorOnOrBefore:"Đang hoặc trước",headerFilterOperatorIsEmpty:"Rỗng",headerFilterOperatorIsNotEmpty:"Khác rỗng",headerFilterOperatorIsAnyOf:"Bất kỳ","headerFilterOperator=":"Bằng","headerFilterOperator!=":"Khác","headerFilterOperator>":"Lớn hơn","headerFilterOperator>=":"Lớn hơn hoặc bằng","headerFilterOperator<":"Nhỏ hơn","headerFilterOperator<=":"Nhỏ hơn hoặc bằng",filterValueAny:"bất kỳ giá trị nào",filterValueTrue:"Có",filterValueFalse:"Không",columnMenuLabel:"Danh mục",columnMenuShowColumns:"Danh sách cột",columnMenuManageColumns:"Quản lý cột",columnMenuFilter:"Bộ lọc",columnMenuHideColumn:"Ẩn cột",columnMenuUnsort:"Bỏ sắp xếp",columnMenuSortAsc:"Sắp xếp tăng dần",columnMenuSortDesc:"Sắp xếp giảm dần",columnHeaderFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,columnHeaderFiltersLabel:"Bộ lọc",columnHeaderSortIconLabel:"Sắp xếp",footerRowSelected:e=>e>1?`${e.toLocaleString()} hàng đã chọn`:`${e.toLocaleString()} hàng đã chọn`,footerTotalRows:"Tổng:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Tích vào ô trống",checkboxSelectionSelectAllRows:"Chọn tất cả hàng",checkboxSelectionUnselectAllRows:"Bỏ chọn tất cả hàng",checkboxSelectionSelectRow:"Chọn hàng",checkboxSelectionUnselectRow:"Bỏ chọn hàng",booleanCellTrueLabel:"Có",booleanCellFalseLabel:"Không",actionsCellMore:"Thêm",pinToLeft:"Ghim cột bên trái",pinToRight:"Ghim cột bên phải",unpin:"Bỏ ghim",treeDataGroupingHeaderName:"Nhóm",treeDataExpand:"mở rộng",treeDataCollapse:"ẩn đi",groupingColumnHeaderName:"Nhóm",groupColumn:e=>`Nhóm theo ${e}`,unGroupColumn:e=>`Hủy nhóm theo ${e}`,detailPanelToggle:"Ẩn/hiện chi tiết",expandDetailPanel:"Mở rộng",collapseDetailPanel:"Thu nhỏ",rowReorderingHeaderName:"Sắp xếp hàng",aggregationMenuItemHeader:"Tổng hợp",aggregationFunctionLabelSum:"Tổng",aggregationFunctionLabelAvg:"Trung bình",aggregationFunctionLabelMin:"Tối thiểu",aggregationFunctionLabelMax:"Tối đa",aggregationFunctionLabelSize:"Kích cỡ"},gw=Fe(pw,iC),mw={noRowsLabel:"没有数据。",noResultsOverlayLabel:"未找到数据。",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"紧密",toolbarDensityStandard:"标准",toolbarDensityComfortable:"稀疏",toolbarColumns:"列",toolbarColumnsLabel:"选择列",toolbarFilters:"筛选器",toolbarFiltersLabel:"显示筛选器",toolbarFiltersTooltipHide:"隐藏筛选器",toolbarFiltersTooltipShow:"显示筛选器",toolbarFiltersTooltipActive:e=>`${e} 个筛选器`,toolbarQuickFilterPlaceholder:"搜索…",toolbarQuickFilterLabel:"搜索",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"导出",toolbarExportLabel:"导出",toolbarExportCSV:"导出至CSV",toolbarExportPrint:"打印",toolbarExportExcel:"导出至Excel",columnsPanelTextFieldLabel:"搜索列",columnsPanelTextFieldPlaceholder:"列名",columnsPanelDragIconLabel:"重排序列",columnsPanelShowAllButton:"显示所有",columnsPanelHideAllButton:"隐藏所有",filterPanelAddFilter:"添加筛选器",filterPanelRemoveAll:"清除全部",filterPanelDeleteIconLabel:"删除",filterPanelLogicOperator:"逻辑操作器",filterPanelOperator:"操作器",filterPanelOperatorAnd:"与",filterPanelOperatorOr:"或",filterPanelColumns:"列",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"筛选值",filterOperatorContains:"包含",filterOperatorEquals:"等于",filterOperatorStartsWith:"开始于",filterOperatorEndsWith:"结束于",filterOperatorIs:"是",filterOperatorNot:"不是",filterOperatorAfter:"在后面",filterOperatorOnOrAfter:"正在后面",filterOperatorBefore:"在前面",filterOperatorOnOrBefore:"正在前面",filterOperatorIsEmpty:"为空",filterOperatorIsNotEmpty:"不为空",filterOperatorIsAnyOf:"属于","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等于",headerFilterOperatorStartsWith:"开始于",headerFilterOperatorEndsWith:"结束于",headerFilterOperatorIs:"是",headerFilterOperatorNot:"不是",headerFilterOperatorAfter:"在后面",headerFilterOperatorOnOrAfter:"在当前或后面",headerFilterOperatorBefore:"在前面",headerFilterOperatorOnOrBefore:"在当前或前面",headerFilterOperatorIsEmpty:"为空",headerFilterOperatorIsNotEmpty:"不为空",headerFilterOperatorIsAnyOf:"属于","headerFilterOperator=":"等于","headerFilterOperator!=":"不等于","headerFilterOperator>":"大于","headerFilterOperator>=":"大于或等于","headerFilterOperator<":"小雨","headerFilterOperator<=":"小于或等于",filterValueAny:"任何",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"菜单",columnMenuShowColumns:"显示",columnMenuManageColumns:"管理列",columnMenuFilter:"筛选器",columnMenuHideColumn:"隐藏",columnMenuUnsort:"恢复默认",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} 个筛选器`:`${e} 个筛选器`,columnHeaderFiltersLabel:"显示筛选器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`共选中了${e.toLocaleString()}行`,footerTotalRows:"所有行:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"多选框",checkboxSelectionSelectAllRows:"全选行",checkboxSelectionUnselectAllRows:"反选所有行",checkboxSelectionSelectRow:"选择行",checkboxSelectionUnselectRow:"反选行",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"更多",pinToLeft:"固定到左侧",pinToRight:"固定到右侧",unpin:"取消固定",treeDataGroupingHeaderName:"组",treeDataExpand:"查看子项目",treeDataCollapse:"隐藏子项目",groupingColumnHeaderName:"组",groupColumn:e=>`用${e}分组`,unGroupColumn:e=>`不再用${e}分组`,detailPanelToggle:"详细信息",expandDetailPanel:"显示",collapseDetailPanel:"折叠",rowReorderingHeaderName:"重新排列行",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"总数",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"大小"},bw=Fe(mw,sC),hw={noRowsLabel:"沒有資料",noResultsOverlayLabel:"沒有結果",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"緊湊",toolbarDensityStandard:"標準",toolbarDensityComfortable:"舒適",toolbarColumns:"欄位",toolbarColumnsLabel:"選擇欄位",toolbarFilters:"篩選器",toolbarFiltersLabel:"顯示篩選器",toolbarFiltersTooltipHide:"隱藏篩選器",toolbarFiltersTooltipShow:"顯示篩選器",toolbarFiltersTooltipActive:e=>`${e} 個篩選器`,toolbarQuickFilterPlaceholder:"搜尋…",toolbarQuickFilterLabel:"搜尋",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"匯出",toolbarExportLabel:"匯出",toolbarExportCSV:"匯出 CSV",toolbarExportPrint:"列印",toolbarExportExcel:"匯出 Excel",columnsPanelTextFieldLabel:"欄位搜尋",columnsPanelTextFieldPlaceholder:"欄位名稱",columnsPanelDragIconLabel:"排序欄位",columnsPanelShowAllButton:"顯示所有",columnsPanelHideAllButton:"隱藏所有",filterPanelAddFilter:"增加篩選器",filterPanelRemoveAll:"清除所有",filterPanelDeleteIconLabel:"刪除",filterPanelLogicOperator:"邏輯運算子",filterPanelOperator:"運算子",filterPanelOperatorAnd:"且",filterPanelOperatorOr:"或",filterPanelColumns:"欄位",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"篩選值",filterOperatorContains:"包含",filterOperatorEquals:"等於",filterOperatorStartsWith:"以...開頭",filterOperatorEndsWith:"以...結束",filterOperatorIs:"為",filterOperatorNot:"不為",filterOperatorAfter:"...之後",filterOperatorOnOrAfter:"...(含)之後",filterOperatorBefore:"...之前",filterOperatorOnOrBefore:"...(含)之前",filterOperatorIsEmpty:"為空",filterOperatorIsNotEmpty:"不為空",filterOperatorIsAnyOf:"是其中之一","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等於",headerFilterOperatorStartsWith:"以...開頭",headerFilterOperatorEndsWith:"以...結束",headerFilterOperatorIs:"為",headerFilterOperatorNot:"不為",headerFilterOperatorAfter:"...之後",headerFilterOperatorOnOrAfter:"...(含)之後",headerFilterOperatorBefore:"...之前",headerFilterOperatorOnOrBefore:"...(含)之前",headerFilterOperatorIsEmpty:"為空",headerFilterOperatorIsNotEmpty:"不為空",headerFilterOperatorIsAnyOf:"是其中之一","headerFilterOperator=":"等於","headerFilterOperator!=":"不等於","headerFilterOperator>":"大於","headerFilterOperator>=":"大於或等於","headerFilterOperator<":"小於","headerFilterOperator<=":"小於或等於",filterValueAny:"任何值",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"選單",columnMenuShowColumns:"顯示欄位",columnMenuManageColumns:"管理欄位",columnMenuFilter:"篩選器",columnMenuHideColumn:"隱藏",columnMenuUnsort:"預設排序",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>`${e} 個篩選器`,columnHeaderFiltersLabel:"顯示篩選器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`已選取 ${e.toLocaleString()} 個`,footerTotalRows:"總數:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"核取方塊",checkboxSelectionSelectAllRows:"全選",checkboxSelectionUnselectAllRows:"取消全選",checkboxSelectionSelectRow:"選取",checkboxSelectionUnselectRow:"取消選取",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"查看更多",pinToLeft:"釘選在左側",pinToRight:"釘選在右側",unpin:"取消釘選",treeDataGroupingHeaderName:"群組",treeDataExpand:"查看子項目",treeDataCollapse:"隱藏子項目",groupingColumnHeaderName:"群組",groupColumn:e=>`以 ${e} 分組`,unGroupColumn:e=>`取消以 ${e} 分組`,detailPanelToggle:"切換顯示詳細資訊",expandDetailPanel:"展開",collapseDetailPanel:"摺疊",rowReorderingHeaderName:"排序",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"總數",aggregationFunctionLabelAvg:"平均數",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"尺寸"},Cw=Fe(hw,uC);/** - * @mui/x-data-grid v6.17.0 - * - * @license MIT - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */const ww=Object.freeze(Object.defineProperty({__proto__:null,DATA_GRID_PROPS_DEFAULT_VALUES:Gr,DEFAULT_GRID_COL_TYPE_KEY:ln,DataGrid:Th,GRID_ACTIONS_COLUMN_TYPE:Vr,GRID_ACTIONS_COL_DEF:Us,GRID_BOOLEAN_COL_DEF:Xl,GRID_CHECKBOX_SELECTION_COL_DEF:Zt,GRID_CHECKBOX_SELECTION_FIELD:Ft,GRID_COLUMN_MENU_SLOTS:ps,GRID_COLUMN_MENU_SLOT_PROPS:gs,GRID_DATETIME_COL_DEF:Xs,GRID_DATE_COL_DEF:Ys,GRID_DEFAULT_LOCALE_TEXT:an,GRID_EXPERIMENTAL_ENABLED:Cs,GRID_NUMERIC_COL_DEF:tu,GRID_ROOT_GROUP_ID:Ue,GRID_SINGLE_SELECT_COL_DEF:ou,GRID_STRING_COL_DEF:st,GridActionsCell:si,GridActionsCellItem:xf,GridAddIcon:Yo,GridApiContext:Sl,GridArrowDownwardIcon:Ko,GridArrowUpwardIcon:Wo,GridBody:Ga,GridBooleanCell:Ja,GridCell:qd,GridCellCheckboxForwardRef:Ni,GridCellCheckboxRenderer:zi,GridCellEditStartReasons:vt,GridCellEditStopReasons:nt,GridCellModes:Oe,GridCheckCircleIcon:yp,GridCheckIcon:ts,GridClearIcon:ns,GridCloseIcon:ro,GridColumnHeaderFilterIconButton:Gi,GridColumnHeaderItem:Si,GridColumnHeaderMenu:bi,GridColumnHeaderSeparator:Ci,GridColumnHeaderSeparatorSides:Hl,GridColumnHeaderSortIcon:mi,GridColumnHeaderTitle:hi,GridColumnHeaders:mu,GridColumnIcon:qi,GridColumnMenu:bs,GridColumnMenuColumnsItem:cs,GridColumnMenuContainer:is,GridColumnMenuFilterItem:ds,GridColumnMenuHideItem:ss,GridColumnMenuManageItem:us,GridColumnMenuSortItem:fs,GridColumnsPanel:ws,GridContextProvider:Ws,GridCsvExportMenuItem:Ls,GridDeleteForeverIcon:as,GridDeleteIcon:Ip,GridDragIcon:Xo,GridEditBooleanCell:Xa,GridEditDateCell:ti,GridEditInputCell:ri,GridEditModes:mt,GridEditSingleSelectCell:ai,GridExpandMoreIcon:Zo,GridFilterAltIcon:Jo,GridFilterForm:vs,GridFilterInputBoolean:Os,GridFilterInputDate:Nt,GridFilterInputMultipleSingleSelect:ys,GridFilterInputMultipleValue:Yl,GridFilterInputSingleSelect:el,GridFilterInputValue:ct,GridFilterListIcon:Bi,GridFilterPanel:Fs,GridFooter:As,GridFooterContainer:fi,GridFooterPlaceholder:Na,GridGenericColumnMenu:ms,GridHeader:Hs,GridHeaderCheckbox:ji,GridKeyboardArrowRight:Qo,GridLoadIcon:Xi,GridLoadingOverlay:_s,GridLogicOperator:Ke,GridMenu:Ar,GridMenuIcon:Fp,GridMoreVertIcon:rs,GridNoRowsOverlay:Vs,GridOverlay:yo,GridOverlays:Wa,GridPagination:Gs,GridPanel:Ps,GridPanelContent:Wl,GridPanelFooter:Kl,GridPanelHeader:hs,GridPanelWrapper:Ql,GridPreferencePanelsValue:ut,GridPreferencesPanel:xs,GridPrintExportMenuItem:Ts,GridRemoveIcon:Yi,GridRoot:di,GridRow:qs,GridRowCount:Ns,GridRowEditStartReasons:Ot,GridRowEditStopReasons:wt,GridRowModes:Me,GridSaveAltIcon:es,GridSearchIcon:Ui,GridSelectedRowCount:Rs,GridSeparatorIcon:Wi,GridSignature:gt,GridSkeletonCell:ci,GridTableRowsIcon:Qi,GridToolbar:Ag,GridToolbarColumnsButton:Is,GridToolbarContainer:pi,GridToolbarDensitySelector:Ms,GridToolbarExport:Ds,GridToolbarExportContainer:Es,GridToolbarFilterButton:ks,GridToolbarQuickFilter:$s,GridTripleDotsVerticalIcon:Ji,GridViewColumnIcon:ls,GridViewHeadlineIcon:Ki,GridViewStreamIcon:Zi,GridVisibilityOffIcon:os,SUBMIT_FILTER_DATE_STROKE_TIME:$h,SUBMIT_FILTER_STROKE_TIME:Dh,arSD:dC,beBY:mC,bgBG:hC,checkGridRowIdIsValid:za,createUseGridApiEventHandler:Pi,csCZ:wC,daDK:PC,deDE:vC,elGR:FC,enUS:yC,esES:MC,faIR:EC,fiFI:TC,frFR:$C,getDataGridUtilityClass:Ce,getDefaultGridFilterModel:ir,getGridBooleanOperators:Bs,getGridDateOperators:on,getGridDefaultColumnTypes:lu,getGridNumericOperators:eu,getGridNumericQuickFilterFn:ol,getGridSingleSelectOperators:ru,getGridStringOperators:js,getGridStringQuickFilterFn:rl,gridClasses:_,gridColumnDefinitionsSelector:pt,gridColumnFieldsSelector:St,gridColumnGroupingSelector:Er,gridColumnGroupsHeaderMaxDepthSelector:dr,gridColumnGroupsHeaderStructureSelector:ya,gridColumnGroupsLookupSelector:Ol,gridColumnGroupsUnwrappedModelSelector:Fa,gridColumnLookupSelector:Ht,gridColumnMenuSelector:no,gridColumnPositionsSelector:Bt,gridColumnVisibilityModelSelector:it,gridColumnsTotalWidthSelector:So,gridDataRowIdsSelector:hr,gridDateComparator:jl,gridDateFormatter:Zs,gridDateTimeFormatter:Js,gridDensityFactorSelector:Kt,gridDensitySelector:vo,gridDensityValueSelector:Ll,gridExpandedRowCountSelector:Ml,gridExpandedSortedRowEntriesSelector:Mt,gridExpandedSortedRowIdsSelector:lr,gridFilterActiveItemsLookupSelector:Ha,gridFilterActiveItemsSelector:kl,gridFilterModelSelector:Ae,gridFilterableColumnDefinitionsSelector:vl,gridFilterableColumnLookupSelector:Oa,gridFilteredDescendantCountLookupSelector:yd,gridFilteredRowsLookupSelector:yl,gridFilteredSortedRowEntriesSelector:Ra,gridFilteredSortedRowIdsSelector:Aa,gridFilteredSortedTopLevelRowEntriesSelector:Il,gridFilteredTopLevelRowCountSelector:Dr,gridFocusCellSelector:Je,gridFocusColumnHeaderSelector:_a,gridFocusStateSelector:$r,gridNumberComparator:zl,gridPageCountSelector:pp,gridPageSelector:Mi,gridPageSizeSelector:ki,gridPaginatedVisibleSortedGridRowEntriesSelector:Ei,gridPaginatedVisibleSortedGridRowIdsSelector:Gl,gridPaginationModelSelector:ot,gridPaginationRowRangeSelector:Io,gridPaginationSelector:Vl,gridPanelClasses:Ss,gridPreferencePanelStateSelector:$t,gridQuickFilterValuesSelector:Da,gridRowCountSelector:Lr,gridRowGroupingNameSelector:ka,gridRowMaximumTreeDepthSelector:Tr,gridRowSelectionStateSelector:rt,gridRowTreeDepthsSelector:jo,gridRowTreeSelector:at,gridRowsDataRowIdToIdLookupSelector:wr,gridRowsLoadingSelector:Ia,gridRowsLookupSelector:yt,gridRowsMetaSelector:ur,gridSortColumnLookupSelector:Ta,gridSortModelSelector:tt,gridSortedRowEntriesSelector:xo,gridSortedRowIdsSelector:Po,gridStringOrNumberComparator:$i,gridTabIndexCellSelector:Pr,gridTabIndexColumnHeaderSelector:El,gridTabIndexStateSelector:Rr,gridTopLevelRowCountSelector:Ma,gridVirtualizationColumnEnabledSelector:ql,gridVirtualizationEnabledSelector:Vi,gridVirtualizationSelector:Ul,gridVisibleColumnDefinitionsSelector:He,gridVisibleColumnFieldsSelector:kr,gridVisibleRowsLookupSelector:$a,heIL:AC,huHU:_C,isLeaf:Dl,itIT:GC,jaJP:zC,koKR:BC,nbNO:qC,nlNL:KC,plPL:ZC,ptBR:YC,renderActionsCell:ui,renderBooleanCell:Ya,renderEditBooleanCell:ei,renderEditDateCell:Rl,renderEditInputCell:oi,renderEditSingleSelectCell:ii,roRO:ew,ruRU:rw,selectedGridRowsCountSelector:Li,selectedGridRowsSelector:Ti,selectedIdsLookupSelector:vr,skSK:lw,svSE:aw,trTR:sw,ukUA:cw,unstable_gridFocusColumnGroupHeaderSelector:Sr,unstable_gridFocusColumnHeaderFilterSelector:Id,unstable_gridHeaderFilteringEditFieldSelector:Ri,unstable_gridHeaderFilteringMenuSelector:Ai,unstable_gridHeaderFilteringStateSelector:Bl,unstable_gridTabIndexColumnGroupHeaderSelector:Va,unstable_gridTabIndexColumnHeaderFilterSelector:Md,unstable_resetCleanupTracking:lp,urPK:fw,useFirstRender:pr,useGridApiContext:fe,useGridApiEventHandler:re,useGridApiMethod:be,useGridApiOptionHandler:ke,useGridApiRef:id,useGridLogger:je,useGridNativeEventListener:Oi,useGridRootProps:J,useGridSelector:K,useGridVirtualization:_i,viVN:gw,virtualizationStateInitializer:Hi,zhCN:bw,zhTW:Cw},Symbol.toStringTag,{value:"Module"})),Sw=rc(ww);var un={},Pw=Y&&Y.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),xw=Y&&Y.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vw=Y&&Y.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Pw(t,e,r);return xw(t,e),t},Ow=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(un,"__esModule",{value:!0});const Lt=vw(a),Fw=bt,yw=Ow(oc),wu=(0,Fw.makeStyles)()(e=>({resizeBar:{background:e.palette.action.disabledBackground,height:12,position:"relative",overflow:"hidden"},tick:{position:"absolute",height:"100%",pointerEvents:"none",background:e.palette.action.disabled,width:1},hiddenTick:{position:"absolute",height:"100%",width:5}}));function Iw({left:e,scrollLeft:t,idx:r,onDrag:o,onMouseDown:l}){const{classes:n}=wu(),i=(0,Lt.useCallback)((c,d)=>o(c,d,r),[r,o]);return Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(yw.default,{onDrag:i,onMouseDown:l,vertical:!0,className:n.hiddenTick,style:{left:e-t-2.5}}),Lt.default.createElement("div",{style:{left:e-t},className:n.tick}))}function Mw({widths:e,setWidths:t,checkbox:r,scrollLeft:o=0}){const{classes:l}=wu(),n=[],[i,c]=(0,Lt.useState)();let d=r?52:0;for(let u=0;uLt.default.createElement(Iw,{key:s,onMouseDown:()=>{c([...e])},left:s===n.length-1?u-3:u,onDrag:(f,p,b)=>{const g=[...e];g[b]=Math.max(i[b]-p,50),t(g)},idx:s,scrollLeft:o})))}un.default=Mw;var Mo={};Object.defineProperty(Mo,"__esModule",{value:!0});Mo.useResizeBar=void 0;const Go=a;function kw(){const e=(0,Go.useRef)(null),[t,r]=(0,Go.useState)(0);return(0,Go.useEffect)(()=>{const o=setInterval(()=>{var l;const n=(l=e.current)===null||l===void 0?void 0:l.querySelector(".MuiDataGrid-virtualScroller");n&&r(n.scrollLeft)},100);return()=>{clearInterval(o)}},[]),{ref:e,scrollLeft:t}}Mo.useResizeBar=kw;var Ew=Y&&Y.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),Lw=Y&&Y.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tw=Y&&Y.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Ew(t,e,r);return Lw(t,e),t},Su=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wl,"__esModule",{value:!0});const et=Tw(a),Dw=bt,aa=Sw,No=Rt,ia=Wt,$w=Su(un),Rw=Su(cr),Aw=Mo,Hw=qt,_w=(0,Dw.makeStyles)()(e=>({margin:{margin:e.spacing(1),width:"100%"},cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}));function Vw({value:e,prefix:t,name:r}){const{classes:o}=_w(),{ref:l,scrollLeft:n}=(0,Aw.useResizeBar)(),[i,c]=(0,et.useState)(!1),d=Object.keys(e[0]).sort(),u=new Set(d),s=Object.entries(e).map(([g,h])=>{const{id:v,...S}=h;return{id:g,identifier:v,...S}});for(const g of e)for(const h of Object.keys(g))u.add(h);let f;u.has("id")?(u.delete("id"),f=["identifier",...u]):f=[...u];const[p,b]=(0,et.useState)(f.map(g=>(0,ia.measureGridWidth)(s.map(h=>h[g]))));return u.sizec(g.target.checked)}),label:et.default.createElement(No.Typography,{variant:"body2"},"Show options")}),et.default.createElement("div",{className:o.margin,ref:l},et.default.createElement($w.default,{widths:p,setWidths:b,scrollLeft:n}),et.default.createElement(aa.DataGrid,{disableRowSelectionOnClick:!0,rows:s,rowCount:25,rowHeight:25,columnHeaderHeight:35,hideFooter:s.length<25,slots:{toolbar:i?aa.GridToolbar:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}},columns:f.map((g,h)=>({field:g,renderCell:v=>{const S=v.value;return et.default.createElement("div",{className:o.cell},et.default.createElement(Hw.SanitizedHTML,{html:(0,ia.getStr)(S)}))},width:p[h]}))}))):null}wl.default=Vw;var Xr={},sa;function Gw(){if(sa)return Xr;sa=1;var e=Y&&Y.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(Xr,"__esModule",{value:!0});const t=e(a),r=e(go),o=bt,l=e(fl()),n=e(cr),i=e(Mr),c=(0,o.makeStyles)()(u=>({field:{display:"flex",flexWrap:"wrap"},fieldSubvalue:{wordBreak:"break-word",maxHeight:300,padding:u.spacing(.5),border:`1px solid ${u.palette.action.selected}`,boxSizing:"border-box",overflow:"auto"}}));function d({name:u,value:s,description:f,prefix:p=[]}){const{classes:b}=c();return s.length===1?(0,r.default)(s[0])?t.default.createElement(l.default,{attributes:s[0],prefix:[...p,u]}):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:p,description:f,name:u}),t.default.createElement(i.default,{value:s[0]})):s.every(g=>(0,r.default)(g))?t.default.createElement(t.default.Fragment,null,s.map((g,h)=>t.default.createElement(l.default,{key:JSON.stringify(g)+"-"+h,attributes:g,prefix:[...p,u+"-"+h]}))):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:p,description:f,name:u}),s.map((g,h)=>t.default.createElement("div",{key:JSON.stringify(g)+"-"+h,className:b.fieldSubvalue},t.default.createElement(i.default,{value:g}))))}return Xr.default=d,Xr}var cn={},dn=Y&&Y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cn,"__esModule",{value:!0});const zo=dn(a),Nw=dn(cr),zw=bt,jw=dn(Mr),Bw=(0,zw.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function Uw({value:e,prefix:t,name:r}){const{classes:o}=Bw(),{uri:l,baseUri:n=""}=e;let i;try{i=new URL(l,n).href}catch{i=l}return zo.default.createElement("div",{className:o.field},zo.default.createElement(Nw.default,{prefix:t,name:r}),zo.default.createElement(jw.default,{value:i}))}cn.default=Uw;var ua;function fl(){if(ua)return Yr;ua=1;var e=Y&&Y.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(Yr,"__esModule",{value:!0});const t=e(a),r=e(go),o=lt,l=Wt,n=e(wl),i=e(Gw()),c=e(cn),d=e(Co),u=170,s=["__jbrowsefmt","length","position","subfeatures","uniqueId","exonFrames","parentId","thickStart","thickEnd"];function f(p){const{attributes:b,omit:g=[],omitSingleLevel:h=[],descriptions:v,formatter:S=H=>H,hideUris:w,prefix:L=[]}=p,R=new Set([...g,...s,...h]),{__jbrowsefmt:V,...F}=b,I={...F,...V},y=(0,o.generateMaxWidth)(Object.entries(I).filter(([H,T])=>T!==void 0&&!R.has(H)),L);return t.default.createElement(t.default.Fragment,null,Object.entries(I).filter(([H,T])=>T!==void 0&&!R.has(H)).map(([H,T])=>{const x=(0,o.accessNested)([...L,H],v);if(Array.isArray(T))return T.length>1&&T.every(A=>(0,r.default)(A))?t.default.createElement(n.default,{key:H,name:H,prefix:L,value:T}):t.default.createElement(i.default,{key:H,name:H,value:T,description:x,prefix:L});if((0,r.default)(T)){const{omitSingleLevel:A,...E}=p;return(0,l.isUriLocation)(T)?w?null:t.default.createElement(c.default,{key:H,name:H,prefix:L,value:T}):t.default.createElement(f,{...E,key:H,attributes:T,descriptions:v,prefix:[...L,H]})}else return t.default.createElement(d.default,{key:H,name:H,value:S(T,H),description:x,prefix:L,width:Math.min(y,u)})}))}return Yr.default=f,Yr}(function(e){var t=Y&&Y.__createBinding||(Object.create?function(x,A,E,C){C===void 0&&(C=E);var P=Object.getOwnPropertyDescriptor(A,E);(!P||("get"in P?!A.__esModule:P.writable||P.configurable))&&(P={enumerable:!0,get:function(){return A[E]}}),Object.defineProperty(x,C,P)}:function(x,A,E,C){C===void 0&&(C=E),x[C]=A[E]}),r=Y&&Y.__setModuleDefault||(Object.create?function(x,A){Object.defineProperty(x,"default",{enumerable:!0,value:A})}:function(x,A){x.default=A}),o=Y&&Y.__importStar||function(x){if(x&&x.__esModule)return x;var A={};if(x!=null)for(var E in x)E!=="default"&&Object.prototype.hasOwnProperty.call(x,E)&&t(A,x,E);return r(A,x),A},l=Y&&Y.__importDefault||function(x){return x&&x.__esModule?x:{default:x}};Object.defineProperty(e,"__esModule",{value:!0}),e.Attributes=e.FeatureDetails=e.BaseAttributes=e.BaseCoreDetails=e.BaseCard=void 0;const n=o(a),i=nc,c=Rt,d=bt,u=lc,s=l(bo),f=Wt,p=qt,b=l(bl),g=l(Co),h=l(fl()),v=lt,S=["name","start","end","strand","refName","description","type"],w=(0,d.makeStyles)()(x=>{var A;return{expansionPanelDetails:{display:"block",padding:x.spacing(1)},expandIcon:{color:((A=x.palette.tertiary)===null||A===void 0?void 0:A.contrastText)||"#fff"}}});function L({children:x,title:A,defaultExpanded:E=!0}){const{classes:C}=w(),[P,k]=(0,n.useState)(E);return n.default.createElement(c.Accordion,{expanded:P,onChange:()=>k(D=>!D),TransitionProps:{unmountOnExit:!0,timeout:150}},n.default.createElement(c.AccordionSummary,{expandIcon:n.default.createElement(s.default,{className:C.expandIcon})},n.default.createElement(c.Typography,{variant:"button"}," ",A)),n.default.createElement(c.AccordionDetails,{className:C.expansionPanelDetails},x))}e.BaseCard=L;function R(x){const{feature:A}=x,E=A.strand,C={"-1":"-",0:"",1:"+"},P=C[E]?`(${C[E]})`:"",k=(0,f.assembleLocString)(A);return n.default.createElement(n.default.Fragment,null,`${k} ${P}`)}function V(x){const{feature:A}=x,E=A,C={...E,...E.__jbrowsefmt},{start:P,end:k}=C,D={...C,length:(0,v.toLocale)(k-P)},M={description:"Description",name:"Name",length:"Length",type:"Type"};return n.default.createElement(n.default.Fragment,null,n.default.createElement(g.default,{name:"Position",value:n.default.createElement(R,{...x,feature:C})}),Object.entries(M).map(([$,G])=>[G,D[$]]).filter(([,$])=>$!=null).map(([$,G])=>n.default.createElement(g.default,{key:$,name:$,value:G})))}const F=x=>n.default.createElement(L,{...x,title:"Primary data"},n.default.createElement(V,{...x}));e.BaseCoreDetails=F;const I=x=>{const{feature:A}=x;return n.default.createElement(L,{...x,title:"Attributes"},n.default.createElement(h.default,{...x,attributes:A}))};e.BaseAttributes=I;function y(x){const{omit:A=[],model:E,feature:C,depth:P=0}=x,{mate:k,name:D="",id:M="",type:$="",subfeatures:G,uniqueId:j}=C,z=(0,f.getEnv)(E).pluginManager,q=(0,f.getSession)(E),B=z.evaluateExtensionPoint("Core-extraFeaturePanel",null,{session:q,feature:C,model:E});return n.default.createElement(L,{title:(0,v.generateTitle)(D,M,$)},n.default.createElement(c.Typography,null,"Core details"),n.default.createElement(V,{...x}),k?n.default.createElement(n.default.Fragment,null,n.default.createElement(c.Divider,null),n.default.createElement(c.Typography,null,"Mate details"),n.default.createElement(V,{...x,feature:{...k,uniqueId:j+"-mate"}})):null,n.default.createElement(c.Divider,null),n.default.createElement(c.Typography,null,"Attributes"),n.default.createElement(h.default,{attributes:C,...x,omit:A,omitSingleLevel:S}),n.default.createElement(i.ErrorBoundary,{FallbackComponent:Q=>n.default.createElement(p.ErrorMessage,{error:Q.error})},n.default.createElement(b.default,{...x})),B?n.default.createElement(n.default.Fragment,null,n.default.createElement(c.Divider,null),n.default.createElement(L,{title:B.name},n.default.createElement(B.Component,{...x}))):null,G!=null&&G.length?n.default.createElement(L,{title:"Subfeatures",defaultExpanded:P<1},G.map((Q,X)=>n.default.createElement(y,{key:JSON.stringify(Q),feature:{...Q,uniqueId:`${j}_${X}`},model:E,depth:P+1}))):null)}e.FeatureDetails=y;const H=(0,u.observer)(function({model:x}){const{error:A,featureData:E}=x;if(A)return n.default.createElement(p.ErrorMessage,{error:A});if(!E)return null;const C=JSON.parse(JSON.stringify(E,(P,k)=>k===void 0?null:k));return(0,v.isEmpty)(C)?null:n.default.createElement(y,{model:x,feature:C})});e.default=H;var T=fl();Object.defineProperty(e,"Attributes",{enumerable:!0,get:function(){return l(T).default}})})(sc);export{sc as B}; -//# sourceMappingURL=index-0de0598f.js.map diff --git a/assets/index-0de0598f.js.map b/assets/index-0de0598f.js.map deleted file mode 100644 index cd302750..00000000 --- a/assets/index-0de0598f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-0de0598f.js","sources":["../../../node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js","../../../node_modules/@mui/icons-material/ExpandMore.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/hooks.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureSettingsDialog.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/util.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/util.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/index.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/FieldName.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/util.js","../../../node_modules/@mui/x-data-grid/components/GridApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiRef.js","../../../node_modules/@mui/x-data-grid/context/GridRootPropsContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridRootProps.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridPrivateApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useLazyRef.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useOnMount.js","../../../node_modules/@mui/x-data-grid/utils/warning.js","../../../node_modules/@mui/x-data-grid/utils/fastObjectShallowCompare.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridSelector.js","../../../node_modules/@mui/x-data-grid/constants/gridClasses.js","../../../node_modules/reselect/es/defaultMemoize.js","../../../node_modules/reselect/es/index.js","../../../node_modules/@mui/x-data-grid/utils/createSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridAriaAttributes.js","../../../node_modules/@mui/x-data-grid/components/containers/GridMainContainer.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/gridFocusStateSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/densitySelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/columnMenuSelector.js","../../../node_modules/@mui/x-data-grid/components/base/GridBody.js","../../../node_modules/@mui/x-data-grid/components/base/GridFooterPlaceholder.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsUtils.js","../../../node_modules/@mui/x-data-grid/components/base/GridOverlays.js","../../../node_modules/@mui/x-data-grid/utils/fastMemo.js","../../../node_modules/@mui/x-data-grid/utils/doesSupportPreventScroll.js","../../../node_modules/@mui/x-data-grid/models/gridEditRowModel.js","../../../node_modules/@mui/x-data-grid/models/gridFilterItem.js","../../../node_modules/@mui/x-data-grid/models/params/gridEditCellParams.js","../../../node_modules/@mui/x-data-grid/models/params/gridRowParams.js","../../../node_modules/@mui/x-data-grid/models/gridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/utils/domUtils.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiMethod.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridParamsApi.js","../../../node_modules/@mui/x-data-grid/components/cell/GridCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridBooleanCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditBooleanCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditDateCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditInputCell.js","../../../node_modules/@mui/x-data-grid/utils/keyboardUtils.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/filterPanelUtils.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditSingleSelectCell.js","../../../node_modules/@mui/x-data-grid/components/menu/GridMenu.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCellItem.js","../../../node_modules/@mui/x-data-grid/components/cell/GridSkeletonCell.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRootStyles.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRoot.js","../../../node_modules/@mui/x-data-grid/components/containers/GridFooterContainer.js","../../../node_modules/@mui/x-data-grid/components/containers/GridOverlay.js","../../../node_modules/@mui/x-data-grid/components/containers/GridToolbarContainer.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridIconButtonContainer.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSortIcon.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/ColumnHeaderMenuIcon.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnHeaderMenu.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderTitle.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSeparator.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridGenericColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterState.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/TimerBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiEventHandler.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridLogger.js","../../../node_modules/@mui/x-data-grid/utils/utils.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridNativeEventListener.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useFirstRender.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelsValue.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsMetaSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/gridRowSelectionSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualization.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/gridVirtualizationSelectors.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderFilterIconButton.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridCellCheckboxRenderer.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridHeaderCheckbox.js","../../../node_modules/@mui/x-data-grid/material/icons/index.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenuContainer.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenuSlots.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenu.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelContent.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelFooter.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelHeader.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelWrapper.js","../../../node_modules/@mui/x-data-grid/constants/envConstants.js","../../../node_modules/@mui/x-data-grid/components/panel/GridColumnsPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterForm.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useTimeout.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputDate.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputBoolean.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarColumnsButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarDensitySelector.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarFilterButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExportContainer.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExport.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarQuickFilter.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbar.js","../../../node_modules/@mui/x-data-grid/components/GridSelectedRowCount.js","../../../node_modules/@mui/x-data-grid/components/GridFooter.js","../../../node_modules/@mui/x-data-grid/components/GridHeader.js","../../../node_modules/@mui/x-data-grid/components/GridLoadingOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridNoRowsOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridPagination.js","../../../node_modules/@mui/x-data-grid/components/GridRowCount.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridVisibleRows.js","../../../node_modules/@mui/x-data-grid/colDef/utils.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridCheckboxSelectionColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridActionsColDef.js","../../../node_modules/@mui/x-data-grid/constants/gridDetailPanelToggleField.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/gridEditingSelectors.js","../../../node_modules/@mui/x-data-grid/components/GridRow.js","../../../node_modules/@mui/x-data-grid/context/GridContextProvider.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLoggerFactory.js","../../../node_modules/@mui/x-data-grid/utils/Store.js","../../../node_modules/@mui/x-data-grid/utils/EventManager.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridApiInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLocaleText.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridPipeProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridStrategyProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridStateInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridInitializeState.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridDefaultColumnTypes.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/serializers/csvSerializer.js","../../../node_modules/@mui/x-data-grid/hooks/features/clipboard/useGridClipboard.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenu.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumns.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/useGridDensity.js","../../../node_modules/@mui/x-data-grid/utils/exportAs.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridCsvExport.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridPagination.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridPrintExport.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/useGridFilter.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/useGridFocus.js","../../../node_modules/@mui/x-data-grid/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/useGridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridCellEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridRowEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRows.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelection.js","../../../node_modules/@mui/x-data-grid/constants/localeTextConstants.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/useGridSorting.js","../../../node_modules/@mui/x-data-grid/hooks/features/scroll/useGridScroll.js","../../../node_modules/@mui/x-data-grid/hooks/features/events/useGridEvents.js","../../../node_modules/@mui/x-data-grid/hooks/features/dimensions/useGridDimensions.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnGroupHeader.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnHeaders/useGridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridBaseColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeadersInner.js","../../../node_modules/@mui/x-data-grid/components/GridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/GridNoResultsOverlay.js","../../../node_modules/@mui/x-data-grid/material/icons/GridColumnUnsortedIcon.js","../../../node_modules/@mui/x-data-grid/material/components/MUISelectOption.js","../../../node_modules/@mui/x-data-grid/material/index.js","../../../node_modules/@mui/x-data-grid/constants/defaultGridSlotsComponents.js","../../../node_modules/@mui/x-data-grid/internals/utils/slotsMigration.js","../../../node_modules/@mui/x-data-grid/internals/utils/computeSlots.js","../../../node_modules/@mui/x-data-grid/internals/utils/useProps.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridProps.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsMeta.js","../../../node_modules/@mui/x-data-grid/hooks/features/statePersistence/useGridStatePersistence.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumnSpanning.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/useGridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridComponent.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerContent.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerRenderZone.js","../../../node_modules/@mui/x-data-grid/components/DataGridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/DataGrid/DataGrid.js","../../../node_modules/@mui/material/locale/index.js","../../../node_modules/@mui/x-data-grid/utils/getGridLocalization.js","../../../node_modules/@mui/x-data-grid/locales/arSD.js","../../../node_modules/@mui/x-data-grid/locales/coreLocales.js","../../../node_modules/@mui/x-data-grid/locales/beBY.js","../../../node_modules/@mui/x-data-grid/locales/bgBG.js","../../../node_modules/@mui/x-data-grid/locales/csCZ.js","../../../node_modules/@mui/x-data-grid/locales/daDK.js","../../../node_modules/@mui/x-data-grid/locales/deDE.js","../../../node_modules/@mui/x-data-grid/locales/elGR.js","../../../node_modules/@mui/x-data-grid/locales/enUS.js","../../../node_modules/@mui/x-data-grid/locales/esES.js","../../../node_modules/@mui/x-data-grid/locales/faIR.js","../../../node_modules/@mui/x-data-grid/locales/fiFI.js","../../../node_modules/@mui/x-data-grid/locales/frFR.js","../../../node_modules/@mui/x-data-grid/locales/heIL.js","../../../node_modules/@mui/x-data-grid/locales/huHU.js","../../../node_modules/@mui/x-data-grid/locales/itIT.js","../../../node_modules/@mui/x-data-grid/locales/jaJP.js","../../../node_modules/@mui/x-data-grid/locales/koKR.js","../../../node_modules/@mui/x-data-grid/locales/nbNO.js","../../../node_modules/@mui/x-data-grid/locales/nlNL.js","../../../node_modules/@mui/x-data-grid/locales/plPL.js","../../../node_modules/@mui/x-data-grid/locales/ptBR.js","../../../node_modules/@mui/x-data-grid/locales/roRO.js","../../../node_modules/@mui/x-data-grid/locales/ruRU.js","../../../node_modules/@mui/x-data-grid/locales/skSK.js","../../../node_modules/@mui/x-data-grid/locales/svSE.js","../../../node_modules/@mui/x-data-grid/locales/trTR.js","../../../node_modules/@mui/x-data-grid/locales/ukUA.js","../../../node_modules/@mui/x-data-grid/locales/urPK.js","../../../node_modules/@mui/x-data-grid/locales/viVN.js","../../../node_modules/@mui/x-data-grid/locales/zhCN.js","../../../node_modules/@mui/x-data-grid/locales/zhTW.js","../../../node_modules/@mui/x-data-grid/index.js","../../../node_modules/@jbrowse/core/ui/ResizeBar.js","../../../node_modules/@jbrowse/core/ui/useResizeBar.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/UriField.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/index.js"],"sourcesContent":["export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\nexports.default = _default;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst ui_1 = require(\"@jbrowse/core/ui\");\n// icons\nconst Settings_1 = __importDefault(require(\"@mui/icons-material/Settings\"));\nfunction HelpDialog({ handleClose, }) {\n return (react_1.default.createElement(ui_1.Dialog, { maxWidth: \"xl\", open: true, onClose: () => handleClose(), title: \"Feature sequence panel help\" },\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.Typography, { paragraph: true }, \"The \\\"Feature sequence\\\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.\"),\n react_1.default.createElement(material_1.Typography, null, \"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:\"),\n react_1.default.createElement(\"ul\", null,\n react_1.default.createElement(\"li\", null, \"CDS - shows the stitched together CDS sequences\"),\n react_1.default.createElement(\"li\", null, \"Protein - the translated coding sequence, with the \\\"standard\\\" genetic code\"),\n react_1.default.createElement(\"li\", null, \"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences\"),\n react_1.default.createElement(\"li\", null, \"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted\")),\n react_1.default.createElement(material_1.Typography, { paragraph: true }, \"For other feature types, the options are:\"),\n react_1.default.createElement(\"ul\", null,\n react_1.default.createElement(\"li\", null, \"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence\")),\n react_1.default.createElement(material_1.Typography, null,\n \"Note 1: you can use the \\\"gear icon\\\" \",\n react_1.default.createElement(Settings_1.default, null),\n \" to edit the number of bp displayed up/downstream and in the intron region\"),\n react_1.default.createElement(material_1.Typography, null, \"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.\")),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose(), autoFocus: true, variant: \"contained\" }, \"Close\"))));\n}\nexports.default = HelpDialog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useFeatureSequence = void 0;\nconst react_1 = require(\"react\");\nconst util_1 = require(\"../../util\");\nconst configuration_1 = require(\"../../configuration\");\nconst BPLIMIT = 500000;\nfunction useFeatureSequence(model, feature, upDownBp, forceLoad) {\n const [sequence, setSequence] = (0, react_1.useState)();\n const [error, setError] = (0, react_1.useState)();\n (0, react_1.useEffect)(() => {\n var _a;\n let finished = false;\n if (!model) {\n return () => { };\n }\n const { assemblyManager, rpcManager } = (0, util_1.getSession)(model);\n const [assemblyName] = ((_a = model.view) === null || _a === void 0 ? void 0 : _a.assemblyNames) || [];\n async function fetchSeq(start, end, refName) {\n const assembly = await assemblyManager.waitForAssembly(assemblyName);\n if (!assembly) {\n throw new Error('assembly not found');\n }\n const sessionId = 'getSequence';\n const feats = await rpcManager.call(sessionId, 'CoreGetFeatures', {\n adapterConfig: (0, configuration_1.getConf)(assembly, ['sequence', 'adapter']),\n sessionId,\n regions: [\n {\n start,\n end,\n refName: assembly.getCanonicalRefName(refName),\n assemblyName,\n },\n ],\n });\n const [feat] = feats;\n return (feat === null || feat === void 0 ? void 0 : feat.get('seq')) || '';\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;\n (async () => {\n try {\n setError(undefined);\n const { start, end, refName } = feature;\n if (!forceLoad && end - start > BPLIMIT) {\n setSequence({\n error: `Genomic sequence larger than ${BPLIMIT}bp, use \"force load\" button to display`,\n });\n }\n else {\n const b = start - upDownBp;\n const e = end + upDownBp;\n const seq = await fetchSeq(start, end, refName);\n const up = await fetchSeq(Math.max(0, b), start, refName);\n const down = await fetchSeq(end, e, refName);\n if (!finished) {\n setSequence({ seq, upstream: up, downstream: down });\n }\n }\n }\n catch (e) {\n console.error(e);\n setError(e);\n }\n })();\n return () => {\n finished = true;\n };\n }, [feature, model, upDownBp, forceLoad]);\n return { sequence, error };\n}\nexports.useFeatureSequence = useFeatureSequence;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst ui_1 = require(\"@jbrowse/core/ui\");\nconst mui_1 = require(\"tss-react/mui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n formElt: {\n margin: theme.spacing(3),\n width: 400,\n },\n dialogContent: {\n width: '80em',\n },\n}));\nfunction SequenceFeatureSettingsDialog({ handleClose, intronBp: intronBpArg, upDownBp: upDownBpArg, }) {\n const { classes } = useStyles();\n const [intronBp, setIntronBp] = (0, react_1.useState)(`${intronBpArg}`);\n const [upDownBp, setUpDownBp] = (0, react_1.useState)(`${upDownBpArg}`);\n const intronBpValid = !Number.isNaN(+intronBp);\n const upDownBpValid = !Number.isNaN(+upDownBp);\n return (react_1.default.createElement(ui_1.Dialog, { maxWidth: \"xl\", open: true, onClose: () => handleClose(), title: \"Feature sequence settings\" },\n react_1.default.createElement(material_1.DialogContent, { className: classes.dialogContent },\n react_1.default.createElement(material_1.TextField, { label: \"Number of intronic bases around splice site to display\", className: classes.formElt, value: intronBp, helperText: !intronBpValid ? 'Not a number' : '', error: !intronBpValid, onChange: event => setIntronBp(event.target.value) }),\n react_1.default.createElement(material_1.TextField, { label: \"Number of bases up/down stream of feature to display\", className: classes.formElt, value: upDownBp, helperText: !upDownBpValid ? 'Not a number' : '', error: !upDownBpValid, onChange: event => setUpDownBp(event.target.value) })),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose({\n upDownBp: +upDownBp,\n intronBp: +intronBp,\n }), disabled: !intronBpValid || !upDownBpValid, color: \"primary\", variant: \"contained\" }, \"Submit\"),\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose(), color: \"secondary\", autoFocus: true, variant: \"contained\" }, \"Cancel\"))));\n}\nexports.default = SequenceFeatureSettingsDialog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ellipses = exports.calculateUTRs2 = exports.calculateUTRs = exports.revlist = exports.dedupe = exports.stitch = void 0;\nfunction stitch(subfeats, sequence) {\n return subfeats.map(sub => sequence.slice(sub.start, sub.end)).join('');\n}\nexports.stitch = stitch;\n// filter items if they have the same \"ID\" or location\nfunction getItemId(feat) {\n return `${feat.start}-${feat.end}`;\n}\n// filters if successive elements share same start/end\nfunction dedupe(list) {\n return list.filter((item, pos, ary) => !pos || getItemId(item) !== getItemId(ary[pos - 1]));\n}\nexports.dedupe = dedupe;\nfunction revlist(list, seqlen) {\n return list\n .map(sub => ({\n ...sub,\n start: seqlen - sub.end,\n end: seqlen - sub.start,\n }))\n .sort((a, b) => a.start - b.start);\n}\nexports.revlist = revlist;\nfunction calculateUTRs(cds, exons) {\n // checking length ensures the .at below are valid\n if (!cds.length) {\n return [];\n }\n const firstCds = cds.at(0);\n const lastCds = cds.at(-1);\n const firstCdsIdx = exons.findIndex(exon => exon.end >= firstCds.start && exon.start <= firstCds.start);\n const lastCdsIdx = exons.findIndex(exon => exon.end >= lastCds.end && exon.start <= lastCds.end);\n const lastCdsExon = exons[lastCdsIdx];\n const firstCdsExon = exons[firstCdsIdx];\n const fiveUTRs = [\n ...exons.slice(0, firstCdsIdx),\n { start: firstCdsExon.start, end: firstCds.start },\n ].map(elt => ({ ...elt, type: 'five_prime_UTR' }));\n const threeUTRs = [\n { start: lastCds.end, end: lastCdsExon.end },\n ...exons.slice(lastCdsIdx + 1),\n ].map(elt => ({ ...elt, type: 'three_prime_UTR' }));\n return [...fiveUTRs, ...threeUTRs];\n}\nexports.calculateUTRs = calculateUTRs;\n// calculates UTRs using impliedUTRs logic, but there are no exon subfeatures\nfunction calculateUTRs2(cds, parentFeat) {\n if (!cds.length) {\n return [];\n }\n const firstCds = cds.at(0);\n const lastCds = cds.at(-1);\n const fiveUTRs = [{ start: parentFeat.start, end: firstCds.start }].map(elt => ({ ...elt, type: 'five_prime_UTR' }));\n const threeUTRs = [{ start: lastCds.end, end: parentFeat.end }].map(elt => ({\n ...elt,\n type: 'three_prime_UTR',\n }));\n return [...fiveUTRs, ...threeUTRs];\n}\nexports.calculateUTRs2 = calculateUTRs2;\nfunction ellipses(slug) {\n return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug;\n}\nexports.ellipses = ellipses;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.genomeColor = exports.updownstreamColor = exports.cdsColor = exports.proteinColor = exports.utrColor = exports.intronColor = void 0;\n// note that these are currently put into the style section instead of being\n// defined in classes to aid copy and paste to an external document e.g. word\nexports.intronColor = undefined;\nexports.utrColor = 'rgb(200,240,240)';\nexports.proteinColor = 'rgb(220,160,220)';\nexports.cdsColor = 'rgb(220,220,180)';\nexports.updownstreamColor = 'rgba(250,200,200)';\nexports.genomeColor = 'rgb(200,280,200)';\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nfunction CDNASequence({ utr, cds, exons, sequence, upstream, downstream, includeIntrons, collapseIntron, intronBp, }) {\n const chunks = (cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons).filter(f => f.start !== f.end);\n return (react_1.default.createElement(react_1.default.Fragment, null,\n upstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, upstream)) : null,\n chunks.map((chunk, idx) => {\n var _a;\n const intron = sequence.slice(chunk.end, (_a = chunks[idx + 1]) === null || _a === void 0 ? void 0 : _a.start);\n return (react_1.default.createElement(react_1.default.Fragment, { key: JSON.stringify(chunk) },\n react_1.default.createElement(\"span\", { style: {\n background: chunk.type === 'CDS' ? util_1.cdsColor : util_1.utrColor,\n } }, sequence.slice(chunk.start, chunk.end)),\n includeIntrons && idx < chunks.length - 1 ? (react_1.default.createElement(\"span\", { style: { background: util_1.intronColor } }, collapseIntron && intron.length > intronBp * 2\n ? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`\n : intron)) : null));\n }),\n downstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, downstream)) : null));\n}\nexports.default = CDNASequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"../util\");\nconst util_2 = require(\"./util\");\nfunction ProteinSequence({ cds, sequence, codonTable, }) {\n const str = (0, util_1.stitch)(cds, sequence);\n let protein = '';\n for (let i = 0; i < str.length; i += 3) {\n // use & symbol for undefined codon, or partial slice\n protein += codonTable[str.slice(i, i + 3)] || '&';\n }\n return react_1.default.createElement(\"span\", { style: { background: util_2.proteinColor } }, protein);\n}\nexports.default = ProteinSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nfunction GenomicSequence({ sequence, upstream, downstream, }) {\n return (react_1.default.createElement(react_1.default.Fragment, null,\n upstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, upstream)) : null,\n react_1.default.createElement(\"span\", { style: { background: util_1.genomeColor } }, sequence),\n downstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, downstream)) : null));\n}\nexports.default = GenomicSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nconst util_2 = require(\"../util\");\nfunction CDSSequence({ cds, sequence, }) {\n return react_1.default.createElement(\"span\", { style: { background: util_1.cdsColor } }, (0, util_2.stitch)(cds, sequence));\n}\nexports.default = CDSSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"../util\");\nconst CDNASequence_1 = __importDefault(require(\"./CDNASequence\"));\nconst ProteinSequence_1 = __importDefault(require(\"./ProteinSequence\"));\nconst GenomicSequence_1 = __importDefault(require(\"./GenomicSequence\"));\nconst CDSSequence_1 = __importDefault(require(\"./CDSSequence\"));\nconst SeqPanel = react_1.default.forwardRef(function SeqPanel2(props, ref) {\n const { feature, mode, intronBp = 10 } = props;\n let { sequence: { seq, upstream = '', downstream = '' }, } = props;\n const { subfeatures = [] } = feature;\n const children = subfeatures\n .sort((a, b) => a.start - b.start)\n .map(sub => ({\n ...sub,\n start: sub.start - feature.start,\n end: sub.end - feature.start,\n }));\n // we filter duplicate entries in cds and exon lists duplicate entries may be\n // rare but was seen in Gencode v36 track NCList, likely a bug on GFF3 or\n // probably worth ignoring here (produces broken protein translations if\n // included)\n //\n // position 1:224,800,006..225,203,064 gene ENSG00000185842.15 first\n // transcript ENST00000445597.6\n //\n // http://localhost:3000/?config=test_data%2Fconfig.json&session=share-FUl7G1isvF&password=HXh5Y\n let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));\n let utr = (0, util_2.dedupe)(children.filter(sub => sub.type.match(/utr/i)));\n let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));\n if (!utr.length && cds.length && exons.length) {\n utr = (0, util_2.calculateUTRs)(cds, exons);\n }\n if (!utr.length && cds.length && !exons.length) {\n utr = (0, util_2.calculateUTRs2)(cds, {\n start: 0,\n end: feature.end - feature.start,\n type: 'gene',\n });\n }\n if (feature.strand === -1) {\n // doing this in a single assignment is needed because downstream and\n // upstream are swapped so this avoids a temp variable\n ;\n [seq, upstream, downstream] = [\n (0, util_1.revcom)(seq),\n (0, util_1.revcom)(downstream),\n (0, util_1.revcom)(upstream),\n ];\n cds = (0, util_2.revlist)(cds, seq.length);\n exons = (0, util_2.revlist)(exons, seq.length);\n utr = (0, util_2.revlist)(utr, seq.length);\n }\n const codonTable = (0, util_1.generateCodonTable)(util_1.defaultCodonTable);\n return (react_1.default.createElement(\"div\", { ref: ref, \"data-testid\": \"sequence_panel\" },\n react_1.default.createElement(\"div\", { style: {\n /* raw styles instead of className so that html copy works */\n fontFamily: 'monospace',\n wordWrap: 'break-word',\n overflow: 'auto',\n color: 'black',\n fontSize: 12,\n maxWidth: 600,\n maxHeight: 300,\n } },\n react_1.default.createElement(\"span\", { style: { background: 'white' } }, `>${feature.name ||\n feature.id ||\n `${feature.refName}:${feature.start + 1}-${feature.end}`}-${mode}\\n`),\n react_1.default.createElement(\"br\", null),\n mode === 'genomic' ? (react_1.default.createElement(GenomicSequence_1.default, { sequence: seq })) : mode === 'genomic_sequence_updownstream' ? (react_1.default.createElement(GenomicSequence_1.default, { sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? (react_1.default.createElement(CDSSequence_1.default, { cds: cds, sequence: seq })) : mode === 'cdna' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, utr: utr, sequence: seq, intronBp: intronBp })) : mode === 'protein' ? (react_1.default.createElement(ProteinSequence_1.default, { cds: cds, codonTable: codonTable, sequence: seq })) : mode === 'gene' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, utr: utr, sequence: seq, includeIntrons: true, intronBp: intronBp })) : mode === 'gene_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true, intronBp: intronBp })) : mode === 'gene_updownstream' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, intronBp: intronBp })) : mode === 'gene_updownstream_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true, intronBp: intronBp })) : (react_1.default.createElement(\"div\", null, \"Unknown type\")))));\n});\nexports.default = SeqPanel;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst copy_to_clipboard_1 = __importDefault(require(\"copy-to-clipboard\"));\n// locals\nconst util_1 = require(\"../../util\");\nconst ui_1 = require(\"../../ui\");\n// icons\nconst Settings_1 = __importDefault(require(\"@mui/icons-material/Settings\"));\nconst hooks_1 = require(\"./hooks\");\n// lazies\nconst SettingsDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureSettingsDialog'))));\nconst SequencePanel = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequencePanel'))));\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n button: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: 0,\n },\n container2: {\n marginTop: theme.spacing(1),\n },\n}));\n// set the key on this component to feature.id to clear state after new feature\n// is selected\nfunction SequenceFeatureDetails({ model, feature: prefeature, }) {\n var _a, _b;\n const { classes } = useStyles();\n const feature = prefeature;\n const seqPanelRef = (0, react_1.useRef)(null);\n const [intronBp, setIntronBp] = (0, util_1.useLocalStorage)('intronBp', 10);\n const [upDownBp, setUpDownBp] = (0, util_1.useLocalStorage)('upDownBp', 500);\n const [copied, setCopied] = (0, react_1.useState)(false);\n const [copiedHtml, setCopiedHtml] = (0, react_1.useState)(false);\n const [force, setForce] = (0, react_1.useState)(false);\n const hasCDS = (_a = feature.subfeatures) === null || _a === void 0 ? void 0 : _a.some(sub => sub.type === 'CDS');\n const hasExon = (_b = feature.subfeatures) === null || _b === void 0 ? void 0 : _b.some(sub => sub.type === 'exon');\n const hasExonOrCDS = hasExon || hasCDS;\n const { sequence, error } = (0, hooks_1.useFeatureSequence)(model, prefeature, upDownBp, force);\n const [mode, setMode] = (0, react_1.useState)(hasCDS ? 'cds' : hasExon ? 'cdna' : 'genomic');\n const rest = {\n ...(hasCDS ? { cds: 'CDS' } : {}),\n ...(hasCDS ? { protein: 'Protein' } : {}),\n ...(hasExonOrCDS ? { cdna: 'cDNA' } : {}),\n ...(hasExonOrCDS ? { gene: `Genomic w/ full introns` } : {}),\n ...(hasExonOrCDS\n ? {\n gene_updownstream: `Genomic w/ full introns +/- ${upDownBp}bp up+down stream`,\n }\n : {}),\n ...(hasExonOrCDS\n ? { gene_collapsed_intron: `Genomic w/ ${intronBp}bp intron` }\n : {}),\n ...(hasExonOrCDS\n ? {\n gene_updownstream_collapsed_intron: `Genomic w/ ${intronBp}bp intron +/- ${upDownBp}bp up+down stream `,\n }\n : {}),\n ...(!hasExonOrCDS ? { genomic: 'Genomic' } : {}),\n ...(!hasExonOrCDS\n ? {\n genomic_sequence_updownstream: `Genomic +/- ${upDownBp}bp up+down stream`,\n }\n : {}),\n };\n return (react_1.default.createElement(\"div\", { className: classes.container2 },\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Select, { value: mode, onChange: event => setMode(event.target.value) }, Object.entries(rest).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key }, val))))),\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Button, { className: classes.button, variant: \"contained\", onClick: () => {\n const ref = seqPanelRef.current;\n if (ref) {\n (0, copy_to_clipboard_1.default)(ref.textContent || '', { format: 'text/plain' });\n setCopied(true);\n setTimeout(() => setCopied(false), 1000);\n }\n } }, copied ? 'Copied to clipboard!' : 'Copy plaintext')),\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Tooltip, { title: \"The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text\" },\n react_1.default.createElement(material_1.Button, { className: classes.button, variant: \"contained\", onClick: () => {\n const ref = seqPanelRef.current;\n if (!ref) {\n return;\n }\n (0, copy_to_clipboard_1.default)(ref.innerHTML, { format: 'text/html' });\n setCopiedHtml(true);\n setTimeout(() => setCopiedHtml(false), 1000);\n } }, copiedHtml ? 'Copied to clipboard!' : 'Copy HTML'))),\n react_1.default.createElement(Settings, { upDownBp: upDownBp, intronBp: intronBp, setIntronBp: setIntronBp, setUpDownBp: setUpDownBp }),\n react_1.default.createElement(\"br\", null),\n feature.type === 'gene' ? (react_1.default.createElement(material_1.Typography, null, \"Note: inspect subfeature sequences for protein/CDS computations\")) : null,\n error ? (react_1.default.createElement(material_1.Typography, { color: \"error\" }, `${error}`)) : !sequence ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : sequence ? ('error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(material_1.Typography, { color: \"error\" }, sequence.error),\n react_1.default.createElement(material_1.Button, { variant: \"contained\", color: \"inherit\", onClick: () => setForce(true) }, \"Force load\"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },\n react_1.default.createElement(SequencePanel, { ref: seqPanelRef, feature: feature, mode: mode, sequence: sequence, intronBp: intronBp })))) : (react_1.default.createElement(material_1.Typography, null, \"No sequence found\"))));\n}\nexports.default = SequenceFeatureDetails;\nfunction Settings({ intronBp, upDownBp, setIntronBp, setUpDownBp, }) {\n const { classes } = useStyles();\n const [settingsDlgOpen, setSettingsDlgOpen] = (0, react_1.useState)(false);\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.IconButton, { onClick: () => setSettingsDlgOpen(true) },\n react_1.default.createElement(Settings_1.default, null))),\n settingsDlgOpen ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(\"div\", null) },\n react_1.default.createElement(SettingsDlg, { handleClose: arg => {\n if (arg) {\n const { upDownBp, intronBp } = arg;\n setIntronBp(intronBp);\n setUpDownBp(upDownBp);\n }\n setSettingsDlgOpen(false);\n }, upDownBp: upDownBp, intronBp: intronBp }))) : null));\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst ui_1 = require(\"../../ui\");\n// icons\nconst Help_1 = __importDefault(require(\"@mui/icons-material/Help\"));\n// lazies\nconst HelpDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceHelpDialog'))));\nconst SequenceFeatureDetails = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureDetails'))));\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n formControl: {\n margin: 0,\n },\n container: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n },\n}));\n// display the stitched-together sequence of a gene's CDS, cDNA, or protein\n// sequence. this is a best effort and weird genomic phenomena could lead these\n// to not be 100% accurate\nfunction SequenceFeaturePanel({ model, feature }) {\n const { classes } = useStyles();\n const [shown, setShown] = (0, react_1.useState)(false);\n const [helpShown, setHelpShown] = (0, react_1.useState)(false);\n return !model ? null : (react_1.default.createElement(\"div\", { className: classes.container },\n react_1.default.createElement(material_1.Button, { variant: \"contained\", onClick: () => setShown(!shown) }, shown ? 'Hide feature sequence' : 'Show feature sequence'),\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.IconButton, { onClick: () => setHelpShown(true) },\n react_1.default.createElement(Help_1.default, null))),\n shown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },\n react_1.default.createElement(SequenceFeatureDetails\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n , { \n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n key: feature.uniqueId, model: model, feature: feature }))) : null,\n helpShown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(\"div\", null) },\n react_1.default.createElement(HelpDlg, { handleClose: () => setHelpShown(false) }))) : null));\n}\nexports.default = SequenceFeaturePanel;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n fieldDescription: {\n '&:hover': {\n background: theme.palette.mode === 'dark' ? '#e65100' : 'yellow',\n },\n },\n fieldName: {\n wordBreak: 'break-all',\n minWidth: 90,\n borderBottom: '1px solid #0003',\n fontSize: 12,\n background: theme.palette.action.disabledBackground,\n marginRight: theme.spacing(1),\n padding: theme.spacing(0.5),\n },\n}));\nfunction FieldName({ description, name, width, prefix = [], }) {\n const { classes, cx } = useStyles();\n const val = [...prefix, name].join('.');\n return description ? (react_1.default.createElement(material_1.Tooltip, { title: description, placement: \"left\" },\n react_1.default.createElement(\"div\", { className: cx(classes.fieldDescription, classes.fieldName) }, val))) : (react_1.default.createElement(\"div\", { className: classes.fieldName, style: { width: width } }, val));\n}\nexports.default = FieldName;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst mui_1 = require(\"tss-react/mui\");\nconst is_object_1 = __importDefault(require(\"is-object\"));\nconst material_1 = require(\"@mui/material\");\n// locals\nconst ui_1 = require(\"../../ui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n fieldValue: {\n wordBreak: 'break-word',\n maxHeight: 300,\n fontSize: 12,\n padding: theme.spacing(0.5),\n overflow: 'auto',\n },\n}));\nfunction BasicValue({ value }) {\n const { classes } = useStyles();\n const isLink = `${value}`.match(/^https?:\\/\\//);\n return (react_1.default.createElement(\"div\", { className: classes.fieldValue }, react_1.default.isValidElement(value) ? (value) : isLink ? (react_1.default.createElement(material_1.Link, { href: `${value}` }, `${value}`)) : (react_1.default.createElement(ui_1.SanitizedHTML, { html: (0, is_object_1.default)(value) ? JSON.stringify(value) : String(value) }))));\n}\nexports.default = BasicValue;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst mui_1 = require(\"tss-react/mui\");\nconst FieldName_1 = __importDefault(require(\"./FieldName\"));\nconst BasicValue_1 = __importDefault(require(\"./BasicValue\"));\nconst useStyles = (0, mui_1.makeStyles)()({\n field: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n});\nfunction SimpleField({ name, value, description, prefix, width, }) {\n const { classes } = useStyles();\n return value !== null && value !== undefined ? (react_1.default.createElement(\"div\", { className: classes.field },\n react_1.default.createElement(FieldName_1.default, { prefix: prefix, description: description, name: name, width: width }),\n react_1.default.createElement(BasicValue_1.default, { value: value }))) : null;\n}\nexports.default = SimpleField;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.accessNested = exports.toLocale = exports.generateMaxWidth = exports.generateTitle = exports.isEmpty = void 0;\nconst is_object_1 = __importDefault(require(\"is-object\"));\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"../util\");\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nexports.isEmpty = isEmpty;\nfunction generateTitle(name, id, type) {\n return [(0, util_2.ellipses)(`${name}` || `${id}`), `${type}`]\n .filter(f => !!f)\n .join(' - ');\n}\nexports.generateTitle = generateTitle;\nfunction generateMaxWidth(array, prefix) {\n return (Math.ceil((0, util_1.max)(array.map(key => (0, util_1.measureText)([...prefix, key[0]].join('.'), 12)))) + 10);\n}\nexports.generateMaxWidth = generateMaxWidth;\nfunction toLocale(n) {\n return n.toLocaleString('en-US');\n}\nexports.toLocale = toLocale;\n// pick using a path from an object, similar to _.get from lodash with special\n// logic for Descriptions from e.g. VCF headers\n//\n// @param arr example ['a','b'], obj = {a:{b:'hello}}\n// @returns hello (with special addition to grab description also)\nfunction accessNested(arr, obj = {}) {\n let obj2 = obj;\n arr.forEach(elt => {\n if ((0, is_object_1.default)(obj2)) {\n obj2 = obj2[elt];\n }\n });\n return typeof obj2 === 'string'\n ? obj2\n : (0, is_object_1.default)(obj2) && typeof (obj2 === null || obj2 === void 0 ? void 0 : obj2.Description) === 'string'\n ? obj2.Description\n : undefined;\n}\nexports.accessNested = accessNested;\n","import * as React from 'react';\nexport const GridApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridApiContext.displayName = 'GridApiContext';\n}","import * as React from 'react';\nimport { GridApiContext } from '../../components/GridApiContext';\nexport function useGridApiContext() {\n const apiRef = React.useContext(GridApiContext);\n if (apiRef === undefined) {\n throw new Error(['MUI: Could not find the data grid context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n }\n return apiRef;\n}","import * as React from 'react';\n/**\n * Hook that instantiate a [[GridApiRef]].\n */\nexport const useGridApiRef = () => React.useRef({});","import * as React from 'react';\nconst GridRootPropsContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridRootPropsContext.displayName = 'GridRootPropsContext';\n}\nexport { GridRootPropsContext };","import * as React from 'react';\nimport { GridRootPropsContext } from '../../context/GridRootPropsContext';\nexport const useGridRootProps = () => {\n const contextValue = React.useContext(GridRootPropsContext);\n if (!contextValue) {\n throw new Error('MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.');\n }\n return contextValue;\n};","import * as React from 'react';\nexport const GridPrivateApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridPrivateApiContext.displayName = 'GridPrivateApiContext';\n}\nexport function useGridPrivateApiContext() {\n const privateApiRef = React.useContext(GridPrivateApiContext);\n if (privateApiRef === undefined) {\n throw new Error(['MUI: Could not find the data grid private context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n }\n return privateApiRef;\n}","import * as React from 'react';\nconst UNINITIALIZED = {};\n\n// See https://github.com/facebook/react/issues/14490 for when to use this.\nexport function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","import * as React from 'react';\nconst EMPTY = [];\nexport function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","export const buildWarning = (message, gravity = 'warning') => {\n let alreadyWarned = false;\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n return () => {\n if (!alreadyWarned) {\n alreadyWarned = true;\n if (gravity === 'error') {\n console.error(cleanMessage);\n } else {\n console.warn(cleanMessage);\n }\n }\n };\n};\nexport const wrapWithWarningOnCall = (method, message) => {\n if (process.env.NODE_ENV === 'production') {\n return method;\n }\n const warning = buildWarning(message);\n return (...args) => {\n warning();\n return method(...args);\n };\n};","const is = Object.is;\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable no-restricted-syntax */\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n /* eslint-enable no-restricted-syntax */\n /* eslint-enable guard-for-in */\n\n return aLength === bLength;\n}","import * as React from 'react';\nimport { useLazyRef } from './useLazyRef';\nimport { useOnMount } from './useOnMount';\nimport { buildWarning } from '../../utils/warning';\nimport { fastObjectShallowCompare } from '../../utils/fastObjectShallowCompare';\nconst stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);\nfunction isOutputSelector(selector) {\n return selector.acceptsApiRef;\n}\nfunction applySelector(apiRef, selector) {\n if (isOutputSelector(selector)) {\n return selector(apiRef);\n }\n return selector(apiRef.current.state);\n}\nconst defaultCompare = Object.is;\nexport const objectShallowCompare = fastObjectShallowCompare;\nconst createRefs = () => ({\n state: null,\n equals: null,\n selector: null\n});\nexport const useGridSelector = (apiRef, selector, equals = defaultCompare) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!apiRef.current.state) {\n stateNotInitializedWarning();\n }\n }\n const refs = useLazyRef(createRefs);\n const didInit = refs.current.selector !== null;\n const [state, setState] = React.useState(\n // We don't use an initialization function to avoid allocations\n didInit ? null : applySelector(apiRef, selector));\n refs.current.state = state;\n refs.current.equals = equals;\n refs.current.selector = selector;\n useOnMount(() => {\n return apiRef.current.store.subscribe(() => {\n const newState = applySelector(apiRef, refs.current.selector);\n if (!refs.current.equals(refs.current.state, newState)) {\n refs.current.state = newState;\n setState(newState);\n }\n });\n });\n return state;\n};","import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nexport function getDataGridUtilityClass(slot) {\n return generateUtilityClass('MuiDataGrid', slot);\n}\nexport const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","import { createSelector as reselectCreateSelector } from 'reselect';\nimport { buildWarning } from './warning';\nconst cacheContainer = {\n cache: new WeakMap()\n};\nconst missingInstanceIdWarning = buildWarning(['MUI: A selector was called without passing the instance ID, which may impact the performance of the grid.', 'To fix, call it with `apiRef`, e.g. `mySelector(apiRef)`, or pass the instance ID explicitly, e.g. `mySelector(state, apiRef.current.instanceId)`.']);\nfunction checkIsAPIRef(value) {\n return 'current' in value && 'instanceId' in value.current;\n}\nconst DEFAULT_INSTANCE_ID = {\n id: 'default'\n};\nexport const createSelector = (a, b, c, d, e, f, ...rest) => {\n if (rest.length > 0) {\n throw new Error('Unsupported number of selectors');\n }\n let selector;\n if (a && b && c && d && e && f) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n const vd = d(state, instanceId);\n const ve = e(state, instanceId);\n return f(va, vb, vc, vd, ve);\n };\n } else if (a && b && c && d && e) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n const vd = d(state, instanceId);\n return e(va, vb, vc, vd);\n };\n } else if (a && b && c && d) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n return d(va, vb, vc);\n };\n } else if (a && b && c) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n return c(va, vb);\n };\n } else if (a && b) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n return b(va);\n };\n } else {\n throw new Error('Missing arguments');\n }\n\n // We use this property to detect if the selector was created with createSelector\n // or it's only a simple function the receives the state and returns part of it.\n selector.acceptsApiRef = true;\n return selector;\n};\nexport const createSelectorMemoized = (...args) => {\n const selector = (...selectorArgs) => {\n var _cache$get, _cache$get3;\n const [stateOrApiRef, instanceId] = selectorArgs;\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const cacheKey = isAPIRef ? stateOrApiRef.current.instanceId : instanceId != null ? instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n if (process.env.NODE_ENV !== 'production') {\n if (cacheKey.id === 'default') {\n missingInstanceIdWarning();\n }\n }\n const {\n cache\n } = cacheContainer;\n if (cache.get(cacheKey) && (_cache$get = cache.get(cacheKey)) != null && _cache$get.get(args)) {\n var _cache$get2;\n // We pass the cache key because the called selector might have as\n // dependency another selector created with this `createSelector`.\n return (_cache$get2 = cache.get(cacheKey)) == null ? void 0 : _cache$get2.get(args)(state, cacheKey);\n }\n const newSelector = reselectCreateSelector(...args);\n if (!cache.get(cacheKey)) {\n cache.set(cacheKey, new Map());\n }\n (_cache$get3 = cache.get(cacheKey)) == null || _cache$get3.set(args, newSelector);\n return newSelector(state, cacheKey);\n };\n\n // We use this property to detect if the selector was created with createSelector\n // or it's only a simple function the receives the state and returns part of it.\n selector.acceptsApiRef = true;\n return selector;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCreateSelectorCache = () => {\n cacheContainer.cache = new WeakMap();\n};","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\n/**\n * Get the columns state\n * @category Columns\n */\nexport const gridColumnsStateSelector = state => state.columns;\n\n/**\n * Get an array of column fields in the order rendered on screen.\n * @category Columns\n */\nexport const gridColumnFieldsSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.orderedFields);\n\n/**\n * Get the columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridColumnLookupSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.lookup);\n\n/**\n * Get an array of column definitions in the order rendered on screen..\n * @category Columns\n */\nexport const gridColumnDefinitionsSelector = createSelectorMemoized(gridColumnFieldsSelector, gridColumnLookupSelector, (allFields, lookup) => allFields.map(field => lookup[field]));\n\n/**\n * Get the column visibility model, containing the visibility status of each column.\n * If a column is not registered in the model, it is visible.\n * @category Visible Columns\n */\nexport const gridColumnVisibilityModelSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.columnVisibilityModel);\n\n/**\n * Get the visible columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Visible Columns\n */\nexport const gridVisibleColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, (columns, columnVisibilityModel) => columns.filter(column => columnVisibilityModel[column.field] !== false));\n\n/**\n * Get the field of each visible column.\n * @category Visible Columns\n */\nexport const gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => visibleColumns.map(column => column.field));\n\n/**\n * Get the left position in pixel of each visible columns relative to the left of the first column.\n * @category Visible Columns\n */\nexport const gridColumnPositionsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => {\n const positions = [];\n let currentPosition = 0;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n positions.push(currentPosition);\n currentPosition += visibleColumns[i].computedWidth;\n }\n return positions;\n});\n\n/**\n * Get the summed width of all the visible columns.\n * @category Visible Columns\n */\nexport const gridColumnsTotalWidthSelector = createSelector(gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, (visibleColumns, positions) => {\n const colCount = visibleColumns.length;\n if (colCount === 0) {\n return 0;\n }\n return positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth;\n});\n\n/**\n * Get the filterable columns as an array.\n * @category Columns\n */\nexport const gridFilterableColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.filter(col => col.filterable));\n\n/**\n * Get the filterable columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridFilterableColumnLookupSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.reduce((acc, col) => {\n if (col.filterable) {\n acc[col.field] = col;\n }\n return acc;\n}, {}));","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\n/**\n * @category ColumnGrouping\n * @ignore - do not document.\n */\nexport const gridColumnGroupingSelector = state => state.columnGrouping;\nexport const gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$unwra;\n return (_columnGrouping$unwra = columnGrouping == null ? void 0 : columnGrouping.unwrappedGroupingModel) != null ? _columnGrouping$unwra : {};\n});\nexport const gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$looku;\n return (_columnGrouping$looku = columnGrouping == null ? void 0 : columnGrouping.lookup) != null ? _columnGrouping$looku : {};\n});\nexport const gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$heade;\n return (_columnGrouping$heade = columnGrouping == null ? void 0 : columnGrouping.headerStructure) != null ? _columnGrouping$heade : [];\n});\nexport const gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$maxDe;\n return (_columnGrouping$maxDe = columnGrouping == null ? void 0 : columnGrouping.maxDepth) != null ? _columnGrouping$maxDe : 0;\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nconst gridRowsStateSelector = state => state.rows;\nexport const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);\nexport const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);\nexport const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);\n\n// TODO rows v6: Rename\nexport const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);\nexport const gridRowsDataRowIdToIdLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToIdLookup);\nexport const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);\nexport const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);\nexport const gridRowTreeDepthsSelector = createSelector(gridRowsStateSelector, rows => rows.treeDepths);\nexport const gridRowMaximumTreeDepthSelector = createSelectorMemoized(gridRowsStateSelector, rows => {\n const entries = Object.entries(rows.treeDepths);\n if (entries.length === 0) {\n return 1;\n }\n return entries.filter(([, nodeCount]) => nodeCount > 0).map(([depth]) => Number(depth)).sort((a, b) => b - a)[0] + 1;\n});\nexport const gridDataRowIdsSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIds);\n\n/**\n * @ignore - do not document.\n */\nexport const gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelector, rows => rows == null ? void 0 : rows.additionalRowGroups);\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGroupsSelector, additionalRowGroups => {\n var _rawPinnedRows$bottom, _rawPinnedRows$top;\n const rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;\n return {\n bottom: rawPinnedRows == null || (_rawPinnedRows$bottom = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom.map(rowEntry => {\n var _rowEntry$model;\n return {\n id: rowEntry.id,\n model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}\n };\n }),\n top: rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {\n var _rowEntry$model2;\n return {\n id: rowEntry.id,\n model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}\n };\n })\n };\n});\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsCountSelector = createSelector(gridPinnedRowsSelector, pinnedRows => {\n var _pinnedRows$top, _pinnedRows$bottom;\n return ((pinnedRows == null || (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.length) || 0) + ((pinnedRows == null || (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.length) || 0);\n});","import { gridVisibleColumnDefinitionsSelector } from '../features/columns/gridColumnsSelector';\nimport { useGridSelector } from './useGridSelector';\nimport { useGridRootProps } from './useGridRootProps';\nimport { gridColumnGroupsHeaderMaxDepthSelector } from '../features/columnGrouping/gridColumnGroupsSelector';\nimport { gridPinnedRowsCountSelector, gridRowCountSelector } from '../features/rows/gridRowsSelector';\nimport { useGridPrivateApiContext } from './useGridPrivateApiContext';\nexport const useGridAriaAttributes = () => {\n var _rootProps$experiment;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector);\n let role = 'grid';\n if ((_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 && rootProps.treeData) {\n role = 'treegrid';\n }\n return {\n role,\n 'aria-colcount': visibleColumns.length,\n 'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,\n 'aria-multiselectable': !rootProps.disableMultipleRowSelection\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['main']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridMainContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Main',\n overridesResolver: (props, styles) => styles.main\n})(() => ({\n position: 'relative',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n}));\nexport const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _rootProps$experiment;\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const getAriaAttributes = (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 // ariaV7 should never change\n ? useGridAriaAttributes : null;\n const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;\n return /*#__PURE__*/_jsx(GridMainContainerRoot, _extends({\n ref: ref,\n className: classes.root,\n ownerState: rootProps\n }, ariaAttributes, {\n children: props.children\n }));\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridRowsLookupSelector } from '../rows/gridRowsSelector';\n\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nconst gridSortingStateSelector = state => state.sorting;\n\n/**\n * Get the id of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowIdsSelector = createSelector(gridSortingStateSelector, sortingState => sortingState.sortedRows);\n\n/**\n * Get the id and the model of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowEntriesSelector = createSelectorMemoized(gridSortedRowIdsSelector, gridRowsLookupSelector,\n// TODO rows v6: Is this the best approach ?\n(sortedIds, idRowsLookup) => sortedIds.map(id => {\n var _idRowsLookup$id;\n return {\n id,\n model: (_idRowsLookup$id = idRowsLookup[id]) != null ? _idRowsLookup$id : {}\n };\n}));\n\n/**\n * Get the current sorting model.\n * @category Sorting\n */\nexport const gridSortModelSelector = createSelector(gridSortingStateSelector, sorting => sorting.sortModel);\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nexport const gridSortColumnLookupSelector = createSelectorMemoized(gridSortModelSelector, sortModel => {\n const result = sortModel.reduce((res, sortItem, index) => {\n res[sortItem.field] = {\n sortDirection: sortItem.sort,\n sortIndex: sortModel.length > 1 ? index + 1 : undefined\n };\n return res;\n }, {});\n return result;\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridSortedRowEntriesSelector } from '../sorting/gridSortingSelector';\nimport { gridColumnLookupSelector } from '../columns/gridColumnsSelector';\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\n\n/**\n * @category Filtering\n */\nconst gridFilterStateSelector = state => state.filter;\n\n/**\n * Get the current filter model.\n * @category Filtering\n */\nexport const gridFilterModelSelector = createSelector(gridFilterStateSelector, filterState => filterState.filterModel);\n\n/**\n * Get the current quick filter values.\n * @category Filtering\n */\nexport const gridQuickFilterValuesSelector = createSelector(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);\n\n/**\n * @category Visible rows\n * @ignore - do not document.\n */\nexport const gridVisibleRowsLookupSelector = state => state.visibleRowsLookup;\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredRowsLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredRowsLookup);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredDescendantCountLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredDescendantCountLookup);\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowEntriesSelector = createSelectorMemoized(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, visibleSortedRowEntries => visibleSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowEntriesSelector = createSelectorMemoized(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowIdsSelector = createSelectorMemoized(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredSortedTopLevelRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {\n if (rowTreeDepth < 2) {\n return visibleSortedRows;\n }\n return visibleSortedRows.filter(row => {\n var _rowTree$row$id;\n return ((_rowTree$row$id = rowTree[row.id]) == null ? void 0 : _rowTree$row$id.depth) === 0;\n });\n});\n\n/**\n * Get the amount of rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridExpandedRowCountSelector = createSelector(gridExpandedSortedRowEntriesSelector, visibleSortedRows => visibleSortedRows.length);\n\n/**\n * Get the amount of top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredTopLevelRowCountSelector = createSelector(gridFilteredSortedTopLevelRowEntriesSelector, visibleSortedTopLevelRows => visibleSortedTopLevelRows.length);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsSelector = createSelectorMemoized(gridFilterModelSelector, gridColumnLookupSelector, (filterModel, columnLookup) => {\n var _filterModel$items;\n return (_filterModel$items = filterModel.items) == null ? void 0 : _filterModel$items.filter(item => {\n var _column$filterOperato, _item$value;\n if (!item.field) {\n return false;\n }\n const column = columnLookup[item.field];\n if (!(column != null && column.filterOperators) || (column == null || (_column$filterOperato = column.filterOperators) == null ? void 0 : _column$filterOperato.length) === 0) {\n return false;\n }\n const filterOperator = column.filterOperators.find(operator => operator.value === item.operator);\n if (!filterOperator) {\n return false;\n }\n return !filterOperator.InputComponent || item.value != null && ((_item$value = item.value) == null ? void 0 : _item$value.toString()) !== '';\n });\n});\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsLookupSelector = createSelectorMemoized(gridFilterActiveItemsSelector, activeFilters => {\n const result = activeFilters.reduce((res, filterItem) => {\n if (!res[filterItem.field]) {\n res[filterItem.field] = [filterItem];\n } else {\n res[filterItem.field].push(filterItem);\n }\n return res;\n }, {});\n return result;\n});","import { createSelector } from '../../../utils/createSelector';\nexport const gridFocusStateSelector = state => state.focus;\nexport const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);\nexport const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);\nexport const gridTabIndexStateSelector = state => state.tabIndex;\nexport const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);\nexport const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);","import { createSelector } from '../../../utils/createSelector';\nexport const gridDensitySelector = state => state.density;\nexport const gridDensityValueSelector = createSelector(gridDensitySelector, density => density.value);\nexport const gridDensityFactorSelector = createSelector(gridDensitySelector, density => density.factor);","export const gridColumnMenuSelector = state => state.columnMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { GridMainContainer } from '../containers/GridMainContainer';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridColumnPositionsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { gridFilterActiveItemsLookupSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridSortColumnLookupSelector } from '../../hooks/features/sorting/gridSortingSelector';\nimport { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { gridDensityFactorSelector } from '../../hooks/features/density/densitySelector';\nimport { gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../../hooks/features/columnGrouping/gridColumnGroupsSelector';\nimport { gridColumnMenuSelector } from '../../hooks/features/columnMenu/columnMenuSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridBody(props) {\n const {\n VirtualScrollerComponent,\n ColumnHeadersProps,\n children\n } = props;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const rootRef = React.useRef(null);\n const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);\n const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);\n const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);\n const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);\n const columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);\n const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);\n const columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);\n const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);\n const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);\n const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);\n useEnhancedEffect(() => {\n apiRef.current.computeSizeAndPublishResizeEvent();\n const elementToObserve = rootRef.current;\n if (typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n let animationFrame;\n const observer = new ResizeObserver(() => {\n // See https://github.com/mui/mui-x/issues/8733\n animationFrame = requestAnimationFrame(() => {\n apiRef.current.computeSizeAndPublishResizeEvent();\n });\n });\n if (elementToObserve) {\n observer.observe(elementToObserve);\n }\n return () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (elementToObserve) {\n observer.unobserve(elementToObserve);\n }\n };\n }, [apiRef]);\n const columnHeadersRef = React.useRef(null);\n const columnsContainerRef = React.useRef(null);\n const virtualScrollerRef = React.useRef(null);\n apiRef.current.register('private', {\n columnHeadersContainerElementRef: columnsContainerRef,\n columnHeadersElementRef: columnHeadersRef,\n virtualScrollerRef,\n mainElementRef: rootRef\n });\n const hasDimensions = !!apiRef.current.getRootDimensions();\n return /*#__PURE__*/_jsxs(GridMainContainer, {\n ref: rootRef,\n children: [/*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({\n ref: columnsContainerRef,\n innerRef: columnHeadersRef,\n visibleColumns: visibleColumns,\n filterColumnLookup: filterColumnLookup,\n sortColumnLookup: sortColumnLookup,\n columnPositions: columnPositions,\n columnHeaderTabIndexState: columnHeaderTabIndexState,\n columnGroupHeaderTabIndexState: columnGroupHeaderTabIndexState,\n columnHeaderFocus: columnHeaderFocus,\n columnGroupHeaderFocus: columnGroupHeaderFocus,\n densityFactor: densityFactor,\n headerGroupingMaxDepth: headerGroupingMaxDepth,\n columnMenuState: columnMenuState,\n columnVisibility: columnVisibility,\n columnGroupsHeaderStructure: columnGroupsHeaderStructure,\n hasOtherElementInTabSequence: hasOtherElementInTabSequence\n }, ColumnHeadersProps)), hasDimensions && /*#__PURE__*/_jsx(VirtualScrollerComponent\n // The content is only rendered after dimensions are computed because\n // the lazy-loading hook is listening to `renderedRowsIntervalChange`,\n // but only does something if the dimensions are also available.\n // If this event is published while dimensions haven't been computed,\n // the `onFetchRows` prop won't be called during mount.\n , {\n ref: virtualScrollerRef\n }), children]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridBody.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n ColumnHeadersProps: PropTypes.object,\n VirtualScrollerComponent: PropTypes.elementType.isRequired\n} : void 0;\nexport { GridBody };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridFooterPlaceholder() {\n var _rootProps$slotProps;\n const rootProps = useGridRootProps();\n if (rootProps.hideFooter) {\n return null;\n }\n return /*#__PURE__*/_jsx(rootProps.slots.footer, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.footer));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridPinnedRowsSelector } from './gridRowsSelector';\nimport { gridDensityFactorSelector } from '../density/densitySelector';\nexport const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;\nexport const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');\nexport const buildRootGroup = () => ({\n type: 'group',\n id: GRID_ROOT_GROUP_ID,\n depth: -1,\n groupingField: null,\n groupingKey: null,\n isAutoGenerated: true,\n children: [],\n childrenFromPath: {},\n childrenExpanded: true,\n parent: null\n});\n\n/**\n * A helper function to check if the id provided is valid.\n * @param {GridRowId} id Id as [[GridRowId]].\n * @param {GridRowModel | Partial} row Row as [[GridRowModel]].\n * @param {string} detailErrorMessage A custom error message to display for invalid IDs\n */\nexport function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {\n if (id == null) {\n throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\\n'));\n }\n}\nexport const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {\n const id = getRowId ? getRowId(rowModel) : rowModel.id;\n checkGridRowIdIsValid(id, rowModel, detailErrorMessage);\n return id;\n};\nexport const createRowsInternalCache = ({\n rows,\n getRowId,\n loading,\n rowCount\n}) => {\n const updates = {\n type: 'full',\n rows: []\n };\n const dataRowIdToModelLookup = {};\n const dataRowIdToIdLookup = {};\n for (let i = 0; i < rows.length; i += 1) {\n const model = rows[i];\n const id = getRowIdFromRowModel(model, getRowId);\n dataRowIdToModelLookup[id] = model;\n dataRowIdToIdLookup[id] = id;\n updates.rows.push(id);\n }\n return {\n rowsBeforePartialUpdates: rows,\n loadingPropBeforePartialUpdates: loading,\n rowCountPropBeforePartialUpdates: rowCount,\n updates,\n dataRowIdToIdLookup,\n dataRowIdToModelLookup\n };\n};\nexport const getTopLevelRowCount = ({\n tree,\n rowCountProp = 0\n}) => {\n const rootGroupNode = tree[GRID_ROOT_GROUP_ID];\n return Math.max(rowCountProp, rootGroupNode.children.length + (rootGroupNode.footerId == null ? 0 : 1));\n};\nexport const getRowsStateFromCache = ({\n apiRef,\n rowCountProp = 0,\n loadingProp,\n previousTree,\n previousTreeDepths\n}) => {\n const cache = apiRef.current.caches.rows;\n\n // 1. Apply the \"rowTreeCreation\" family processing.\n const {\n tree: unProcessedTree,\n treeDepths: unProcessedTreeDepths,\n dataRowIds: unProcessedDataRowIds,\n groupingName\n } = apiRef.current.applyStrategyProcessor('rowTreeCreation', {\n previousTree,\n previousTreeDepths,\n updates: cache.updates,\n dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n dataRowIdToModelLookup: cache.dataRowIdToModelLookup\n });\n\n // 2. Apply the \"hydrateRows\" pipe-processing.\n const groupingParamsWithHydrateRows = apiRef.current.unstable_applyPipeProcessors('hydrateRows', {\n tree: unProcessedTree,\n treeDepths: unProcessedTreeDepths,\n dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n dataRowIds: unProcessedDataRowIds,\n dataRowIdToModelLookup: cache.dataRowIdToModelLookup\n });\n\n // 3. Reset the cache updates\n apiRef.current.caches.rows.updates = {\n type: 'partial',\n actions: {\n insert: [],\n modify: [],\n remove: []\n },\n idToActionLookup: {}\n };\n return _extends({}, groupingParamsWithHydrateRows, {\n totalRowCount: Math.max(rowCountProp, groupingParamsWithHydrateRows.dataRowIds.length),\n totalTopLevelRowCount: getTopLevelRowCount({\n tree: groupingParamsWithHydrateRows.tree,\n rowCountProp\n }),\n groupingName,\n loading: loadingProp\n });\n};\nexport const isAutoGeneratedRow = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;\nexport const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {\n const node = tree[parentId];\n if (node.type !== 'group') {\n return [];\n }\n const validDescendants = [];\n for (let i = 0; i < node.children.length; i += 1) {\n const child = node.children[i];\n if (!skipAutoGeneratedRows || !isAutoGeneratedRow(tree[child])) {\n validDescendants.push(child);\n }\n validDescendants.push(...getTreeNodeDescendants(tree, child, skipAutoGeneratedRows));\n }\n if (!skipAutoGeneratedRows && node.footerId != null) {\n validDescendants.push(node.footerId);\n }\n return validDescendants;\n};\nexport const updateCacheWithNewRows = ({\n previousCache,\n getRowId,\n updates\n}) => {\n var _previousCache$update, _previousCache$update2, _previousCache$update3;\n if (previousCache.updates.type === 'full') {\n throw new Error('MUI: Unable to prepare a partial update if a full update is not applied yet');\n }\n\n // Remove duplicate updates.\n // A server can batch updates, and send several updates for the same row in one fn call.\n const uniqueUpdates = new Map();\n updates.forEach(update => {\n const id = getRowIdFromRowModel(update, getRowId, 'A row was provided without id when calling updateRows():');\n if (uniqueUpdates.has(id)) {\n uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));\n } else {\n uniqueUpdates.set(id, update);\n }\n });\n const partialUpdates = {\n type: 'partial',\n actions: {\n insert: [...((_previousCache$update = previousCache.updates.actions.insert) != null ? _previousCache$update : [])],\n modify: [...((_previousCache$update2 = previousCache.updates.actions.modify) != null ? _previousCache$update2 : [])],\n remove: [...((_previousCache$update3 = previousCache.updates.actions.remove) != null ? _previousCache$update3 : [])]\n },\n idToActionLookup: _extends({}, previousCache.updates.idToActionLookup)\n };\n const dataRowIdToModelLookup = _extends({}, previousCache.dataRowIdToModelLookup);\n const dataRowIdToIdLookup = _extends({}, previousCache.dataRowIdToIdLookup);\n const alreadyAppliedActionsToRemove = {\n insert: {},\n modify: {},\n remove: {}\n };\n\n // Depending on the action already applied to the data row,\n // We might want drop the already-applied-update.\n // For instance:\n // - if you delete then insert, then you don't want to apply the deletion in the tree.\n // - if you insert, then modify, then you just want to apply the insertion in the tree.\n uniqueUpdates.forEach((partialRow, id) => {\n const actionAlreadyAppliedToRow = partialUpdates.idToActionLookup[id];\n\n // Action === \"delete\"\n // eslint-disable-next-line no-underscore-dangle\n if (partialRow._action === 'delete') {\n // If the data row has been removed since the last state update,\n // Then do nothing.\n if (actionAlreadyAppliedToRow === 'remove' || !dataRowIdToModelLookup[id]) {\n return;\n }\n\n // If the data row has been inserted / modified since the last state update,\n // Then drop this \"insert\" / \"modify\" update.\n if (actionAlreadyAppliedToRow != null) {\n alreadyAppliedActionsToRemove[actionAlreadyAppliedToRow][id] = true;\n }\n\n // Remove the data row from the lookups and add it to the \"delete\" update.\n partialUpdates.actions.remove.push(id);\n delete dataRowIdToModelLookup[id];\n delete dataRowIdToIdLookup[id];\n return;\n }\n const oldRow = dataRowIdToModelLookup[id];\n\n // Action === \"modify\"\n if (oldRow) {\n // If the data row has been removed since the last state update,\n // Then drop this \"remove\" update and add it to the \"modify\" update instead.\n if (actionAlreadyAppliedToRow === 'remove') {\n alreadyAppliedActionsToRemove.remove[id] = true;\n partialUpdates.actions.modify.push(id);\n }\n // If the date has not been inserted / modified since the last state update,\n // Then add it to the \"modify\" update (if it has been inserted it should just remain \"inserted\").\n else if (actionAlreadyAppliedToRow == null) {\n partialUpdates.actions.modify.push(id);\n }\n\n // Update the data row lookups.\n dataRowIdToModelLookup[id] = _extends({}, oldRow, partialRow);\n return;\n }\n\n // Action === \"insert\"\n // If the data row has been removed since the last state update,\n // Then drop the \"remove\" update and add it to the \"insert\" update instead.\n if (actionAlreadyAppliedToRow === 'remove') {\n alreadyAppliedActionsToRemove.remove[id] = true;\n partialUpdates.actions.insert.push(id);\n }\n // If the data row has not been inserted since the last state update,\n // Then add it to the \"insert\" update.\n // `actionAlreadyAppliedToRow` can't be equal to \"modify\", otherwise we would have an `oldRow` above.\n else if (actionAlreadyAppliedToRow == null) {\n partialUpdates.actions.insert.push(id);\n }\n\n // Update the data row lookups.\n dataRowIdToModelLookup[id] = partialRow;\n dataRowIdToIdLookup[id] = id;\n });\n const actionTypeWithActionsToRemove = Object.keys(alreadyAppliedActionsToRemove);\n for (let i = 0; i < actionTypeWithActionsToRemove.length; i += 1) {\n const actionType = actionTypeWithActionsToRemove[i];\n const idsToRemove = alreadyAppliedActionsToRemove[actionType];\n if (Object.keys(idsToRemove).length > 0) {\n partialUpdates.actions[actionType] = partialUpdates.actions[actionType].filter(id => !idsToRemove[id]);\n }\n }\n return {\n dataRowIdToModelLookup,\n dataRowIdToIdLookup,\n updates: partialUpdates,\n rowsBeforePartialUpdates: previousCache.rowsBeforePartialUpdates,\n loadingPropBeforePartialUpdates: previousCache.loadingPropBeforePartialUpdates,\n rowCountPropBeforePartialUpdates: previousCache.rowCountPropBeforePartialUpdates\n };\n};\nexport function calculatePinnedRowsHeight(apiRef) {\n var _pinnedRows$top, _pinnedRows$bottom;\n const pinnedRows = gridPinnedRowsSelector(apiRef);\n const topPinnedRowsHeight = (pinnedRows == null || (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.reduce((acc, value) => {\n acc += apiRef.current.unstable_getRowHeight(value.id);\n return acc;\n }, 0)) || 0;\n const bottomPinnedRowsHeight = (pinnedRows == null || (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.reduce((acc, value) => {\n acc += apiRef.current.unstable_getRowHeight(value.id);\n return acc;\n }, 0)) || 0;\n return {\n top: topPinnedRowsHeight,\n bottom: bottomPinnedRowsHeight\n };\n}\nexport function getMinimalContentHeight(apiRef, rowHeight) {\n const densityFactor = gridDensityFactorSelector(apiRef);\n return `var(--DataGrid-overlayHeight, ${2 * Math.floor(rowHeight * densityFactor)}px)`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport clsx from 'clsx';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridExpandedRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getMinimalContentHeight } from '../../hooks/features/rows/gridRowsUtils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridOverlayWrapperRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'OverlayWrapper',\n shouldForwardProp: prop => prop !== 'overlayType',\n overridesResolver: (props, styles) => styles.overlayWrapper\n})(({\n overlayType\n}) => ({\n position: 'sticky',\n // To stay in place while scrolling\n top: 0,\n left: 0,\n width: 0,\n // To stay above the content instead of shifting it down\n height: 0,\n // To stay above the content instead of shifting it down\n zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel\n : 4 // Should be above pinned columns and detail panel\n}));\n\nconst GridOverlayWrapperInner = styled('div', {\n name: 'MuiDataGrid',\n slot: 'OverlayWrapperInner',\n shouldForwardProp: prop => prop !== 'overlayType',\n overridesResolver: (props, styles) => styles.overlayWrapperInner\n})({});\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['overlayWrapper'],\n inner: ['overlayWrapperInner']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridOverlayWrapper(props) {\n var _viewportInnerSize$he, _viewportInnerSize$wi;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const [viewportInnerSize, setViewportInnerSize] = React.useState(() => {\n var _apiRef$current$getRo, _apiRef$current$getRo2;\n return (_apiRef$current$getRo = (_apiRef$current$getRo2 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo2.viewportInnerSize) != null ? _apiRef$current$getRo : null;\n });\n const handleViewportSizeChange = React.useCallback(() => {\n var _apiRef$current$getRo3, _apiRef$current$getRo4;\n setViewportInnerSize((_apiRef$current$getRo3 = (_apiRef$current$getRo4 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo4.viewportInnerSize) != null ? _apiRef$current$getRo3 : null);\n }, [apiRef]);\n useEnhancedEffect(() => {\n return apiRef.current.subscribeEvent('viewportInnerSizeChange', handleViewportSizeChange);\n }, [apiRef, handleViewportSizeChange]);\n let height = (_viewportInnerSize$he = viewportInnerSize == null ? void 0 : viewportInnerSize.height) != null ? _viewportInnerSize$he : 0;\n if (rootProps.autoHeight && height === 0) {\n height = getMinimalContentHeight(apiRef, rootProps.rowHeight); // Give room to show the overlay when there no rows.\n }\n\n const classes = useUtilityClasses(_extends({}, props, {\n classes: rootProps.classes\n }));\n if (!viewportInnerSize) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridOverlayWrapperRoot, {\n className: clsx(classes.root),\n overlayType: props.overlayType,\n children: /*#__PURE__*/_jsx(GridOverlayWrapperInner, _extends({\n className: clsx(classes.inner),\n style: {\n height,\n width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0\n }\n }, props))\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridOverlayWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n overlayType: PropTypes.string.isRequired\n} : void 0;\nexport function GridOverlays() {\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);\n const visibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector);\n const loading = useGridSelector(apiRef, gridRowsLoadingSelector);\n const showNoRowsOverlay = !loading && totalRowCount === 0;\n const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;\n let overlay = null;\n let overlayType = '';\n if (showNoRowsOverlay) {\n var _rootProps$slotProps;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.noRowsOverlay, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.noRowsOverlay));\n overlayType = 'noRowsOverlay';\n }\n if (showNoResultsOverlay) {\n var _rootProps$slotProps2;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.noResultsOverlay, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.noResultsOverlay));\n overlayType = 'noResultsOverlay';\n }\n if (loading) {\n var _rootProps$slotProps3;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.loadingOverlay, _extends({}, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.loadingOverlay));\n overlayType = 'loadingOverlay';\n }\n if (overlay === null) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridOverlayWrapper, {\n overlayType: overlayType,\n children: overlay\n });\n}","import * as React from 'react';\nimport { fastObjectShallowCompare } from './fastObjectShallowCompare';\nexport function fastMemo(component) {\n return /*#__PURE__*/React.memo(component, fastObjectShallowCompare);\n}","// Based on https://stackoverflow.com/a/59518678\nlet cachedSupportsPreventScroll;\nexport function doesSupportPreventScroll() {\n if (cachedSupportsPreventScroll === undefined) {\n document.createElement('div').focus({\n get preventScroll() {\n cachedSupportsPreventScroll = true;\n return false;\n }\n });\n }\n return cachedSupportsPreventScroll;\n}","var GridEditModes = /*#__PURE__*/function (GridEditModes) {\n GridEditModes[\"Cell\"] = \"cell\";\n GridEditModes[\"Row\"] = \"row\";\n return GridEditModes;\n}(GridEditModes || {});\nvar GridCellModes = /*#__PURE__*/function (GridCellModes) {\n GridCellModes[\"Edit\"] = \"edit\";\n GridCellModes[\"View\"] = \"view\";\n return GridCellModes;\n}(GridCellModes || {});\nvar GridRowModes = /*#__PURE__*/function (GridRowModes) {\n GridRowModes[\"Edit\"] = \"edit\";\n GridRowModes[\"View\"] = \"view\";\n return GridRowModes;\n}(GridRowModes || {});\nexport { GridEditModes, GridCellModes, GridRowModes };","/**\n * Filter item definition interface.\n * @demos\n * - [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator)\n */\nvar GridLogicOperator = /*#__PURE__*/function (GridLogicOperator) {\n GridLogicOperator[\"And\"] = \"and\";\n GridLogicOperator[\"Or\"] = \"or\";\n return GridLogicOperator;\n}(GridLogicOperator || {});\nexport { GridLogicOperator };","/**\n * Params passed to `apiRef.current.setEditCellValue`.\n */\nvar GridCellEditStartReasons = /*#__PURE__*/function (GridCellEditStartReasons) {\n GridCellEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridCellEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n GridCellEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n GridCellEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n return GridCellEditStartReasons;\n}(GridCellEditStartReasons || {});\n/**\n * Params passed to the `cellEditStart` event.\n */\nvar GridCellEditStopReasons = /*#__PURE__*/function (GridCellEditStopReasons) {\n GridCellEditStopReasons[\"cellFocusOut\"] = \"cellFocusOut\";\n GridCellEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n GridCellEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridCellEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n GridCellEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n return GridCellEditStopReasons;\n}(GridCellEditStopReasons || {});\n/**\n * Params passed to the `cellEditStop event.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridCellEditStartReasons, GridCellEditStopReasons };","/**\n * Object passed as parameter in the row callbacks.\n * @demos\n * - [Master detail](/x/react-data-grid/master-detail/)\n */\n/**\n * Object passed as parameter in the row `getRowClassName` callback prop.\n * @demos\n * - [Styling rows](/x/react-data-grid/style/#styling-rows)\n */\n/**\n * Object passed as parameter in the row `getRowHeight` callback prop.\n */\n/**\n * The getRowHeight return value.\n */\nvar GridRowEditStartReasons = /*#__PURE__*/function (GridRowEditStartReasons) {\n GridRowEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridRowEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n GridRowEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n GridRowEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n return GridRowEditStartReasons;\n}(GridRowEditStartReasons || {});\n/**\n * Params passed to the `rowEditStart` event.\n */\nvar GridRowEditStopReasons = /*#__PURE__*/function (GridRowEditStopReasons) {\n GridRowEditStopReasons[\"rowFocusOut\"] = \"rowFocusOut\";\n GridRowEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n GridRowEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridRowEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n GridRowEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n return GridRowEditStopReasons;\n}(GridRowEditStopReasons || {});\n/**\n * Object passed as parameter in the row `getRowSpacing` callback prop.\n * @demos\n * - [Row spacing](/x/react-data-grid/row-height/#row-spacing)\n */\n/**\n * The getRowSpacing return value.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridRowEditStartReasons, GridRowEditStopReasons };","export function isLeaf(node) {\n return node.field !== undefined;\n}\n\n/**\n * A function used to process headerClassName params.\n */\n\n/**\n * The union type representing the [[GridColDef]] column header class type.\n */","import { gridClasses } from '../constants/gridClasses';\nexport function isOverflown(element) {\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n}\nexport function findParentElementFromClassName(elem, className) {\n return elem.closest(`.${className}`);\n}\nexport function getRowEl(cell) {\n if (!cell) {\n return null;\n }\n return findParentElementFromClassName(cell, gridClasses.row);\n}\n\n// TODO remove\nexport function isGridCellRoot(elem) {\n return elem != null && elem.classList.contains(gridClasses.cell);\n}\nexport function isGridHeaderCellRoot(elem) {\n return elem != null && elem.classList.contains(gridClasses.columnHeader);\n}\nfunction escapeOperandAttributeSelector(operand) {\n return operand.replace(/[\"\\\\]/g, '\\\\$&');\n}\nexport function getGridColumnHeaderElement(root, field) {\n return root.querySelector(`[role=\"columnheader\"][data-field=\"${escapeOperandAttributeSelector(field)}\"]`);\n}\nfunction getGridRowElementSelector(id) {\n return `.${gridClasses.row}[data-id=\"${escapeOperandAttributeSelector(String(id))}\"]`;\n}\nexport function getGridRowElement(root, id) {\n return root.querySelector(getGridRowElementSelector(id));\n}\nexport function getGridCellElement(root, {\n id,\n field\n}) {\n const rowSelector = getGridRowElementSelector(id);\n const cellSelector = `.${gridClasses.cell}[data-field=\"${escapeOperandAttributeSelector(field)}\"]`;\n const selector = `${rowSelector} ${cellSelector}`;\n return root.querySelector(selector);\n}\n\n// https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\nexport const getActiveElement = (root = document) => {\n const activeEl = root.activeElement;\n if (!activeEl) {\n return null;\n }\n if (activeEl.shadowRoot) {\n return getActiveElement(activeEl.shadowRoot);\n }\n return activeEl;\n};","import * as React from 'react';\nexport function useGridApiMethod(privateApiRef, apiMethods, visibility) {\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n isFirstRender.current = false;\n privateApiRef.current.register(visibility, apiMethods);\n }, [privateApiRef, visibility, apiMethods]);\n if (isFirstRender.current) {\n privateApiRef.current.register(visibility, apiMethods);\n }\n}","import * as React from 'react';\nimport { getGridCellElement, getGridColumnHeaderElement, getGridRowElement } from '../../../utils/domUtils';\nimport { GRID_ID_AUTOGENERATED } from './gridRowsUtils';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';\nexport class MissingRowIdError extends Error {}\n\n/**\n * @requires useGridColumns (method)\n * @requires useGridRows (method)\n * @requires useGridFocus (state)\n * @requires useGridEditing (method)\n * TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi\n * TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi\n */\nexport function useGridParamsApi(apiRef, props) {\n const {\n getRowId\n } = props;\n const getColumnHeaderParams = React.useCallback(field => ({\n field,\n colDef: apiRef.current.getColumn(field)\n }), [apiRef]);\n const getRowParams = React.useCallback(id => {\n const row = apiRef.current.getRow(id);\n if (!row) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const params = {\n id,\n columns: apiRef.current.getAllColumns(),\n row\n };\n return params;\n }, [apiRef]);\n const getBaseCellParams = React.useCallback((id, field) => {\n const row = apiRef.current.getRow(id);\n const rowNode = apiRef.current.getRowNode(id);\n if (!row || !rowNode) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const cellFocus = gridFocusCellSelector(apiRef);\n const cellTabIndex = gridTabIndexCellSelector(apiRef);\n const params = {\n id,\n field,\n row,\n rowNode,\n value: row[field],\n colDef: apiRef.current.getColumn(field),\n cellMode: apiRef.current.getCellMode(id, field),\n api: apiRef.current,\n hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,\n tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1\n };\n return params;\n }, [apiRef]);\n const getCellParams = React.useCallback((id, field) => {\n const colDef = apiRef.current.getColumn(field);\n const value = apiRef.current.getCellValue(id, field);\n const row = apiRef.current.getRow(id);\n const rowNode = apiRef.current.getRowNode(id);\n if (!row || !rowNode) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const cellFocus = gridFocusCellSelector(apiRef);\n const cellTabIndex = gridTabIndexCellSelector(apiRef);\n const params = {\n id,\n field,\n row,\n rowNode,\n colDef,\n cellMode: apiRef.current.getCellMode(id, field),\n hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,\n tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1,\n value,\n formattedValue: value,\n isEditable: false\n };\n if (colDef && colDef.valueFormatter) {\n params.formattedValue = colDef.valueFormatter({\n id,\n field: params.field,\n value: params.value,\n api: apiRef.current\n });\n }\n params.isEditable = colDef && apiRef.current.isCellEditable(params);\n return params;\n }, [apiRef]);\n const getCellValue = React.useCallback((id, field) => {\n const colDef = apiRef.current.getColumn(field);\n if (!colDef || !colDef.valueGetter) {\n const rowModel = apiRef.current.getRow(id);\n if (!rowModel) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n return rowModel[field];\n }\n return colDef.valueGetter(getBaseCellParams(id, field));\n }, [apiRef, getBaseCellParams]);\n const getRowValue = React.useCallback((row, colDef) => {\n var _getRowId;\n const id = GRID_ID_AUTOGENERATED in row ? row[GRID_ID_AUTOGENERATED] : (_getRowId = getRowId == null ? void 0 : getRowId(row)) != null ? _getRowId : row.id;\n const field = colDef.field;\n if (!colDef || !colDef.valueGetter) {\n return row[field];\n }\n return colDef.valueGetter(getBaseCellParams(id, field));\n }, [getBaseCellParams, getRowId]);\n const getRowFormattedValue = React.useCallback((row, colDef) => {\n var _ref;\n const value = getRowValue(row, colDef);\n if (!colDef || !colDef.valueFormatter) {\n return value;\n }\n const id = (_ref = getRowId ? getRowId(row) : row.id) != null ? _ref : row[GRID_ID_AUTOGENERATED];\n const field = colDef.field;\n return colDef.valueFormatter({\n id,\n field,\n value,\n api: apiRef.current\n });\n }, [apiRef, getRowId, getRowValue]);\n const getColumnHeaderElement = React.useCallback(field => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridColumnHeaderElement(apiRef.current.rootElementRef.current, field);\n }, [apiRef]);\n const getRowElement = React.useCallback(id => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridRowElement(apiRef.current.rootElementRef.current, id);\n }, [apiRef]);\n const getCellElement = React.useCallback((id, field) => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridCellElement(apiRef.current.rootElementRef.current, {\n id,\n field\n });\n }, [apiRef]);\n const paramsApi = {\n getCellValue,\n getCellParams,\n getCellElement,\n getRowValue,\n getRowFormattedValue,\n getRowParams,\n getRowElement,\n getColumnHeaderParams,\n getColumnHeaderElement\n };\n useGridApiMethod(apiRef, paramsApi, 'public');\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"changeReason\", \"unstable_updateValueOnRender\"],\n _excluded2 = [\"align\", \"children\", \"editCellState\", \"colIndex\", \"column\", \"cellMode\", \"field\", \"formattedValue\", \"hasFocus\", \"height\", \"isEditable\", \"isSelected\", \"rowId\", \"tabIndex\", \"value\", \"width\", \"className\", \"showRightBorder\", \"extendRowFullWidth\", \"row\", \"colSpan\", \"disableDragEvents\", \"isNotVisible\", \"onClick\", \"onDoubleClick\", \"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onKeyDown\", \"onKeyUp\", \"onDragEnter\", \"onDragOver\"],\n _excluded3 = [\"column\", \"rowId\", \"editCellState\", \"align\", \"children\", \"colIndex\", \"height\", \"width\", \"className\", \"showRightBorder\", \"extendRowFullWidth\", \"row\", \"colSpan\", \"disableDragEvents\", \"isNotVisible\", \"onClick\", \"onDoubleClick\", \"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onKeyDown\", \"onKeyUp\", \"onDragEnter\", \"onDragOver\"],\n _excluded4 = [\"changeReason\", \"unstable_updateValueOnRender\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_ownerDocument as ownerDocument, unstable_capitalize as capitalize } from '@mui/utils';\nimport { fastMemo } from '../../utils/fastMemo';\nimport { doesSupportPreventScroll } from '../../utils/doesSupportPreventScroll';\nimport { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses';\nimport { GridCellModes } from '../../models';\nimport { useGridSelector, objectShallowCompare } from '../../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridFocusCellSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { MissingRowIdError } from '../../hooks/features/rows/useGridParamsApi';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_CELL_PARAMS = {\n id: -1,\n field: '__unset__',\n row: {},\n rowNode: {\n id: -1,\n depth: 0,\n type: 'leaf',\n parent: -1,\n groupingKey: null\n },\n colDef: {\n type: 'string',\n field: '__unset__',\n computedWidth: 0\n },\n cellMode: GridCellModes.View,\n hasFocus: false,\n tabIndex: -1,\n value: null,\n formattedValue: '__unset__',\n isEditable: false,\n api: {}\n};\nconst useUtilityClasses = ownerState => {\n const {\n align,\n showRightBorder,\n isEditable,\n isSelected,\n isSelectionMode,\n classes\n } = ownerState;\n const slots = {\n root: ['cell', `cell--text${capitalize(align)}`, isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', isSelectionMode && !isEditable && 'cell--selectionMode', 'withBorderColor'],\n content: ['cellContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nlet warnedOnce = false;\n\n// GridCellWrapper is a compatibility layer for the V6 cell slot. If we can use the more efficient\n// `GridCellV7`, we should. That component is a merge of `GridCellWrapper` and `GridCell`.\n// TODO(v7): Remove the wrapper & cellV6 and use the cellV7 exclusively.\n// TODO(v7): Removing the wrapper will break the docs performance visualization demo.\nconst GridCellWrapper = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n column,\n rowId,\n editCellState\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const field = column.field;\n const cellParamsWithAPI = useGridSelector(apiRef, () => {\n // This is required because `.getCellParams` tries to get the `state.rows.tree` entry\n // associated with `rowId`/`fieldId`, but this selector runs after the state has been\n // updated, while `rowId`/`fieldId` reference an entry in the old state.\n try {\n const cellParams = apiRef.current.getCellParams(rowId, field);\n const result = cellParams;\n result.api = apiRef.current;\n return result;\n } catch (e) {\n if (e instanceof MissingRowIdError) {\n return EMPTY_CELL_PARAMS;\n }\n throw e;\n }\n }, objectShallowCompare);\n const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {\n id: rowId,\n field\n }));\n if (cellParamsWithAPI === EMPTY_CELL_PARAMS) {\n return null;\n }\n const {\n cellMode,\n hasFocus,\n isEditable,\n value,\n formattedValue\n } = cellParamsWithAPI;\n const managesOwnFocus = column.type === 'actions';\n const tabIndex = (cellMode === 'view' || !isEditable) && !managesOwnFocus ? cellParamsWithAPI.tabIndex : -1;\n const {\n classes: rootClasses,\n getCellClassName\n } = rootProps;\n const classNames = apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {\n id: rowId,\n field\n });\n if (column.cellClassName) {\n classNames.push(typeof column.cellClassName === 'function' ? column.cellClassName(cellParamsWithAPI) : column.cellClassName);\n }\n if (getCellClassName) {\n classNames.push(getCellClassName(cellParamsWithAPI));\n }\n let children;\n if (editCellState == null && column.renderCell) {\n children = column.renderCell(cellParamsWithAPI);\n classNames.push(gridClasses['cell--withRenderer']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--withRenderer']);\n }\n if (editCellState != null && column.renderEditCell) {\n const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded);\n const params = _extends({}, cellParamsWithAPI, {\n row: updatedRow\n }, editCellStateRest);\n children = column.renderEditCell(params);\n classNames.push(gridClasses['cell--editing']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--editing']);\n }\n const {\n slots\n } = rootProps;\n const CellComponent = slots.cell;\n const cellProps = _extends({}, props, {\n ref,\n field,\n formattedValue,\n hasFocus,\n isEditable,\n isSelected,\n value,\n cellMode,\n children,\n tabIndex,\n className: clsx(classNames)\n });\n return /*#__PURE__*/React.createElement(CellComponent, cellProps);\n});\nconst GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _rootProps$experiment, _rootProps$experiment2;\n const {\n align,\n children: childrenProp,\n colIndex,\n column,\n cellMode,\n field,\n formattedValue,\n hasFocus,\n height,\n isEditable,\n isSelected,\n rowId,\n tabIndex,\n value,\n width,\n className,\n showRightBorder,\n colSpan,\n disableDragEvents,\n isNotVisible,\n onClick,\n onDoubleClick,\n onMouseDown,\n onMouseUp,\n onMouseOver,\n onKeyDown,\n onKeyUp,\n onDragEnter,\n onDragOver\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const valueToRender = formattedValue == null ? value : formattedValue;\n const cellRef = React.useRef(null);\n const handleRef = useForkRef(ref, cellRef);\n const focusElementRef = React.useRef(null);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n align,\n showRightBorder,\n isEditable,\n classes: rootProps.classes,\n isSelected\n };\n const classes = useUtilityClasses(ownerState);\n const publishMouseUp = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseUp) {\n onMouseUp(event);\n }\n }, [apiRef, field, onMouseUp, rowId]);\n const publishMouseDown = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseDown) {\n onMouseDown(event);\n }\n }, [apiRef, field, onMouseDown, rowId]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // The row might have been deleted during the click\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, field, rowId]);\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return {\n padding: 0,\n opacity: 0,\n width: 0,\n border: 0\n };\n }\n const cellStyle = {\n minWidth: width,\n maxWidth: width,\n minHeight: height,\n maxHeight: height === 'auto' ? 'none' : height // max-height doesn't support \"auto\"\n };\n\n return cellStyle;\n }, [width, height, isNotVisible]);\n React.useEffect(() => {\n if (!hasFocus || cellMode === GridCellModes.Edit) {\n return;\n }\n const doc = ownerDocument(apiRef.current.rootElementRef.current);\n if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {\n const focusableElement = cellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusElementRef.current || focusableElement || cellRef.current;\n if (doesSupportPreventScroll()) {\n elementToFocus.focus({\n preventScroll: true\n });\n } else {\n const scrollPosition = apiRef.current.getScrollPosition();\n elementToFocus.focus();\n apiRef.current.scroll(scrollPosition);\n }\n }\n }, [hasFocus, cellMode, apiRef]);\n let handleFocus = other.onFocus;\n if (process.env.NODE_ENV === 'test' && (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.warnIfFocusStateIsNotSynced) {\n handleFocus = event => {\n const focusedCell = gridFocusCellSelector(apiRef);\n if ((focusedCell == null ? void 0 : focusedCell.id) === rowId && focusedCell.field === field) {\n if (typeof other.onFocus === 'function') {\n other.onFocus(event);\n }\n return;\n }\n if (!warnedOnce) {\n console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, \"Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.\", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\\n'));\n warnedOnce = true;\n }\n };\n }\n const managesOwnFocus = column.type === 'actions';\n let children = childrenProp;\n if (children === undefined) {\n const valueString = valueToRender == null ? void 0 : valueToRender.toString();\n children = /*#__PURE__*/_jsx(\"div\", {\n className: classes.content,\n title: valueString,\n role: \"presentation\",\n children: valueString\n });\n }\n if ( /*#__PURE__*/React.isValidElement(children) && managesOwnFocus) {\n children = /*#__PURE__*/React.cloneElement(children, {\n focusElementRef\n });\n }\n const draggableEventHandlers = disableDragEvents ? null : {\n onDragEnter: publish('cellDragEnter', onDragEnter),\n onDragOver: publish('cellDragOver', onDragOver)\n };\n const ariaV7 = (_rootProps$experiment2 = rootProps.experimentalFeatures) == null ? void 0 : _rootProps$experiment2.ariaV7;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n ref: handleRef,\n className: clsx(className, classes.root),\n role: ariaV7 ? 'gridcell' : 'cell',\n \"data-field\": field,\n \"data-colindex\": colIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-colspan\": colSpan,\n style: style,\n tabIndex: tabIndex,\n onClick: publish('cellClick', onClick),\n onDoubleClick: publish('cellDoubleClick', onDoubleClick),\n onMouseOver: publish('cellMouseOver', onMouseOver),\n onMouseDown: publishMouseDown('cellMouseDown'),\n onMouseUp: publishMouseUp('cellMouseUp'),\n onKeyDown: publish('cellKeyDown', onKeyDown),\n onKeyUp: publish('cellKeyUp', onKeyUp)\n }, draggableEventHandlers, other, {\n onFocus: handleFocus,\n children: children\n }))\n );\n});\nconst MemoizedCellWrapper = fastMemo(GridCellWrapper);\nprocess.env.NODE_ENV !== \"production\" ? GridCellWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']),\n className: PropTypes.string,\n colIndex: PropTypes.number,\n colSpan: PropTypes.number,\n column: PropTypes.object,\n disableDragEvents: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showRightBorder: PropTypes.bool,\n width: PropTypes.number\n} : void 0;\nprocess.env.NODE_ENV !== \"production\" ? GridCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']),\n cellMode: PropTypes.oneOf(['edit', 'view']),\n children: PropTypes.node,\n className: PropTypes.string,\n colIndex: PropTypes.number,\n colSpan: PropTypes.number,\n column: PropTypes.object,\n disableDragEvents: PropTypes.bool,\n editCellState: PropTypes.shape({\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n value: PropTypes.any\n }),\n isNotVisible: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showRightBorder: PropTypes.bool,\n width: PropTypes.number\n} : void 0;\nexport { MemoizedCellWrapper as GridCellWrapper, GridCell };\nconst GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _rootProps$unstable_c, _rootProps$experiment3, _rootProps$experiment4;\n const {\n column,\n rowId,\n editCellState,\n align,\n colIndex,\n height,\n width,\n className,\n showRightBorder,\n colSpan,\n disableDragEvents,\n isNotVisible,\n onClick,\n onDoubleClick,\n onMouseDown,\n onMouseUp,\n onMouseOver,\n onKeyDown,\n onKeyUp,\n onDragEnter,\n onDragOver\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded3);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const field = column.field;\n const cellParamsWithAPI = useGridSelector(apiRef, () => {\n // This is required because `.getCellParams` tries to get the `state.rows.tree` entry\n // associated with `rowId`/`fieldId`, but this selector runs after the state has been\n // updated, while `rowId`/`fieldId` reference an entry in the old state.\n try {\n const cellParams = apiRef.current.getCellParams(rowId, field);\n const result = cellParams;\n result.api = apiRef.current;\n return result;\n } catch (e) {\n if (e instanceof MissingRowIdError) {\n return EMPTY_CELL_PARAMS;\n }\n throw e;\n }\n }, objectShallowCompare);\n const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {\n id: rowId,\n field\n }));\n const {\n cellMode,\n hasFocus,\n isEditable,\n value,\n formattedValue\n } = cellParamsWithAPI;\n const managesOwnFocus = column.type === 'actions';\n const tabIndex = (cellMode === 'view' || !isEditable) && !managesOwnFocus ? cellParamsWithAPI.tabIndex : -1;\n const {\n classes: rootClasses,\n getCellClassName\n } = rootProps;\n const classNames = apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {\n id: rowId,\n field\n });\n if (column.cellClassName) {\n classNames.push(typeof column.cellClassName === 'function' ? column.cellClassName(cellParamsWithAPI) : column.cellClassName);\n }\n if (getCellClassName) {\n classNames.push(getCellClassName(cellParamsWithAPI));\n }\n const valueToRender = formattedValue == null ? value : formattedValue;\n const cellRef = React.useRef(null);\n const handleRef = useForkRef(ref, cellRef);\n const focusElementRef = React.useRef(null);\n // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature\n const isSelectionMode = (_rootProps$unstable_c = rootProps.unstable_cellSelection) != null ? _rootProps$unstable_c : false;\n const ownerState = {\n align,\n showRightBorder,\n isEditable,\n classes: rootProps.classes,\n isSelected,\n isSelectionMode\n };\n const classes = useUtilityClasses(ownerState);\n const publishMouseUp = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseUp) {\n onMouseUp(event);\n }\n }, [apiRef, field, onMouseUp, rowId]);\n const publishMouseDown = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseDown) {\n onMouseDown(event);\n }\n }, [apiRef, field, onMouseDown, rowId]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // The row might have been deleted during the click\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, field, rowId]);\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return {\n padding: 0,\n opacity: 0,\n width: 0,\n border: 0\n };\n }\n const cellStyle = {\n minWidth: width,\n maxWidth: width,\n minHeight: height,\n maxHeight: height === 'auto' ? 'none' : height // max-height doesn't support \"auto\"\n };\n\n return cellStyle;\n }, [width, height, isNotVisible]);\n React.useEffect(() => {\n if (!hasFocus || cellMode === GridCellModes.Edit) {\n return;\n }\n const doc = ownerDocument(apiRef.current.rootElementRef.current);\n if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {\n const focusableElement = cellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusElementRef.current || focusableElement || cellRef.current;\n if (doesSupportPreventScroll()) {\n elementToFocus.focus({\n preventScroll: true\n });\n } else {\n const scrollPosition = apiRef.current.getScrollPosition();\n elementToFocus.focus();\n apiRef.current.scroll(scrollPosition);\n }\n }\n }, [hasFocus, cellMode, apiRef]);\n if (cellParamsWithAPI === EMPTY_CELL_PARAMS) {\n return null;\n }\n let handleFocus = other.onFocus;\n if (process.env.NODE_ENV === 'test' && (_rootProps$experiment3 = rootProps.experimentalFeatures) != null && _rootProps$experiment3.warnIfFocusStateIsNotSynced) {\n handleFocus = event => {\n const focusedCell = gridFocusCellSelector(apiRef);\n if ((focusedCell == null ? void 0 : focusedCell.id) === rowId && focusedCell.field === field) {\n if (typeof other.onFocus === 'function') {\n other.onFocus(event);\n }\n return;\n }\n if (!warnedOnce) {\n console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, \"Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.\", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\\n'));\n warnedOnce = true;\n }\n };\n }\n let children;\n if (editCellState == null && column.renderCell) {\n children = column.renderCell(cellParamsWithAPI);\n classNames.push(gridClasses['cell--withRenderer']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--withRenderer']);\n }\n if (editCellState != null && column.renderEditCell) {\n const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded4);\n const params = _extends({}, cellParamsWithAPI, {\n row: updatedRow\n }, editCellStateRest);\n children = column.renderEditCell(params);\n classNames.push(gridClasses['cell--editing']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--editing']);\n }\n if (children === undefined) {\n const valueString = valueToRender == null ? void 0 : valueToRender.toString();\n children = /*#__PURE__*/_jsx(\"div\", {\n className: classes.content,\n title: valueString,\n role: \"presentation\",\n children: valueString\n });\n }\n if ( /*#__PURE__*/React.isValidElement(children) && managesOwnFocus) {\n children = /*#__PURE__*/React.cloneElement(children, {\n focusElementRef\n });\n }\n const draggableEventHandlers = disableDragEvents ? null : {\n onDragEnter: publish('cellDragEnter', onDragEnter),\n onDragOver: publish('cellDragOver', onDragOver)\n };\n const ariaV7 = (_rootProps$experiment4 = rootProps.experimentalFeatures) == null ? void 0 : _rootProps$experiment4.ariaV7;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n ref: handleRef,\n className: clsx(className, classNames, classes.root),\n role: ariaV7 ? 'gridcell' : 'cell',\n \"data-field\": field,\n \"data-colindex\": colIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-colspan\": colSpan,\n style: style,\n tabIndex: tabIndex,\n onClick: publish('cellClick', onClick),\n onDoubleClick: publish('cellDoubleClick', onDoubleClick),\n onMouseOver: publish('cellMouseOver', onMouseOver),\n onMouseDown: publishMouseDown('cellMouseDown'),\n onMouseUp: publishMouseUp('cellMouseUp'),\n onKeyDown: publish('cellKeyDown', onKeyDown),\n onKeyUp: publish('cellKeyUp', onKeyUp)\n }, draggableEventHandlers, other, {\n onFocus: handleFocus,\n children: children\n }))\n );\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCellV7.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n className: PropTypes.string,\n colIndex: PropTypes.number.isRequired,\n colSpan: PropTypes.number,\n column: PropTypes.object.isRequired,\n disableDragEvents: PropTypes.bool,\n editCellState: PropTypes.shape({\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n value: PropTypes.any\n }),\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,\n isNotVisible: PropTypes.bool,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n showRightBorder: PropTypes.bool,\n width: PropTypes.number.isRequired\n} : void 0;\nconst MemoizedGridCellV7 = fastMemo(GridCellV7);\nexport { MemoizedGridCellV7 as GridCellV7 };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"hasFocus\", \"tabIndex\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { isAutoGeneratedRow } from '../../hooks/features/rows/gridRowsUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['booleanCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridBooleanCellRaw(props) {\n const {\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const Icon = React.useMemo(() => value ? rootProps.slots.booleanCellTrueIcon : rootProps.slots.booleanCellFalseIcon, [rootProps.slots.booleanCellFalseIcon, rootProps.slots.booleanCellTrueIcon, value]);\n return /*#__PURE__*/_jsx(Icon, _extends({\n fontSize: \"small\",\n className: classes.root,\n titleAccess: apiRef.current.getLocaleText(value ? 'booleanCellTrueLabel' : 'booleanCellFalseLabel'),\n \"data-value\": Boolean(value)\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridBooleanCellRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nconst GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);\nexport { GridBooleanCell };\nexport const renderBooleanCell = params => {\n if (isAutoGeneratedRow(params.rowNode)) {\n return '';\n }\n return /*#__PURE__*/_jsx(GridBooleanCell, _extends({}, params));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editBooleanCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditBooleanCell(props) {\n var _rootProps$slotProps;\n const {\n id: idProp,\n value,\n field,\n className,\n hasFocus,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const inputRef = React.useRef(null);\n const id = useId();\n const [valueState, setValueState] = React.useState(value);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const handleChange = React.useCallback(async event => {\n const newValue = event.target.checked;\n if (onValueChange) {\n await onValueChange(event, newValue);\n }\n setValueState(newValue);\n await apiRef.current.setEditCellValue({\n id: idProp,\n field,\n value: newValue\n }, event);\n }, [apiRef, field, idProp, onValueChange]);\n React.useEffect(() => {\n setValueState(value);\n }, [value]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(\"label\", _extends({\n htmlFor: id,\n className: clsx(classes.root, className)\n }, other, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n id: id,\n inputRef: inputRef,\n checked: Boolean(valueState),\n onChange: handleChange,\n size: \"small\"\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox))\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditBooleanCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {boolean} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditBooleanCell };\nexport const renderEditBooleanCell = params => /*#__PURE__*/_jsx(GridEditBooleanCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"inputProps\", \"isValidating\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport InputBase from '@mui/material/InputBase';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledInputBase = styled(InputBase)({\n fontSize: 'inherit'\n});\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editInputCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditDateCell(props) {\n const {\n id,\n value: valueProp,\n field,\n colDef,\n hasFocus,\n inputProps,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const isDateTime = colDef.type === 'dateTime';\n const apiRef = useGridApiContext();\n const inputRef = React.useRef();\n const valueTransformed = React.useMemo(() => {\n let parsedDate;\n if (valueProp == null) {\n parsedDate = null;\n } else if (valueProp instanceof Date) {\n parsedDate = valueProp;\n } else {\n parsedDate = new Date((valueProp != null ? valueProp : '').toString());\n }\n let formattedDate;\n if (parsedDate == null || Number.isNaN(parsedDate.getTime())) {\n formattedDate = '';\n } else {\n const localDate = new Date(parsedDate.getTime() - parsedDate.getTimezoneOffset() * 60 * 1000);\n formattedDate = localDate.toISOString().substr(0, isDateTime ? 16 : 10);\n }\n return {\n parsed: parsedDate,\n formatted: formattedDate\n };\n }, [valueProp, isDateTime]);\n const [valueState, setValueState] = React.useState(valueTransformed);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const hasUpdatedEditValueOnMount = React.useRef(false);\n const parseValueToDate = React.useCallback(value => {\n if (value === '') {\n return null;\n }\n const [date, time] = value.split('T');\n const [year, month, day] = date.split('-');\n const parsedDate = new Date();\n parsedDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n parsedDate.setHours(0, 0, 0, 0);\n if (time) {\n const [hours, minutes] = time.split(':');\n parsedDate.setHours(Number(hours), Number(minutes), 0, 0);\n }\n return parsedDate;\n }, []);\n const handleChange = React.useCallback(async event => {\n const newFormattedDate = event.target.value;\n const newParsedDate = parseValueToDate(newFormattedDate);\n if (onValueChange) {\n await onValueChange(event, newParsedDate);\n }\n setValueState({\n parsed: newParsedDate,\n formatted: newFormattedDate\n });\n apiRef.current.setEditCellValue({\n id,\n field,\n value: newParsedDate\n }, event);\n }, [apiRef, field, id, onValueChange, parseValueToDate]);\n React.useEffect(() => {\n setValueState(state => {\n var _valueTransformed$par, _state$parsed;\n if (valueTransformed.parsed !== state.parsed && ((_valueTransformed$par = valueTransformed.parsed) == null ? void 0 : _valueTransformed$par.getTime()) !== ((_state$parsed = state.parsed) == null ? void 0 : _state$parsed.getTime())) {\n return valueTransformed;\n }\n return state;\n });\n }, [valueTransformed]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n const meta = apiRef.current.unstable_getEditCellMeta(id, field);\n const handleInputRef = el => {\n inputRef.current = el;\n if (meta != null && meta.unstable_updateValueOnRender && !hasUpdatedEditValueOnMount.current) {\n const inputValue = inputRef.current.value;\n const parsedDate = parseValueToDate(inputValue);\n setValueState({\n parsed: parsedDate,\n formatted: inputValue\n });\n apiRef.current.setEditCellValue({\n id,\n field,\n value: parsedDate\n });\n hasUpdatedEditValueOnMount.current = true;\n }\n };\n return /*#__PURE__*/_jsx(StyledInputBase, _extends({\n inputRef: handleInputRef,\n fullWidth: true,\n className: classes.root,\n type: isDateTime ? 'datetime-local' : 'date',\n inputProps: _extends({\n max: isDateTime ? '9999-12-31T23:59' : '9999-12-31'\n }, inputProps),\n value: valueState.formatted,\n onChange: handleChange\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditDateCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditDateCell };\nexport const renderEditDateCell = params => /*#__PURE__*/_jsx(GridEditDateCell, _extends({}, params));","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"isValidating\", \"debounceMs\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport InputBase from '@mui/material/InputBase';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editInputCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridEditInputCellRoot = styled(InputBase, {\n name: 'MuiDataGrid',\n slot: 'EditInputCell',\n overridesResolver: (props, styles) => styles.editInputCell\n})(({\n theme\n}) => _extends({}, theme.typography.body2, {\n padding: '1px 0',\n '& input': {\n padding: '0 16px',\n height: '100%'\n }\n}));\nconst GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {\n const rootProps = useGridRootProps();\n const {\n id,\n value,\n field,\n colDef,\n hasFocus,\n debounceMs = 200,\n isProcessingProps,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const inputRef = React.useRef();\n const [valueState, setValueState] = React.useState(value);\n const classes = useUtilityClasses(rootProps);\n const handleChange = React.useCallback(async event => {\n const newValue = event.target.value;\n if (onValueChange) {\n await onValueChange(event, newValue);\n }\n const column = apiRef.current.getColumn(field);\n let parsedValue = newValue;\n if (column.valueParser) {\n parsedValue = column.valueParser(newValue, apiRef.current.getCellParams(id, field));\n }\n setValueState(parsedValue);\n apiRef.current.setEditCellValue({\n id,\n field,\n value: parsedValue,\n debounceMs,\n unstable_skipValueParser: true\n }, event);\n }, [apiRef, debounceMs, field, id, onValueChange]);\n const meta = apiRef.current.unstable_getEditCellMeta(id, field);\n React.useEffect(() => {\n if ((meta == null ? void 0 : meta.changeReason) !== 'debouncedSetEditCellValue') {\n setValueState(value);\n }\n }, [meta, value]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(GridEditInputCellRoot, _extends({\n ref: ref,\n inputRef: inputRef,\n className: classes.root,\n ownerState: rootProps,\n fullWidth: true,\n type: colDef.type === 'number' ? colDef.type : 'text',\n value: valueState != null ? valueState : '',\n onChange: handleChange,\n endAdornment: isProcessingProps ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : undefined\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridEditInputCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n debounceMs: PropTypes.number,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditInputCell };\nexport const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));","export const isEscapeKey = key => key === 'Escape'; // TODO remove\nexport const isEnterKey = key => key === 'Enter'; // TODO remove\nexport const isTabKey = key => key === 'Tab'; // TODO remove\n\nexport const isSpaceKey = key => key === ' ';\nexport const isArrowKeys = key => key.indexOf('Arrow') === 0;\nexport const isHomeOrEndKeys = key => key === 'Home' || key === 'End';\nexport const isPageKeys = key => key.indexOf('Page') === 0;\nexport const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';\n\n// Non printable keys have a name, e.g. \"ArrowRight\", see the whole list:\n// https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n// So event.key.length === 1 is often enough.\n//\n// However, we also need to ignore shortcuts, for example: select all:\n// - Windows: Ctrl+A, event.ctrlKey is true\n// - macOS: ⌘ Command+A, event.metaKey is true\nexport function isPrintableKey(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\nexport const GRID_MULTIPLE_SELECTION_KEYS = ['Meta', 'Control', 'Shift'];\nexport const GRID_CELL_EXIT_EDIT_MODE_KEYS = ['Enter', 'Escape', 'Tab'];\nexport const GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];\nexport const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;\nexport const isCellEnterEditModeKeys = event => isEnterKey(event.key) || isDeleteKeys(event.key) || isPrintableKey(event);\nexport const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;\nexport const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;\nexport const isNavigationKey = key => isHomeOrEndKeys(key) || isArrowKeys(key) || isPageKeys(key) || isSpaceKey(key);\nexport const isKeyboardEvent = event => !!event.key;\nexport const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);","export function isSingleSelectColDef(colDef) {\n return (colDef == null ? void 0 : colDef.type) === 'singleSelect';\n}\nexport function getValueFromValueOptions(value, valueOptions, getOptionValue) {\n if (valueOptions === undefined) {\n return undefined;\n }\n const result = valueOptions.find(option => {\n const optionValue = getOptionValue(option);\n return String(optionValue) === String(value);\n });\n return getOptionValue(result);\n}\nexport const getLabelFromValueOption = valueOption => {\n const label = typeof valueOption === 'object' ? valueOption.label : valueOption;\n return label != null ? String(label) : '';\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\", \"initialOpen\", \"getOptionLabel\", \"getOptionValue\"],\n _excluded2 = [\"MenuProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { GridCellEditStopReasons } from '../../models/params/gridEditCellParams';\nimport { isEscapeKey } from '../../utils/keyboardUtils';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridEditModes } from '../../models/gridEditRowModel';\nimport { getValueFromValueOptions, isSingleSelectColDef } from '../panel/filterPanel/filterPanelUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isKeyboardEvent(event) {\n return !!event.key;\n}\nfunction GridEditSingleSelectCell(props) {\n var _rootProps$slotProps, _baseSelectProps$nati, _rootProps$slotProps2;\n const rootProps = useGridRootProps();\n const {\n id,\n value: valueProp,\n field,\n row,\n colDef,\n hasFocus,\n error,\n onValueChange,\n initialOpen = rootProps.editMode === GridEditModes.Cell,\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ref = React.useRef();\n const inputRef = React.useRef();\n const [open, setOpen] = React.useState(initialOpen);\n const baseSelectProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseSelect) || {};\n const isSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : false;\n const _ref = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelect) || {},\n {\n MenuProps\n } = _ref,\n otherBaseSelectProps = _objectWithoutPropertiesLoose(_ref, _excluded2);\n useEnhancedEffect(() => {\n if (hasFocus) {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();\n }\n }, [hasFocus]);\n if (!isSingleSelectColDef(colDef)) {\n return null;\n }\n let valueOptions;\n if (typeof (colDef == null ? void 0 : colDef.valueOptions) === 'function') {\n valueOptions = colDef == null ? void 0 : colDef.valueOptions({\n id,\n row,\n field\n });\n } else {\n valueOptions = colDef == null ? void 0 : colDef.valueOptions;\n }\n if (!valueOptions) {\n return null;\n }\n const getOptionValue = getOptionValueProp || colDef.getOptionValue;\n const getOptionLabel = getOptionLabelProp || colDef.getOptionLabel;\n const handleChange = async event => {\n if (!isSingleSelectColDef(colDef) || !valueOptions) {\n return;\n }\n setOpen(false);\n const target = event.target;\n // NativeSelect casts the value to a string.\n const formattedTargetValue = getValueFromValueOptions(target.value, valueOptions, getOptionValue);\n if (onValueChange) {\n await onValueChange(event, formattedTargetValue);\n }\n await apiRef.current.setEditCellValue({\n id,\n field,\n value: formattedTargetValue\n }, event);\n };\n const handleClose = (event, reason) => {\n if (rootProps.editMode === GridEditModes.Row) {\n setOpen(false);\n return;\n }\n if (reason === 'backdropClick' || isEscapeKey(event.key)) {\n const params = apiRef.current.getCellParams(id, field);\n apiRef.current.publishEvent('cellEditStop', _extends({}, params, {\n reason: isEscapeKey(event.key) ? GridCellEditStopReasons.escapeKeyDown : GridCellEditStopReasons.cellFocusOut\n }));\n }\n };\n const handleOpen = event => {\n if (isKeyboardEvent(event) && event.key === 'Enter') {\n return;\n }\n setOpen(true);\n };\n if (!valueOptions || !colDef) {\n return null;\n }\n return /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n ref: ref,\n inputRef: inputRef,\n value: valueProp,\n onChange: handleChange,\n open: open,\n onOpen: handleOpen,\n MenuProps: _extends({\n onClose: handleClose\n }, MenuProps),\n error: error,\n native: isSelectNative,\n fullWidth: true\n }, other, otherBaseSelectProps, {\n children: valueOptions.map(valueOption => {\n var _rootProps$slotProps3;\n const value = getOptionValue(valueOption);\n return /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, ((_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelectOption) || {}, {\n native: isSelectNative,\n key: value,\n value: value\n }), getOptionLabel(valueOption));\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditSingleSelectCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the select opens by default.\n */\n initialOpen: PropTypes.bool,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {SelectChangeEvent} event The event source of the callback.\n * @param {any} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditSingleSelectCell };\nexport const renderEditSingleSelectCell = params => /*#__PURE__*/_jsx(GridEditSingleSelectCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"open\", \"target\", \"onClose\", \"children\", \"position\", \"className\", \"onExited\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect, HTMLElementType } from '@mui/utils';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['menu']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridMenuRoot = styled(Popper, {\n name: 'MuiDataGrid',\n slot: 'Menu',\n overridesResolver: (_, styles) => styles.menu\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal,\n [`& .${gridClasses.menuList}`]: {\n outline: 0\n }\n}));\nconst transformOrigin = {\n 'bottom-start': 'top left',\n 'bottom-end': 'top right'\n};\nfunction GridMenu(props) {\n var _rootProps$slotProps;\n const {\n open,\n target,\n onClose,\n children,\n position,\n className,\n onExited\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const savedFocusRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (open) {\n savedFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n } else {\n var _savedFocusRef$curren, _savedFocusRef$curren2;\n (_savedFocusRef$curren = savedFocusRef.current) == null || (_savedFocusRef$curren2 = _savedFocusRef$curren.focus) == null || _savedFocusRef$curren2.call(_savedFocusRef$curren);\n savedFocusRef.current = null;\n }\n }, [open]);\n React.useEffect(() => {\n // Emit menuOpen or menuClose events\n const eventName = open ? 'menuOpen' : 'menuClose';\n apiRef.current.publishEvent(eventName, {\n target\n });\n }, [apiRef, open, target]);\n const handleExited = popperOnExited => node => {\n if (popperOnExited) {\n popperOnExited();\n }\n if (onExited) {\n onExited(node);\n }\n };\n const handleClickAway = event => {\n if (event.target && (target === event.target || target != null && target.contains(event.target))) {\n return;\n }\n onClose(event);\n };\n return /*#__PURE__*/_jsx(GridMenuRoot, _extends({\n as: rootProps.slots.basePopper,\n className: clsx(className, classes.root),\n ownerState: rootProps,\n open: open,\n anchorEl: target,\n transition: true,\n placement: position\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.basePopper, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(ClickAwayListener, {\n onClickAway: handleClickAway,\n mouseEvent: \"onMouseDown\",\n children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {\n style: {\n transformOrigin: transformOrigin[placement]\n },\n onExited: handleExited(TransitionProps == null ? void 0 : TransitionProps.onExited),\n children: /*#__PURE__*/_jsx(Paper, {\n children: children\n })\n }))\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n onClose: PropTypes.func.isRequired,\n onExited: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n target: HTMLElementType\n} : void 0;\nexport { GridMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"api\", \"colDef\", \"id\", \"hasFocus\", \"isEditable\", \"field\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"cellMode\", \"tabIndex\", \"position\", \"focusElementRef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuList from '@mui/material/MenuList';\nimport { useTheme } from '@mui/material/styles';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst hasActions = colDef => typeof colDef.getActions === 'function';\nfunction GridActionsCell(props) {\n var _rootProps$slotProps;\n const {\n colDef,\n id,\n hasFocus,\n tabIndex,\n position = 'bottom-end',\n focusElementRef\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [focusedButtonIndex, setFocusedButtonIndex] = React.useState(-1);\n const [open, setOpen] = React.useState(false);\n const apiRef = useGridApiContext();\n const rootRef = React.useRef(null);\n const buttonRef = React.useRef(null);\n const ignoreCallToFocus = React.useRef(false);\n const touchRippleRefs = React.useRef({});\n const theme = useTheme();\n const menuId = useId();\n const buttonId = useId();\n const rootProps = useGridRootProps();\n if (!hasActions(colDef)) {\n throw new Error('MUI: Missing the `getActions` property in the `GridColDef`.');\n }\n const options = colDef.getActions(apiRef.current.getRowParams(id));\n const iconButtons = options.filter(option => !option.props.showInMenu);\n const menuButtons = options.filter(option => option.props.showInMenu);\n const numberOfButtons = iconButtons.length + (menuButtons.length ? 1 : 0);\n React.useLayoutEffect(() => {\n if (!hasFocus) {\n Object.entries(touchRippleRefs.current).forEach(([index, ref]) => {\n ref == null || ref.stop({}, () => {\n delete touchRippleRefs.current[index];\n });\n });\n }\n }, [hasFocus]);\n React.useEffect(() => {\n if (focusedButtonIndex < 0 || !rootRef.current) {\n return;\n }\n if (focusedButtonIndex >= rootRef.current.children.length) {\n return;\n }\n const child = rootRef.current.children[focusedButtonIndex];\n child.focus({\n preventScroll: true\n });\n }, [focusedButtonIndex]);\n React.useEffect(() => {\n if (!hasFocus) {\n setFocusedButtonIndex(-1);\n ignoreCallToFocus.current = false;\n }\n }, [hasFocus]);\n React.useImperativeHandle(focusElementRef, () => ({\n focus() {\n // If ignoreCallToFocus is true, then one of the buttons was clicked and the focus is already set\n if (!ignoreCallToFocus.current) {\n setFocusedButtonIndex(0);\n }\n }\n }), []);\n React.useEffect(() => {\n if (focusedButtonIndex >= numberOfButtons) {\n setFocusedButtonIndex(numberOfButtons - 1);\n }\n }, [focusedButtonIndex, numberOfButtons]);\n const showMenu = () => {\n setOpen(true);\n setFocusedButtonIndex(numberOfButtons - 1);\n ignoreCallToFocus.current = true;\n };\n const hideMenu = () => {\n setOpen(false);\n };\n const handleTouchRippleRef = index => instance => {\n touchRippleRefs.current[index] = instance;\n };\n const handleButtonClick = (index, onClick) => event => {\n setFocusedButtonIndex(index);\n ignoreCallToFocus.current = true;\n if (onClick) {\n onClick(event);\n }\n };\n const handleRootKeyDown = event => {\n if (numberOfButtons <= 1) {\n return;\n }\n let newIndex = focusedButtonIndex;\n if (event.key === 'ArrowRight') {\n if (theme.direction === 'rtl') {\n newIndex -= 1;\n } else {\n newIndex += 1;\n }\n } else if (event.key === 'ArrowLeft') {\n if (theme.direction === 'rtl') {\n newIndex += 1;\n } else {\n newIndex -= 1;\n }\n }\n if (newIndex < 0 || newIndex >= numberOfButtons) {\n return; // We're already in the first or last item = do nothing and let the grid listen the event\n }\n\n if (newIndex !== focusedButtonIndex) {\n event.preventDefault(); // Prevent scrolling\n event.stopPropagation(); // Don't stop propagation for other keys, e.g. ArrowUp\n setFocusedButtonIndex(newIndex);\n }\n };\n const handleListKeyDown = event => {\n if (event.key === 'Tab') {\n event.preventDefault();\n }\n if (['Tab', 'Enter', 'Escape'].includes(event.key)) {\n hideMenu();\n }\n };\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n role: \"menu\",\n ref: rootRef,\n tabIndex: -1,\n className: gridClasses.actionsCell,\n onKeyDown: handleRootKeyDown\n }, other, {\n children: [iconButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n key: index,\n touchRippleRef: handleTouchRippleRef(index),\n onClick: handleButtonClick(index, button.props.onClick),\n tabIndex: focusedButtonIndex === index ? tabIndex : -1\n })), menuButtons.length > 0 && buttonId && /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: buttonRef,\n id: buttonId,\n \"aria-label\": apiRef.current.getLocaleText('actionsCellMore'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? menuId : undefined,\n role: \"menuitem\",\n size: \"small\",\n onClick: showMenu,\n touchRippleRef: handleTouchRippleRef(buttonId),\n tabIndex: focusedButtonIndex === iconButtons.length ? tabIndex : -1\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.moreActionsIcon, {\n fontSize: \"small\"\n })\n })), menuButtons.length > 0 && /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n position: position,\n onClose: hideMenu,\n onClick: hideMenu,\n children: /*#__PURE__*/_jsx(MenuList, {\n id: menuId,\n className: gridClasses.menuList,\n onKeyDown: handleListKeyDown,\n \"aria-labelledby\": buttonId,\n variant: \"menu\",\n autoFocusItem: true,\n children: menuButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n key: index\n }))\n })\n })]\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n api: PropTypes.object,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridActionsCell };\nexport const renderActionsCell = params => /*#__PURE__*/_jsx(GridActionsCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"label\", \"icon\", \"showInMenu\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridActionsCellItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n label,\n icon,\n showInMenu,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const handleClick = event => {\n if (onClick) {\n onClick(event);\n }\n };\n if (!showInMenu) {\n var _rootProps$slotProps;\n return /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: ref,\n size: \"small\",\n role: \"menuitem\",\n \"aria-label\": label\n }, other, {\n onClick: handleClick\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: 'small'\n })\n }));\n }\n return /*#__PURE__*/_jsxs(MenuItem, _extends({\n ref: ref\n }, other, {\n onClick: onClick,\n children: [icon && /*#__PURE__*/_jsx(ListItemIcon, {\n children: icon\n }), label]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCellItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n icon: PropTypes.element,\n label: PropTypes.string.isRequired,\n showInMenu: PropTypes.bool\n} : void 0;\nexport { GridActionsCellItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"align\", \"width\", \"contentWidth\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Skeleton from '@mui/material/Skeleton';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n align,\n classes\n } = ownerState;\n const slots = {\n root: ['cell', 'cellSkeleton', `cell--text${capitalize(align)}`, 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridSkeletonCell(props) {\n const {\n align,\n width,\n contentWidth\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes,\n align\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: classes.root,\n style: {\n width\n }\n }, other, {\n children: /*#__PURE__*/_jsx(Skeleton, {\n width: `${contentWidth}%`\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridSkeletonCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.string.isRequired,\n contentWidth: PropTypes.number.isRequired,\n field: PropTypes.string.isRequired,\n width: PropTypes.number.isRequired\n} : void 0;\nexport { GridSkeletonCell };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { alpha, styled, darken, lighten } from '@mui/material/styles';\nimport { gridClasses } from '../../constants/gridClasses';\nfunction getBorderColor(theme) {\n if (theme.vars) {\n return theme.vars.palette.TableCell.border;\n }\n if (theme.palette.mode === 'light') {\n return lighten(alpha(theme.palette.divider, 1), 0.88);\n }\n return darken(alpha(theme.palette.divider, 1), 0.68);\n}\nconst columnHeadersStyles = {\n [`.${gridClasses.columnSeparator}, .${gridClasses['columnSeparator--resizing']}`]: {\n visibility: 'visible',\n width: 'auto'\n }\n};\nconst columnHeaderStyles = {\n [`& .${gridClasses.iconButtonContainer}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.menuIcon}`]: {\n width: 'auto',\n visibility: 'visible'\n }\n};\nexport const GridRootStyles = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Root',\n overridesResolver: (props, styles) => [{\n [`&.${gridClasses.autoHeight}`]: styles.autoHeight\n }, {\n [`&.${gridClasses.aggregationColumnHeader}`]: styles.aggregationColumnHeader\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignLeft']}`]: styles['aggregationColumnHeader--alignLeft']\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignCenter']}`]: styles['aggregationColumnHeader--alignCenter']\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignRight']}`]: styles['aggregationColumnHeader--alignRight']\n }, {\n [`&.${gridClasses.aggregationColumnHeaderLabel}`]: styles.aggregationColumnHeaderLabel\n }, {\n [`&.${gridClasses['root--disableUserSelection']} .${gridClasses.cell}`]: styles['root--disableUserSelection']\n }, {\n [`&.${gridClasses.autosizing}`]: styles.autosizing\n }, {\n [`& .${gridClasses.editBooleanCell}`]: styles.editBooleanCell\n }, {\n [`& .${gridClasses['cell--editing']}`]: styles['cell--editing']\n }, {\n [`& .${gridClasses['cell--textCenter']}`]: styles['cell--textCenter']\n }, {\n [`& .${gridClasses['cell--textLeft']}`]: styles['cell--textLeft']\n }, {\n [`& .${gridClasses['cell--textRight']}`]: styles['cell--textRight']\n },\n // TODO v6: Remove\n {\n [`& .${gridClasses['cell--withRenderer']}`]: styles['cell--withRenderer']\n }, {\n [`& .${gridClasses.cell}`]: styles.cell\n }, {\n [`& .${gridClasses['cell--rangeTop']}`]: styles['cell--rangeTop']\n }, {\n [`& .${gridClasses['cell--rangeBottom']}`]: styles['cell--rangeBottom']\n }, {\n [`& .${gridClasses['cell--rangeLeft']}`]: styles['cell--rangeLeft']\n }, {\n [`& .${gridClasses['cell--rangeRight']}`]: styles['cell--rangeRight']\n }, {\n [`& .${gridClasses['cell--withRightBorder']}`]: styles['cell--withRightBorder']\n }, {\n [`& .${gridClasses.cellContent}`]: styles.cellContent\n }, {\n [`& .${gridClasses.cellCheckbox}`]: styles.cellCheckbox\n }, {\n [`& .${gridClasses.cellSkeleton}`]: styles.cellSkeleton\n }, {\n [`& .${gridClasses.checkboxInput}`]: styles.checkboxInput\n }, {\n [`& .${gridClasses['columnHeader--alignCenter']}`]: styles['columnHeader--alignCenter']\n }, {\n [`& .${gridClasses['columnHeader--alignLeft']}`]: styles['columnHeader--alignLeft']\n }, {\n [`& .${gridClasses['columnHeader--alignRight']}`]: styles['columnHeader--alignRight']\n }, {\n [`& .${gridClasses['columnHeader--dragging']}`]: styles['columnHeader--dragging']\n }, {\n [`& .${gridClasses['columnHeader--moving']}`]: styles['columnHeader--moving']\n }, {\n [`& .${gridClasses['columnHeader--numeric']}`]: styles['columnHeader--numeric']\n }, {\n [`& .${gridClasses['columnHeader--sortable']}`]: styles['columnHeader--sortable']\n }, {\n [`& .${gridClasses['columnHeader--sorted']}`]: styles['columnHeader--sorted']\n }, {\n [`& .${gridClasses['columnHeader--withRightBorder']}`]: styles['columnHeader--withRightBorder']\n }, {\n [`& .${gridClasses.columnHeader}`]: styles.columnHeader\n }, {\n [`& .${gridClasses.headerFilterRow}`]: styles.headerFilterRow\n }, {\n [`& .${gridClasses.columnHeaderCheckbox}`]: styles.columnHeaderCheckbox\n }, {\n [`& .${gridClasses.columnHeaderDraggableContainer}`]: styles.columnHeaderDraggableContainer\n }, {\n [`& .${gridClasses.columnHeaderTitleContainer}`]: styles.columnHeaderTitleContainer\n }, {\n [`& .${gridClasses['columnSeparator--resizable']}`]: styles['columnSeparator--resizable']\n }, {\n [`& .${gridClasses['columnSeparator--resizing']}`]: styles['columnSeparator--resizing']\n }, {\n [`& .${gridClasses.columnSeparator}`]: styles.columnSeparator\n }, {\n [`& .${gridClasses.filterIcon}`]: styles.filterIcon\n }, {\n [`& .${gridClasses.iconSeparator}`]: styles.iconSeparator\n }, {\n [`& .${gridClasses.menuIcon}`]: styles.menuIcon\n }, {\n [`& .${gridClasses.menuIconButton}`]: styles.menuIconButton\n }, {\n [`& .${gridClasses.menuOpen}`]: styles.menuOpen\n }, {\n [`& .${gridClasses.menuList}`]: styles.menuList\n }, {\n [`& .${gridClasses['row--editable']}`]: styles['row--editable']\n }, {\n [`& .${gridClasses['row--editing']}`]: styles['row--editing']\n }, {\n [`& .${gridClasses['row--dragging']}`]: styles['row--dragging']\n }, {\n [`& .${gridClasses.row}`]: styles.row\n }, {\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder\n }, {\n [`& .${gridClasses.rowReorderCell}`]: styles.rowReorderCell\n }, {\n [`& .${gridClasses['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']\n }, {\n [`& .${gridClasses.sortIcon}`]: styles.sortIcon\n }, {\n [`& .${gridClasses.withBorderColor}`]: styles.withBorderColor\n }, {\n [`& .${gridClasses.treeDataGroupingCell}`]: styles.treeDataGroupingCell\n }, {\n [`& .${gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle\n }, {\n [`& .${gridClasses.detailPanelToggleCell}`]: styles.detailPanelToggleCell\n }, {\n [`& .${gridClasses['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']\n }, styles.root]\n})(({\n theme\n}) => {\n const borderColor = getBorderColor(theme);\n const radius = theme.shape.borderRadius;\n const gridStyle = _extends({\n '--unstable_DataGrid-radius': typeof radius === 'number' ? `${radius}px` : radius,\n '--unstable_DataGrid-headWeight': theme.typography.fontWeightMedium,\n '--unstable_DataGrid-overlayBackground': theme.vars ? `rgba(${theme.vars.palette.background.defaultChannel} / ${theme.vars.palette.action.disabledOpacity})` : alpha(theme.palette.background.default, theme.palette.action.disabledOpacity),\n '--DataGrid-cellOffsetMultiplier': 2,\n flex: 1,\n boxSizing: 'border-box',\n position: 'relative',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor,\n borderRadius: 'var(--unstable_DataGrid-radius)',\n color: (theme.vars || theme).palette.text.primary\n }, theme.typography.body2, {\n outline: 'none',\n height: '100%',\n display: 'flex',\n minWidth: 0,\n // See https://github.com/mui/mui-x/issues/8547\n minHeight: 0,\n flexDirection: 'column',\n overflowAnchor: 'none',\n // Keep the same scrolling position\n [`&.${gridClasses.autoHeight}`]: {\n height: 'auto',\n [`& .${gridClasses['row--lastVisible']} .${gridClasses.cell}`]: {\n borderBottomColor: 'transparent'\n }\n },\n [`&.${gridClasses.autosizing}`]: {\n [`& .${gridClasses.columnHeaderTitleContainerContent} > *`]: {\n overflow: 'visible !important'\n },\n [`& .${gridClasses.cell} > *`]: {\n overflow: 'visible !important'\n }\n },\n [`& .${gridClasses['virtualScrollerContent--overflowed']} .${gridClasses['row--lastVisible']} .${gridClasses.cell}`]: {\n borderBottomColor: 'transparent'\n },\n [`& .${gridClasses.columnHeader}, & .${gridClasses.cell}`]: {\n WebkitTapHighlightColor: 'transparent',\n lineHeight: null,\n padding: '0 10px',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses.columnHeader}:focus-within, & .${gridClasses.cell}:focus-within`]: {\n outline: `solid ${theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / 0.5)` : alpha(theme.palette.primary.main, 0.5)} 1px`,\n outlineWidth: 1,\n outlineOffset: -1\n },\n [`& .${gridClasses.columnHeader}:focus, & .${gridClasses.cell}:focus`]: {\n outline: `solid ${theme.palette.primary.main} 1px`\n },\n [`& .${gridClasses.columnHeaderCheckbox}, & .${gridClasses.cellCheckbox}`]: {\n padding: 0,\n justifyContent: 'center',\n alignItems: 'center'\n },\n [`& .${gridClasses.columnHeader}`]: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n [`& .${gridClasses['columnHeader--sorted']} .${gridClasses.iconButtonContainer}, & .${gridClasses['columnHeader--filtered']} .${gridClasses.iconButtonContainer}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.columnHeader}:not(.${gridClasses['columnHeader--sorted']}) .${gridClasses.sortIcon}`]: {\n opacity: 0,\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.shorter\n })\n },\n [`& .${gridClasses.columnHeaderTitleContainer}`]: {\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n flex: 1,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n // to anchor the aggregation label\n position: 'relative'\n },\n [`& .${gridClasses.columnHeaderTitleContainerContent}`]: {\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center'\n },\n [`& .${gridClasses['columnHeader--filledGroup']} .${gridClasses.columnHeaderTitleContainer}`]: {\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']} .${gridClasses.columnHeaderTitleContainer}`]: {\n borderBottom: `none`\n },\n [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']}`]: {\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses.headerFilterRow}`]: {\n borderTop: `1px solid ${borderColor}`\n },\n [`& .${gridClasses.sortIcon}, & .${gridClasses.filterIcon}`]: {\n fontSize: 'inherit'\n },\n [`& .${gridClasses['columnHeader--sortable']}`]: {\n cursor: 'pointer'\n },\n [`& .${gridClasses['columnHeader--alignCenter']} .${gridClasses.columnHeaderTitleContainer}`]: {\n justifyContent: 'center'\n },\n [`& .${gridClasses['columnHeader--alignRight']} .${gridClasses.columnHeaderDraggableContainer}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.columnHeaderTitleContainer}`]: {\n flexDirection: 'row-reverse'\n },\n [`& .${gridClasses['columnHeader--alignCenter']} .${gridClasses.menuIcon}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}`]: {\n marginRight: 'auto',\n marginLeft: -6\n },\n [`& .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}`]: {\n marginRight: 'auto',\n marginLeft: -10\n },\n [`& .${gridClasses['columnHeader--moving']}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover\n },\n [`& .${gridClasses.columnSeparator}`]: {\n visibility: 'hidden',\n position: 'absolute',\n zIndex: 100,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n color: borderColor\n },\n '@media (hover: hover)': {\n [`& .${gridClasses.columnHeaders}:hover`]: columnHeadersStyles,\n [`& .${gridClasses.columnHeader}:hover`]: columnHeaderStyles,\n [`& .${gridClasses.columnHeader}:not(.${gridClasses['columnHeader--sorted']}):hover .${gridClasses.sortIcon}`]: {\n opacity: 0.5\n }\n },\n '@media (hover: none)': {\n [`& .${gridClasses.columnHeaders}`]: columnHeadersStyles,\n [`& .${gridClasses.columnHeader}`]: columnHeaderStyles\n },\n [`& .${gridClasses['columnSeparator--sideLeft']}`]: {\n left: -12\n },\n [`& .${gridClasses['columnSeparator--sideRight']}`]: {\n right: -12\n },\n [`& .${gridClasses['columnSeparator--resizable']}`]: {\n cursor: 'col-resize',\n touchAction: 'none',\n '&:hover': {\n color: (theme.vars || theme).palette.text.primary,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n color: borderColor\n }\n },\n [`&.${gridClasses['columnSeparator--resizing']}`]: {\n color: (theme.vars || theme).palette.text.primary\n },\n '& svg': {\n pointerEvents: 'none'\n }\n },\n [`& .${gridClasses.iconSeparator}`]: {\n color: 'inherit'\n },\n [`& .${gridClasses.menuIcon}`]: {\n width: 0,\n visibility: 'hidden',\n fontSize: 20,\n marginRight: -10,\n display: 'flex',\n alignItems: 'center'\n },\n [`.${gridClasses.menuOpen}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.row}`]: {\n display: 'flex',\n width: 'fit-content',\n breakInside: 'avoid',\n // Avoid the row to be broken in two different print pages.\n '&:hover, &.Mui-hovered': {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&.Mui-selected': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:hover, &.Mui-hovered': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(\n ${theme.vars.palette.action.selectedOpacity} + \n ${theme.vars.palette.action.hoverOpacity}\n ))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n }\n },\n [`& .${gridClasses.cell}`]: {\n display: 'flex',\n alignItems: 'center',\n borderBottom: '1px solid',\n '&.Mui-selected': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:hover, &.Mui-hovered': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity + theme.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n }\n },\n [`&.${gridClasses['root--disableUserSelection']} .${gridClasses.cell}`]: {\n userSelect: 'none'\n },\n [`& .${gridClasses.row}:not(.${gridClasses['row--dynamicHeight']}) > .${gridClasses.cell}`]: {\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n [`& .${gridClasses.cellContent}`]: {\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n [`& .${gridClasses.cell}.${gridClasses['cell--selectionMode']}`]: {\n cursor: 'default'\n },\n [`& .${gridClasses.cell}.${gridClasses['cell--editing']}`]: {\n padding: 1,\n display: 'flex',\n boxShadow: theme.shadows[2],\n backgroundColor: (theme.vars || theme).palette.background.paper,\n '&:focus-within': {\n outline: `solid ${(theme.vars || theme).palette.primary.main} 1px`,\n outlineOffset: '-1px'\n }\n },\n [`& .${gridClasses['row--editing']}`]: {\n boxShadow: theme.shadows[2]\n },\n [`& .${gridClasses['row--editing']} .${gridClasses.cell}`]: {\n boxShadow: theme.shadows[0],\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n [`& .${gridClasses.editBooleanCell}`]: {\n display: 'flex',\n height: '100%',\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center'\n },\n [`& .${gridClasses.booleanCell}[data-value=\"true\"]`]: {\n color: (theme.vars || theme).palette.text.secondary\n },\n [`& .${gridClasses.booleanCell}[data-value=\"false\"]`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`& .${gridClasses.actionsCell}`]: {\n display: 'inline-flex',\n alignItems: 'center',\n gridGap: theme.spacing(1)\n },\n [`& .${gridClasses.rowReorderCell}`]: {\n display: 'inline-flex',\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& .${gridClasses['rowReorderCell--draggable']}`]: {\n cursor: 'move',\n opacity: 1\n },\n [`& .${gridClasses.rowReorderCellContainer}`]: {\n padding: 0,\n alignItems: 'stretch'\n },\n [`.${gridClasses.withBorderColor}`]: {\n borderColor\n },\n [`& .${gridClasses['cell--withRightBorder']}`]: {\n borderRightWidth: '1px',\n borderRightStyle: 'solid'\n },\n [`& .${gridClasses['columnHeader--withRightBorder']}`]: {\n borderRightWidth: '1px',\n borderRightStyle: 'solid'\n },\n [`& .${gridClasses['cell--textLeft']}`]: {\n justifyContent: 'flex-start'\n },\n [`& .${gridClasses['cell--textRight']}`]: {\n justifyContent: 'flex-end'\n },\n [`& .${gridClasses['cell--textCenter']}`]: {\n justifyContent: 'center'\n },\n [`& .${gridClasses.columnHeaderDraggableContainer}`]: {\n display: 'flex',\n width: '100%',\n height: '100%'\n },\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: {\n display: 'none'\n },\n [`& .${gridClasses['columnHeader--dragging']}, & .${gridClasses['row--dragging']}`]: {\n background: (theme.vars || theme).palette.background.paper,\n padding: '0 12px',\n borderRadius: 'var(--unstable_DataGrid-radius)',\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& .${gridClasses['row--dragging']}`]: {\n background: (theme.vars || theme).palette.background.paper,\n padding: '0 12px',\n borderRadius: 'var(--unstable_DataGrid-radius)',\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: {\n display: 'flex'\n }\n },\n [`& .${gridClasses.treeDataGroupingCell}`]: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n [`& .${gridClasses.treeDataGroupingCellToggle}`]: {\n flex: '0 0 28px',\n alignSelf: 'stretch',\n marginRight: theme.spacing(2)\n },\n [`& .${gridClasses.groupingCriteriaCell}`]: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n [`& .${gridClasses.groupingCriteriaCellToggle}`]: {\n flex: '0 0 28px',\n alignSelf: 'stretch',\n marginRight: theme.spacing(2)\n }\n });\n return gridStyle;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_capitalize as capitalize, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { GridRootStyles } from './GridRootStyles';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';\nimport { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n autoHeight,\n density,\n classes\n } = ownerState;\n const slots = {\n root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {\n var _rootProps$experiment;\n const rootProps = useGridRootProps();\n const {\n children,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridPrivateApiContext();\n const densityValue = useGridSelector(apiRef, gridDensityValueSelector);\n const rootContainerRef = React.useRef(null);\n const handleRef = useForkRef(rootContainerRef, ref);\n const getAriaAttributes = (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 // ariaV7 should never change\n ? null : useGridAriaAttributes;\n const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;\n const ownerState = _extends({}, rootProps, {\n density: densityValue\n });\n const classes = useUtilityClasses(ownerState);\n apiRef.current.register('public', {\n rootElementRef: rootContainerRef\n });\n\n // Our implementation of \n const [mountedState, setMountedState] = React.useState(false);\n useEnhancedEffect(() => {\n setMountedState(true);\n }, []);\n if (!mountedState) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridRootStyles, _extends({\n ref: handleRef,\n className: clsx(className, classes.root),\n ownerState: ownerState\n }, ariaAttributes, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRoot.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridRoot };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['footerContainer', 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFooterContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FooterContainer',\n overridesResolver: (props, styles) => styles.footerContainer\n})({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: 52,\n borderTop: '1px solid'\n});\nconst GridFooterContainer = /*#__PURE__*/React.forwardRef(function GridFooterContainer(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridFooterContainerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooterContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooterContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['overlay']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridOverlayRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Overlay',\n overridesResolver: (_, styles) => styles.overlay\n})({\n width: '100%',\n height: '100%',\n display: 'flex',\n alignSelf: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'var(--unstable_DataGrid-overlayBackground)'\n});\nconst GridOverlay = /*#__PURE__*/React.forwardRef(function GridOverlay(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridOverlayRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['toolbarContainer']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ToolbarContainer',\n overridesResolver: (_, styles) => styles.toolbarContainer\n})(({\n theme\n}) => ({\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: theme.spacing(1),\n padding: theme.spacing(0.5, 0.5, 0)\n}));\nconst GridToolbarContainer = /*#__PURE__*/React.forwardRef(function GridToolbarContainer(props, ref) {\n const {\n className,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n if (!children) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridToolbarContainerRoot, _extends({\n ref: ref,\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbarContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['iconButtonContainer']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridIconButtonContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'IconButtonContainer',\n overridesResolver: (props, styles) => styles.iconButtonContainer\n})(() => ({\n display: 'flex',\n visibility: 'hidden',\n width: 0\n}));\nexport const GridIconButtonContainer = /*#__PURE__*/React.forwardRef(function GridIconButtonContainer(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridIconButtonContainerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridIconButtonContainer } from './GridIconButtonContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n icon: ['sortIcon']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction getIcon(icons, direction, className, sortingOrder) {\n let Icon;\n const iconProps = {};\n if (direction === 'asc') {\n Icon = icons.columnSortedAscendingIcon;\n } else if (direction === 'desc') {\n Icon = icons.columnSortedDescendingIcon;\n } else {\n Icon = icons.columnUnsortedIcon;\n iconProps.sortingOrder = sortingOrder;\n }\n return Icon ? /*#__PURE__*/_jsx(Icon, _extends({\n fontSize: \"small\",\n className: className\n }, iconProps)) : null;\n}\nfunction GridColumnHeaderSortIconRaw(props) {\n var _rootProps$slotProps;\n const {\n direction,\n index,\n sortingOrder\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const iconElement = getIcon(rootProps.slots, direction, classes.icon, sortingOrder);\n if (!iconElement) {\n return null;\n }\n const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n tabIndex: -1,\n \"aria-label\": apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n title: apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n size: \"small\"\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: iconElement\n }));\n return /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n children: [index != null && /*#__PURE__*/_jsx(Badge, {\n badgeContent: index,\n color: \"default\",\n children: iconButton\n }), index == null && iconButton]\n });\n}\nconst GridColumnHeaderSortIcon = /*#__PURE__*/React.memo(GridColumnHeaderSortIconRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSortIconRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n direction: PropTypes.oneOf(['asc', 'desc']),\n index: PropTypes.number,\n sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])).isRequired\n} : void 0;\nexport { GridColumnHeaderSortIcon };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n open\n } = ownerState;\n const slots = {\n root: ['menuIcon', open && 'menuOpen'],\n button: ['menuIconButton']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nexport const ColumnHeaderMenuIcon = /*#__PURE__*/React.memo(props => {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n colDef,\n open,\n columnMenuId,\n columnMenuButtonId,\n iconButtonRef\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const handleMenuIconClick = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n apiRef.current.toggleColumnMenu(colDef.field);\n }, [apiRef, colDef.field]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: classes.root,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: apiRef.current.getLocaleText('columnMenuLabel'),\n enterDelay: 1000\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: iconButtonRef,\n tabIndex: -1,\n className: classes.button,\n \"aria-label\": apiRef.current.getLocaleText('columnMenuLabel'),\n size: \"small\",\n onClick: handleMenuIconClick,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? columnMenuId : undefined,\n id: columnMenuButtonId\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuIcon, {\n fontSize: \"small\"\n })\n }))\n }))\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEventCallback as useEventCallback, HTMLElementType } from '@mui/utils';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { GridMenu } from '../GridMenu';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridColumnHeaderMenu({\n columnMenuId,\n columnMenuButtonId,\n ContentComponent,\n contentComponentProps,\n field,\n open,\n target,\n onExited\n}) {\n const apiRef = useGridApiContext();\n const colDef = apiRef.current.getColumn(field);\n const hideMenu = useEventCallback(event => {\n if (event) {\n // Prevent triggering the sorting\n event.stopPropagation();\n if (target != null && target.contains(event.target)) {\n return;\n }\n }\n apiRef.current.hideColumnMenu();\n });\n if (!target || !colDef) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridMenu, {\n placement: `bottom-${colDef.align === 'right' ? 'start' : 'end'}`,\n open: open,\n target: target,\n onClose: hideMenu,\n onExited: onExited,\n children: /*#__PURE__*/_jsx(ContentComponent, _extends({\n colDef: colDef,\n hideMenu: hideMenu,\n open: open,\n id: columnMenuId,\n labelledby: columnMenuButtonId\n }, contentComponentProps))\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n columnMenuButtonId: PropTypes.string,\n columnMenuId: PropTypes.string,\n ContentComponent: PropTypes.elementType.isRequired,\n contentComponentProps: PropTypes.any,\n field: PropTypes.string.isRequired,\n onExited: PropTypes.func,\n open: PropTypes.bool.isRequired,\n target: HTMLElementType\n} : void 0;\nexport { GridColumnHeaderMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { isOverflown } from '../../utils/domUtils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['columnHeaderTitle']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnHeaderTitleRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnHeaderTitle',\n overridesResolver: (props, styles) => styles.columnHeaderTitle\n})({\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 'var(--unstable_DataGrid-headWeight)'\n});\nconst ColumnHeaderInnerTitle = /*#__PURE__*/React.forwardRef(function ColumnHeaderInnerTitle(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridColumnHeaderTitleRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\n// No React.memo here as if we display the sort icon, we need to recalculate the isOver\nfunction GridColumnHeaderTitle(props) {\n var _rootProps$slotProps;\n const {\n label,\n description\n } = props;\n const rootProps = useGridRootProps();\n const titleRef = React.useRef(null);\n const [tooltip, setTooltip] = React.useState('');\n const handleMouseOver = React.useCallback(() => {\n if (!description && titleRef != null && titleRef.current) {\n const isOver = isOverflown(titleRef.current);\n if (isOver) {\n setTooltip(label);\n } else {\n setTooltip('');\n }\n }\n }, [description, label]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: description || tooltip\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(ColumnHeaderInnerTitle, {\n onMouseOver: handleMouseOver,\n ref: titleRef,\n children: label\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderTitle.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n columnWidth: PropTypes.number.isRequired,\n description: PropTypes.node,\n label: PropTypes.string.isRequired\n} : void 0;\nexport { GridColumnHeaderTitle };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"resizable\", \"resizing\", \"height\", \"side\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar GridColumnHeaderSeparatorSides = /*#__PURE__*/function (GridColumnHeaderSeparatorSides) {\n GridColumnHeaderSeparatorSides[\"Left\"] = \"left\";\n GridColumnHeaderSeparatorSides[\"Right\"] = \"right\";\n return GridColumnHeaderSeparatorSides;\n}(GridColumnHeaderSeparatorSides || {});\nconst useUtilityClasses = ownerState => {\n const {\n resizable,\n resizing,\n classes,\n side\n } = ownerState;\n const slots = {\n root: ['columnSeparator', resizable && 'columnSeparator--resizable', resizing && 'columnSeparator--resizing', side && `columnSeparator--side${capitalize(side)}`],\n icon: ['iconSeparator']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderSeparatorRaw(props) {\n const {\n height,\n side = GridColumnHeaderSeparatorSides.Right\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n side,\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const stopClick = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n className: classes.root,\n style: {\n minHeight: height,\n opacity: rootProps.showColumnVerticalBorder ? 0 : 1\n }\n }, other, {\n onClick: stopClick,\n children: /*#__PURE__*/_jsx(rootProps.slots.columnResizeIcon, {\n className: classes.icon\n })\n }))\n );\n}\nconst GridColumnHeaderSeparator = /*#__PURE__*/React.memo(GridColumnHeaderSeparatorRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSeparatorRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n height: PropTypes.number.isRequired,\n resizable: PropTypes.bool.isRequired,\n resizing: PropTypes.bool.isRequired,\n side: PropTypes.oneOf(['left', 'right'])\n} : void 0;\nexport { GridColumnHeaderSeparator, GridColumnHeaderSeparatorSides };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"classes\", \"columnMenuOpen\", \"colIndex\", \"height\", \"isResizing\", \"sortDirection\", \"hasFocus\", \"tabIndex\", \"separatorSide\", \"isDraggable\", \"headerComponent\", \"description\", \"elementId\", \"width\", \"columnMenuIconButton\", \"columnMenu\", \"columnTitleIconButtons\", \"headerClassName\", \"label\", \"resizable\", \"draggableContainerProps\", \"columnHeaderSeparatorProps\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { GridColumnHeaderTitle } from './GridColumnHeaderTitle';\nimport { GridColumnHeaderSeparator } from './GridColumnHeaderSeparator';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {\n const {\n classes,\n columnMenuOpen,\n colIndex,\n height,\n isResizing,\n sortDirection,\n hasFocus,\n tabIndex,\n separatorSide,\n isDraggable,\n headerComponent,\n description,\n width,\n columnMenuIconButton = null,\n columnMenu = null,\n columnTitleIconButtons = null,\n headerClassName,\n label,\n resizable,\n draggableContainerProps,\n columnHeaderSeparatorProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const headerCellRef = React.useRef(null);\n const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);\n const handleRef = useForkRef(headerCellRef, ref);\n let ariaSort = 'none';\n if (sortDirection != null) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n React.useEffect(() => {\n if (!showColumnMenuIcon) {\n setShowColumnMenuIcon(columnMenuOpen);\n }\n }, [showColumnMenuIcon, columnMenuOpen]);\n React.useLayoutEffect(() => {\n const columnMenuState = apiRef.current.state.columnMenu;\n if (hasFocus && !columnMenuState.open) {\n const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusableElement || headerCellRef.current;\n elementToFocus == null || elementToFocus.focus();\n apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;\n }\n }, [apiRef, hasFocus]);\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: handleRef,\n className: clsx(classes.root, headerClassName),\n style: {\n height,\n width,\n minWidth: width,\n maxWidth: width\n },\n role: \"columnheader\",\n tabIndex: tabIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-sort\": ariaSort,\n \"aria-label\": headerComponent == null ? label : undefined\n }, other, {\n children: [/*#__PURE__*/_jsxs(\"div\", _extends({\n className: classes.draggableContainer,\n draggable: isDraggable,\n role: \"presentation\"\n }, draggableContainerProps, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classes.titleContainer,\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classes.titleContainerContent,\n children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {\n label: label,\n description: description,\n columnWidth: width\n })\n }), columnTitleIconButtons]\n }), columnMenuIconButton]\n })), /*#__PURE__*/_jsx(GridColumnHeaderSeparator, _extends({\n resizable: !rootProps.disableColumnResize && !!resizable,\n resizing: isResizing,\n height: height,\n side: separatorSide\n }, columnHeaderSeparatorProps)), columnMenu]\n }));\n});\nexport { GridGenericColumnHeaderItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';\nimport { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon';\nimport { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n colDef,\n classes,\n isDragging,\n sortDirection,\n showRightBorder,\n filterItemsCounter\n } = ownerState;\n const isColumnSorted = sortDirection != null;\n const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;\n // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work\n const isColumnNumeric = colDef.type === 'number';\n const slots = {\n root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder'],\n draggableContainer: ['columnHeaderDraggableContainer'],\n titleContainer: ['columnHeaderTitleContainer'],\n titleContainerContent: ['columnHeaderTitleContainerContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderItem(props) {\n var _rootProps$slotProps, _colDef$sortingOrder, _rootProps$slotProps2, _colDef$headerName;\n const {\n colDef,\n columnMenuOpen,\n colIndex,\n headerHeight,\n isResizing,\n sortDirection,\n sortIndex,\n filterItemsCounter,\n hasFocus,\n tabIndex,\n disableReorder,\n separatorSide\n } = props;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const headerCellRef = React.useRef(null);\n const columnMenuId = useId();\n const columnMenuButtonId = useId();\n const iconButtonRef = React.useRef(null);\n const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);\n const isDraggable = React.useMemo(() => !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder, [rootProps.disableColumnReorder, disableReorder, colDef.disableReorder]);\n let headerComponent;\n if (colDef.renderHeader) {\n headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));\n }\n const ownerState = _extends({}, props, {\n classes: rootProps.classes,\n showRightBorder: rootProps.showColumnVerticalBorder\n });\n const classes = useUtilityClasses(ownerState);\n const publish = React.useCallback(eventName => event => {\n // Ignore portal\n // See https://github.com/mui/mui-x/issues/1721\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);\n }, [apiRef, colDef.field]);\n const mouseEventsHandlers = React.useMemo(() => ({\n onClick: publish('columnHeaderClick'),\n onDoubleClick: publish('columnHeaderDoubleClick'),\n onMouseOver: publish('columnHeaderOver'),\n // TODO remove as it's not used\n onMouseOut: publish('columnHeaderOut'),\n // TODO remove as it's not used\n onMouseEnter: publish('columnHeaderEnter'),\n // TODO remove as it's not used\n onMouseLeave: publish('columnHeaderLeave'),\n // TODO remove as it's not used\n onKeyDown: publish('columnHeaderKeyDown'),\n onFocus: publish('columnHeaderFocus'),\n onBlur: publish('columnHeaderBlur')\n }), [publish]);\n const draggableEventHandlers = React.useMemo(() => isDraggable ? {\n onDragStart: publish('columnHeaderDragStart'),\n onDragEnter: publish('columnHeaderDragEnter'),\n onDragOver: publish('columnHeaderDragOver'),\n onDragEnd: publish('columnHeaderDragEnd')\n } : {}, [isDraggable, publish]);\n const columnHeaderSeparatorProps = React.useMemo(() => ({\n onMouseDown: publish('columnSeparatorMouseDown'),\n onDoubleClick: publish('columnSeparatorDoubleClick')\n }), [publish]);\n React.useEffect(() => {\n if (!showColumnMenuIcon) {\n setShowColumnMenuIcon(columnMenuOpen);\n }\n }, [showColumnMenuIcon, columnMenuOpen]);\n const handleExited = React.useCallback(() => {\n setShowColumnMenuIcon(false);\n }, []);\n const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/_jsx(ColumnHeaderMenuIcon, {\n colDef: colDef,\n columnMenuId: columnMenuId,\n columnMenuButtonId: columnMenuButtonId,\n open: showColumnMenuIcon,\n iconButtonRef: iconButtonRef\n });\n const columnMenu = /*#__PURE__*/_jsx(GridColumnHeaderMenu, {\n columnMenuId: columnMenuId,\n columnMenuButtonId: columnMenuButtonId,\n field: colDef.field,\n open: columnMenuOpen,\n target: iconButtonRef.current,\n ContentComponent: rootProps.slots.columnMenu,\n contentComponentProps: (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.columnMenu,\n onExited: handleExited\n });\n const sortingOrder = (_colDef$sortingOrder = colDef.sortingOrder) != null ? _colDef$sortingOrder : rootProps.sortingOrder;\n const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.slots.columnHeaderFilterIconButton, _extends({\n field: colDef.field,\n counter: filterItemsCounter\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.columnHeaderFilterIconButton)), colDef.sortable && !colDef.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {\n direction: sortDirection,\n index: sortIndex,\n sortingOrder: sortingOrder\n })]\n });\n React.useLayoutEffect(() => {\n const columnMenuState = apiRef.current.state.columnMenu;\n if (hasFocus && !columnMenuState.open) {\n const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusableElement || headerCellRef.current;\n elementToFocus == null || elementToFocus.focus();\n apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;\n }\n }, [apiRef, hasFocus]);\n const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({\n field: colDef.field,\n colDef\n }) : colDef.headerClassName;\n const label = (_colDef$headerName = colDef.headerName) != null ? _colDef$headerName : colDef.field;\n return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, _extends({\n ref: headerCellRef,\n classes: classes,\n columnMenuOpen: columnMenuOpen,\n colIndex: colIndex,\n height: headerHeight,\n isResizing: isResizing,\n sortDirection: sortDirection,\n hasFocus: hasFocus,\n tabIndex: tabIndex,\n separatorSide: separatorSide,\n isDraggable: isDraggable,\n headerComponent: headerComponent,\n description: colDef.description,\n elementId: colDef.field,\n width: colDef.computedWidth,\n columnMenuIconButton: columnMenuIconButton,\n columnTitleIconButtons: columnTitleIconButtons,\n headerClassName: headerClassName,\n label: label,\n resizable: !rootProps.disableColumnResize && !!colDef.resizable,\n \"data-field\": colDef.field,\n columnMenu: columnMenu,\n draggableContainerProps: draggableEventHandlers,\n columnHeaderSeparatorProps: columnHeaderSeparatorProps\n }, mouseEventsHandlers));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n colIndex: PropTypes.number.isRequired,\n columnMenuOpen: PropTypes.bool.isRequired,\n disableReorder: PropTypes.bool,\n filterItemsCounter: PropTypes.number,\n hasFocus: PropTypes.bool,\n headerHeight: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n isResizing: PropTypes.bool.isRequired,\n separatorSide: PropTypes.oneOf(['left', 'right']),\n sortDirection: PropTypes.oneOf(['asc', 'desc']),\n sortIndex: PropTypes.number,\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired\n} : void 0;\nexport { GridColumnHeaderItem };","import { GridLogicOperator } from '../../../models/gridFilterItem';\nexport const getDefaultGridFilterModel = () => ({\n items: [],\n logicOperator: GridLogicOperator.And,\n quickFilterValues: [],\n quickFilterLogicOperator: GridLogicOperator.And\n});\n\n/**\n * @param {GridRowId} rowId The id of the row we want to filter.\n * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.\n */\n\n/**\n * Visibility status for each row.\n * A row is visible if it is passing the filters AND if its parents are expanded.\n * If a row is not registered in this lookup, it is visible.\n */","// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\nexport class TimerBasedCleanupTracking {\n constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n this.timeouts = new Map();\n this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n this.cleanupTimeout = timeout;\n }\n register(object, unsubscribe, unregisterToken) {\n if (!this.timeouts) {\n this.timeouts = new Map();\n }\n const timeout = setTimeout(() => {\n if (typeof unsubscribe === 'function') {\n unsubscribe();\n }\n this.timeouts.delete(unregisterToken.cleanupToken);\n }, this.cleanupTimeout);\n this.timeouts.set(unregisterToken.cleanupToken, timeout);\n }\n unregister(unregisterToken) {\n const timeout = this.timeouts.get(unregisterToken.cleanupToken);\n if (timeout) {\n this.timeouts.delete(unregisterToken.cleanupToken);\n clearTimeout(timeout);\n }\n }\n reset() {\n if (this.timeouts) {\n this.timeouts.forEach((value, key) => {\n this.unregister({\n cleanupToken: key\n });\n });\n this.timeouts = undefined;\n }\n }\n}","export class FinalizationRegistryBasedCleanupTracking {\n constructor() {\n this.registry = new FinalizationRegistry(unsubscribe => {\n if (typeof unsubscribe === 'function') {\n unsubscribe();\n }\n });\n }\n register(object, unsubscribe, unregisterToken) {\n this.registry.register(object, unsubscribe, unregisterToken);\n }\n unregister(unregisterToken) {\n this.registry.unregister(unregisterToken);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n}","import * as React from 'react';\nimport { TimerBasedCleanupTracking } from '../../utils/cleanupTracking/TimerBasedCleanupTracking';\nimport { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking';\n/**\n * Signal to the underlying logic what version of the public component API\n * of the data grid is exposed.\n */\nvar GridSignature = /*#__PURE__*/function (GridSignature) {\n GridSignature[\"DataGrid\"] = \"DataGrid\";\n GridSignature[\"DataGridPro\"] = \"DataGridPro\";\n return GridSignature;\n}(GridSignature || {});\n// We use class to make it easier to detect in heap snapshots by name\nclass ObjectToBeRetainedByReact {}\n\n// Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts\n// Check https://github.com/facebook/react/issues/15317 to get more information\nexport function createUseGridApiEventHandler(registryContainer) {\n let cleanupTokensCounter = 0;\n return function useGridApiEventHandler(apiRef, eventName, handler, options) {\n if (registryContainer.registry === null) {\n registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();\n }\n const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());\n const subscription = React.useRef(null);\n const handlerRef = React.useRef();\n handlerRef.current = handler;\n const cleanupTokenRef = React.useRef(null);\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler = (params, event, details) => {\n if (!event.defaultMuiPrevented) {\n var _handlerRef$current;\n (_handlerRef$current = handlerRef.current) == null || _handlerRef$current.call(handlerRef, params, event, details);\n }\n };\n subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n cleanupTokensCounter += 1;\n cleanupTokenRef.current = {\n cleanupToken: cleanupTokensCounter\n };\n registryContainer.registry.register(objectRetainedByReact,\n // The callback below will be called once this reference stops being retained\n () => {\n var _subscription$current;\n (_subscription$current = subscription.current) == null || _subscription$current.call(subscription);\n subscription.current = null;\n cleanupTokenRef.current = null;\n }, cleanupTokenRef.current);\n } else if (!handlerRef.current && subscription.current) {\n subscription.current();\n subscription.current = null;\n if (cleanupTokenRef.current) {\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n }\n React.useEffect(() => {\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler = (params, event, details) => {\n if (!event.defaultMuiPrevented) {\n var _handlerRef$current2;\n (_handlerRef$current2 = handlerRef.current) == null || _handlerRef$current2.call(handlerRef, params, event, details);\n }\n };\n subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n }\n if (cleanupTokenRef.current && registryContainer.registry) {\n // If the effect was called, it means that this render was committed\n // so we can trust the cleanup function to remove the listener.\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n return () => {\n var _subscription$current2;\n (_subscription$current2 = subscription.current) == null || _subscription$current2.call(subscription);\n subscription.current = null;\n };\n }, [apiRef, eventName, options]);\n };\n}\nconst registryContainer = {\n registry: null\n};\n\n// TODO: move to @mui/x-data-grid/internals\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCleanupTracking = () => {\n var _registryContainer$re;\n (_registryContainer$re = registryContainer.registry) == null || _registryContainer$re.reset();\n registryContainer.registry = null;\n};\nexport const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);\nconst optionsSubscriberOptions = {\n isFirst: true\n};\nexport function useGridApiOptionHandler(apiRef, eventName, handler) {\n // Validate that only one per event name?\n useGridApiEventHandler(apiRef, eventName, handler, optionsSubscriberOptions);\n}\nexport { GridSignature };","import * as React from 'react';\nexport function useGridLogger(privateApiRef, name) {\n const logger = React.useRef(null);\n if (logger.current) {\n return logger.current;\n }\n const newLogger = privateApiRef.current.getLogger(name);\n logger.current = newLogger;\n return newLogger;\n}","export function isNumber(value) {\n return typeof value === 'number' && !Number.isNaN(value);\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isObject(value) {\n return typeof value === 'object' && value !== null;\n}\nexport function localStorageAvailable() {\n try {\n // Incognito mode might reject access to the localStorage for security reasons.\n // window isn't defined on Node.js\n // https://stackoverflow.com/questions/16427636/check-if-localstorage-is-available\n const key = '__some_random_key_you_are_not_going_to_use__';\n window.localStorage.setItem(key, key);\n window.localStorage.removeItem(key);\n return true;\n } catch (err) {\n return false;\n }\n}\nexport function escapeRegExp(value) {\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Follows the CSS specification behavior for min and max\n * If min > max, then the min have priority\n */\nexport const clamp = (value, min, max) => Math.max(min, Math.min(max, value));\n\n/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * We only type the public interface to avoid dozens of `as` in the function.\n */\n\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (Array.isArray(a)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!isDeepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n const entriesA = Array.from(a.entries());\n for (let i = 0; i < entriesA.length; i += 1) {\n if (!b.has(entriesA[i][0])) {\n return false;\n }\n }\n for (let i = 0; i < entriesA.length; i += 1) {\n const entryA = entriesA[i];\n if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n const entries = Array.from(a.entries());\n for (let i = 0; i < entries.length; i += 1) {\n if (!b.has(entries[i][0])) {\n return false;\n }\n }\n return true;\n }\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n const keys = Object.keys(a);\n const length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (let i = 0; i < length; i += 1) {\n const key = keys[i];\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}\n\n// Pseudo random number. See https://stackoverflow.com/a/47593316\nfunction mulberry32(a) {\n return () => {\n /* eslint-disable */\n let t = a += 0x6d2b79f5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n /* eslint-enable */\n };\n}\n\nexport function randomNumberBetween(seed, min, max) {\n const random = mulberry32(seed);\n return () => min + (max - min) * random();\n}\nexport function deepClone(obj) {\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n }\n return JSON.parse(JSON.stringify(obj));\n}","import * as React from 'react';\nimport { isFunction } from '../../utils/utils';\nimport { useGridLogger } from './useGridLogger';\nexport const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {\n const logger = useGridLogger(apiRef, 'useNativeEventListener');\n const [added, setAdded] = React.useState(false);\n const handlerRef = React.useRef(handler);\n const wrapHandler = React.useCallback(event => {\n return handlerRef.current && handlerRef.current(event);\n }, []);\n React.useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n React.useEffect(() => {\n let targetElement;\n if (isFunction(ref)) {\n targetElement = ref();\n } else {\n targetElement = ref && ref.current ? ref.current : null;\n }\n if (targetElement && eventName && !added) {\n logger.debug(`Binding native ${eventName} event`);\n targetElement.addEventListener(eventName, wrapHandler, options);\n const boundElem = targetElement;\n setAdded(true);\n const unsubscribe = () => {\n logger.debug(`Clearing native ${eventName} event`);\n boundElem.removeEventListener(eventName, wrapHandler, options);\n };\n apiRef.current.subscribeEvent('unmount', unsubscribe);\n }\n }, [ref, wrapHandler, eventName, added, logger, options, apiRef]);\n};","import * as React from 'react';\nexport const useFirstRender = callback => {\n const isFirstRender = React.useRef(true);\n if (isFirstRender.current) {\n isFirstRender.current = false;\n callback();\n }\n};","import { buildWarning } from '../../../utils/warning';\nimport { GridSignature } from '../../utils';\nconst MAX_PAGE_SIZE = 100;\nexport const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;\nexport const getPageCount = (rowCount, pageSize) => {\n if (pageSize > 0 && rowCount > 0) {\n return Math.ceil(rowCount / pageSize);\n }\n return 0;\n};\nexport const noRowCountInServerMode = buildWarning([\"MUI: the 'rowCount' prop is undefined while using paginationMode='server'\", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');\nexport const getDefaultGridPaginationModel = autoPageSize => ({\n page: 0,\n pageSize: autoPageSize ? 0 : 100\n});\nexport const getValidPage = (page, pageCount = 0) => {\n if (pageCount === 0) {\n return page;\n }\n return Math.max(Math.min(page, pageCount - 1), 0);\n};\nexport const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {\n if (signatureProp === GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {\n throw new Error(['MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n }\n};","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridFilteredTopLevelRowCountSelector, gridExpandedSortedRowEntriesSelector, gridExpandedSortedRowIdsSelector, gridFilteredSortedTopLevelRowEntriesSelector } from '../filter/gridFilterSelector';\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\nimport { getPageCount } from './gridPaginationUtils';\n\n/**\n * @category Pagination\n * @ignore - do not document.\n */\nexport const gridPaginationSelector = state => state.pagination;\n\n/**\n * Get the pagination model\n * @category Pagination\n */\nexport const gridPaginationModelSelector = createSelector(gridPaginationSelector, pagination => pagination.paginationModel);\n\n/**\n * Get the index of the page to render if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.page);\n\n/**\n * Get the maximum amount of rows to display on a single page if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSizeSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.pageSize);\n\n/**\n * Get the amount of pages needed to display all the rows if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageCountSelector = createSelector(gridPaginationModelSelector, gridFilteredTopLevelRowCountSelector, (paginationModel, visibleTopLevelRowCount) => getPageCount(visibleTopLevelRowCount, paginationModel.pageSize));\n\n/**\n * Get the index of the first and the last row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginationRowRangeSelector = createSelectorMemoized(gridPaginationModelSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, gridExpandedSortedRowEntriesSelector, gridFilteredSortedTopLevelRowEntriesSelector, (paginationModel, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {\n const visibleTopLevelRowCount = visibleSortedTopLevelRowEntries.length;\n const topLevelFirstRowIndex = Math.min(paginationModel.pageSize * paginationModel.page, visibleTopLevelRowCount - 1);\n const topLevelLastRowIndex = Math.min(topLevelFirstRowIndex + paginationModel.pageSize - 1, visibleTopLevelRowCount - 1);\n\n // The range contains no element\n if (topLevelFirstRowIndex === -1 || topLevelLastRowIndex === -1) {\n return null;\n }\n\n // The tree is flat, there is no need to look for children\n if (rowTreeDepth < 2) {\n return {\n firstRowIndex: topLevelFirstRowIndex,\n lastRowIndex: topLevelLastRowIndex\n };\n }\n const topLevelFirstRow = visibleSortedTopLevelRowEntries[topLevelFirstRowIndex];\n const topLevelRowsInCurrentPageCount = topLevelLastRowIndex - topLevelFirstRowIndex + 1;\n const firstRowIndex = visibleSortedRowEntries.findIndex(row => row.id === topLevelFirstRow.id);\n let lastRowIndex = firstRowIndex;\n let topLevelRowAdded = 0;\n while (lastRowIndex < visibleSortedRowEntries.length && topLevelRowAdded <= topLevelRowsInCurrentPageCount) {\n var _rowTree$row$id;\n const row = visibleSortedRowEntries[lastRowIndex];\n const depth = (_rowTree$row$id = rowTree[row.id]) == null ? void 0 : _rowTree$row$id.depth;\n if (depth === undefined) {\n lastRowIndex += 1;\n } else {\n if (topLevelRowAdded < topLevelRowsInCurrentPageCount || depth > 0) {\n lastRowIndex += 1;\n }\n if (depth === 0) {\n topLevelRowAdded += 1;\n }\n }\n }\n return {\n firstRowIndex,\n lastRowIndex: lastRowIndex - 1\n };\n});\n\n/**\n * Get the id and the model of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridPaginationRowRangeSelector, (visibleSortedRowEntries, paginationRange) => {\n if (!paginationRange) {\n return [];\n }\n return visibleSortedRowEntries.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});\n\n/**\n * Get the id of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowIdsSelector, gridPaginationRowRangeSelector, (visibleSortedRowIds, paginationRange) => {\n if (!paginationRange) {\n return [];\n }\n return visibleSortedRowIds.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});","export const gridPreferencePanelStateSelector = state => state.preferencePanel;","var GridPreferencePanelsValue = /*#__PURE__*/function (GridPreferencePanelsValue) {\n GridPreferencePanelsValue[\"filters\"] = \"filters\";\n GridPreferencePanelsValue[\"columns\"] = \"columns\";\n return GridPreferencePanelsValue;\n}(GridPreferencePanelsValue || {});\nexport { GridPreferencePanelsValue };","export const gridRowsMetaSelector = state => state.rowsMeta;","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridRowsLookupSelector } from '../rows/gridRowsSelector';\nexport const gridRowSelectionStateSelector = state => state.rowSelection;\nexport const selectedGridRowsCountSelector = createSelector(gridRowSelectionStateSelector, selection => selection.length);\nexport const selectedGridRowsSelector = createSelectorMemoized(gridRowSelectionStateSelector, gridRowsLookupSelector, (selectedRows, rowsLookup) => new Map(selectedRows.map(id => [id, rowsLookup[id]])));\nexport const selectedIdsLookupSelector = createSelectorMemoized(gridRowSelectionStateSelector, selection => selection.reduce((lookup, rowId) => {\n lookup[rowId] = rowId;\n return lookup;\n}, {}));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { buildWarning } from '../../../utils/warning';\nconst sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\nexport const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {\n if (disableMultipleColumnsSorting && model.length > 1) {\n sortModelDisableMultiColumnsSortingWarning();\n return [model[0]];\n }\n return model;\n};\nexport const mergeStateWithSortModel = (sortModel, disableMultipleColumnsSorting) => state => _extends({}, state, {\n sorting: _extends({}, state.sorting, {\n sortModel: sanitizeSortModel(sortModel, disableMultipleColumnsSorting)\n })\n});\nconst isDesc = direction => direction === 'desc';\n\n/**\n * Transform an item of the sorting model into a method comparing two rows.\n * @param {GridSortItem} sortItem The sort item we want to apply.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridParsedSortItem | null} The parsed sort item. Returns `null` is the sort item is not valid.\n */\nconst parseSortItem = (sortItem, apiRef) => {\n const column = apiRef.current.getColumn(sortItem.field);\n if (!column) {\n return null;\n }\n const comparator = isDesc(sortItem.sort) ? (...args) => -1 * column.sortComparator(...args) : column.sortComparator;\n const getSortCellParams = id => ({\n id,\n field: column.field,\n rowNode: apiRef.current.getRowNode(id),\n value: apiRef.current.getCellValue(id, column.field),\n api: apiRef.current\n });\n return {\n getSortCellParams,\n comparator\n };\n};\n/**\n * Compare two rows according to a list of valid sort items.\n * The `row1Params` and `row2Params` must have the same length as `parsedSortItems`,\n * and each of their index must contain the `GridSortCellParams` of the sort item with the same index.\n * @param {GridParsedSortItem[]} parsedSortItems All the sort items with which we want to compare the rows.\n * @param {GridRowAggregatedSortingParams} row1 The node and params of the 1st row for each sort item.\n * @param {GridRowAggregatedSortingParams} row2 The node and params of the 2nd row for each sort item.\n */\nconst compareRows = (parsedSortItems, row1, row2) => {\n return parsedSortItems.reduce((res, item, index) => {\n if (res !== 0) {\n // return the results of the first comparator which distinguish the two rows\n return res;\n }\n const sortCellParams1 = row1.params[index];\n const sortCellParams2 = row2.params[index];\n res = item.comparator(sortCellParams1.value, sortCellParams2.value, sortCellParams1, sortCellParams2);\n return res;\n }, 0);\n};\n\n/**\n * Generates a method to easily sort a list of rows according to the current sort model.\n * @param {GridSortModel} sortModel The model with which we want to sort the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridSortingModelApplier | null} A method that generates a list of sorted row ids from a list of rows according to the current sort model. If `null`, we consider that the rows should remain in the order there were provided.\n */\nexport const buildAggregatedSortingApplier = (sortModel, apiRef) => {\n const comparatorList = sortModel.map(item => parseSortItem(item, apiRef)).filter(comparator => !!comparator);\n if (comparatorList.length === 0) {\n return null;\n }\n return rowList => rowList.map(node => ({\n node,\n params: comparatorList.map(el => el.getSortCellParams(node.id))\n })).sort((a, b) => compareRows(comparatorList, a, b)).map(row => row.node.id);\n};\nexport const getNextGridSortDirection = (sortingOrder, current) => {\n const currentIdx = sortingOrder.indexOf(current);\n if (!current || currentIdx === -1 || currentIdx + 1 === sortingOrder.length) {\n return sortingOrder[0];\n }\n return sortingOrder[currentIdx + 1];\n};\nconst gridNillComparator = (v1, v2) => {\n if (v1 == null && v2 != null) {\n return -1;\n }\n if (v2 == null && v1 != null) {\n return 1;\n }\n if (v1 == null && v2 == null) {\n return 0;\n }\n return null;\n};\nconst collator = new Intl.Collator();\nexport const gridStringOrNumberComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n if (typeof value1 === 'string') {\n return collator.compare(value1.toString(), value2.toString());\n }\n return value1 - value2;\n};\nexport const gridNumberComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n return Number(value1) - Number(value2);\n};\nexport const gridDateComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n if (value1 > value2) {\n return 1;\n }\n if (value1 < value2) {\n return -1;\n }\n return 0;\n};","/* eslint-disable @typescript-eslint/naming-convention */\nimport { createSelector } from '../../../utils/createSelector';\nexport const unstable_gridHeaderFilteringStateSelector = state => state.headerFiltering;\nexport const unstable_gridHeaderFilteringEditFieldSelector = createSelector(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);\nexport const unstable_gridHeaderFilteringMenuSelector = createSelector(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nexport const virtualizationStateInitializer = (state, props) => {\n const virtualization = {\n enabled: !props.disableVirtualization,\n enabledForColumns: true\n };\n return _extends({}, state, {\n virtualization\n });\n};\nexport function useGridVirtualization(apiRef, props) {\n /*\n * API METHODS\n */\n\n const setVirtualization = enabled => {\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: _extends({}, state.virtualization, {\n enabled\n })\n }));\n };\n const setColumnVirtualization = enabled => {\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: _extends({}, state.virtualization, {\n enabledForColumns: enabled\n })\n }));\n };\n const api = {\n unstable_setVirtualization: setVirtualization,\n unstable_setColumnVirtualization: setColumnVirtualization\n };\n useGridApiMethod(apiRef, api, 'public');\n\n /*\n * EFFECTS\n */\n\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(() => {\n setVirtualization(!props.disableVirtualization);\n }, [props.disableVirtualization]);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","import { createSelector } from '../../../utils/createSelector';\n/**\n * Get the columns state\n * @category Virtualization\n */\nexport const gridVirtualizationSelector = state => state.virtualization;\n\n/**\n * Get the enabled state for virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabled);\n\n/**\n * Get the enabled state for virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationColumnEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForColumns);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { useGridSelector } from '../../hooks';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridIconButtonContainer } from './GridIconButtonContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n icon: ['filterIcon']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderFilterIconButton(props) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n counter,\n field,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const labelId = useId();\n const panelId = useId();\n const toggleFilter = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n const {\n open,\n openedPanelValue\n } = gridPreferencePanelStateSelector(apiRef.current.state);\n if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n apiRef.current.hideFilterPanel();\n } else {\n apiRef.current.showFilterPanel(undefined, panelId, labelId);\n }\n if (onClick) {\n onClick(apiRef.current.getColumnHeaderParams(field), event);\n }\n }, [apiRef, field, onClick, panelId, labelId]);\n if (!counter) {\n return null;\n }\n const open = preferencePanel.open && preferencePanel.labelId === labelId;\n const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n id: labelId,\n onClick: toggleFilter,\n color: \"default\",\n \"aria-label\": apiRef.current.getLocaleText('columnHeaderFiltersLabel'),\n size: \"small\",\n tabIndex: -1,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? panelId : undefined\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnFilteredIcon, {\n className: classes.icon,\n fontSize: \"small\"\n })\n }));\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: apiRef.current.getLocaleText('columnHeaderFiltersTooltipActive')(counter),\n enterDelay: 1000\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseTooltip, {\n children: /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n children: [counter > 1 && /*#__PURE__*/_jsx(Badge, {\n badgeContent: counter,\n color: \"default\",\n children: iconButton\n }), counter === 1 && iconButton]\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderFilterIconButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n counter: PropTypes.number,\n field: PropTypes.string.isRequired,\n onClick: PropTypes.func\n} : void 0;\nexport { GridColumnHeaderFilterIconButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"id\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"colDef\", \"isEditable\", \"cellMode\", \"hasFocus\", \"tabIndex\", \"api\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { isSpaceKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['checkboxInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCellCheckboxRenderer(props, ref) {\n var _rootProps$slotProps;\n const {\n field,\n id,\n value: isChecked,\n rowNode,\n hasFocus,\n tabIndex\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const checkboxElement = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRef = useForkRef(checkboxElement, ref);\n const element = apiRef.current.getCellElement(id, field);\n const handleChange = event => {\n const params = {\n value: event.target.checked,\n id\n };\n apiRef.current.publishEvent('rowSelectionCheckboxChange', params, event);\n };\n React.useLayoutEffect(() => {\n if (tabIndex === 0 && element) {\n element.tabIndex = -1;\n }\n }, [element, tabIndex]);\n React.useEffect(() => {\n if (hasFocus) {\n var _checkboxElement$curr;\n const input = (_checkboxElement$curr = checkboxElement.current) == null ? void 0 : _checkboxElement$curr.querySelector('input');\n input == null || input.focus({\n preventScroll: true\n });\n } else if (rippleRef.current) {\n // Only available in @mui/material v5.4.1 or later\n rippleRef.current.stop({});\n }\n }, [hasFocus]);\n const handleKeyDown = React.useCallback(event => {\n if (isSpaceKey(event.key)) {\n // We call event.stopPropagation to avoid selecting the row and also scrolling to bottom\n // TODO: Remove and add a check inside useGridKeyboardNavigation\n event.stopPropagation();\n }\n }, []);\n if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {\n return null;\n }\n const isSelectable = apiRef.current.isRowSelectable(id);\n const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectRow' : 'checkboxSelectionSelectRow');\n return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n ref: handleRef,\n tabIndex: tabIndex,\n checked: isChecked,\n onChange: handleChange,\n className: classes.root,\n inputProps: {\n 'aria-label': label\n },\n onKeyDown: handleKeyDown,\n disabled: !isSelectable,\n touchRippleRef: rippleRef\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCellCheckboxForwardRef.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridCellCheckboxForwardRef };\nexport const GridCellCheckboxRenderer = GridCellCheckboxForwardRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"colDef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridTabIndexColumnHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { gridRowSelectionStateSelector } from '../../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridExpandedSortedRowIdsSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridPaginatedVisibleSortedGridRowIdsSelector } from '../../hooks/features/pagination/gridPaginationSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['checkboxInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridHeaderCheckbox = /*#__PURE__*/React.forwardRef(function GridHeaderCheckbox(props, ref) {\n var _rootProps$slotProps;\n const other = _objectWithoutPropertiesLoose(props, _excluded);\n const [, forceUpdate] = React.useState(false);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const tabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n const selection = useGridSelector(apiRef, gridRowSelectionStateSelector);\n const visibleRowIds = useGridSelector(apiRef, gridExpandedSortedRowIdsSelector);\n const paginatedVisibleRowIds = useGridSelector(apiRef, gridPaginatedVisibleSortedGridRowIdsSelector);\n const filteredSelection = React.useMemo(() => {\n if (typeof rootProps.isRowSelectable !== 'function') {\n return selection;\n }\n return selection.filter(id => {\n // The row might have been deleted\n if (!apiRef.current.getRow(id)) {\n return false;\n }\n return rootProps.isRowSelectable(apiRef.current.getRowParams(id));\n });\n }, [apiRef, rootProps.isRowSelectable, selection]);\n\n // All the rows that could be selected / unselected by toggling this checkbox\n const selectionCandidates = React.useMemo(() => {\n const rowIds = !rootProps.pagination || !rootProps.checkboxSelectionVisibleOnly ? visibleRowIds : paginatedVisibleRowIds;\n\n // Convert to an object to make O(1) checking if a row exists or not\n // TODO create selector that returns visibleRowIds/paginatedVisibleRowIds as an object\n return rowIds.reduce((acc, id) => {\n acc[id] = true;\n return acc;\n }, {});\n }, [rootProps.pagination, rootProps.checkboxSelectionVisibleOnly, paginatedVisibleRowIds, visibleRowIds]);\n\n // Amount of rows selected and that are visible in the current page\n const currentSelectionSize = React.useMemo(() => filteredSelection.filter(id => selectionCandidates[id]).length, [filteredSelection, selectionCandidates]);\n const isIndeterminate = currentSelectionSize > 0 && currentSelectionSize < Object.keys(selectionCandidates).length;\n const isChecked = currentSelectionSize > 0;\n const handleChange = event => {\n const params = {\n value: event.target.checked\n };\n apiRef.current.publishEvent('headerSelectionCheckboxChange', params);\n };\n const tabIndex = tabIndexState !== null && tabIndexState.field === props.field ? 0 : -1;\n React.useLayoutEffect(() => {\n const element = apiRef.current.getColumnHeaderElement(props.field);\n if (tabIndex === 0 && element) {\n element.tabIndex = -1;\n }\n }, [tabIndex, apiRef, props.field]);\n const handleKeyDown = React.useCallback(event => {\n if (event.key === ' ') {\n // imperative toggle the checkbox because Space is disable by some preventDefault\n apiRef.current.publishEvent('headerSelectionCheckboxChange', {\n value: !isChecked\n });\n }\n }, [apiRef, isChecked]);\n const handleSelectionChange = React.useCallback(() => {\n forceUpdate(p => !p);\n }, []);\n React.useEffect(() => {\n return apiRef.current.subscribeEvent('rowSelectionChange', handleSelectionChange);\n }, [apiRef, handleSelectionChange]);\n const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectAllRows' : 'checkboxSelectionSelectAllRows');\n return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n ref: ref,\n indeterminate: isIndeterminate,\n checked: isChecked,\n onChange: handleChange,\n className: classes.root,\n inputProps: {\n 'aria-label': label\n },\n tabIndex: tabIndex,\n onKeyDown: handleKeyDown\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridHeaderCheckbox.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The column of the current header component.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the column that triggered the event\n */\n field: PropTypes.string.isRequired\n} : void 0;\nexport { GridHeaderCheckbox };","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridArrowUpwardIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexport const GridArrowDownwardIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexport const GridKeyboardArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\nexport const GridExpandMoreIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\nexport const GridFilterListIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\nexport const GridFilterAltIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z\"\n}), 'FilterAlt');\nexport const GridSearchIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\nexport const GridMenuIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\nexport const GridCheckCircleIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\nexport const GridColumnIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z\"\n}), 'ColumnIcon');\nexport const GridSeparatorIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 19V5h2v14z\"\n}), 'Separator');\nexport const GridViewHeadlineIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z\"\n}), 'ViewHeadline');\nexport const GridTableRowsIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z\"\n}), 'TableRows');\nexport const GridViewStreamIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 18h17v-6H4v6zM4 5v6h17V5H4z\"\n}), 'ViewStream');\nexport const GridTripleDotsVerticalIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'TripleDotsVertical');\nexport const GridCloseIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexport const GridAddIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexport const GridRemoveIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\nexport const GridLoadIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"\n}), 'Load');\nexport const GridDragIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'Drag');\nexport const GridSaveAltIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z\"\n}), 'SaveAlt');\nexport const GridCheckIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\nexport const GridMoreVertIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\nexport const GridVisibilityOffIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexport const GridViewColumnIcon = createSvgIcon( /*#__PURE__*/_jsx(\"g\", {\n children: /*#__PURE__*/_jsx(\"path\", {\n d: \"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z\"\n })\n}), 'ViewColumn');\nexport const GridClearIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\nexport const GridDeleteIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexport const GridDeleteForeverIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"colDef\", \"id\", \"labelledby\", \"className\", \"children\", \"open\"];\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport MenuList from '@mui/material/MenuList';\nimport { styled } from '@mui/material/styles';\nimport { isHideMenuKey, isTabKey } from '../../../utils/keyboardUtils';\nimport { gridClasses } from '../../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledMenuList = styled(MenuList)(() => ({\n minWidth: 248\n}));\nconst GridColumnMenuContainer = /*#__PURE__*/React.forwardRef(function GridColumnMenuContainer(props, ref) {\n const {\n hideMenu,\n id,\n labelledby,\n className,\n children,\n open\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const handleListKeyDown = React.useCallback(event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n hideMenu(event);\n }\n }, [hideMenu]);\n return /*#__PURE__*/_jsx(StyledMenuList, _extends({\n id: id,\n ref: ref,\n className: clsx(gridClasses.menuList, className),\n \"aria-labelledby\": labelledby,\n onKeyDown: handleListKeyDown,\n autoFocus: open\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n hideMenu: PropTypes.func.isRequired,\n id: PropTypes.string,\n labelledby: PropTypes.string,\n open: PropTypes.bool.isRequired\n} : void 0;\nexport { GridColumnMenuContainer };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"displayOrder\"];\nimport * as React from 'react';\nimport Divider from '@mui/material/Divider';\nimport { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';\nconst useGridColumnMenuSlots = props => {\n const apiRef = useGridPrivateApiContext();\n const {\n defaultSlots,\n defaultSlotProps,\n slots = {},\n slotProps = {},\n hideMenu,\n colDef,\n addDividers = true\n } = props;\n const processedComponents = React.useMemo(() => _extends({}, defaultSlots, slots), [defaultSlots, slots]);\n const processedSlotProps = React.useMemo(() => {\n if (!slotProps || Object.keys(slotProps).length === 0) {\n return defaultSlotProps;\n }\n const mergedProps = _extends({}, slotProps);\n Object.entries(defaultSlotProps).forEach(([key, currentSlotProps]) => {\n mergedProps[key] = _extends({}, currentSlotProps, slotProps[key] || {});\n });\n return mergedProps;\n }, [defaultSlotProps, slotProps]);\n const defaultItems = apiRef.current.unstable_applyPipeProcessors('columnMenu', [], props.colDef);\n const userItems = React.useMemo(() => {\n const defaultComponentKeys = Object.keys(defaultSlots);\n return Object.keys(slots).filter(key => !defaultComponentKeys.includes(key));\n }, [slots, defaultSlots]);\n return React.useMemo(() => {\n const uniqueItems = Array.from(new Set([...defaultItems, ...userItems]));\n const cleansedItems = uniqueItems.filter(key => processedComponents[key] != null);\n const sorted = cleansedItems.sort((a, b) => {\n const leftItemProps = processedSlotProps[a];\n const rightItemProps = processedSlotProps[b];\n const leftDisplayOrder = Number.isFinite(leftItemProps == null ? void 0 : leftItemProps.displayOrder) ? leftItemProps.displayOrder : 100;\n const rightDisplayOrder = Number.isFinite(rightItemProps == null ? void 0 : rightItemProps.displayOrder) ? rightItemProps.displayOrder : 100;\n return leftDisplayOrder - rightDisplayOrder;\n });\n return sorted.reduce((acc, key, index) => {\n let itemProps = {\n colDef,\n onClick: hideMenu\n };\n const processedComponentProps = processedSlotProps[key];\n if (processedComponentProps) {\n const customProps = _objectWithoutPropertiesLoose(processedComponentProps, _excluded);\n itemProps = _extends({}, itemProps, customProps);\n }\n return addDividers && index !== sorted.length - 1 ? [...acc, [processedComponents[key], itemProps], [Divider, {}]] : [...acc, [processedComponents[key], itemProps]];\n }, []);\n }, [addDividers, colDef, defaultItems, hideMenu, processedComponents, processedSlotProps, userItems]);\n};\nexport { useGridColumnMenuSlots };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { gridVisibleColumnDefinitionsSelector } from '../../../../hooks/features/columns';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuHideItem(props) {\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n const columnsWithMenu = visibleColumns.filter(col => col.disableColumnMenu !== true);\n // do not allow to hide the last column with menu\n const disabled = columnsWithMenu.length === 1;\n const toggleColumn = React.useCallback(event => {\n /**\n * Disabled `MenuItem` would trigger `click` event\n * after imperative `.click()` call on HTML element.\n * Also, click is triggered in testing environment as well.\n */\n if (disabled) {\n return;\n }\n apiRef.current.setColumnVisibility(colDef.field, false);\n onClick(event);\n }, [apiRef, colDef.field, onClick, disabled]);\n if (rootProps.disableColumnSelector) {\n return null;\n }\n if (colDef.hideable === false) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: toggleColumn,\n disabled: disabled,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuHideIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuHideColumn')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuHideItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuHideItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { GridPreferencePanelsValue } from '../../../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuManageItem(props) {\n const {\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const showColumns = React.useCallback(event => {\n onClick(event); // hide column menu\n apiRef.current.showPreferences(GridPreferencePanelsValue.columns);\n }, [apiRef, onClick]);\n if (rootProps.disableColumnSelector) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: showColumns,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuManageColumnsIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuManageColumns')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuManageItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuManageItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridColumnMenuHideItem } from './GridColumnMenuHideItem';\nimport { GridColumnMenuManageItem } from './GridColumnMenuManageItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuColumnsItem(props) {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(GridColumnMenuHideItem, _extends({}, props)), /*#__PURE__*/_jsx(GridColumnMenuManageItem, _extends({}, props))]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuColumnsItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuColumnsItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuFilterItem(props) {\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const showFilter = React.useCallback(event => {\n onClick(event);\n apiRef.current.showFilterPanel(colDef.field);\n }, [apiRef, colDef.field, onClick]);\n if (rootProps.disableColumnFilter || !colDef.filterable) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: showFilter,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuFilterIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuFilter')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuFilterItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuFilterItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridSelector } from '../../../../hooks/utils/useGridSelector';\nimport { gridSortModelSelector } from '../../../../hooks/features/sorting/gridSortingSelector';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuSortItem(props) {\n var _colDef$sortingOrder;\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n const rootProps = useGridRootProps();\n const sortDirection = React.useMemo(() => {\n if (!colDef) {\n return null;\n }\n const sortItem = sortModel.find(item => item.field === colDef.field);\n return sortItem == null ? void 0 : sortItem.sort;\n }, [colDef, sortModel]);\n const sortingOrder = (_colDef$sortingOrder = colDef.sortingOrder) != null ? _colDef$sortingOrder : rootProps.sortingOrder;\n const onSortMenuItemClick = React.useCallback(event => {\n onClick(event);\n const direction = event.currentTarget.getAttribute('data-value') || null;\n apiRef.current.sortColumn(colDef, direction === sortDirection ? null : direction);\n }, [apiRef, colDef, onClick, sortDirection]);\n if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [sortingOrder.includes('asc') && sortDirection !== 'asc' ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n \"data-value\": \"asc\",\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortAscendingIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuSortAsc')\n })]\n }) : null, sortingOrder.includes('desc') && sortDirection !== 'desc' ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n \"data-value\": \"desc\",\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortDescendingIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuSortDesc')\n })]\n }) : null, sortingOrder.includes(null) && sortDirection != null ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {}), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuUnsort')\n })]\n }) : null]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuSortItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuSortItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"defaultSlots\", \"defaultSlotProps\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridColumnMenuSlots } from '../../../hooks/features/columnMenu/useGridColumnMenuSlots';\nimport { GridColumnMenuContainer } from './GridColumnMenuContainer';\nimport { GridColumnMenuColumnsItem } from './menuItems/GridColumnMenuColumnsItem';\nimport { GridColumnMenuFilterItem } from './menuItems/GridColumnMenuFilterItem';\nimport { GridColumnMenuSortItem } from './menuItems/GridColumnMenuSortItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_COLUMN_MENU_SLOTS = {\n columnMenuSortItem: GridColumnMenuSortItem,\n columnMenuFilterItem: GridColumnMenuFilterItem,\n columnMenuColumnsItem: GridColumnMenuColumnsItem\n};\nexport const GRID_COLUMN_MENU_SLOT_PROPS = {\n columnMenuSortItem: {\n displayOrder: 10\n },\n columnMenuFilterItem: {\n displayOrder: 20\n },\n columnMenuColumnsItem: {\n displayOrder: 30\n }\n};\nconst GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGenericColumnMenu(props, ref) {\n const {\n defaultSlots,\n defaultSlotProps,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const orderedSlots = useGridColumnMenuSlots(_extends({}, other, {\n defaultSlots,\n defaultSlotProps,\n slots,\n slotProps\n }));\n return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({\n ref: ref\n }, other, {\n children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/_jsx(Component, _extends({}, otherProps), index))\n }));\n});\nconst GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {\n return /*#__PURE__*/_jsx(GridGenericColumnMenu, _extends({}, props, {\n ref: ref,\n defaultSlots: GRID_COLUMN_MENU_SLOTS,\n defaultSlotProps: GRID_COLUMN_MENU_SLOT_PROPS\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n hideMenu: PropTypes.func.isRequired,\n id: PropTypes.string,\n labelledby: PropTypes.string,\n open: PropTypes.bool.isRequired,\n /**\n * Could be used to pass new props or override props specific to a column menu component\n * e.g. `displayOrder`\n */\n slotProps: PropTypes.object,\n /**\n * `slots` could be used to add new and (or) override default column menu items\n * If you register a nee component you must pass it's `displayOrder` in `slotProps`\n * or it will be placed in the end of the list\n */\n slots: PropTypes.object\n} : void 0;\nexport { GridColumnMenu, GridGenericColumnMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelContentRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelContent',\n overridesResolver: (props, styles) => styles.panelContent\n})({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n flex: '1 1',\n maxHeight: 400\n});\nfunction GridPanelContent(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelContentRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelContent };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelFooter']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelFooterRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelFooter',\n overridesResolver: (props, styles) => styles.panelFooter\n})(({\n theme\n}) => ({\n padding: theme.spacing(0.5),\n display: 'flex',\n justifyContent: 'space-between'\n}));\nfunction GridPanelFooter(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelFooterRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelFooter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelHeader']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelHeaderRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelHeader',\n overridesResolver: (props, styles) => styles.panelHeader\n})(({\n theme\n}) => ({\n padding: theme.spacing(1)\n}));\nfunction GridPanelHeader(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelHeaderRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelHeader.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelHeader };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport FocusTrap from '@mui/material/Unstable_TrapFocus';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelWrapper']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelWrapperRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelWrapper',\n overridesResolver: (props, styles) => styles.panelWrapper\n})({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n '&:focus': {\n outline: 0\n }\n});\nconst isEnabled = () => true;\nconst GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper(props, ref) {\n const {\n className,\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(FocusTrap, _extends({\n open: true,\n disableEnforceFocus: true,\n isEnabled: isEnabled\n }, slotProps.TrapFocus, {\n children: /*#__PURE__*/_jsx(GridPanelWrapperRoot, _extends({\n ref: ref,\n tabIndex: -1,\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanelWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n slotProps: PropTypes.object\n} : void 0;\nexport { GridPanelWrapper };","// A guide to feature toggling (deprecated)\n//\n// The feature toggle is:\n// - independent from the NODE_ENV\n// - isn't pruning code in production, as the objective is to eventually ship the code.\n// - doesn't allow to cherry-pick which feature to enable\n//\n// By default, the experimental features are only enabled in:\n// - the local environment\n// - the pull request previews\n//\n// Reviewers can force the value with the local storage and the GRID_EXPERIMENTAL_ENABLED key:\n// - 'true' => force it to be enabled\n// - 'false' => force it to be disabled\n//\n// Developers (users) are discouraged to enable the experimental feature by setting the GRID_EXPERIMENTAL_ENABLED env.\n// Instead, prefer exposing experimental APIs, for instance, a prop or a new `unstable_` module.\n\nexport const GRID_EXPERIMENTAL_ENABLED = false;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sort\", \"searchPredicate\", \"autoFocusSearchField\", \"disableHideAllButton\", \"disableShowAllButton\", \"getTogglableColumns\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport IconButton from '@mui/material/IconButton';\nimport { switchClasses } from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { styled } from '@mui/material/styles';\nimport { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridPanelContent } from './GridPanelContent';\nimport { GridPanelFooter } from './GridPanelFooter';\nimport { GridPanelHeader } from './GridPanelHeader';\nimport { GridPanelWrapper } from './GridPanelWrapper';\nimport { GRID_EXPERIMENTAL_ENABLED } from '../../constants/envConstants';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['columnsPanel'],\n columnsPanelRow: ['columnsPanelRow']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnsPanelRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnsPanel',\n overridesResolver: (props, styles) => styles.columnsPanel\n})({\n padding: '8px 0px 8px 8px'\n});\nconst GridColumnsPanelRowRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnsPanelRow',\n overridesResolver: (props, styles) => styles.columnsPanelRow\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'space-between',\n padding: '1px 8px 1px 7px',\n [`& .${switchClasses.root}`]: {\n marginRight: theme.spacing(0.5)\n }\n}));\nconst GridIconButtonRoot = styled(IconButton)({\n justifyContent: 'flex-end'\n});\nconst collator = new Intl.Collator();\nconst defaultSearchPredicate = (column, searchValue) => {\n return (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;\n};\nfunction GridColumnsPanel(props) {\n var _rootProps$slotProps, _rootProps$slotProps3, _rootProps$slotProps4;\n const apiRef = useGridApiContext();\n const searchInputRef = React.useRef(null);\n const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n const rootProps = useGridRootProps();\n const [searchValue, setSearchValue] = React.useState('');\n const classes = useUtilityClasses(rootProps);\n const {\n sort,\n searchPredicate = defaultSearchPredicate,\n autoFocusSearchField = true,\n disableHideAllButton = false,\n disableShowAllButton = false,\n getTogglableColumns\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const sortedColumns = React.useMemo(() => {\n switch (sort) {\n case 'asc':\n return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));\n case 'desc':\n return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));\n default:\n return columns;\n }\n }, [columns, sort]);\n const toggleColumn = event => {\n const {\n name: field\n } = event.target;\n apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);\n };\n const toggleAllColumns = React.useCallback(isVisible => {\n const currentModel = gridColumnVisibilityModelSelector(apiRef);\n const newModel = _extends({}, currentModel);\n const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;\n columns.forEach(col => {\n if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {\n if (isVisible) {\n // delete the key from the model instead of setting it to `true`\n delete newModel[col.field];\n } else {\n newModel[col.field] = false;\n }\n }\n });\n return apiRef.current.setColumnVisibilityModel(newModel);\n }, [apiRef, columns, getTogglableColumns]);\n const handleSearchValueChange = React.useCallback(event => {\n setSearchValue(event.target.value);\n }, []);\n const currentColumns = React.useMemo(() => {\n const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;\n const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({\n field\n }) => togglableColumns.includes(field)) : sortedColumns;\n if (!searchValue) {\n return togglableSortedColumns;\n }\n return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));\n }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);\n const firstSwitchRef = React.useRef(null);\n React.useEffect(() => {\n if (autoFocusSearchField) {\n searchInputRef.current.focus();\n } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {\n firstSwitchRef.current.focus();\n }\n }, [autoFocusSearchField]);\n let firstHideableColumnFound = false;\n const isFirstHideableColumn = column => {\n if (firstHideableColumnFound === false && column.hideable !== false) {\n firstHideableColumnFound = true;\n return true;\n }\n return false;\n };\n return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {\n children: [/*#__PURE__*/_jsx(GridPanelHeader, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),\n placeholder: apiRef.current.getLocaleText('columnsPanelTextFieldPlaceholder'),\n inputRef: searchInputRef,\n value: searchValue,\n onChange: handleSearchValueChange,\n variant: \"standard\",\n fullWidth: true\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField))\n }), /*#__PURE__*/_jsx(GridPanelContent, {\n children: /*#__PURE__*/_jsx(GridColumnsPanelRoot, {\n className: classes.root,\n ownerState: rootProps,\n children: currentColumns.map(column => {\n var _rootProps$slotProps2;\n return /*#__PURE__*/_jsxs(GridColumnsPanelRowRoot, {\n className: classes.columnsPanelRow,\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(FormControlLabel, {\n control: /*#__PURE__*/_jsx(rootProps.slots.baseSwitch, _extends({\n disabled: column.hideable === false,\n checked: columnVisibilityModel[column.field] !== false,\n onClick: toggleColumn,\n name: column.field,\n size: \"small\",\n inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSwitch)),\n label: column.headerName || column.field\n }), !rootProps.disableColumnReorder && GRID_EXPERIMENTAL_ENABLED && /*#__PURE__*/_jsx(GridIconButtonRoot, {\n draggable: true,\n \"aria-label\": apiRef.current.getLocaleText('columnsPanelDragIconLabel'),\n title: apiRef.current.getLocaleText('columnsPanelDragIconLabel'),\n size: \"small\",\n disabled: true,\n children: /*#__PURE__*/_jsx(rootProps.slots.columnReorderIcon, {})\n })]\n }, column.field);\n })\n })\n }), disableShowAllButton && disableHideAllButton ? null : /*#__PURE__*/_jsxs(GridPanelFooter, {\n children: [!disableHideAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: () => toggleAllColumns(false)\n }, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseButton, {\n disabled: disableHideAllButton,\n children: apiRef.current.getLocaleText('columnsPanelHideAllButton')\n })) : /*#__PURE__*/_jsx(\"span\", {}), !disableShowAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: () => toggleAllColumns(true)\n }, (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseButton, {\n disabled: disableShowAllButton,\n children: apiRef.current.getLocaleText('columnsPanelShowAllButton')\n })) : null]\n })]\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnsPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the column search field will be focused automatically.\n * If `false`, the first column switch input will be focused automatically.\n * This helps to avoid input keyboard panel to popup automatically on touch devices.\n * @default true\n */\n autoFocusSearchField: PropTypes.bool,\n /**\n * If `true`, the `Hide all` button will not be displayed.\n * @default false\n */\n disableHideAllButton: PropTypes.bool,\n /**\n * If `true`, the `Show all` button will be disabled\n * @default false\n */\n disableShowAllButton: PropTypes.bool,\n /**\n * Returns the list of togglable columns.\n * If used, only those columns will be displayed in the panel\n * which are passed as the return value of the function.\n * @param {GridColDef[]} columns The `ColDef` list of all columns.\n * @returns {GridColDef['field'][]} The list of togglable columns' field names.\n */\n getTogglableColumns: PropTypes.func,\n searchPredicate: PropTypes.func,\n slotProps: PropTypes.object,\n sort: PropTypes.oneOf(['asc', 'desc'])\n} : void 0;\nexport { GridColumnsPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { isEscapeKey } from '../../utils/keyboardUtils';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);\nconst GridPanelRoot = styled(Popper, {\n name: 'MuiDataGrid',\n slot: 'Panel',\n overridesResolver: (props, styles) => styles.panel\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst GridPaperRoot = styled(Paper, {\n name: 'MuiDataGrid',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n minWidth: 300,\n maxHeight: 450,\n display: 'flex'\n}));\nconst GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n children,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const classes = gridPanelClasses;\n const [isPlaced, setIsPlaced] = React.useState(false);\n const handleClickAway = React.useCallback(() => {\n apiRef.current.hidePreferences();\n }, [apiRef]);\n const handleKeyDown = React.useCallback(event => {\n if (isEscapeKey(event.key)) {\n apiRef.current.hidePreferences();\n }\n }, [apiRef]);\n const modifiers = React.useMemo(() => [{\n name: 'flip',\n enabled: false\n }, {\n name: 'isPlaced',\n enabled: true,\n phase: 'main',\n fn: () => {\n setIsPlaced(true);\n },\n effect: () => () => {\n setIsPlaced(false);\n }\n }], []);\n const [anchorEl, setAnchorEl] = React.useState(null);\n React.useEffect(() => {\n var _apiRef$current$rootE;\n const columnHeadersElement = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null || (_apiRef$current$rootE = _apiRef$current$rootE.current) == null ? void 0 : _apiRef$current$rootE.querySelector(`.${gridClasses.columnHeaders}`);\n if (columnHeadersElement) {\n setAnchorEl(columnHeadersElement);\n }\n }, [apiRef]);\n if (!anchorEl) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridPanelRoot, _extends({\n ref: ref,\n placement: \"bottom-start\",\n className: clsx(className, classes.panel),\n ownerState: rootProps,\n anchorEl: anchorEl,\n modifiers: modifiers\n }, other, {\n children: /*#__PURE__*/_jsx(ClickAwayListener, {\n mouseEvent: \"onMouseUp\",\n onClickAway: handleClickAway,\n children: /*#__PURE__*/_jsx(GridPaperRoot, {\n className: classes.paper,\n ownerState: rootProps,\n elevation: 8,\n onKeyDown: handleKeyDown,\n children: isPlaced && children\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Popper render function or node.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n ownerState: PropTypes.object\n} : void 0;\nexport { GridPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { gridColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridPreferencesPanel = /*#__PURE__*/React.forwardRef(function GridPreferencesPanel(props, ref) {\n var _preferencePanelState, _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n const rootProps = useGridRootProps();\n const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, (_preferencePanelState = preferencePanelState.openedPanelValue) != null ? _preferencePanelState : GridPreferencePanelsValue.filters);\n return /*#__PURE__*/_jsx(rootProps.slots.panel, _extends({\n ref: ref,\n as: rootProps.slots.basePopper,\n open: columns.length > 0 && preferencePanelState.open,\n id: preferencePanelState.panelId,\n \"aria-labelledby\": preferencePanelState.labelId\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.panel, props, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.basePopper, {\n children: panelContent\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"hasMultipleFilters\", \"deleteFilter\", \"applyFilterChanges\", \"multiFilterOperator\", \"showMultiFilterOperators\", \"disableMultiFilterOperator\", \"applyMultiFilterOperatorChanges\", \"focusElementRef\", \"logicOperators\", \"columnsSort\", \"filterColumns\", \"deleteIconProps\", \"logicOperatorInputProps\", \"operatorInputProps\", \"columnInputProps\", \"valueInputProps\", \"children\"],\n _excluded2 = [\"InputComponentProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';\nimport { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';\nimport { useGridSelector } from '../../../hooks/utils/useGridSelector';\nimport { GridLogicOperator } from '../../../models/gridFilterItem';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['filterForm'],\n deleteIcon: ['filterFormDeleteIcon'],\n logicOperatorInput: ['filterFormLogicOperatorInput'],\n columnInput: ['filterFormColumnInput'],\n operatorInput: ['filterFormOperatorInput'],\n valueInput: ['filterFormValueInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFilterFormRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterForm',\n overridesResolver: (props, styles) => styles.filterForm\n})(({\n theme\n}) => ({\n display: 'flex',\n padding: theme.spacing(1)\n}));\nconst FilterFormDeleteIcon = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormDeleteIcon',\n overridesResolver: (_, styles) => styles.filterFormDeleteIcon\n})(({\n theme\n}) => ({\n flexShrink: 0,\n justifyContent: 'flex-end',\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.2)\n}));\nconst FilterFormLogicOperatorInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormLogicOperatorInput',\n overridesResolver: (_, styles) => styles.filterFormLogicOperatorInput\n})({\n minWidth: 55,\n marginRight: 5,\n justifyContent: 'end'\n});\nconst FilterFormColumnInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormColumnInput',\n overridesResolver: (_, styles) => styles.filterFormColumnInput\n})({\n width: 150\n});\nconst FilterFormOperatorInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormOperatorInput',\n overridesResolver: (_, styles) => styles.filterFormOperatorInput\n})({\n width: 120\n});\nconst FilterFormValueInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormValueInput',\n overridesResolver: (_, styles) => styles.filterFormValueInput\n})({\n width: 190\n});\nconst getLogicOperatorLocaleKey = logicOperator => {\n switch (logicOperator) {\n case GridLogicOperator.And:\n return 'filterPanelOperatorAnd';\n case GridLogicOperator.Or:\n return 'filterPanelOperatorOr';\n default:\n throw new Error('MUI: Invalid `logicOperator` property in the `GridFilterPanel`.');\n }\n};\nconst getColumnLabel = col => col.headerName || col.field;\nconst collator = new Intl.Collator();\nconst GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2, _baseSelectProps$nati, _rootProps$slotProps3, _rootProps$slotProps4, _rootProps$slotProps5, _rootProps$slotProps6, _rootProps$slotProps7, _rootProps$slotProps8, _currentColumn$filter2;\n const {\n item,\n hasMultipleFilters,\n deleteFilter,\n applyFilterChanges,\n multiFilterOperator,\n showMultiFilterOperators,\n disableMultiFilterOperator,\n applyMultiFilterOperatorChanges,\n focusElementRef,\n logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n columnsSort,\n filterColumns,\n deleteIconProps = {},\n logicOperatorInputProps = {},\n operatorInputProps = {},\n columnInputProps = {},\n valueInputProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n const columnSelectId = useId();\n const columnSelectLabelId = useId();\n const operatorSelectId = useId();\n const operatorSelectLabelId = useId();\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const valueRef = React.useRef(null);\n const filterSelectorRef = React.useRef(null);\n const hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;\n const baseFormControlProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseFormControl) || {};\n const baseSelectProps = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelect) || {};\n const isBaseSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : true;\n const baseInputLabelProps = ((_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseInputLabel) || {};\n const baseSelectOptionProps = ((_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption) || {};\n const {\n InputComponentProps\n } = valueInputProps,\n valueInputPropsOther = _objectWithoutPropertiesLoose(valueInputProps, _excluded2);\n const filteredColumns = React.useMemo(() => {\n if (filterColumns === undefined || typeof filterColumns !== 'function') {\n return filterableColumns;\n }\n const filteredFields = filterColumns({\n field: item.field,\n columns: filterableColumns,\n currentFilters: (filterModel == null ? void 0 : filterModel.items) || []\n });\n return filterableColumns.filter(column => filteredFields.includes(column.field));\n }, [filterColumns, filterModel == null ? void 0 : filterModel.items, filterableColumns, item.field]);\n const sortedFilteredColumns = React.useMemo(() => {\n switch (columnsSort) {\n case 'asc':\n return filteredColumns.sort((a, b) => collator.compare(getColumnLabel(a), getColumnLabel(b)));\n case 'desc':\n return filteredColumns.sort((a, b) => -collator.compare(getColumnLabel(a), getColumnLabel(b)));\n default:\n return filteredColumns;\n }\n }, [filteredColumns, columnsSort]);\n const currentColumn = item.field ? apiRef.current.getColumn(item.field) : null;\n const currentOperator = React.useMemo(() => {\n var _currentColumn$filter;\n if (!item.operator || !currentColumn) {\n return null;\n }\n return (_currentColumn$filter = currentColumn.filterOperators) == null ? void 0 : _currentColumn$filter.find(operator => operator.value === item.operator);\n }, [item, currentColumn]);\n const changeColumn = React.useCallback(event => {\n const field = event.target.value;\n const column = apiRef.current.getColumn(field);\n if (column.field === currentColumn.field) {\n // column did not change\n return;\n }\n\n // try to keep the same operator when column change\n const newOperator = column.filterOperators.find(operator => operator.value === item.operator) || column.filterOperators[0];\n\n // Erase filter value if the input component is modified\n const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent);\n applyFilterChanges(_extends({}, item, {\n field,\n operator: newOperator.value,\n value: eraseItemValue ? undefined : item.value\n }));\n }, [apiRef, applyFilterChanges, item, currentColumn, currentOperator]);\n const changeOperator = React.useCallback(event => {\n const operator = event.target.value;\n const newOperator = currentColumn == null ? void 0 : currentColumn.filterOperators.find(op => op.value === operator);\n const eraseItemValue = !(newOperator != null && newOperator.InputComponent) || (newOperator == null ? void 0 : newOperator.InputComponent) !== (currentOperator == null ? void 0 : currentOperator.InputComponent);\n applyFilterChanges(_extends({}, item, {\n operator,\n value: eraseItemValue ? undefined : item.value\n }));\n }, [applyFilterChanges, item, currentColumn, currentOperator]);\n const changeLogicOperator = React.useCallback(event => {\n const logicOperator = event.target.value === GridLogicOperator.And.toString() ? GridLogicOperator.And : GridLogicOperator.Or;\n applyMultiFilterOperatorChanges(logicOperator);\n }, [applyMultiFilterOperatorChanges]);\n const handleDeleteFilter = () => {\n if (rootProps.disableMultipleColumnsFiltering) {\n if (item.value === undefined) {\n deleteFilter(item);\n } else {\n // TODO v6: simplify the behavior by always remove the filter form\n applyFilterChanges(_extends({}, item, {\n value: undefined\n }));\n }\n } else {\n deleteFilter(item);\n }\n };\n React.useImperativeHandle(focusElementRef, () => ({\n focus: () => {\n if (currentOperator != null && currentOperator.InputComponent) {\n var _valueRef$current;\n valueRef == null || (_valueRef$current = valueRef.current) == null || _valueRef$current.focus();\n } else {\n filterSelectorRef.current.focus();\n }\n }\n }), [currentOperator]);\n return /*#__PURE__*/_jsxs(GridFilterFormRoot, _extends({\n ref: ref,\n className: classes.root,\n \"data-id\": item.id,\n ownerState: rootProps\n }, other, {\n children: [/*#__PURE__*/_jsx(FilterFormDeleteIcon, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, deleteIconProps, {\n className: clsx(classes.deleteIcon, baseFormControlProps.className, deleteIconProps.className),\n ownerState: rootProps,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n \"aria-label\": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n onClick: handleDeleteFilter,\n size: \"small\"\n }, (_rootProps$slotProps5 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps5.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {\n fontSize: \"small\"\n })\n }))\n })), /*#__PURE__*/_jsx(FilterFormLogicOperatorInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, logicOperatorInputProps, {\n sx: _extends({\n display: hasLogicOperatorColumn ? 'flex' : 'none',\n visibility: showMultiFilterOperators ? 'visible' : 'hidden'\n }, baseFormControlProps.sx || {}, logicOperatorInputProps.sx || {}),\n className: clsx(classes.logicOperatorInput, baseFormControlProps.className, logicOperatorInputProps.className),\n ownerState: rootProps,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n inputProps: {\n 'aria-label': apiRef.current.getLocaleText('filterPanelLogicOperator')\n },\n value: multiFilterOperator,\n onChange: changeLogicOperator,\n disabled: !!disableMultiFilterOperator || logicOperators.length === 1,\n native: isBaseSelectNative\n }, (_rootProps$slotProps6 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps6.baseSelect, {\n children: logicOperators.map(logicOperator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: logicOperator.toString(),\n value: logicOperator.toString()\n }), apiRef.current.getLocaleText(getLogicOperatorLocaleKey(logicOperator))))\n }))\n })), /*#__PURE__*/_jsxs(FilterFormColumnInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, columnInputProps, {\n className: clsx(classes.columnInput, baseFormControlProps.className, columnInputProps.className),\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n htmlFor: columnSelectId,\n id: columnSelectLabelId,\n children: apiRef.current.getLocaleText('filterPanelColumns')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n labelId: columnSelectLabelId,\n id: columnSelectId,\n label: apiRef.current.getLocaleText('filterPanelColumns'),\n value: item.field || '',\n onChange: changeColumn,\n native: isBaseSelectNative\n }, (_rootProps$slotProps7 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps7.baseSelect, {\n children: sortedFilteredColumns.map(col => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: col.field,\n value: col.field\n }), getColumnLabel(col)))\n }))]\n })), /*#__PURE__*/_jsxs(FilterFormOperatorInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, operatorInputProps, {\n className: clsx(classes.operatorInput, baseFormControlProps.className, operatorInputProps.className),\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n htmlFor: operatorSelectId,\n id: operatorSelectLabelId,\n children: apiRef.current.getLocaleText('filterPanelOperator')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n labelId: operatorSelectLabelId,\n label: apiRef.current.getLocaleText('filterPanelOperator'),\n id: operatorSelectId,\n value: item.operator,\n onChange: changeOperator,\n native: isBaseSelectNative,\n inputRef: filterSelectorRef\n }, (_rootProps$slotProps8 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps8.baseSelect, {\n children: currentColumn == null || (_currentColumn$filter2 = currentColumn.filterOperators) == null ? void 0 : _currentColumn$filter2.map(operator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: operator.value,\n value: operator.value\n }), operator.label || apiRef.current.getLocaleText(`filterOperator${capitalize(operator.value)}`)))\n }))]\n })), /*#__PURE__*/_jsx(FilterFormValueInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, valueInputPropsOther, {\n className: clsx(classes.valueInput, baseFormControlProps.className, valueInputPropsOther.className),\n ownerState: rootProps,\n children: currentOperator != null && currentOperator.InputComponent ? /*#__PURE__*/_jsx(currentOperator.InputComponent, _extends({\n apiRef: apiRef,\n item: item,\n applyValue: applyFilterChanges,\n focusElementRef: valueRef\n }, currentOperator.InputComponentProps, InputComponentProps)) : null\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterForm.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Callback called when the operator, column field or value is changed.\n * @param {GridFilterItem} item The updated [[GridFilterItem]].\n */\n applyFilterChanges: PropTypes.func.isRequired,\n /**\n * Callback called when the logic operator is changed.\n * @param {GridLogicOperator} operator The new logic operator.\n */\n applyMultiFilterOperatorChanges: PropTypes.func.isRequired,\n /**\n * @ignore - do not document.\n */\n children: PropTypes.node,\n /**\n * Props passed to the column input component.\n * @default {}\n */\n columnInputProps: PropTypes.any,\n /**\n * Changes how the options in the columns selector should be ordered.\n * If not specified, the order is derived from the `columns` prop.\n */\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n /**\n * Callback called when the delete button is clicked.\n * @param {GridFilterItem} item The deleted [[GridFilterItem]].\n */\n deleteFilter: PropTypes.func.isRequired,\n /**\n * Props passed to the delete icon.\n * @default {}\n */\n deleteIconProps: PropTypes.any,\n /**\n * If `true`, disables the logic operator field but still renders it.\n */\n disableMultiFilterOperator: PropTypes.bool,\n /**\n * Allows to filter the columns displayed in the filter form.\n * @param {FilterColumnsArgs} args The columns of the grid and name of field.\n * @returns {GridColDef['field'][]} The filtered fields array.\n */\n filterColumns: PropTypes.func,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the el\n */\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the logic operator field is rendered.\n * The field will be invisible if `showMultiFilterOperators` is also `true`.\n */\n hasMultipleFilters: PropTypes.bool.isRequired,\n /**\n * The [[GridFilterItem]] representing this form.\n */\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n /**\n * Props passed to the logic operator input component.\n * @default {}\n */\n logicOperatorInputProps: PropTypes.any,\n /**\n * Sets the available logic operators.\n * @default [GridLogicOperator.And, GridLogicOperator.Or]\n */\n logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n /**\n * The current logic operator applied.\n */\n multiFilterOperator: PropTypes.oneOf(['and', 'or']),\n /**\n * Props passed to the operator input component.\n * @default {}\n */\n operatorInputProps: PropTypes.any,\n /**\n * If `true`, the logic operator field is visible.\n */\n showMultiFilterOperators: PropTypes.bool,\n /**\n * Props passed to the value input component.\n * @default {}\n */\n valueInputProps: PropTypes.any\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterForm API](https://mui.com/x/api/data-grid/grid-filter-form/)\n */\nexport { GridFilterForm };","import { useLazyRef } from './useLazyRef';\nimport { useOnMount } from './useOnMount';\nclass Timeout {\n constructor() {\n this.currentId = 0;\n this.clear = () => {\n if (this.currentId !== 0) {\n clearTimeout(this.currentId);\n this.currentId = 0;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(fn, delay);\n }\n}\nexport function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"tabIndex\", \"disabled\", \"isFilterActive\", \"clearButton\", \"InputProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from '../../../hooks/utils/useTimeout';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputValue(props) {\n var _item$value, _rootProps$slotProps;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n tabIndex,\n disabled,\n clearButton,\n InputProps\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const filterTimeout = useTimeout();\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const [applying, setIsApplying] = React.useState(false);\n const id = useId();\n const rootProps = useGridRootProps();\n const onFilterChange = React.useCallback(event => {\n const {\n value\n } = event.target;\n setFilterValueState(String(value));\n setIsApplying(true);\n filterTimeout.start(rootProps.filterDebounceMs, () => {\n const newItem = _extends({}, item, {\n value,\n fromInput: id\n });\n applyValue(newItem);\n setIsApplying(false);\n });\n }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n React.useEffect(() => {\n const itemPlusTag = item;\n if (itemPlusTag.fromInput !== id) {\n var _item$value2;\n setFilterValueState(String((_item$value2 = item.value) != null ? _item$value2 : ''));\n }\n }, [id, item]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n id: id,\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n value: filterValueState,\n onChange: onFilterChange,\n variant: \"standard\",\n type: type || 'text',\n InputProps: _extends({}, applying || clearButton ? {\n endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : clearButton\n } : {}, {\n disabled\n }, InputProps, {\n inputProps: _extends({\n tabIndex\n }, InputProps == null ? void 0 : InputProps.inputProps)\n }),\n InputLabelProps: {\n shrink: true\n },\n inputRef: focusElementRef\n }, others, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputValue.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputValue };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"InputProps\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"disabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from '../../../hooks/utils/useTimeout';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputDate(props) {\n var _item$value, _rootProps$slotProps;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n InputProps,\n clearButton,\n tabIndex,\n disabled\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const filterTimeout = useTimeout();\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const [applying, setIsApplying] = React.useState(false);\n const id = useId();\n const rootProps = useGridRootProps();\n const onFilterChange = React.useCallback(event => {\n const value = event.target.value;\n setFilterValueState(String(value));\n setIsApplying(true);\n filterTimeout.start(rootProps.filterDebounceMs, () => {\n applyValue(_extends({}, item, {\n value\n }));\n setIsApplying(false);\n });\n }, [applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n React.useEffect(() => {\n var _item$value2;\n const itemValue = (_item$value2 = item.value) != null ? _item$value2 : '';\n setFilterValueState(String(itemValue));\n }, [item.value]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n fullWidth: true,\n id: id,\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n value: filterValueState,\n onChange: onFilterChange,\n variant: \"standard\",\n type: type || 'text',\n InputLabelProps: {\n shrink: true\n },\n inputRef: focusElementRef,\n InputProps: _extends({}, applying || clearButton ? {\n endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : clearButton\n } : {}, {\n disabled\n }, InputProps, {\n inputProps: _extends({\n max: type === 'datetime-local' ? '9999-12-31T23:59' : '9999-12-31',\n tabIndex\n }, InputProps == null ? void 0 : InputProps.inputProps)\n })\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputDate.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputDate };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"getOptionLabel\", \"getOptionValue\", \"placeholder\", \"tabIndex\", \"label\", \"isFilterActive\", \"clearButton\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { getValueFromValueOptions, isSingleSelectColDef } from './filterPanelUtils';\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst renderSingleSelectOptions = ({\n column: {\n valueOptions,\n field\n },\n OptionComponent,\n getOptionLabel,\n getOptionValue,\n isSelectNative,\n baseSelectOptionProps\n}) => {\n const iterableColumnValues = typeof valueOptions === 'function' ? ['', ...valueOptions({\n field\n })] : ['', ...(valueOptions || [])];\n return iterableColumnValues.map(option => {\n const value = getOptionValue(option);\n const label = getOptionLabel(option);\n return /*#__PURE__*/_createElement(OptionComponent, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n key: value,\n value: value\n }), label);\n });\n};\nconst SingleSelectOperatorContainer = styled('div')({\n display: 'flex',\n alignItems: 'flex-end',\n width: '100%',\n [`& button`]: {\n margin: 'auto 0px 5px 5px'\n }\n});\nfunction GridFilterInputSingleSelect(props) {\n var _item$value, _rootProps$slotProps$, _rootProps$slotProps, _resolvedColumn, _resolvedColumn2, _rootProps$slotProps2, _rootProps$slotProps3, _rootProps$slotProps4;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp,\n placeholder,\n tabIndex,\n label: labelProp,\n clearButton\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const id = useId();\n const labelId = useId();\n const rootProps = useGridRootProps();\n const isSelectNative = (_rootProps$slotProps$ = (_rootProps$slotProps = rootProps.slotProps) == null || (_rootProps$slotProps = _rootProps$slotProps.baseSelect) == null ? void 0 : _rootProps$slotProps.native) != null ? _rootProps$slotProps$ : true;\n let resolvedColumn = null;\n if (item.field) {\n const column = apiRef.current.getColumn(item.field);\n if (isSingleSelectColDef(column)) {\n resolvedColumn = column;\n }\n }\n const getOptionValue = getOptionValueProp || ((_resolvedColumn = resolvedColumn) == null ? void 0 : _resolvedColumn.getOptionValue);\n const getOptionLabel = getOptionLabelProp || ((_resolvedColumn2 = resolvedColumn) == null ? void 0 : _resolvedColumn2.getOptionLabel);\n const currentValueOptions = React.useMemo(() => {\n if (!resolvedColumn) {\n return undefined;\n }\n return typeof resolvedColumn.valueOptions === 'function' ? resolvedColumn.valueOptions({\n field: resolvedColumn.field\n }) : resolvedColumn.valueOptions;\n }, [resolvedColumn]);\n const onFilterChange = React.useCallback(event => {\n let value = event.target.value;\n\n // NativeSelect casts the value to a string.\n value = getValueFromValueOptions(value, currentValueOptions, getOptionValue);\n setFilterValueState(String(value));\n applyValue(_extends({}, item, {\n value\n }));\n }, [currentValueOptions, getOptionValue, applyValue, item]);\n React.useEffect(() => {\n var _itemValue;\n let itemValue;\n if (currentValueOptions !== undefined) {\n // sanitize if valueOptions are provided\n itemValue = getValueFromValueOptions(item.value, currentValueOptions, getOptionValue);\n if (itemValue !== item.value) {\n applyValue(_extends({}, item, {\n value: itemValue\n }));\n return;\n }\n } else {\n itemValue = item.value;\n }\n itemValue = (_itemValue = itemValue) != null ? _itemValue : '';\n setFilterValueState(String(itemValue));\n }, [item, currentValueOptions, applyValue, getOptionValue]);\n if (!isSingleSelectColDef(resolvedColumn)) {\n return null;\n }\n if (!isSingleSelectColDef(resolvedColumn)) {\n return null;\n }\n const label = labelProp != null ? labelProp : apiRef.current.getLocaleText('filterPanelInputLabel');\n return /*#__PURE__*/_jsxs(SingleSelectOperatorContainer, {\n children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseInputLabel, {\n id: labelId,\n htmlFor: id,\n shrink: true,\n variant: \"standard\",\n children: label\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n id: id,\n label: label,\n labelId: labelId,\n value: filterValueState,\n onChange: onFilterChange,\n variant: \"standard\",\n type: type || 'text',\n inputProps: {\n tabIndex,\n ref: focusElementRef,\n placeholder: placeholder != null ? placeholder : apiRef.current.getLocaleText('filterPanelInputPlaceholder')\n },\n native: isSelectNative\n }, others, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelect, {\n children: renderSingleSelectOptions({\n column: resolvedColumn,\n OptionComponent: rootProps.slots.baseSelectOption,\n getOptionLabel,\n getOptionValue,\n isSelectNative,\n baseSelectOptionProps: (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption\n })\n }))]\n }), clearButton]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputSingleSelect.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"apiRef\", \"focusElementRef\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"label\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType, unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst BooleanOperatorContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n [`& button`]: {\n margin: 'auto 0px 5px 5px'\n }\n});\nfunction GridFilterInputBoolean(props) {\n var _rootProps$slotProps, _baseSelectProps$nati, _rootProps$slotProps2, _rootProps$slotProps3;\n const {\n item,\n applyValue,\n apiRef,\n focusElementRef,\n clearButton,\n tabIndex,\n label: labelProp\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const [filterValueState, setFilterValueState] = React.useState(item.value || '');\n const rootProps = useGridRootProps();\n const labelId = useId();\n const selectId = useId();\n const baseSelectProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseSelect) || {};\n const isSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : true;\n const baseSelectOptionProps = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelectOption) || {};\n const onFilterChange = React.useCallback(event => {\n const value = event.target.value;\n setFilterValueState(value);\n applyValue(_extends({}, item, {\n value\n }));\n }, [applyValue, item]);\n React.useEffect(() => {\n setFilterValueState(item.value || '');\n }, [item.value]);\n const label = labelProp != null ? labelProp : apiRef.current.getLocaleText('filterPanelInputLabel');\n return /*#__PURE__*/_jsxs(BooleanOperatorContainer, {\n children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n fullWidth: true,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseInputLabel, {\n id: labelId,\n shrink: true,\n variant: \"standard\",\n children: label\n })), /*#__PURE__*/_jsxs(rootProps.slots.baseSelect, _extends({\n labelId: labelId,\n id: selectId,\n label: label,\n value: filterValueState,\n onChange: onFilterChange,\n variant: \"standard\",\n native: isSelectNative,\n displayEmpty: true,\n inputProps: {\n ref: focusElementRef,\n tabIndex\n }\n }, others, baseSelectProps, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"\",\n children: apiRef.current.getLocaleText('filterValueAny')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"true\",\n children: apiRef.current.getLocaleText('filterValueTrue')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"false\",\n children: apiRef.current.getLocaleText('filterValueFalse')\n }))]\n }))]\n }), clearButton]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputBoolean.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: refType,\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputBoolean };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"logicOperators\", \"columnsSort\", \"filterFormProps\", \"getColumnForNewFilter\", \"children\", \"disableAddFilterButton\", \"disableRemoveAllButton\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridLogicOperator } from '../../../models/gridFilterItem';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { GridPanelContent } from '../GridPanelContent';\nimport { GridPanelFooter } from '../GridPanelFooter';\nimport { GridPanelWrapper } from '../GridPanelWrapper';\nimport { GridFilterForm } from './GridFilterForm';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { useGridSelector } from '../../../hooks/utils/useGridSelector';\nimport { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';\nimport { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst getGridFilter = col => ({\n field: col.field,\n operator: col.filterOperators[0].value,\n id: Math.round(Math.random() * 1e5)\n});\nconst GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n const lastFilterRef = React.useRef(null);\n const placeholderFilter = React.useRef(null);\n const {\n logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n columnsSort,\n filterFormProps,\n getColumnForNewFilter,\n disableAddFilterButton = false,\n disableRemoveAllButton = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const applyFilter = apiRef.current.upsertFilterItem;\n const applyFilterLogicOperator = React.useCallback(operator => {\n apiRef.current.setFilterLogicOperator(operator);\n }, [apiRef]);\n const getDefaultFilter = React.useCallback(() => {\n let nextColumnWithOperator;\n if (getColumnForNewFilter && typeof getColumnForNewFilter === 'function') {\n // To allow override the column for default (first) filter\n const nextFieldName = getColumnForNewFilter({\n currentFilters: (filterModel == null ? void 0 : filterModel.items) || [],\n columns: filterableColumns\n });\n if (nextFieldName === null) {\n return null;\n }\n nextColumnWithOperator = filterableColumns.find(({\n field\n }) => field === nextFieldName);\n } else {\n nextColumnWithOperator = filterableColumns.find(colDef => {\n var _colDef$filterOperato;\n return (_colDef$filterOperato = colDef.filterOperators) == null ? void 0 : _colDef$filterOperato.length;\n });\n }\n if (!nextColumnWithOperator) {\n return null;\n }\n return getGridFilter(nextColumnWithOperator);\n }, [filterModel == null ? void 0 : filterModel.items, filterableColumns, getColumnForNewFilter]);\n const getNewFilter = React.useCallback(() => {\n if (getColumnForNewFilter === undefined || typeof getColumnForNewFilter !== 'function') {\n return getDefaultFilter();\n }\n const currentFilters = filterModel.items.length ? filterModel.items : [getDefaultFilter()].filter(Boolean);\n\n // If no items are there in filterModel, we have to pass defaultFilter\n const nextColumnFieldName = getColumnForNewFilter({\n currentFilters: currentFilters,\n columns: filterableColumns\n });\n if (nextColumnFieldName === null) {\n return null;\n }\n const nextColumnWithOperator = filterableColumns.find(({\n field\n }) => field === nextColumnFieldName);\n if (!nextColumnWithOperator) {\n return null;\n }\n return getGridFilter(nextColumnWithOperator);\n }, [filterModel.items, filterableColumns, getColumnForNewFilter, getDefaultFilter]);\n const items = React.useMemo(() => {\n if (filterModel.items.length) {\n return filterModel.items;\n }\n if (!placeholderFilter.current) {\n placeholderFilter.current = getDefaultFilter();\n }\n return placeholderFilter.current ? [placeholderFilter.current] : [];\n }, [filterModel.items, getDefaultFilter]);\n const hasMultipleFilters = items.length > 1;\n const addNewFilter = () => {\n const newFilter = getNewFilter();\n if (!newFilter) {\n return;\n }\n apiRef.current.upsertFilterItems([...items, newFilter]);\n };\n const deleteFilter = React.useCallback(item => {\n const shouldCloseFilterPanel = items.length === 1;\n apiRef.current.deleteFilterItem(item);\n if (shouldCloseFilterPanel) {\n apiRef.current.hideFilterPanel();\n }\n }, [apiRef, items.length]);\n const handleRemoveAll = () => {\n if (items.length === 1 && items[0].value === undefined) {\n apiRef.current.deleteFilterItem(items[0]);\n apiRef.current.hideFilterPanel();\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items: []\n }));\n };\n React.useEffect(() => {\n if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {\n applyFilterLogicOperator(logicOperators[0]);\n }\n }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);\n React.useEffect(() => {\n if (items.length > 0) {\n lastFilterRef.current.focus();\n }\n }, [items.length]);\n return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(GridPanelContent, {\n children: items.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({\n item: item,\n applyFilterChanges: applyFilter,\n deleteFilter: deleteFilter,\n hasMultipleFilters: hasMultipleFilters,\n showMultiFilterOperators: index > 0,\n multiFilterOperator: filterModel.logicOperator,\n disableMultiFilterOperator: index !== 1,\n applyMultiFilterOperatorChanges: applyFilterLogicOperator,\n focusElementRef: index === items.length - 1 ? lastFilterRef : null,\n logicOperators: logicOperators,\n columnsSort: columnsSort\n }, filterFormProps), item.id == null ? index : item.id))\n }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {\n children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: addNewFilter,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('filterPanelAddFilter')\n })) : /*#__PURE__*/_jsx(\"span\", {}), !disableRemoveAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: handleRemoveAll,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {\n children: apiRef.current.getLocaleText('filterPanelRemoveAll')\n })) : null]\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore - do not document.\n */\n children: PropTypes.node,\n /**\n * Changes how the options in the columns selector should be ordered.\n * If not specified, the order is derived from the `columns` prop.\n */\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n /**\n * If `true`, the `Add filter` button will not be displayed.\n * @default false\n */\n disableAddFilterButton: PropTypes.bool,\n /**\n * If `true`, the `Remove all` button will be disabled\n * @default false\n */\n disableRemoveAllButton: PropTypes.bool,\n /**\n * Props passed to each filter form.\n */\n filterFormProps: PropTypes.shape({\n columnInputProps: PropTypes.any,\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n deleteIconProps: PropTypes.any,\n filterColumns: PropTypes.func,\n logicOperatorInputProps: PropTypes.any,\n operatorInputProps: PropTypes.any,\n valueInputProps: PropTypes.any\n }),\n /**\n * Function that returns the next filter item to be picked as default filter.\n * @param {GetColumnForNewFilterArgs} args Currently configured filters and columns.\n * @returns {GridColDef['field']} The field to be used for the next filter or `null` to prevent adding a filter.\n */\n getColumnForNewFilter: PropTypes.func,\n /**\n * Sets the available logic operators.\n * @default [GridLogicOperator.And, GridLogicOperator.Or]\n */\n logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterPanel API](https://mui.com/x/api/data-grid/grid-filter-panel/)\n */\nexport { GridFilterPanel, getGridFilter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputMultipleValue(props) {\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n color,\n error,\n helperText,\n size,\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const TextFieldProps = {\n color,\n error,\n helperText,\n size,\n variant\n };\n const [filterValueState, setFilterValueState] = React.useState(item.value || []);\n const id = useId();\n const rootProps = useGridRootProps();\n React.useEffect(() => {\n var _item$value;\n const itemValue = (_item$value = item.value) != null ? _item$value : [];\n setFilterValueState(itemValue.map(String));\n }, [item.value]);\n const handleChange = React.useCallback((event, value) => {\n setFilterValueState(value.map(String));\n applyValue(_extends({}, item, {\n value: [...value]\n }));\n }, [applyValue, item]);\n return /*#__PURE__*/_jsx(Autocomplete, _extends({\n multiple: true,\n freeSolo: true,\n options: [],\n filterOptions: (options, params) => {\n const {\n inputValue\n } = params;\n return inputValue == null || inputValue === '' ? [] : [inputValue];\n },\n id: id,\n value: filterValueState,\n onChange: handleChange,\n renderTags: (value, getTagProps) => value.map((option, index) => /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n variant: \"outlined\",\n size: \"small\",\n label: option\n }, getTagProps({\n index\n })))),\n renderInput: params => {\n var _rootProps$slotProps;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n InputLabelProps: _extends({}, params.InputLabelProps, {\n shrink: true\n }),\n inputRef: focusElementRef,\n type: type || 'text'\n }, TextFieldProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n }\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleValue.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n type: PropTypes.oneOf(['number', 'text'])\n} : void 0;\nexport { GridFilterInputMultipleValue };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\", \"getOptionLabel\", \"getOptionValue\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { isSingleSelectColDef } from './filterPanelUtils';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst filter = createFilterOptions();\nfunction GridFilterInputMultipleSingleSelect(props) {\n var _resolvedColumn, _resolvedColumn2;\n const {\n item,\n applyValue,\n apiRef,\n focusElementRef,\n color,\n error,\n helperText,\n size,\n variant = 'standard',\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const TextFieldProps = {\n color,\n error,\n helperText,\n size,\n variant\n };\n const id = useId();\n const rootProps = useGridRootProps();\n let resolvedColumn = null;\n if (item.field) {\n const column = apiRef.current.getColumn(item.field);\n if (isSingleSelectColDef(column)) {\n resolvedColumn = column;\n }\n }\n const getOptionValue = getOptionValueProp || ((_resolvedColumn = resolvedColumn) == null ? void 0 : _resolvedColumn.getOptionValue);\n const getOptionLabel = getOptionLabelProp || ((_resolvedColumn2 = resolvedColumn) == null ? void 0 : _resolvedColumn2.getOptionLabel);\n const isOptionEqualToValue = React.useCallback((option, value) => getOptionValue(option) === getOptionValue(value), [getOptionValue]);\n const resolvedValueOptions = React.useMemo(() => {\n var _resolvedColumn3;\n if (!((_resolvedColumn3 = resolvedColumn) != null && _resolvedColumn3.valueOptions)) {\n return [];\n }\n if (typeof resolvedColumn.valueOptions === 'function') {\n return resolvedColumn.valueOptions({\n field: resolvedColumn.field\n });\n }\n return resolvedColumn.valueOptions;\n }, [resolvedColumn]);\n const resolvedFormattedValueOptions = React.useMemo(() => {\n return resolvedValueOptions == null ? void 0 : resolvedValueOptions.map(getOptionValue);\n }, [resolvedValueOptions, getOptionValue]);\n\n // The value is computed from the item.value and used directly\n // If it was done by a useEffect/useState, the Autocomplete could receive incoherent value and options\n const filteredValues = React.useMemo(() => {\n if (!Array.isArray(item.value)) {\n return [];\n }\n if (resolvedValueOptions !== undefined) {\n const itemValueIndexes = item.value.map(element => {\n // Gets the index matching between values and valueOptions\n return resolvedFormattedValueOptions == null ? void 0 : resolvedFormattedValueOptions.findIndex(formattedOption => formattedOption === element);\n });\n return itemValueIndexes.filter(index => index >= 0).map(index => resolvedValueOptions[index]);\n }\n return item.value;\n }, [item.value, resolvedValueOptions, resolvedFormattedValueOptions]);\n React.useEffect(() => {\n if (!Array.isArray(item.value) || filteredValues.length !== item.value.length) {\n // Updates the state if the filter value has been cleaned by the component\n applyValue(_extends({}, item, {\n value: filteredValues.map(getOptionValue)\n }));\n }\n }, [item, filteredValues, applyValue, getOptionValue]);\n const handleChange = React.useCallback((event, value) => {\n applyValue(_extends({}, item, {\n value: value.map(getOptionValue)\n }));\n }, [applyValue, item, getOptionValue]);\n return /*#__PURE__*/_jsx(Autocomplete, _extends({\n multiple: true,\n options: resolvedValueOptions,\n isOptionEqualToValue: isOptionEqualToValue,\n filterOptions: filter,\n id: id,\n value: filteredValues,\n onChange: handleChange,\n getOptionLabel: getOptionLabel,\n renderTags: (value, getTagProps) => value.map((option, index) => /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n variant: \"outlined\",\n size: \"small\",\n label: getOptionLabel(option)\n }, getTagProps({\n index\n })))),\n renderInput: params => {\n var _rootProps$slotProps;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n InputLabelProps: _extends({}, params.InputLabelProps, {\n shrink: true\n }),\n inputRef: focusElementRef,\n type: \"singleSelect\"\n }, TextFieldProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n }\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleSingleSelect.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n type: PropTypes.oneOf(['singleSelect'])\n} : void 0;\nexport { GridFilterInputMultipleSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId } from '@mui/material/utils';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {\n var _rootProps$slotProps;\n const {\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const columnButtonId = useId();\n const columnPanelId = useId();\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const showColumns = event => {\n if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {\n apiRef.current.hidePreferences();\n } else {\n apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);\n }\n onClick == null || onClick(event);\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableColumnSelector) {\n return null;\n }\n const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;\n return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: ref,\n id: columnButtonId,\n size: \"small\",\n \"aria-label\": apiRef.current.getLocaleText('toolbarColumnsLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? columnPanelId : undefined,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})\n }, other, {\n onClick: showColumns\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarColumns')\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';\nimport { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {\n var _rootProps$slotProps;\n const {\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const densityValue = useGridSelector(apiRef, gridDensityValueSelector);\n const densityButtonId = useId();\n const densityMenuId = useId();\n const [open, setOpen] = React.useState(false);\n const buttonRef = React.useRef(null);\n const handleRef = useForkRef(ref, buttonRef);\n const densityOptions = [{\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityCompact'),\n value: 'compact'\n }, {\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityStandard'),\n value: 'standard'\n }, {\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityComfortable'),\n value: 'comfortable'\n }];\n const startIcon = React.useMemo(() => {\n switch (densityValue) {\n case 'compact':\n return /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {});\n case 'comfortable':\n return /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {});\n default:\n return /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {});\n }\n }, [densityValue, rootProps]);\n const handleDensitySelectorOpen = event => {\n setOpen(prevOpen => !prevOpen);\n onClick == null || onClick(event);\n };\n const handleDensitySelectorClose = () => {\n setOpen(false);\n };\n const handleDensityUpdate = newDensity => {\n apiRef.current.setDensity(newDensity);\n setOpen(false);\n };\n const handleListKeyDown = event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n setOpen(false);\n }\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableDensitySelector) {\n return null;\n }\n const densityElements = densityOptions.map((option, index) => /*#__PURE__*/_jsxs(MenuItem, {\n onClick: () => handleDensityUpdate(option.value),\n selected: option.value === densityValue,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: option.icon\n }), option.label]\n }, index));\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: handleRef,\n size: \"small\",\n startIcon: startIcon,\n \"aria-label\": apiRef.current.getLocaleText('toolbarDensityLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? densityMenuId : undefined,\n id: densityButtonId\n }, other, {\n onClick: handleDensitySelectorOpen\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarDensity')\n })), /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n onClose: handleDensitySelectorClose,\n position: \"bottom-start\",\n children: /*#__PURE__*/_jsx(MenuList, {\n id: densityMenuId,\n className: gridClasses.menuList,\n \"aria-labelledby\": densityButtonId,\n onKeyDown: handleListKeyDown,\n autoFocusItem: open,\n children: densityElements\n })\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { gridColumnLookupSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridFilterActiveItemsSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['toolbarFilterList']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarFilterListRoot = styled('ul', {\n name: 'MuiDataGrid',\n slot: 'ToolbarFilterList',\n overridesResolver: (_props, styles) => styles.toolbarFilterList\n})(({\n theme\n}) => ({\n margin: theme.spacing(1, 1, 0.5),\n padding: theme.spacing(0, 1)\n}));\nconst GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n componentsProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonProps = componentsProps.button || {};\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const activeFilters = useGridSelector(apiRef, gridFilterActiveItemsSelector);\n const lookup = useGridSelector(apiRef, gridColumnLookupSelector);\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const classes = useUtilityClasses(rootProps);\n const filterButtonId = useId();\n const filterPanelId = useId();\n const tooltipContentNode = React.useMemo(() => {\n if (preferencePanel.open) {\n return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');\n }\n if (activeFilters.length === 0) {\n return apiRef.current.getLocaleText('toolbarFiltersTooltipShow');\n }\n const getOperatorLabel = item => lookup[item.field].filterOperators.find(operator => operator.value === item.operator).label || apiRef.current.getLocaleText(`filterOperator${capitalize(item.operator)}`).toString();\n const getFilterItemValue = item => {\n const {\n getValueAsString\n } = lookup[item.field].filterOperators.find(operator => operator.value === item.operator);\n return getValueAsString ? getValueAsString(item.value) : item.value;\n };\n return /*#__PURE__*/_jsxs(\"div\", {\n children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {\n className: classes.root,\n ownerState: rootProps,\n children: activeFilters.map((item, index) => _extends({}, lookup[item.field] && /*#__PURE__*/_jsx(\"li\", {\n children: `${lookup[item.field].headerName || item.field}\n ${getOperatorLabel(item)}\n ${\n // implicit check for null and undefined\n item.value != null ? getFilterItemValue(item) : ''}`\n }, index)))\n })]\n });\n }, [apiRef, rootProps, preferencePanel.open, activeFilters, lookup, classes]);\n const toggleFilter = event => {\n var _buttonProps$onClick;\n const {\n open,\n openedPanelValue\n } = preferencePanel;\n if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n apiRef.current.hidePreferences();\n } else {\n apiRef.current.showPreferences(GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);\n }\n (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableColumnFilter) {\n return null;\n }\n const isOpen = preferencePanel.open && preferencePanel.panelId === filterPanelId;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: tooltipContentNode,\n enterDelay: 1000\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: ref,\n id: filterButtonId,\n size: \"small\",\n \"aria-label\": apiRef.current.getLocaleText('toolbarFiltersLabel'),\n \"aria-controls\": isOpen ? filterPanelId : undefined,\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": true,\n startIcon: /*#__PURE__*/_jsx(Badge, {\n badgeContent: activeFilters.length,\n color: \"primary\",\n children: /*#__PURE__*/_jsx(rootProps.slots.openFilterButtonIcon, {})\n })\n }, buttonProps, {\n onClick: toggleFilter\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {\n children: apiRef.current.getLocaleText('toolbarFilters')\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarFilterButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object\n} : void 0;\nexport { GridToolbarFilterButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {\n var _rootProps$slotProps;\n const {\n children,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const exportButtonId = useId();\n const exportMenuId = useId();\n const [open, setOpen] = React.useState(false);\n const buttonRef = React.useRef(null);\n const handleRef = useForkRef(ref, buttonRef);\n const handleMenuOpen = event => {\n setOpen(prevOpen => !prevOpen);\n onClick == null || onClick(event);\n };\n const handleMenuClose = () => setOpen(false);\n const handleListKeyDown = event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n handleMenuClose();\n }\n };\n if (children == null) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: handleRef,\n size: \"small\",\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),\n \"aria-expanded\": open,\n \"aria-label\": apiRef.current.getLocaleText('toolbarExportLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-controls\": open ? exportMenuId : undefined,\n id: exportButtonId\n }, other, {\n onClick: handleMenuOpen\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarExport')\n })), /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n onClose: handleMenuClose,\n position: \"bottom-start\",\n children: /*#__PURE__*/_jsx(MenuList, {\n id: exportMenuId,\n className: gridClasses.menuList,\n \"aria-labelledby\": exportButtonId,\n onKeyDown: handleListKeyDown,\n autoFocusItem: open,\n children: React.Children.map(children, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return child;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n hideMenu: handleMenuClose\n });\n })\n })\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"options\"],\n _excluded2 = [\"hideMenu\", \"options\"],\n _excluded3 = [\"csvOptions\", \"printOptions\", \"excelOptions\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridToolbarExportContainer } from './GridToolbarExportContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridCsvExportMenuItem(props) {\n const apiRef = useGridApiContext();\n const {\n hideMenu,\n options\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n return /*#__PURE__*/_jsx(MenuItem, _extends({\n onClick: () => {\n apiRef.current.exportDataAsCsv(options);\n hideMenu == null || hideMenu();\n }\n }, other, {\n children: apiRef.current.getLocaleText('toolbarExportCSV')\n }));\n}\nexport function GridPrintExportMenuItem(props) {\n const apiRef = useGridApiContext();\n const {\n hideMenu,\n options\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n return /*#__PURE__*/_jsx(MenuItem, _extends({\n onClick: () => {\n apiRef.current.exportDataAsPrint(options);\n hideMenu == null || hideMenu();\n }\n }, other, {\n children: apiRef.current.getLocaleText('toolbarExportPrint')\n }));\n}\nconst GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {\n const {\n csvOptions = {},\n printOptions = {},\n excelOptions\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded3);\n const apiRef = useGridApiContext();\n const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('exportMenu', [], {\n excelOptions,\n csvOptions,\n printOptions\n }).sort((a, b) => a.componentName > b.componentName ? 1 : -1);\n if (preProcessedButtons.length === 0) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridToolbarExportContainer, _extends({}, other, {\n ref: ref,\n children: preProcessedButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button.component, {\n key: index\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarExport.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n csvOptions: PropTypes.object,\n printOptions: PropTypes.object\n} : void 0;\nexport { GridToolbarExport };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"quickFilterParser\", \"quickFilterFormatter\", \"debounceMs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\nimport { unstable_debounce as debounce } from '@mui/utils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridQuickFilterValuesSelector } from '../../hooks/features/filter';\nimport { isDeepEqual } from '../../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridToolbarQuickFilterRoot = styled(TextField, {\n name: 'MuiDataGrid',\n slot: 'ToolbarQuickFilter',\n overridesResolver: (props, styles) => styles.toolbarQuickFilter\n})(({\n theme\n}) => ({\n width: 'auto',\n paddingBottom: theme.spacing(0.5),\n '& input': {\n marginLeft: theme.spacing(0.5)\n },\n '& .MuiInput-underline:before': {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n },\n [`& input[type=search]::-ms-clear,\n& input[type=search]::-ms-reveal`]: {\n /* clears the 'X' icon from IE */\n display: 'none',\n width: 0,\n height: 0\n },\n [`& input[type=\"search\"]::-webkit-search-decoration,\n & input[type=\"search\"]::-webkit-search-cancel-button,\n & input[type=\"search\"]::-webkit-search-results-button,\n & input[type=\"search\"]::-webkit-search-results-decoration`]: {\n /* clears the 'X' icon from Chrome */\n display: 'none'\n }\n}));\nconst defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');\nconst defaultSearchValueFormatter = values => values.join(' ');\nfunction GridToolbarQuickFilter(props) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const quickFilterValues = useGridSelector(apiRef, gridQuickFilterValuesSelector);\n const {\n quickFilterParser = defaultSearchValueParser,\n quickFilterFormatter = defaultSearchValueFormatter,\n debounceMs = rootProps.filterDebounceMs\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));\n const prevQuickFilterValuesRef = React.useRef(quickFilterValues);\n React.useEffect(() => {\n if (!isDeepEqual(prevQuickFilterValuesRef.current, quickFilterValues)) {\n // The model of quick filter value has been updated\n prevQuickFilterValuesRef.current = quickFilterValues;\n\n // Update the input value if needed to match the new model\n setSearchValue(prevSearchValue => isDeepEqual(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));\n }\n }, [quickFilterValues, quickFilterFormatter, quickFilterParser]);\n const updateSearchValue = React.useCallback(newSearchValue => {\n const newQuickFilterValues = quickFilterParser(newSearchValue);\n prevQuickFilterValuesRef.current = newQuickFilterValues;\n apiRef.current.setQuickFilterValues(newQuickFilterValues);\n }, [apiRef, quickFilterParser]);\n const debouncedUpdateSearchValue = React.useMemo(() => debounce(updateSearchValue, debounceMs), [updateSearchValue, debounceMs]);\n const handleSearchValueChange = React.useCallback(event => {\n const newSearchValue = event.target.value;\n setSearchValue(newSearchValue);\n debouncedUpdateSearchValue(newSearchValue);\n }, [debouncedUpdateSearchValue]);\n const handleSearchReset = React.useCallback(() => {\n setSearchValue('');\n updateSearchValue('');\n }, [updateSearchValue]);\n return /*#__PURE__*/_jsx(GridToolbarQuickFilterRoot, _extends({\n as: rootProps.slots.baseTextField,\n ownerState: rootProps,\n variant: \"standard\",\n value: searchValue,\n onChange: handleSearchValueChange,\n placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),\n \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),\n type: \"search\"\n }, other, {\n InputProps: _extends({\n startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {\n fontSize: \"small\"\n }),\n endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),\n size: \"small\",\n sx: {\n visibility: searchValue ? 'visible' : 'hidden'\n },\n onClick: handleSearchReset\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {\n fontSize: \"small\"\n })\n }))\n }, other.InputProps)\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarQuickFilter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The debounce time in milliseconds.\n * @default 150\n */\n debounceMs: PropTypes.number,\n /**\n * Function responsible for formatting values of quick filter in a string when the model is modified\n * @param {any[]} values The new values passed to the quick filter model\n * @returns {string} The string to display in the text field\n */\n quickFilterFormatter: PropTypes.func,\n /**\n * Function responsible for parsing text input in an array of independent values for quick filtering.\n * @param {string} input The value entered by the user\n * @returns {any[]} The array of value on which quick filter is applied\n */\n quickFilterParser: PropTypes.func\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n * - [Filtering - quick filter](https://mui.com/x/react-data-grid/filtering/quick-filter/)\n *\n * API:\n * - [GridToolbarQuickFilter API](https://mui.com/x/api/data-grid/grid-toolbar-quick-filter/)\n */\nexport { GridToolbarQuickFilter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"csvOptions\", \"printOptions\", \"excelOptions\", \"showQuickFilter\", \"quickFilterProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Box from '@mui/material/Box';\nimport { GridToolbarContainer } from '../containers/GridToolbarContainer';\nimport { GridToolbarColumnsButton } from './GridToolbarColumnsButton';\nimport { GridToolbarDensitySelector } from './GridToolbarDensitySelector';\nimport { GridToolbarFilterButton } from './GridToolbarFilterButton';\nimport { GridToolbarExport } from './GridToolbarExport';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridToolbarQuickFilter } from './GridToolbarQuickFilter';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {\n // TODO v7: think about where export option should be passed.\n // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate\n const {\n csvOptions,\n printOptions,\n excelOptions,\n showQuickFilter = false,\n quickFilterProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {\n return null;\n }\n return /*#__PURE__*/_jsxs(GridToolbarContainer, _extends({\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {\n csvOptions: csvOptions,\n printOptions: printOptions\n // TODO: remove the reference to excelOptions in community package\n ,\n excelOptions: excelOptions\n }), /*#__PURE__*/_jsx(Box, {\n sx: {\n flex: 1\n }\n }), showQuickFilter && /*#__PURE__*/_jsx(GridToolbarQuickFilter, _extends({}, quickFilterProps))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Props passed to the quick filter component.\n */\n quickFilterProps: PropTypes.object,\n /**\n * Show the quick filter component.\n * @default false\n */\n showQuickFilter: PropTypes.bool,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbar };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"selectedRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['selectedRowCount']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridSelectedRowCountRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'SelectedRowCount',\n overridesResolver: (props, styles) => styles.selectedRowCount\n})(({\n theme\n}) => ({\n alignItems: 'center',\n display: 'flex',\n margin: theme.spacing(0, 2),\n visibility: 'hidden',\n width: 0,\n height: 0,\n [theme.breakpoints.up('sm')]: {\n visibility: 'visible',\n width: 'auto',\n height: 'auto'\n }\n}));\nconst GridSelectedRowCount = /*#__PURE__*/React.forwardRef(function GridSelectedRowCount(props, ref) {\n const {\n className,\n selectedRowCount\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ownerState = useGridRootProps();\n const classes = useUtilityClasses(ownerState);\n const rowSelectedText = apiRef.current.getLocaleText('footerRowSelected')(selectedRowCount);\n return /*#__PURE__*/_jsx(GridSelectedRowCountRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: rowSelectedText\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridSelectedRowCount.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n selectedRowCount: PropTypes.number.isRequired,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridSelectedRowCount };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridSelector } from '../hooks/utils/useGridSelector';\nimport { gridTopLevelRowCountSelector } from '../hooks/features/rows/gridRowsSelector';\nimport { selectedGridRowsCountSelector } from '../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { gridFilteredTopLevelRowCountSelector } from '../hooks/features/filter/gridFilterSelector';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { GridSelectedRowCount } from './GridSelectedRowCount';\nimport { GridFooterContainer } from './containers/GridFooterContainer';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridFooter = /*#__PURE__*/React.forwardRef(function GridFooter(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const totalTopLevelRowCount = useGridSelector(apiRef, gridTopLevelRowCountSelector);\n const selectedRowCount = useGridSelector(apiRef, selectedGridRowsCountSelector);\n const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n const selectedRowCountElement = !rootProps.hideFooterSelectedRowCount && selectedRowCount > 0 ? /*#__PURE__*/_jsx(GridSelectedRowCount, {\n selectedRowCount: selectedRowCount\n }) : /*#__PURE__*/_jsx(\"div\", {});\n const rowCountElement = !rootProps.hideFooterRowCount && !rootProps.pagination ? /*#__PURE__*/_jsx(rootProps.slots.footerRowCount, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.footerRowCount, {\n rowCount: totalTopLevelRowCount,\n visibleRowCount: visibleTopLevelRowCount\n })) : null;\n const paginationElement = rootProps.pagination && !rootProps.hideFooterPagination && rootProps.slots.pagination && /*#__PURE__*/_jsx(rootProps.slots.pagination, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.pagination));\n return /*#__PURE__*/_jsxs(GridFooterContainer, _extends({\n ref: ref\n }, props, {\n children: [selectedRowCountElement, rowCountElement, paginationElement]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function GridHeader() {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const rootProps = useGridRootProps();\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.preferencesPanel, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.preferencesPanel)), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.toolbar))]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { GridOverlay } from './containers/GridOverlay';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridLoadingOverlay(props, ref) {\n return /*#__PURE__*/_jsx(GridOverlay, _extends({\n ref: ref\n }, props, {\n children: /*#__PURE__*/_jsx(CircularProgress, {})\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridLoadingOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridLoadingOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { GridOverlay } from './containers/GridOverlay';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridNoRowsOverlay = /*#__PURE__*/React.forwardRef(function GridNoRowsOverlay(props, ref) {\n const apiRef = useGridApiContext();\n const noRowsLabel = apiRef.current.getLocaleText('noRowsLabel');\n return /*#__PURE__*/_jsx(GridOverlay, _extends({\n ref: ref\n }, props, {\n children: noRowsLabel\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridNoRowsOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridNoRowsOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport TablePagination, { tablePaginationClasses } from '@mui/material/TablePagination';\nimport { styled } from '@mui/material/styles';\nimport { useGridSelector } from '../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { gridFilteredTopLevelRowCountSelector } from '../hooks/features/filter';\nimport { gridPaginationModelSelector } from '../hooks/features/pagination/gridPaginationSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridPaginationRoot = styled(TablePagination)(({\n theme\n}) => ({\n [`& .${tablePaginationClasses.selectLabel}`]: {\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'block'\n }\n },\n [`& .${tablePaginationClasses.input}`]: {\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'inline-flex'\n }\n }\n}));\nexport const GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(props, ref) {\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector);\n const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n const rowCount = React.useMemo(() => {\n var _ref, _rootProps$rowCount;\n return (_ref = (_rootProps$rowCount = rootProps.rowCount) != null ? _rootProps$rowCount : visibleTopLevelRowCount) != null ? _ref : 0;\n }, [rootProps.rowCount, visibleTopLevelRowCount]);\n const lastPage = React.useMemo(() => Math.floor(rowCount / (paginationModel.pageSize || 1)), [rowCount, paginationModel.pageSize]);\n const handlePageSizeChange = React.useCallback(event => {\n const pageSize = Number(event.target.value);\n apiRef.current.setPageSize(pageSize);\n }, [apiRef]);\n const handlePageChange = React.useCallback((_, page) => {\n apiRef.current.setPage(page);\n }, [apiRef]);\n const isPageSizeIncludedInPageSizeOptions = pageSize => {\n for (let i = 0; i < rootProps.pageSizeOptions.length; i += 1) {\n const option = rootProps.pageSizeOptions[i];\n if (typeof option === 'number') {\n if (option === pageSize) {\n return true;\n }\n } else if (option.value === pageSize) {\n return true;\n }\n }\n return false;\n };\n if (process.env.NODE_ENV !== 'production') {\n var _rootProps$pagination, _rootProps$pagination2;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const warnedOnceMissingInPageSizeOptions = React.useRef(false);\n const pageSize = (_rootProps$pagination = (_rootProps$pagination2 = rootProps.paginationModel) == null ? void 0 : _rootProps$pagination2.pageSize) != null ? _rootProps$pagination : paginationModel.pageSize;\n if (!warnedOnceMissingInPageSizeOptions.current && !rootProps.autoPageSize && !isPageSizeIncludedInPageSizeOptions(pageSize)) {\n console.warn([`MUI: The page size \\`${paginationModel.pageSize}\\` is not preset in the \\`pageSizeOptions\\``, `Add it to show the pagination select.`].join('\\n'));\n warnedOnceMissingInPageSizeOptions.current = true;\n }\n }\n const pageSizeOptions = isPageSizeIncludedInPageSizeOptions(paginationModel.pageSize) ? rootProps.pageSizeOptions : [];\n return /*#__PURE__*/_jsx(GridPaginationRoot, _extends({\n ref: ref,\n component: \"div\",\n count: rowCount,\n page: paginationModel.page <= lastPage ? paginationModel.page : lastPage,\n rowsPerPageOptions: pageSizeOptions,\n rowsPerPage: paginationModel.pageSize,\n onPageChange: handlePageChange,\n onRowsPerPageChange: handlePageSizeChange\n }, apiRef.current.getLocaleText('MuiTablePagination'), props));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"rowCount\", \"visibleRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['rowCount']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRowCountRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'RowCount',\n overridesResolver: (props, styles) => styles.rowCount\n})(({\n theme\n}) => ({\n alignItems: 'center',\n display: 'flex',\n margin: theme.spacing(0, 2)\n}));\nconst GridRowCount = /*#__PURE__*/React.forwardRef(function GridRowCount(props, ref) {\n const {\n className,\n rowCount,\n visibleRowCount\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ownerState = useGridRootProps();\n const classes = useUtilityClasses(ownerState);\n if (rowCount === 0) {\n return null;\n }\n const text = visibleRowCount < rowCount ? apiRef.current.getLocaleText('footerTotalVisibleRows')(visibleRowCount, rowCount) : rowCount.toLocaleString();\n return /*#__PURE__*/_jsxs(GridRowCountRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [apiRef.current.getLocaleText('footerTotalRows'), \" \", text]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRowCount.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n rowCount: PropTypes.number.isRequired,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n visibleRowCount: PropTypes.number.isRequired\n} : void 0;\nexport { GridRowCount };","import * as React from 'react';\nimport { gridPaginationRowRangeSelector, gridPaginatedVisibleSortedGridRowEntriesSelector } from '../features/pagination/gridPaginationSelector';\nimport { gridExpandedSortedRowEntriesSelector } from '../features/filter/gridFilterSelector';\nexport const getVisibleRows = (apiRef, props) => {\n let rows;\n let range;\n if (props.pagination && props.paginationMode === 'client') {\n range = gridPaginationRowRangeSelector(apiRef);\n rows = gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef);\n } else {\n rows = gridExpandedSortedRowEntriesSelector(apiRef);\n if (rows.length === 0) {\n range = null;\n } else {\n range = {\n firstRowIndex: 0,\n lastRowIndex: rows.length - 1\n };\n }\n }\n return {\n rows,\n range\n };\n};\n\n/**\n * Computes the list of rows that are reachable by scroll.\n * Depending on whether pagination is enabled, it will return the rows in the current page.\n * - If the pagination is disabled or in server mode, it equals all the visible rows.\n * - If the row tree has several layers, it contains up to `state.pageSize` top level rows and all their descendants.\n * - If the row tree is flat, it only contains up to `state.pageSize` rows.\n */\nexport const useGridVisibleRows = (apiRef, props) => {\n const response = getVisibleRows(apiRef, props);\n return React.useMemo(() => ({\n rows: response.rows,\n range: response.range\n }), [response.rows, response.range]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * A global API ref, for v7-to-legacy converter\n */\nexport const GLOBAL_API_REF = {\n current: null\n};\n\n/**\n * A tagger to determine if the filter is internal or custom user-supplied.\n * To be a valid internal filter, the v7 function *must* be defined/redefined at\n * the same time as the legacy one.\n * https://github.com/mui/mui-x/pull/9254#discussion_r1231095551\n */\nexport function tagInternalFilter(fn) {\n fn.isInternal = true;\n return fn;\n}\nexport function isInternalFilter(fn) {\n return fn !== undefined && fn.isInternal === true;\n}\nexport function convertFilterV7ToLegacy(fn) {\n return tagInternalFilter((filterItem, column) => {\n const filterFn = fn(filterItem, column);\n if (!filterFn) {\n return filterFn;\n }\n return cellParams => {\n return filterFn(cellParams.value, cellParams.row, column, GLOBAL_API_REF.current);\n };\n });\n}\nexport function convertLegacyOperators(ops) {\n return ops.map(op => {\n return _extends({}, op, {\n getApplyFilterFn: convertFilterV7ToLegacy(op.getApplyFilterFnV7),\n getApplyFilterFnV7: tagInternalFilter(op.getApplyFilterFnV7)\n });\n });\n}\nexport function convertQuickFilterV7ToLegacy(fn) {\n return tagInternalFilter((filterItem, column, apiRef) => {\n const filterFn = fn(filterItem, column, apiRef);\n if (!filterFn) {\n return filterFn;\n }\n return cellParams => {\n return filterFn(cellParams.value, cellParams.row, column, apiRef);\n };\n });\n}","import { GridFilterInputValue } from '../components/panel/filterPanel/GridFilterInputValue';\nimport { escapeRegExp } from '../utils/utils';\nimport { GridFilterInputMultipleValue } from '../components/panel/filterPanel/GridFilterInputMultipleValue';\nimport { convertLegacyOperators, tagInternalFilter } from './utils';\nexport const getGridStringQuickFilterFn = tagInternalFilter(value => {\n if (!value) {\n return null;\n }\n const filterRegex = new RegExp(escapeRegExp(value), 'i');\n return (_, row, column, apiRef) => {\n const columnValue = apiRef.current.getRowFormattedValue(row, column);\n return columnValue != null ? filterRegex.test(columnValue.toString()) : false;\n };\n});\nexport const getGridStringOperators = (disableTrim = false) => convertLegacyOperators([{\n value: 'contains',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(escapeRegExp(filterItemValue), 'i');\n return value => {\n return value != null ? filterRegex.test(String(value)) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'equals',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const collator = new Intl.Collator(undefined, {\n sensitivity: 'base',\n usage: 'search'\n });\n return value => {\n return value != null ? collator.compare(filterItemValue, value.toString()) === 0 : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'startsWith',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(`^${escapeRegExp(filterItemValue)}.*$`, 'i');\n return value => {\n return value != null ? filterRegex.test(value.toString()) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'endsWith',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(`.*${escapeRegExp(filterItemValue)}$`, 'i');\n return value => {\n return value != null ? filterRegex.test(value.toString()) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value === '' || value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value !== '' && value != null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.map(val => val.trim());\n const collator = new Intl.Collator(undefined, {\n sensitivity: 'base',\n usage: 'search'\n });\n return value => value != null ? filterItemValue.some(filterValue => {\n return collator.compare(filterValue, value.toString() || '') === 0;\n }) : false;\n },\n InputComponent: GridFilterInputMultipleValue\n}]);","import { renderEditInputCell } from '../components/cell/GridEditInputCell';\nimport { gridStringOrNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridStringOperators, getGridStringQuickFilterFn } from './gridStringOperators';\nimport { convertQuickFilterV7ToLegacy } from './utils';\n\n/**\n * TODO: Move pro and premium properties outside of this Community file\n */\nexport const GRID_STRING_COL_DEF = {\n width: 100,\n minWidth: 50,\n maxWidth: Infinity,\n hideable: true,\n sortable: true,\n resizable: true,\n filterable: true,\n groupable: true,\n pinnable: true,\n // @ts-ignore\n aggregable: true,\n editable: false,\n sortComparator: gridStringOrNumberComparator,\n type: 'string',\n align: 'left',\n filterOperators: getGridStringOperators(),\n renderEditCell: renderEditInputCell,\n getApplyQuickFilterFn: convertQuickFilterV7ToLegacy(getGridStringQuickFilterFn),\n getApplyQuickFilterFnV7: getGridStringQuickFilterFn\n};","import { GridFilterInputBoolean } from '../components/panel/filterPanel/GridFilterInputBoolean';\nimport { convertLegacyOperators } from './utils';\nexport const getGridBooleanOperators = () => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const valueAsBoolean = filterItem.value === 'true';\n return value => {\n return Boolean(value) === valueAsBoolean;\n };\n },\n InputComponent: GridFilterInputBoolean\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderBooleanCell } from '../components/cell/GridBooleanCell';\nimport { renderEditBooleanCell } from '../components/cell/GridEditBooleanCell';\nimport { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridBooleanOperators } from './gridBooleanOperators';\nfunction gridBooleanFormatter({\n value,\n api\n}) {\n return value ? api.getLocaleText('booleanCellTrueLabel') : api.getLocaleText('booleanCellFalseLabel');\n}\nconst stringToBoolean = value => {\n switch (value.toLowerCase().trim()) {\n case 'true':\n case 'yes':\n case '1':\n return true;\n case 'false':\n case 'no':\n case '0':\n case 'null':\n case 'undefined':\n return false;\n default:\n return undefined;\n }\n};\nexport const GRID_BOOLEAN_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'boolean',\n align: 'center',\n headerAlign: 'center',\n renderCell: renderBooleanCell,\n renderEditCell: renderEditBooleanCell,\n sortComparator: gridNumberComparator,\n valueFormatter: gridBooleanFormatter,\n filterOperators: getGridBooleanOperators(),\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined,\n // @ts-ignore\n aggregable: false,\n // @ts-ignore\n pastedValueParser: value => stringToBoolean(value)\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridCellCheckboxRenderer } from '../components/columnSelection/GridCellCheckboxRenderer';\nimport { GridHeaderCheckbox } from '../components/columnSelection/GridHeaderCheckbox';\nimport { selectedIdsLookupSelector } from '../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { GRID_BOOLEAN_COL_DEF } from './gridBooleanColDef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_CHECKBOX_SELECTION_FIELD = '__check__';\nexport const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF, {\n field: GRID_CHECKBOX_SELECTION_FIELD,\n type: 'checkboxSelection',\n width: 50,\n resizable: false,\n sortable: false,\n filterable: false,\n // @ts-ignore\n aggregable: false,\n disableColumnMenu: true,\n disableReorder: true,\n disableExport: true,\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined,\n valueGetter: params => {\n const selectionLookup = selectedIdsLookupSelector(params.api.state, params.api.instanceId);\n return selectionLookup[params.id] !== undefined;\n },\n renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),\n renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderActionsCell } from '../components/cell/GridActionsCell';\nexport const GRID_ACTIONS_COLUMN_TYPE = 'actions';\nexport const GRID_ACTIONS_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n sortable: false,\n filterable: false,\n // @ts-ignore\n aggregable: false,\n width: 100,\n align: 'center',\n headerAlign: 'center',\n headerName: '',\n disableColumnMenu: true,\n disableExport: true,\n renderCell: renderActionsCell,\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined\n});","// Can't import from pro package - hence duplication\nexport const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';","// TODO v6: rename to gridEditingStateSelector\nexport const gridEditRowsStateSelector = state => state.editRows;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"selected\", \"hovered\", \"rowId\", \"row\", \"index\", \"style\", \"position\", \"rowHeight\", \"className\", \"visibleColumns\", \"renderedColumns\", \"containerWidth\", \"firstColumnToRender\", \"lastColumnToRender\", \"isLastVisible\", \"focusedCellColumnIndexNotInRange\", \"isNotVisible\", \"focusedCell\", \"tabbableCell\", \"onClick\", \"onDoubleClick\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseOut\", \"onMouseOver\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { fastMemo } from '../utils/fastMemo';\nimport { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRowModel';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';\nimport { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';\nimport { findParentElementFromClassName } from '../utils/domUtils';\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from '../colDef/gridCheckboxSelectionColDef';\nimport { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';\nimport { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';\nimport { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';\nimport { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';\nimport { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';\nimport { randomNumberBetween } from '../utils/utils';\nimport { GridCellWrapper, GridCellV7 } from './cell/GridCell';\nimport { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n editable,\n editing,\n selected,\n isLastVisible,\n rowHeight,\n classes\n } = ownerState;\n const slots = {\n root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isLastVisible && 'row--lastVisible', rowHeight === 'auto' && 'row--dynamicHeight']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction EmptyCell({\n width\n}) {\n if (!width) {\n return null;\n }\n const style = {\n width\n };\n return /*#__PURE__*/_jsx(\"div\", {\n className: `${gridClasses.cell} ${gridClasses.withBorderColor}`,\n style: style\n }); // TODO change to .MuiDataGrid-emptyCell or .MuiDataGrid-rowFiller\n}\n\nconst GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {\n const {\n selected,\n hovered,\n rowId,\n row,\n index,\n style: styleProp,\n position,\n rowHeight,\n className,\n visibleColumns,\n renderedColumns,\n containerWidth,\n firstColumnToRender,\n isLastVisible = false,\n focusedCellColumnIndexNotInRange,\n isNotVisible,\n focusedCell,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onMouseOut,\n onMouseOver\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ref = React.useRef(null);\n const rootProps = useGridRootProps();\n const currentPage = useGridVisibleRows(apiRef, rootProps);\n const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);\n const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n const treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);\n const handleRef = useForkRef(ref, refProp);\n const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based\n\n const ownerState = {\n selected,\n hovered,\n isLastVisible,\n classes: rootProps.classes,\n editing: apiRef.current.getRowMode(rowId) === GridRowModes.Edit,\n editable: rootProps.editMode === GridEditModes.Row,\n rowHeight\n };\n const classes = useUtilityClasses(ownerState);\n React.useLayoutEffect(() => {\n if (rowHeight === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {\n // Fallback for IE\n apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight, position);\n }\n }, [apiRef, rowHeight, rowId, position]);\n React.useLayoutEffect(() => {\n if (currentPage.range) {\n // The index prop is relative to the rows from all pages. As example, the index prop of the\n // first row is 5 if `paginationModel.pageSize=5` and `paginationModel.page=1`. However, the index used by the virtualization\n // doesn't care about pagination and considers the rows from the current page only, so the\n // first row always has index=0. We need to subtract the index of the first row to make it\n // compatible with the index used by the virtualization.\n const rowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(rowId);\n // pinned rows are not part of the visible rows\n if (rowIndex != null) {\n apiRef.current.unstable_setLastMeasuredRowIndex(rowIndex);\n }\n }\n const rootElement = ref.current;\n const hasFixedHeight = rowHeight !== 'auto';\n if (!rootElement || hasFixedHeight || typeof ResizeObserver === 'undefined') {\n return undefined;\n }\n const resizeObserver = new ResizeObserver(entries => {\n const [entry] = entries;\n const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;\n apiRef.current.unstable_storeRowHeightMeasurement(rowId, height, position);\n });\n resizeObserver.observe(rootElement);\n return () => resizeObserver.disconnect();\n }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // Ignore portal\n // The target is not an element when triggered by a Select inside the cell\n // See https://github.com/mui/material-ui/issues/10534\n if (event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {\n return;\n }\n\n // The row might have been deleted\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n apiRef.current.publishEvent(eventName, apiRef.current.getRowParams(rowId), event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, rowId]);\n const publishClick = React.useCallback(event => {\n const cell = findParentElementFromClassName(event.target, gridClasses.cell);\n const field = cell == null ? void 0 : cell.getAttribute('data-field');\n\n // Check if the field is available because the cell that fills the empty\n // space of the row has no field.\n if (field) {\n // User clicked in the checkbox added by checkboxSelection\n if (field === GRID_CHECKBOX_SELECTION_COL_DEF.field) {\n return;\n }\n\n // User opened a detail panel\n if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {\n return;\n }\n\n // User reorders a row\n if (field === '__reorder__') {\n return;\n }\n\n // User is editing a cell\n if (apiRef.current.getCellMode(rowId, field) === GridCellModes.Edit) {\n return;\n }\n\n // User clicked a button from the \"actions\" column type\n const column = apiRef.current.getColumn(field);\n if ((column == null ? void 0 : column.type) === GRID_ACTIONS_COLUMN_TYPE) {\n return;\n }\n }\n publish('rowClick', onClick)(event);\n }, [apiRef, onClick, publish, rowId]);\n const {\n slots,\n slotProps,\n disableColumnReorder\n } = rootProps;\n const CellComponent = slots.cell === GridCellV7 ? GridCellV7 : GridCellWrapper;\n const rowReordering = rootProps.rowReordering;\n const getCell = (column, cellProps) => {\n var _editRowsState$rowId$, _editRowsState$rowId;\n const disableDragEvents = disableColumnReorder && column.disableReorder || !rowReordering && !!sortModel.length && treeDepth > 1 && Object.keys(editRowsState).length > 0;\n const editCellState = (_editRowsState$rowId$ = (_editRowsState$rowId = editRowsState[rowId]) == null ? void 0 : _editRowsState$rowId[column.field]) != null ? _editRowsState$rowId$ : null;\n let cellIsNotVisible = false;\n if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {\n cellIsNotVisible = true;\n }\n return /*#__PURE__*/_jsx(CellComponent, _extends({\n column: column,\n width: cellProps.width,\n rowId: rowId,\n height: rowHeight,\n showRightBorder: cellProps.showRightBorder,\n align: column.align || 'left',\n colIndex: cellProps.indexRelativeToAllColumns,\n colSpan: cellProps.colSpan,\n disableDragEvents: disableDragEvents,\n editCellState: editCellState,\n isNotVisible: cellIsNotVisible\n }, slotProps == null ? void 0 : slotProps.cell), column.field);\n };\n const sizes = useGridSelector(apiRef, () => _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId)), objectShallowCompare);\n let minHeight = rowHeight;\n if (minHeight === 'auto' && sizes) {\n let numberOfBaseSizes = 0;\n const maximumSize = Object.entries(sizes).reduce((acc, [key, size]) => {\n const isBaseHeight = /^base[A-Z]/.test(key);\n if (!isBaseHeight) {\n return acc;\n }\n numberOfBaseSizes += 1;\n if (size > acc) {\n return size;\n }\n return acc;\n }, 0);\n if (maximumSize > 0 && numberOfBaseSizes > 1) {\n minHeight = maximumSize;\n }\n }\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return {\n opacity: 0,\n width: 0,\n height: 0\n };\n }\n const rowStyle = _extends({}, styleProp, {\n maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,\n // max-height doesn't support \"auto\"\n minHeight\n });\n if (sizes != null && sizes.spacingTop) {\n const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';\n rowStyle[property] = sizes.spacingTop;\n }\n if (sizes != null && sizes.spacingBottom) {\n const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';\n let propertyValue = rowStyle[property];\n // avoid overriding existing value\n if (typeof propertyValue !== 'number') {\n propertyValue = parseInt(propertyValue || '0', 10);\n }\n propertyValue += sizes.spacingBottom;\n rowStyle[property] = propertyValue;\n }\n return rowStyle;\n }, [isNotVisible, rowHeight, styleProp, minHeight, sizes, rootProps.rowSpacingType]);\n const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId);\n if (typeof rootProps.getRowClassName === 'function') {\n var _currentPage$range;\n const indexRelativeToCurrentPage = index - (((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.firstRowIndex) || 0);\n const rowParams = _extends({}, apiRef.current.getRowParams(rowId), {\n isFirstVisible: indexRelativeToCurrentPage === 0,\n isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,\n indexRelativeToCurrentPage\n });\n rowClassNames.push(rootProps.getRowClassName(rowParams));\n }\n const randomNumber = randomNumberBetween(10000, 20, 80);\n const rowNode = apiRef.current.getRowNode(rowId);\n if (!rowNode) {\n return null;\n }\n const rowType = rowNode.type;\n const cells = [];\n for (let i = 0; i < renderedColumns.length; i += 1) {\n const column = renderedColumns[i];\n let indexRelativeToAllColumns = firstColumnToRender + i;\n if (focusedCellColumnIndexNotInRange !== undefined && focusedCell) {\n if (visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {\n indexRelativeToAllColumns = focusedCellColumnIndexNotInRange;\n } else {\n indexRelativeToAllColumns -= 1;\n }\n }\n const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);\n if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {\n if (rowType !== 'skeletonRow') {\n const {\n colSpan,\n width\n } = cellColSpanInfo.cellProps;\n const cellProps = {\n width,\n colSpan,\n showRightBorder: rootProps.showCellVerticalBorder,\n indexRelativeToAllColumns\n };\n cells.push(getCell(column, cellProps));\n } else {\n const {\n width\n } = cellColSpanInfo.cellProps;\n const contentWidth = Math.round(randomNumber());\n cells.push( /*#__PURE__*/_jsx(slots.skeletonCell, {\n width: width,\n contentWidth: contentWidth,\n field: column.field,\n align: column.align\n }, column.field));\n }\n }\n }\n const emptyCellWidth = containerWidth - columnsTotalWidth;\n const eventHandlers = row ? {\n onClick: publishClick,\n onDoubleClick: publish('rowDoubleClick', onDoubleClick),\n onMouseEnter: publish('rowMouseEnter', onMouseEnter),\n onMouseLeave: publish('rowMouseLeave', onMouseLeave),\n onMouseOut: publish('rowMouseOut', onMouseOut),\n onMouseOver: publish('rowMouseOver', onMouseOver)\n } : null;\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: handleRef,\n \"data-id\": rowId,\n \"data-rowindex\": index,\n role: \"row\",\n className: clsx(...rowClassNames, classes.root, className, hovered && 'Mui-hovered'),\n \"aria-rowindex\": ariaRowIndex,\n \"aria-selected\": selected,\n style: style\n }, eventHandlers, other, {\n children: [cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {\n width: emptyCellWidth\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRow.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n containerWidth: PropTypes.number.isRequired,\n firstColumnToRender: PropTypes.number.isRequired,\n /**\n * Determines which cell has focus.\n * If `null`, no cell in this row has focus.\n */\n focusedCell: PropTypes.string,\n focusedCellColumnIndexNotInRange: PropTypes.number,\n /**\n * Index of the row in the whole sorted and filtered dataset.\n * If some rows above have expanded children, this index also take those children into account.\n */\n index: PropTypes.number.isRequired,\n isLastVisible: PropTypes.bool,\n isNotVisible: PropTypes.bool,\n lastColumnToRender: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,\n row: PropTypes.object,\n rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n selected: PropTypes.bool.isRequired,\n /**\n * Determines which cell should be tabbable by having tabIndex=0.\n * If `null`, no cell in this row is in the tab sequence.\n */\n tabbableCell: PropTypes.string,\n visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired\n} : void 0;\nconst MemoizedGridRow = fastMemo(GridRow);\nexport { MemoizedGridRow as GridRow };","import * as React from 'react';\nimport { GridApiContext } from '../components/GridApiContext';\nimport { GridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';\nimport { GridRootPropsContext } from './GridRootPropsContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridContextProvider({\n privateApiRef,\n props,\n children\n}) {\n const apiRef = React.useRef(privateApiRef.current.getPublicApi());\n return /*#__PURE__*/_jsx(GridRootPropsContext.Provider, {\n value: props,\n children: /*#__PURE__*/_jsx(GridPrivateApiContext.Provider, {\n value: privateApiRef,\n children: /*#__PURE__*/_jsx(GridApiContext.Provider, {\n value: apiRef,\n children: children\n })\n })\n });\n}","import * as React from 'react';\nimport { localStorageAvailable } from '../../utils/utils';\nimport { useGridApiMethod } from '../utils';\nconst forceDebug = localStorageAvailable() && window.localStorage.getItem('DEBUG') != null;\nconst noop = () => {};\nconst noopLogger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n};\nconst LOG_LEVELS = ['debug', 'info', 'warn', 'error'];\nfunction getAppender(name, logLevel, appender = console) {\n const minLogLevelIdx = LOG_LEVELS.indexOf(logLevel);\n if (minLogLevelIdx === -1) {\n throw new Error(`MUI: Log level ${logLevel} not recognized.`);\n }\n const logger = LOG_LEVELS.reduce((loggerObj, method, idx) => {\n if (idx >= minLogLevelIdx) {\n loggerObj[method] = (...args) => {\n const [message, ...other] = args;\n appender[method](`MUI: ${name} - ${message}`, ...other);\n };\n } else {\n loggerObj[method] = noop;\n }\n return loggerObj;\n }, {});\n return logger;\n}\nexport const useGridLoggerFactory = (apiRef, props) => {\n const getLogger = React.useCallback(name => {\n if (forceDebug) {\n return getAppender(name, 'debug', props.logger);\n }\n if (!props.logLevel) {\n return noopLogger;\n }\n return getAppender(name, props.logLevel.toString(), props.logger);\n }, [props.logLevel, props.logger]);\n useGridApiMethod(apiRef, {\n getLogger\n }, 'private');\n};","export class Store {\n static create(value) {\n return new Store(value);\n }\n constructor(_value) {\n this.value = void 0;\n this.listeners = void 0;\n this.subscribe = fn => {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n };\n this.getSnapshot = () => {\n return this.value;\n };\n this.update = value => {\n this.value = value;\n this.listeners.forEach(l => l(value));\n };\n this.value = _value;\n this.listeners = new Set();\n }\n}","// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n constructor() {\n this.maxListeners = 20;\n this.warnOnce = false;\n this.events = {};\n }\n on(eventName, listener, options = {}) {\n let collection = this.events[eventName];\n if (!collection) {\n collection = {\n highPriority: new Map(),\n regular: new Map()\n };\n this.events[eventName] = collection;\n }\n if (options.isFirst) {\n collection.highPriority.set(listener, true);\n } else {\n collection.regular.set(listener, true);\n }\n if (process.env.NODE_ENV !== 'production') {\n const collectionSize = collection.highPriority.size + collection.regular.size;\n if (collectionSize > this.maxListeners && !this.warnOnce) {\n this.warnOnce = true;\n console.warn([`Possible EventEmitter memory leak detected. ${collectionSize} ${eventName} listeners added.`].join('\\n'));\n }\n }\n }\n removeListener(eventName, listener) {\n if (this.events[eventName]) {\n this.events[eventName].regular.delete(listener);\n this.events[eventName].highPriority.delete(listener);\n }\n }\n removeAllListeners() {\n this.events = {};\n }\n emit(eventName, ...args) {\n const collection = this.events[eventName];\n if (!collection) {\n return;\n }\n const highPriorityListeners = Array.from(collection.highPriority.keys());\n const regularListeners = Array.from(collection.regular.keys());\n for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n const listener = highPriorityListeners[i];\n if (collection.highPriority.has(listener)) {\n listener.apply(this, args);\n }\n }\n for (let i = 0; i < regularListeners.length; i += 1) {\n const listener = regularListeners[i];\n if (collection.regular.has(listener)) {\n listener.apply(this, args);\n }\n }\n }\n once(eventName, listener) {\n // eslint-disable-next-line consistent-this\n const that = this;\n this.on(eventName, function oneTimeListener(...args) {\n that.removeListener(eventName, oneTimeListener);\n listener.apply(that, args);\n });\n }\n}","import * as React from 'react';\nimport { Store } from '../../utils/Store';\nimport { useGridApiMethod } from '../utils/useGridApiMethod';\nimport { GridSignature } from '../utils/useGridApiEventHandler';\nimport { EventManager } from '../../utils/EventManager';\nconst SYMBOL_API_PRIVATE = Symbol('mui.api_private');\nconst isSyntheticEvent = event => {\n return event.isPropagationStopped !== undefined;\n};\nexport function unwrapPrivateAPI(publicApi) {\n return publicApi[SYMBOL_API_PRIVATE];\n}\nlet globalId = 0;\nfunction createPrivateAPI(publicApiRef) {\n var _publicApiRef$current;\n const existingPrivateApi = (_publicApiRef$current = publicApiRef.current) == null ? void 0 : _publicApiRef$current[SYMBOL_API_PRIVATE];\n if (existingPrivateApi) {\n return existingPrivateApi;\n }\n const state = {};\n const privateApi = {\n state,\n store: Store.create(state),\n instanceId: {\n id: globalId\n }\n };\n globalId += 1;\n privateApi.getPublicApi = () => publicApiRef.current;\n privateApi.register = (visibility, methods) => {\n Object.keys(methods).forEach(methodName => {\n const method = methods[methodName];\n const currentPrivateMethod = privateApi[methodName];\n if ((currentPrivateMethod == null ? void 0 : currentPrivateMethod.spying) === true) {\n currentPrivateMethod.target = method;\n } else {\n privateApi[methodName] = method;\n }\n if (visibility === 'public') {\n const publicApi = publicApiRef.current;\n const currentPublicMethod = publicApi[methodName];\n if ((currentPublicMethod == null ? void 0 : currentPublicMethod.spying) === true) {\n currentPublicMethod.target = method;\n } else {\n publicApi[methodName] = method;\n }\n }\n });\n };\n privateApi.register('private', {\n caches: {},\n eventManager: new EventManager()\n });\n return privateApi;\n}\nfunction createPublicAPI(privateApiRef) {\n const publicApi = {\n get state() {\n return privateApiRef.current.state;\n },\n get store() {\n return privateApiRef.current.store;\n },\n get instanceId() {\n return privateApiRef.current.instanceId;\n },\n [SYMBOL_API_PRIVATE]: privateApiRef.current\n };\n return publicApi;\n}\nexport function useGridApiInitialization(inputApiRef, props) {\n const publicApiRef = React.useRef();\n const privateApiRef = React.useRef();\n if (!privateApiRef.current) {\n privateApiRef.current = createPrivateAPI(publicApiRef);\n }\n if (!publicApiRef.current) {\n publicApiRef.current = createPublicAPI(privateApiRef);\n }\n const publishEvent = React.useCallback((...args) => {\n const [name, params, event = {}] = args;\n event.defaultMuiPrevented = false;\n if (isSyntheticEvent(event) && event.isPropagationStopped()) {\n return;\n }\n const details = props.signature === GridSignature.DataGridPro ? {\n api: privateApiRef.current.getPublicApi()\n } : {};\n privateApiRef.current.eventManager.emit(name, params, event, details);\n }, [privateApiRef, props.signature]);\n const subscribeEvent = React.useCallback((event, handler, options) => {\n privateApiRef.current.eventManager.on(event, handler, options);\n const api = privateApiRef.current;\n return () => {\n api.eventManager.removeListener(event, handler);\n };\n }, [privateApiRef]);\n useGridApiMethod(privateApiRef, {\n subscribeEvent,\n publishEvent\n }, 'public');\n React.useImperativeHandle(inputApiRef, () => publicApiRef.current, [publicApiRef]);\n React.useEffect(() => {\n const api = privateApiRef.current;\n return () => {\n api.publishEvent('unmount');\n };\n }, [privateApiRef]);\n return privateApiRef;\n}","import * as React from 'react';\nexport const useGridLocaleText = (apiRef, props) => {\n const getLocaleText = React.useCallback(key => {\n if (props.localeText[key] == null) {\n throw new Error(`Missing translation for key ${key}.`);\n }\n return props.localeText[key];\n }, [props.localeText]);\n apiRef.current.register('public', {\n getLocaleText\n });\n};","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\n/**\n * Implement the Pipeline Pattern\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic to enrich data provided by other plugins or components.\n * For instance, the row grouping plugin needs to add / remove the grouping columns when the grid columns are updated.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterPipeProcessor` to register their processor.\n *\n * - `apiRef.current.requestPipeProcessorsApplication` to imperatively re-apply a group.\n * This method should be used in last resort.\n * Most of the time, the application should be triggered by an update on the deps of the processor.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to enrich its data must use:\n *\n * - `apiRef.current.unstable_applyPipeProcessors` to run in chain all the processors of a given group.\n *\n * - `useGridRegisterPipeApplier` to re-apply the whole pipe when requested.\n * The applier will be called when:\n * * a processor is registered.\n * * `apiRef.current.requestPipeProcessorsApplication` is called for the given group.\n */\nexport const useGridPipeProcessing = apiRef => {\n const processorsCache = React.useRef({});\n const isRunning = React.useRef(false);\n const runAppliers = React.useCallback(groupCache => {\n if (isRunning.current || !groupCache) {\n return;\n }\n isRunning.current = true;\n Object.values(groupCache.appliers).forEach(callback => {\n callback();\n });\n isRunning.current = false;\n }, []);\n const registerPipeProcessor = React.useCallback((group, id, processor) => {\n if (!processorsCache.current[group]) {\n processorsCache.current[group] = {\n processors: new Map(),\n appliers: {}\n };\n }\n const groupCache = processorsCache.current[group];\n const oldProcessor = groupCache.processors.get(id);\n if (oldProcessor !== processor) {\n groupCache.processors.set(id, processor);\n runAppliers(groupCache);\n }\n return () => {\n processorsCache.current[group].processors.set(id, null);\n };\n }, [runAppliers]);\n const registerPipeApplier = React.useCallback((group, id, applier) => {\n if (!processorsCache.current[group]) {\n processorsCache.current[group] = {\n processors: new Map(),\n appliers: {}\n };\n }\n processorsCache.current[group].appliers[id] = applier;\n return () => {\n const _appliers = processorsCache.current[group].appliers,\n otherAppliers = _objectWithoutPropertiesLoose(_appliers, [id].map(_toPropertyKey));\n processorsCache.current[group].appliers = otherAppliers;\n };\n }, []);\n const requestPipeProcessorsApplication = React.useCallback(group => {\n const groupCache = processorsCache.current[group];\n runAppliers(groupCache);\n }, [runAppliers]);\n const applyPipeProcessors = React.useCallback((...args) => {\n const [group, value, context] = args;\n if (!processorsCache.current[group]) {\n return value;\n }\n const preProcessors = Array.from(processorsCache.current[group].processors.values());\n return preProcessors.reduce((acc, preProcessor) => {\n if (!preProcessor) {\n return acc;\n }\n return preProcessor(acc, context);\n }, value);\n }, []);\n const preProcessingPrivateApi = {\n registerPipeProcessor,\n registerPipeApplier,\n requestPipeProcessorsApplication\n };\n const preProcessingPublicApi = {\n unstable_applyPipeProcessors: applyPipeProcessors\n };\n useGridApiMethod(apiRef, preProcessingPrivateApi, 'private');\n useGridApiMethod(apiRef, preProcessingPublicApi, 'public');\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterPipeProcessor = (apiRef, group, callback) => {\n const cleanup = React.useRef();\n const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n const registerPreProcessor = React.useCallback(() => {\n cleanup.current = apiRef.current.registerPipeProcessor(group, id.current, callback);\n }, [apiRef, callback, group]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n return () => {\n if (cleanup.current) {\n cleanup.current();\n cleanup.current = null;\n }\n };\n }, [registerPreProcessor]);\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterPipeApplier = (apiRef, group, callback) => {\n const cleanup = React.useRef();\n const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n const registerPreProcessor = React.useCallback(() => {\n cleanup.current = apiRef.current.registerPipeApplier(group, id.current, callback);\n }, [apiRef, callback, group]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n return () => {\n if (cleanup.current) {\n cleanup.current();\n cleanup.current = null;\n }\n };\n }, [registerPreProcessor]);\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterStrategyProcessor = (apiRef, strategyName, group, processor) => {\n const registerPreProcessor = React.useCallback(() => {\n apiRef.current.registerStrategyProcessor(strategyName, group, processor);\n }, [apiRef, processor, group, strategyName]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n }, [registerPreProcessor]);\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nexport const GRID_DEFAULT_STRATEGY = 'none';\nexport const GRID_STRATEGIES_PROCESSORS = {\n rowTreeCreation: 'rowTree',\n filtering: 'rowTree',\n sorting: 'rowTree',\n visibleRowsLookupCreation: 'rowTree'\n};\n/**\n * Implements a variant of the Strategy Pattern (see https://en.wikipedia.org/wiki/Strategy_pattern)\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic that must only be applied if the right strategy is active.\n * For instance, the row grouping plugin has a custom filtering algorithm.\n * This algorithm must be applied by the filtering plugin if the row grouping is the current way of grouping rows,\n * but not if the tree data is the current way of grouping rows.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterStrategyProcessor` to register their processor.\n * When the processor of the active strategy changes, it will fire `\"activeStrategyProcessorChange\"` to re-apply the processor.\n *\n * - `apiRef.current.setStrategyAvailability` to tell if their strategy can be used.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to apply the custom logic of the current strategy must use:\n *\n * - `apiRef.current.applyStrategyProcessor` to run the processor of the active strategy for a given processor name.\n *\n * - the \"strategyAvailabilityChange\" event to update something when the active strategy changes.\n * Warning: Be careful not to apply the processor several times.\n * For instance \"rowsSet\" is fired by `useGridRows` whenever the active strategy changes.\n * So listening to both would most likely run your logic twice.\n *\n * - The \"activeStrategyProcessorChange\" event to update something when the processor of the active strategy changes.\n *\n * =====================================================================================================================\n *\n * Each processor name is part of a strategy group which can only have one active strategy at the time.\n * For now, there is only one strategy group named `rowTree` which customize\n * - row tree creation algorithm.\n * - sorting algorithm.\n * - filtering algorithm.\n */\nexport const useGridStrategyProcessing = apiRef => {\n const availableStrategies = React.useRef(new Map());\n const strategiesCache = React.useRef({});\n const registerStrategyProcessor = React.useCallback((strategyName, processorName, processor) => {\n const cleanup = () => {\n const _ref = strategiesCache.current[processorName],\n otherProcessors = _objectWithoutPropertiesLoose(_ref, [strategyName].map(_toPropertyKey));\n strategiesCache.current[processorName] = otherProcessors;\n };\n if (!strategiesCache.current[processorName]) {\n strategiesCache.current[processorName] = {};\n }\n const groupPreProcessors = strategiesCache.current[processorName];\n const previousProcessor = groupPreProcessors[strategyName];\n groupPreProcessors[strategyName] = processor;\n if (!previousProcessor || previousProcessor === processor) {\n return cleanup;\n }\n if (strategyName === apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName])) {\n apiRef.current.publishEvent('activeStrategyProcessorChange', processorName);\n }\n return cleanup;\n }, [apiRef]);\n const applyStrategyProcessor = React.useCallback((processorName, params) => {\n const activeStrategy = apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName]);\n if (activeStrategy == null) {\n throw new Error(\"Can't apply a strategy processor before defining an active strategy\");\n }\n const groupCache = strategiesCache.current[processorName];\n if (!groupCache || !groupCache[activeStrategy]) {\n throw new Error(`No processor found for processor \"${processorName}\" on strategy \"${activeStrategy}\"`);\n }\n const processor = groupCache[activeStrategy];\n return processor(params);\n }, [apiRef]);\n const getActiveStrategy = React.useCallback(strategyGroup => {\n var _availableStrategyEnt;\n const strategyEntries = Array.from(availableStrategies.current.entries());\n const availableStrategyEntry = strategyEntries.find(([, strategy]) => {\n if (strategy.group !== strategyGroup) {\n return false;\n }\n return strategy.isAvailable();\n });\n return (_availableStrategyEnt = availableStrategyEntry == null ? void 0 : availableStrategyEntry[0]) != null ? _availableStrategyEnt : GRID_DEFAULT_STRATEGY;\n }, []);\n const setStrategyAvailability = React.useCallback((strategyGroup, strategyName, isAvailable) => {\n availableStrategies.current.set(strategyName, {\n group: strategyGroup,\n isAvailable\n });\n apiRef.current.publishEvent('strategyAvailabilityChange');\n }, [apiRef]);\n const strategyProcessingApi = {\n registerStrategyProcessor,\n applyStrategyProcessor,\n getActiveStrategy,\n setStrategyAvailability\n };\n useGridApiMethod(apiRef, strategyProcessingApi, 'private');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridSignature } from '../utils/useGridApiEventHandler';\nimport { useGridApiMethod } from '../utils';\nimport { isFunction } from '../../utils/utils';\nexport const useGridStateInitialization = (apiRef, props) => {\n const controlStateMapRef = React.useRef({});\n const [, rawForceUpdate] = React.useState();\n const registerControlState = React.useCallback(controlStateItem => {\n controlStateMapRef.current[controlStateItem.stateId] = controlStateItem;\n }, []);\n const setState = React.useCallback((state, reason) => {\n let newState;\n if (isFunction(state)) {\n newState = state(apiRef.current.state);\n } else {\n newState = state;\n }\n if (apiRef.current.state === newState) {\n return false;\n }\n let ignoreSetState = false;\n\n // Apply the control state constraints\n const updatedControlStateIds = [];\n Object.keys(controlStateMapRef.current).forEach(stateId => {\n const controlState = controlStateMapRef.current[stateId];\n const oldSubState = controlState.stateSelector(apiRef.current.state, apiRef.current.instanceId);\n const newSubState = controlState.stateSelector(newState, apiRef.current.instanceId);\n if (newSubState === oldSubState) {\n return;\n }\n updatedControlStateIds.push({\n stateId: controlState.stateId,\n hasPropChanged: newSubState !== controlState.propModel\n });\n\n // The state is controlled, the prop should always win\n if (controlState.propModel !== undefined && newSubState !== controlState.propModel) {\n ignoreSetState = true;\n }\n });\n if (updatedControlStateIds.length > 1) {\n // Each hook modify its own state, and it should not leak\n // Events are here to forward to other hooks and apply changes.\n // You are trying to update several states in a no isolated way.\n throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${updatedControlStateIds[0].stateId}, therefore, you're not allowed to update ${updatedControlStateIds.map(el => el.stateId).join(', ')} in the same transaction.`);\n }\n if (!ignoreSetState) {\n // We always assign it as we mutate rows for perf reason.\n apiRef.current.state = newState;\n if (apiRef.current.publishEvent) {\n apiRef.current.publishEvent('stateChange', newState);\n }\n apiRef.current.store.update(newState);\n }\n if (updatedControlStateIds.length === 1) {\n const {\n stateId,\n hasPropChanged\n } = updatedControlStateIds[0];\n const controlState = controlStateMapRef.current[stateId];\n const model = controlState.stateSelector(newState, apiRef.current.instanceId);\n if (controlState.propOnChange && hasPropChanged) {\n const details = props.signature === GridSignature.DataGridPro ? {\n api: apiRef.current,\n reason\n } : {\n reason\n };\n controlState.propOnChange(model, details);\n }\n if (!ignoreSetState) {\n apiRef.current.publishEvent(controlState.changeEvent, model, {\n reason\n });\n }\n }\n return !ignoreSetState;\n }, [apiRef, props.signature]);\n const updateControlState = React.useCallback((key, state, reason) => {\n return apiRef.current.setState(previousState => {\n return _extends({}, previousState, {\n [key]: state(previousState[key])\n });\n }, reason);\n }, [apiRef]);\n const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);\n const publicStateApi = {\n setState,\n forceUpdate\n };\n const privateStateApi = {\n updateControlState,\n registerControlState\n };\n useGridApiMethod(apiRef, publicStateApi, 'public');\n useGridApiMethod(apiRef, privateStateApi, 'private');\n};","import { useGridLoggerFactory } from './useGridLoggerFactory';\nimport { useGridApiInitialization } from './useGridApiInitialization';\nimport { useGridLocaleText } from './useGridLocaleText';\nimport { useGridPipeProcessing } from './pipeProcessing';\nimport { useGridStrategyProcessing } from './strategyProcessing';\nimport { useGridStateInitialization } from './useGridStateInitialization';\n\n/**\n * Initialize the technical pieces of the DataGrid (logger, state, ...) that any DataGrid implementation needs\n */\nexport const useGridInitialization = (inputApiRef, props) => {\n const privateApiRef = useGridApiInitialization(inputApiRef, props);\n useGridLoggerFactory(privateApiRef, props);\n useGridStateInitialization(privateApiRef, props);\n useGridPipeProcessing(privateApiRef);\n useGridStrategyProcessing(privateApiRef);\n useGridLocaleText(privateApiRef, props);\n return privateApiRef;\n};","import * as React from 'react';\nexport const useGridInitializeState = (initializer, privateApiRef, props) => {\n const isInitialized = React.useRef(false);\n if (!isInitialized.current) {\n privateApiRef.current.state = initializer(privateApiRef.current.state, props, privateApiRef);\n isInitialized.current = true;\n }\n};","import { GridFilterInputDate } from '../components/panel/filterPanel/GridFilterInputDate';\nimport { convertLegacyOperators } from './utils';\nconst dateRegex = /(\\d+)-(\\d+)-(\\d+)/;\nconst dateTimeRegex = /(\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+)/;\nfunction buildApplyFilterFn(filterItem, compareFn, showTime, keepHours) {\n if (!filterItem.value) {\n return null;\n }\n const [year, month, day, hour, minute] = filterItem.value.match(showTime ? dateTimeRegex : dateRegex).slice(1).map(Number);\n const time = new Date(year, month - 1, day, hour || 0, minute || 0).getTime();\n return value => {\n if (!value) {\n return false;\n }\n if (keepHours) {\n return compareFn(value.getTime(), time);\n }\n\n // Make a copy of the date to not reset the hours in the original object\n const dateCopy = new Date(value);\n const timeToCompare = dateCopy.setHours(showTime ? value.getHours() : 0, showTime ? value.getMinutes() : 0, 0, 0);\n return compareFn(timeToCompare, time);\n };\n}\nexport const getGridDateOperators = showTime => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 === value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'not',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 !== value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'after',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 > value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'onOrAfter',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 >= value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'before',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 < value2, showTime, !showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'onOrBefore',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 <= value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value != null;\n };\n },\n requiresFilterValue: false\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridDateComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridDateOperators } from './gridDateOperators';\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderEditDateCell } from '../components/cell/GridEditDateCell';\nfunction throwIfNotDateObject({\n value,\n columnType,\n rowId,\n field\n}) {\n if (!(value instanceof Date)) {\n throw new Error([`MUI: \\`${columnType}\\` column type only accepts \\`Date\\` objects as values.`, 'Use `valueGetter` to transform the value into a `Date` object.', `Row ID: ${rowId}, field: \"${field}\".`].join('\\n'));\n }\n}\nexport function gridDateFormatter({\n value,\n field,\n id\n}) {\n if (!value) {\n return '';\n }\n throwIfNotDateObject({\n value,\n columnType: 'date',\n rowId: id,\n field\n });\n return value.toLocaleDateString();\n}\nexport function gridDateTimeFormatter({\n value,\n field,\n id\n}) {\n if (!value) {\n return '';\n }\n throwIfNotDateObject({\n value,\n columnType: 'dateTime',\n rowId: id,\n field\n });\n return value.toLocaleString();\n}\nexport const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'date',\n sortComparator: gridDateComparator,\n valueFormatter: gridDateFormatter,\n filterOperators: getGridDateOperators(),\n renderEditCell: renderEditDateCell,\n // @ts-ignore\n pastedValueParser: value => new Date(value)\n});\nexport const GRID_DATETIME_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'dateTime',\n sortComparator: gridDateComparator,\n valueFormatter: gridDateTimeFormatter,\n filterOperators: getGridDateOperators(true),\n renderEditCell: renderEditDateCell,\n // @ts-ignore\n pastedValueParser: value => new Date(value)\n});","import { GridFilterInputValue } from '../components/panel/filterPanel/GridFilterInputValue';\nimport { GridFilterInputMultipleValue } from '../components/panel/filterPanel/GridFilterInputMultipleValue';\nimport { convertLegacyOperators, tagInternalFilter } from './utils';\nconst parseNumericValue = value => {\n if (value == null) {\n return null;\n }\n return Number(value);\n};\nexport const getGridNumericQuickFilterFn = tagInternalFilter(value => {\n if (value == null || Number.isNaN(value) || value === '') {\n return null;\n }\n return columnValue => {\n return parseNumericValue(columnValue) === parseNumericValue(value);\n };\n});\nexport const getGridNumericOperators = () => convertLegacyOperators([{\n value: '=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n return parseNumericValue(value) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '!=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n return parseNumericValue(value) !== filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '>',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) > filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '>=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) >= filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '<',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) < filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '<=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) <= filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value != null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n return value => {\n return value != null && filterItem.value.includes(Number(value));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n InputComponentProps: {\n type: 'number'\n }\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { isNumber } from '../utils/utils';\nimport { getGridNumericOperators, getGridNumericQuickFilterFn } from './gridNumericOperators';\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { convertQuickFilterV7ToLegacy } from './utils';\nexport const GRID_NUMERIC_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'number',\n align: 'right',\n headerAlign: 'right',\n sortComparator: gridNumberComparator,\n valueParser: value => value === '' ? null : Number(value),\n valueFormatter: ({\n value\n }) => isNumber(value) ? value.toLocaleString() : value || '',\n filterOperators: getGridNumericOperators(),\n getApplyQuickFilterFn: convertQuickFilterV7ToLegacy(getGridNumericQuickFilterFn),\n getApplyQuickFilterFnV7: getGridNumericQuickFilterFn\n});","import { GridFilterInputSingleSelect } from '../components/panel/filterPanel/GridFilterInputSingleSelect';\nimport { GridFilterInputMultipleSingleSelect } from '../components/panel/filterPanel/GridFilterInputMultipleSingleSelect';\nimport { isObject } from '../utils/utils';\nimport { convertLegacyOperators } from './utils';\nconst parseObjectValue = value => {\n if (value == null || !isObject(value)) {\n return value;\n }\n return value.value;\n};\nexport const getGridSingleSelectOperators = () => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || filterItem.value === '') {\n return null;\n }\n return value => parseObjectValue(value) === parseObjectValue(filterItem.value);\n },\n InputComponent: GridFilterInputSingleSelect\n}, {\n value: 'not',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || filterItem.value === '') {\n return null;\n }\n return value => parseObjectValue(value) !== parseObjectValue(filterItem.value);\n },\n InputComponent: GridFilterInputSingleSelect\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n const filterItemValues = filterItem.value.map(parseObjectValue);\n return value => filterItemValues.includes(parseObjectValue(value));\n },\n InputComponent: GridFilterInputMultipleSingleSelect\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderEditSingleSelectCell } from '../components/cell/GridEditSingleSelectCell';\nimport { getGridSingleSelectOperators } from './gridSingleSelectOperators';\nimport { isSingleSelectColDef } from '../components/panel/filterPanel/filterPanelUtils';\nimport { isObject } from '../utils/utils';\nconst isArrayOfObjects = options => {\n return typeof options[0] === 'object';\n};\nconst defaultGetOptionValue = value => {\n return isObject(value) ? value.value : value;\n};\nconst defaultGetOptionLabel = value => {\n return isObject(value) ? value.label : String(value);\n};\nexport const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'singleSelect',\n getOptionLabel: defaultGetOptionLabel,\n getOptionValue: defaultGetOptionValue,\n valueFormatter(params) {\n const {\n id,\n field,\n value,\n api\n } = params;\n const colDef = params.api.getColumn(field);\n if (!isSingleSelectColDef(colDef)) {\n return '';\n }\n let valueOptions;\n if (typeof colDef.valueOptions === 'function') {\n valueOptions = colDef.valueOptions({\n id,\n row: id ? api.getRow(id) : null,\n field\n });\n } else {\n valueOptions = colDef.valueOptions;\n }\n if (value == null) {\n return '';\n }\n if (!valueOptions) {\n return value;\n }\n if (!isArrayOfObjects(valueOptions)) {\n return colDef.getOptionLabel(value);\n }\n const valueOption = valueOptions.find(option => colDef.getOptionValue(option) === value);\n return valueOption ? colDef.getOptionLabel(valueOption) : '';\n },\n renderEditCell: renderEditSingleSelectCell,\n filterOperators: getGridSingleSelectOperators(),\n // @ts-ignore\n pastedValueParser: (value, params) => {\n const colDef = params.colDef;\n const colDefValueOptions = colDef.valueOptions;\n const valueOptions = typeof colDefValueOptions === 'function' ? colDefValueOptions({\n field: colDef.field\n }) : colDefValueOptions || [];\n const getOptionValue = colDef.getOptionValue;\n const valueOption = valueOptions.find(option => {\n if (getOptionValue(option) === value) {\n return true;\n }\n return false;\n });\n if (valueOption) {\n return value;\n }\n // do not paste the value if it is not in the valueOptions\n return undefined;\n }\n});","import { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { GRID_NUMERIC_COL_DEF } from './gridNumericColDef';\nimport { GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF } from './gridDateColDef';\nimport { GRID_BOOLEAN_COL_DEF } from './gridBooleanColDef';\nimport { GRID_SINGLE_SELECT_COL_DEF } from './gridSingleSelectColDef';\nimport { GRID_ACTIONS_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from './gridActionsColDef';\nexport const DEFAULT_GRID_COL_TYPE_KEY = '__default__';\nexport const getGridDefaultColumnTypes = () => {\n const nativeColumnTypes = {\n string: GRID_STRING_COL_DEF,\n number: GRID_NUMERIC_COL_DEF,\n date: GRID_DATE_COL_DEF,\n dateTime: GRID_DATETIME_COL_DEF,\n boolean: GRID_BOOLEAN_COL_DEF,\n singleSelect: GRID_SINGLE_SELECT_COL_DEF,\n [GRID_ACTIONS_COLUMN_TYPE]: GRID_ACTIONS_COL_DEF,\n [DEFAULT_GRID_COL_TYPE_KEY]: GRID_STRING_COL_DEF\n };\n return nativeColumnTypes;\n};","import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';\nimport { buildWarning } from '../../../../utils/warning';\nfunction sanitizeCellValue(value, delimiterCharacter) {\n if (typeof value === 'string') {\n // Make sure value containing delimiter or line break won't be split into multiple rows\n if ([delimiterCharacter, '\\n', '\\r', '\"'].some(delimiter => value.includes(delimiter))) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n }\n return value;\n}\nexport const serializeCellValue = (cellParams, options) => {\n const {\n delimiterCharacter,\n ignoreValueFormatter\n } = options;\n let value;\n if (ignoreValueFormatter) {\n var _cellParams$value2;\n const columnType = cellParams.colDef.type;\n if (columnType === 'number') {\n value = String(cellParams.value);\n } else if (columnType === 'date' || columnType === 'dateTime') {\n var _cellParams$value;\n value = (_cellParams$value = cellParams.value) == null ? void 0 : _cellParams$value.toISOString();\n } else if (typeof ((_cellParams$value2 = cellParams.value) == null ? void 0 : _cellParams$value2.toString) === 'function') {\n value = cellParams.value.toString();\n } else {\n value = cellParams.value;\n }\n } else {\n value = cellParams.formattedValue;\n }\n return sanitizeCellValue(value, delimiterCharacter);\n};\nconst objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);\nclass CSVRow {\n constructor(options) {\n this.options = void 0;\n this.rowString = '';\n this.isEmpty = true;\n this.options = options;\n }\n addValue(value) {\n if (!this.isEmpty) {\n this.rowString += this.options.delimiterCharacter;\n }\n if (value === null || value === undefined) {\n this.rowString += '';\n } else if (typeof this.options.sanitizeCellValue === 'function') {\n this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter);\n } else {\n this.rowString += value;\n }\n this.isEmpty = false;\n }\n getRowString() {\n return this.rowString;\n }\n}\nconst serializeRow = ({\n id,\n columns,\n getCellParams,\n delimiterCharacter,\n ignoreValueFormatter\n}) => {\n const row = new CSVRow({\n delimiterCharacter\n });\n columns.forEach(column => {\n const cellParams = getCellParams(id, column.field);\n if (process.env.NODE_ENV !== 'production') {\n if (String(cellParams.formattedValue) === '[object Object]') {\n objectFormattedValueWarning();\n }\n }\n row.addValue(serializeCellValue(cellParams, {\n delimiterCharacter,\n ignoreValueFormatter\n }));\n });\n return row.getRowString();\n};\nexport function buildCSV(options) {\n const {\n columns,\n rowIds,\n delimiterCharacter,\n includeHeaders,\n includeColumnGroupsHeaders,\n ignoreValueFormatter,\n apiRef\n } = options;\n const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({\n id,\n columns,\n getCellParams: apiRef.current.getCellParams,\n delimiterCharacter,\n ignoreValueFormatter\n })}\\r\\n`, '').trim();\n if (!includeHeaders) {\n return CSVBody;\n }\n const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);\n const headerRows = [];\n if (includeColumnGroupsHeaders) {\n const columnGroupLookup = apiRef.current.unstable_getAllGroupDetails();\n let maxColumnGroupsDepth = 0;\n const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {\n const columnGroupPath = apiRef.current.unstable_getColumnGroupPath(column.field);\n acc[column.field] = columnGroupPath;\n maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);\n return acc;\n }, {});\n for (let i = 0; i < maxColumnGroupsDepth; i += 1) {\n const headerGroupRow = new CSVRow({\n delimiterCharacter,\n sanitizeCellValue\n });\n headerRows.push(headerGroupRow);\n filteredColumns.forEach(column => {\n const columnGroupId = (columnGroupPathsLookup[column.field] || [])[i];\n const columnGroup = columnGroupLookup[columnGroupId];\n headerGroupRow.addValue(columnGroup ? columnGroup.headerName || columnGroup.groupId : '');\n });\n }\n }\n const mainHeaderRow = new CSVRow({\n delimiterCharacter,\n sanitizeCellValue\n });\n filteredColumns.forEach(column => {\n mainHeaderRow.addValue(column.headerName || column.field);\n });\n headerRows.push(mainHeaderRow);\n const CSVHead = `${headerRows.map(row => row.getRowString()).join('\\r\\n')}\\r\\n`;\n return `${CSVHead}${CSVBody}`.trim();\n}","import * as React from 'react';\nimport { useGridApiOptionHandler, useGridNativeEventListener } from '../../utils';\nimport { gridFocusCellSelector } from '../focus/gridFocusStateSelector';\nimport { serializeCellValue } from '../export/serializers/csvSerializer';\nfunction writeToClipboardPolyfill(data) {\n const span = document.createElement('span');\n span.style.whiteSpace = 'pre';\n span.style.userSelect = 'all';\n span.style.opacity = '0px';\n span.textContent = data;\n document.body.appendChild(span);\n const range = document.createRange();\n range.selectNode(span);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(span);\n }\n}\nfunction copyToClipboard(data) {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(data).catch(() => {\n writeToClipboardPolyfill(data);\n });\n } else {\n writeToClipboardPolyfill(data);\n }\n}\nfunction hasNativeSelection(element) {\n var _window$getSelection;\n // When getSelection is called on an