UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

44 lines (43 loc) 1.37 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'useSubRowSelection', { enumerable: true, get: function () { return useSubRowSelection; }, }); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const useSubRowSelection = (hooks) => { hooks.useInstance.push(useInstance); }; const useInstance = (instance) => { let selectedFlatRows = _react.useMemo(() => { let selectedFlatRows = []; let setSelectionState = (row, selectedRowIds) => { let isSomeSubRowsSelected = false; row.initialSubRows.forEach((subRow) => { setSelectionState(subRow, selectedRowIds); if (subRow.isSelected || subRow.isSomeSelected) isSomeSubRowsSelected = true; }); if (selectedRowIds[row.id]) { row.isSelected = true; row.isSomeSelected = false; selectedFlatRows.push(row); } else { row.isSelected = false; row.isSomeSelected = isSomeSubRowsSelected; } }; instance.rows.forEach((row) => setSelectionState(row, instance.state.selectedRowIds), ); return selectedFlatRows; }, [instance.rows, instance.state.selectedRowIds]); Object.assign(instance, { selectedFlatRows, }); };