UNPKG

@grafana/ui

Version:
74 lines (69 loc) 2.4 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var data = require('@grafana/data'); "use strict"; function useTableStateReducer({ onColumnResize, onSortByChange, data: data$1 }) { return React.useCallback( (newState, action) => { var _a, _b, _c, _d; switch (action.type) { case "columnDoneResizing": if (onColumnResize) { const info = (_b = (_a = newState.columnResizing) == null ? void 0 : _a.headerIdWidths) == null ? void 0 : _b[0]; const columnIdString = info == null ? void 0 : info[0]; const fieldIndex = parseInt(columnIdString, 10); const width = Math.round((_c = newState.columnResizing.columnWidths) == null ? void 0 : _c[columnIdString]); const field = (_d = data$1.fields) == null ? void 0 : _d[fieldIndex]; if (!field) { return newState; } const fieldDisplayName = data.getFieldDisplayName(field, data$1); onColumnResize(fieldDisplayName, width); } case "toggleSortBy": if (onSortByChange) { const sortByFields = []; for (const sortItem of newState.sortBy) { const field = data$1.fields[parseInt(sortItem.id, 10)]; if (!field) { continue; } sortByFields.push({ displayName: data.getFieldDisplayName(field, data$1), desc: sortItem.desc }); } onSortByChange(sortByFields); } case "toggleRowExpanded": { if (action.id) { return { ...newState, lastExpandedOrCollapsedIndex: parseInt(action.id, 10) }; } } } return newState; }, [data$1, onColumnResize, onSortByChange] ); } function getInitialState(initialSortBy, columns) { const state = {}; if (initialSortBy) { state.sortBy = []; for (const sortBy of initialSortBy) { for (const col of columns) { if (col.Header === sortBy.displayName) { state.sortBy.push({ id: col.id, desc: sortBy.desc }); } } } } return state; } exports.getInitialState = getInitialState; exports.useTableStateReducer = useTableStateReducer; //# sourceMappingURL=reducer.cjs.map