UNPKG

gather-content-ui

Version:
50 lines (49 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useShiftSelect = useShiftSelect; var _react = require("react"); var _lodash = require("lodash"); var _ = require(".."); function useShiftSelect(id, ids, type) { var idsData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var _useContext = (0, _react.useContext)(_.SelectionContext), selected = _useContext.selected, currentSelectedType = _useContext.currentSelectedType, selectMultiple = _useContext.selectMultiple, deselectMultiple = _useContext.deselectMultiple, lastInteracted = _useContext.lastInteracted, setLastInteracted = _useContext.setLastInteracted; var _useObjectSelector = (0, _.useObjectSelector)(id, type, [id], function () { return false; }, (0, _lodash.pick)(idsData, [id])), isSelected = _useObjectSelector.isSelected, handleClick = _useObjectSelector.handleClick; var handleSelection = function handleSelection(e) { setLastInteracted(id); if (!e.shiftKey || selected.length === 0 || id === lastInteracted) { // @ts-expect-error TS(2554): Expected 0 arguments, but got 1. handleClick(e); } else { var selectedIndex = ids.indexOf(id); var lastInteractedIndex = ids.indexOf(lastInteracted); var selectUp = lastInteractedIndex < selectedIndex; var sliceStart = selectUp ? lastInteractedIndex : selectedIndex; var sliceEnd = selectUp ? selectedIndex : lastInteractedIndex; var interactedIds = ids.slice(sliceStart, sliceEnd + 1); var interactedData = (0, _lodash.pick)(idsData, interactedIds); if (isSelected) { deselectMultiple(interactedIds); } else { selectMultiple(interactedIds, currentSelectedType, interactedData); } } }; return { handleSelection: handleSelection, isSelected: isSelected, selected: selected }; } //# sourceMappingURL=useShiftSelect.js.map