{"version":3,"file":"index.mjs","sources":["../../../src/components/core-component/index.tsx"],"sourcesContent":["import type { DataGridProps, GridColDef, GridSlotsComponent } from '@mui/x-data-grid';\nimport { DataGrid } from '@mui/x-data-grid';\nimport { forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\nimport get from 'lodash.get';\nimport type { FilterItem } from '$context';\nimport { useTableBuilderColumns, useTableBuilderFilters, useTranslation } from '$context';\nimport { stringToLabel } from '$utils/string-to-label';\nimport type { ColumnMetaData } from '$types/column-metadata';\nimport { CustomGridFilterPanel, CustomGridToolbar } from '../custom';\n\nexport type CoreTableBuilderProps = React.PropsWithChildren<\n  Omit<DataGridProps, 'columns'>\n> & {\n  onFilterChange?: (filters: FilterItem[]) => void;\n};\n\nexport const CoreTableBuilder = memo(\n  forwardRef<HTMLDivElement, CoreTableBuilderProps>(\n    ({ onFilterChange, children, ...props }, ref) => {\n      const columns = useTableBuilderColumns(s => s.columns);\n      const filters = useTableBuilderFilters(s => s.filters);\n      const getLabel = useTranslation(s => s.getFieldLabel);\n\n      const resolveColumnProps = useCallback(\n        (col: ColumnMetaData): GridColDef => ({\n          ...col,\n          valueGetter: params => {\n            const value = get(params.row, col.field, '-');\n            return (\n              col.valueGetter?.({\n                ...params,\n                value,\n              }) ?? value\n            );\n          },\n          headerName: col.headerName ?? getLabel(col.field) ?? stringToLabel(col.field),\n        }),\n        [getLabel]\n      );\n\n      const resultColumns = useMemo<GridColDef[]>(\n        () => columns.map(resolveColumnProps),\n        [columns, resolveColumnProps]\n      );\n\n      const components = useMemo<Partial<GridSlotsComponent>>(\n        () => ({\n          Toolbar: CustomGridToolbar,\n          FilterPanel: CustomGridFilterPanel,\n          ...props.components,\n        }),\n        [props.components]\n      );\n\n      useEffect(() => {\n        onFilterChange?.(filters);\n      }, [filters, onFilterChange]);\n\n      return (\n        <>\n          <DataGrid\n            ref={ref}\n            {...props}\n            columns={resultColumns}\n            components={components}\n          />\n          {children}\n        </>\n      );\n    }\n  )\n);\n"],"names":["CoreTableBuilder","memo","forwardRef","onFilterChange","children","props","ref","columns","useTableBuilderColumns","s","filters","useTableBuilderFilters","getLabel","useTranslation","getFieldLabel","resolveColumnProps","useCallback","col","valueGetter","params","value","get","row","field","headerName","stringToLabel","resultColumns","useMemo","map","components","Toolbar","CustomGridToolbar","FilterPanel","CustomGridFilterPanel","useEffect","_jsxs","_Fragment","_jsx","DataGrid"],"mappings":";;;;;;;;;;;AAgBaA,MAAAA,gBAAAA,iBAAmBC,IAC9BC,eAAAA,UAAAA,CACE,CAAC,EAAEC,cAAc,GAAEC,QAAQ,GAAE,GAAGC,KAAAA,EAAO,EAAEC,GAAQ,GAAA;AAC/C,IAAA,MAAMC,OAAUC,GAAAA,sBAAAA,CAAuBC,CAAAA,CAAAA,GAAKA,EAAEF,OAAO,CAAA,CAAA;AACrD,IAAA,MAAMG,OAAUC,GAAAA,sBAAAA,CAAuBF,CAAAA,CAAAA,GAAKA,EAAEC,OAAO,CAAA,CAAA;AACrD,IAAA,MAAME,QAAWC,GAAAA,cAAAA,CAAeJ,CAAAA,CAAAA,GAAKA,EAAEK,aAAa,CAAA,CAAA;AAEpD,IAAA,MAAMC,kBAAqBC,GAAAA,WAAAA,CACzB,CAACC,GAAAA,IAAqC;AACpC,YAAA,GAAGA,GAAG;AACNC,YAAAA,WAAAA,EAAaC,CAAAA,MAAU,GAAA;AACrB,gBAAA,MAAMC,QAAQC,GAAIF,CAAAA,MAAAA,CAAOG,GAAG,EAAEL,GAAAA,CAAIM,KAAK,EAAE,GAAA,CAAA,CAAA;gBACzC,OACEN,GAAAA,CAAIC,WAAW,GAAG;AAChB,oBAAA,GAAGC,MAAM;AACTC,oBAAAA,KAAAA;iBACIA,CAAAA,IAAAA,KAAAA,CAAAA;AAEV,aAAA;YACAI,UAAYP,EAAAA,GAAAA,CAAIO,UAAU,IAAIZ,QAAAA,CAASK,IAAIM,KAAK,CAAA,IAAKE,aAAcR,CAAAA,GAAAA,CAAIM,KAAK,CAAA;AAC9E,SAAA,CACA,EAAA;AAACX,QAAAA,QAAAA;AAAS,KAAA,CAAA,CAAA;AAGZ,IAAA,MAAMc,gBAAgBC,OACpB,CAAA,IAAMpB,OAAQqB,CAAAA,GAAG,CAACb,kBAClB,CAAA,EAAA;AAACR,QAAAA,OAAAA;AAASQ,QAAAA,kBAAAA;AAAmB,KAAA,CAAA,CAAA;IAG/B,MAAMc,UAAAA,GAAaF,OACjB,CAAA,KAAO;YACLG,OAASC,EAAAA,iBAAAA;YACTC,WAAaC,EAAAA,qBAAAA;AACb,YAAA,GAAG5B,MAAMwB,UAAU;AACrB,SAAA,CACA,EAAA;AAACxB,QAAAA,KAAAA,CAAMwB,UAAU;AAAC,KAAA,CAAA,CAAA;AAGpBK,IAAAA,SAAAA,CAAU,IAAM;QACd/B,cAAiBO,GAAAA,OAAAA,CAAAA,CAAAA;KAChB,EAAA;AAACA,QAAAA,OAAAA;AAASP,QAAAA,cAAAA;AAAe,KAAA,CAAA,CAAA;IAE5B,qBACEgC,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAACC,CAAAA,QAAAA,EAAAA;gBACChC,GAAKA,EAAAA,GAAAA;AACJ,gBAAA,GAAGD,KAAK;gBACTE,OAASmB,EAAAA,aAAAA;gBACTG,UAAYA,EAAAA,UAAAA;;AAEbzB,YAAAA,QAAAA;;;AAGP,CAEF,CAAA;;;;"}