{"version":3,"file":"reducer.cjs","sources":["../../../../src/components/Table/reducer.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { getFieldDisplayName } from '@grafana/data';\n\nimport {\n  TableSortByFieldState,\n  GrafanaTableColumn,\n  GrafanaTableState,\n  TableStateReducerProps,\n  TableRTProps,\n} from './types';\n\nexport interface ActionType {\n  type: string;\n  id: string | undefined;\n}\n\nexport function useTableStateReducer({ onColumnResize, onSortByChange, data }: TableStateReducerProps) {\n  return useCallback(\n    (newState: GrafanaTableState, action: ActionType) => {\n      switch (action.type) {\n        case 'columnDoneResizing':\n          if (onColumnResize) {\n            const info = (newState.columnResizing?.headerIdWidths as any)?.[0];\n            const columnIdString = info?.[0];\n            const fieldIndex = parseInt(columnIdString, 10);\n            const width = Math.round(newState.columnResizing.columnWidths?.[columnIdString]);\n\n            const field = data.fields?.[fieldIndex];\n            if (!field) {\n              return newState;\n            }\n\n            const fieldDisplayName = getFieldDisplayName(field, data);\n            onColumnResize(fieldDisplayName, width);\n          }\n        case 'toggleSortBy':\n          if (onSortByChange) {\n            const sortByFields: TableSortByFieldState[] = [];\n\n            for (const sortItem of newState.sortBy) {\n              const field = data.fields[parseInt(sortItem.id, 10)];\n              if (!field) {\n                continue;\n              }\n\n              sortByFields.push({\n                displayName: getFieldDisplayName(field, data),\n                desc: sortItem.desc,\n              });\n            }\n\n            onSortByChange(sortByFields);\n          }\n        case 'toggleRowExpanded': {\n          if (action.id) {\n            return {\n              ...newState,\n              lastExpandedOrCollapsedIndex: parseInt(action.id, 10),\n            };\n          }\n        }\n      }\n\n      return newState;\n    },\n    [data, onColumnResize, onSortByChange]\n  );\n}\n\nexport function getInitialState(\n  initialSortBy: TableRTProps['initialSortBy'],\n  columns: GrafanaTableColumn[]\n): Partial<GrafanaTableState> {\n  const state: Partial<GrafanaTableState> = {};\n\n  if (initialSortBy) {\n    state.sortBy = [];\n\n    for (const sortBy of initialSortBy) {\n      for (const col of columns) {\n        if (col.Header === sortBy.displayName) {\n          state.sortBy.push({ id: col.id!, desc: sortBy.desc });\n        }\n      }\n    }\n  }\n\n  return state;\n}\n"],"names":["data","useCallback","getFieldDisplayName"],"mappings":"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"}