112 lines
6.3 KiB
Plaintext
112 lines
6.3 KiB
Plaintext
import {ListCollection as $a02d57049d202695$export$d085fb9e920b5ca7} from "./ListCollection.mjs";
|
|
import {useMultipleSelectionState as $d5vlZ$useMultipleSelectionState, SelectionManager as $d5vlZ$SelectionManager} from "@react-stately/selection";
|
|
import {useMemo as $d5vlZ$useMemo, useCallback as $d5vlZ$useCallback, useRef as $d5vlZ$useRef, useEffect as $d5vlZ$useEffect} from "react";
|
|
import {useCollection as $d5vlZ$useCollection} from "@react-stately/collections";
|
|
|
|
/*
|
|
* Copyright 2020 Adobe. All rights reserved.
|
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
* governing permissions and limitations under the License.
|
|
*/
|
|
|
|
|
|
|
|
function $e72dd72e1c76a225$export$2f645645f7bca764(props) {
|
|
let { filter: filter, layoutDelegate: layoutDelegate } = props;
|
|
let selectionState = (0, $d5vlZ$useMultipleSelectionState)(props);
|
|
let disabledKeys = (0, $d5vlZ$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [
|
|
props.disabledKeys
|
|
]);
|
|
let factory = (0, $d5vlZ$useCallback)((nodes)=>filter ? new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(filter(nodes)) : new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(nodes), [
|
|
filter
|
|
]);
|
|
let context = (0, $d5vlZ$useMemo)(()=>({
|
|
suppressTextValueWarning: props.suppressTextValueWarning
|
|
}), [
|
|
props.suppressTextValueWarning
|
|
]);
|
|
let collection = (0, $d5vlZ$useCollection)(props, factory, context);
|
|
let selectionManager = (0, $d5vlZ$useMemo)(()=>new (0, $d5vlZ$SelectionManager)(collection, selectionState, {
|
|
layoutDelegate: layoutDelegate
|
|
}), [
|
|
collection,
|
|
selectionState,
|
|
layoutDelegate
|
|
]);
|
|
$e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);
|
|
return {
|
|
collection: collection,
|
|
disabledKeys: disabledKeys,
|
|
selectionManager: selectionManager
|
|
};
|
|
}
|
|
function $e72dd72e1c76a225$export$ba9d38c0f1bf2b36(state, filterFn) {
|
|
let collection = (0, $d5vlZ$useMemo)(()=>filterFn ? state.collection.filter(filterFn) : state.collection, [
|
|
state.collection,
|
|
filterFn
|
|
]);
|
|
let selectionManager = state.selectionManager.withCollection(collection);
|
|
$e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);
|
|
return {
|
|
collection: collection,
|
|
selectionManager: selectionManager,
|
|
disabledKeys: state.disabledKeys
|
|
};
|
|
}
|
|
function $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager) {
|
|
// Reset focused key if that item is deleted from the collection.
|
|
const cachedCollection = (0, $d5vlZ$useRef)(null);
|
|
(0, $d5vlZ$useEffect)(()=>{
|
|
if (selectionManager.focusedKey != null && !collection.getItem(selectionManager.focusedKey) && cachedCollection.current) {
|
|
const startItem = cachedCollection.current.getItem(selectionManager.focusedKey);
|
|
const cachedItemNodes = [
|
|
...cachedCollection.current.getKeys()
|
|
].map((key)=>{
|
|
const itemNode = cachedCollection.current.getItem(key);
|
|
return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;
|
|
}).filter((node)=>node !== null);
|
|
const itemNodes = [
|
|
...collection.getKeys()
|
|
].map((key)=>{
|
|
const itemNode = collection.getItem(key);
|
|
return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;
|
|
}).filter((node)=>node !== null);
|
|
var _cachedItemNodes_length, _itemNodes_length;
|
|
const diff = ((_cachedItemNodes_length = cachedItemNodes === null || cachedItemNodes === void 0 ? void 0 : cachedItemNodes.length) !== null && _cachedItemNodes_length !== void 0 ? _cachedItemNodes_length : 0) - ((_itemNodes_length = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length !== void 0 ? _itemNodes_length : 0);
|
|
var _startItem_index, _startItem_index1, _itemNodes_length1;
|
|
let index = Math.min(diff > 1 ? Math.max(((_startItem_index = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index !== void 0 ? _startItem_index : 0) - diff + 1, 0) : (_startItem_index1 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index1 !== void 0 ? _startItem_index1 : 0, ((_itemNodes_length1 = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length1 !== void 0 ? _itemNodes_length1 : 0) - 1);
|
|
let newNode = null;
|
|
let isReverseSearching = false;
|
|
while(index >= 0){
|
|
if (!selectionManager.isDisabled(itemNodes[index].key)) {
|
|
newNode = itemNodes[index];
|
|
break;
|
|
}
|
|
// Find next, not disabled item.
|
|
if (index < itemNodes.length - 1 && !isReverseSearching) index++;
|
|
else {
|
|
isReverseSearching = true;
|
|
var _startItem_index2, _startItem_index3;
|
|
if (index > ((_startItem_index2 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index2 !== void 0 ? _startItem_index2 : 0)) index = (_startItem_index3 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index3 !== void 0 ? _startItem_index3 : 0;
|
|
index--;
|
|
}
|
|
}
|
|
selectionManager.setFocusedKey(newNode ? newNode.key : null);
|
|
}
|
|
cachedCollection.current = collection;
|
|
}, [
|
|
collection,
|
|
selectionManager
|
|
]);
|
|
}
|
|
|
|
|
|
export {$e72dd72e1c76a225$export$2f645645f7bca764 as useListState, $e72dd72e1c76a225$export$ba9d38c0f1bf2b36 as UNSTABLE_useFilteredListState};
|
|
//# sourceMappingURL=useListState.module.js.map
|