UNPKG

@base-ui/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

43 lines (42 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compareItemEquality = compareItemEquality; exports.defaultItemEquality = void 0; exports.findItemIndex = findItemIndex; exports.removeItem = removeItem; exports.selectedValueIncludes = selectedValueIncludes; const defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); exports.defaultItemEquality = defaultItemEquality; function compareItemEquality(itemValue, selectedValue, comparer) { if (itemValue == null || selectedValue == null) { return Object.is(itemValue, selectedValue); } return comparer(itemValue, selectedValue); } function selectedValueIncludes(selectedValues, itemValue, comparer) { if (!selectedValues || selectedValues.length === 0) { return false; } return selectedValues.some(selectedValue => { if (selectedValue === undefined) { return false; } return compareItemEquality(itemValue, selectedValue, comparer); }); } function findItemIndex(itemValues, selectedValue, comparer) { if (!itemValues || itemValues.length === 0) { return -1; } return itemValues.findIndex(itemValue => { if (itemValue === undefined) { return false; } return compareItemEquality(itemValue, selectedValue, comparer); }); } function removeItem(selectedValues, itemValue, comparer) { return selectedValues.filter(selectedValue => !compareItemEquality(itemValue, selectedValue, comparer)); }