Files
NapCatQQ/.pnpm-store/v3/files/1c/f14ff401bce11e326c8cd4aff8b07b63c21dbcac70f0abd54fcdbec01c6e8cc79bbea321b3b52ca20dd190d0c55116455a43b85e904219c83089b6c82f716c
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

131 lines
4.0 KiB
Plaintext

"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/use-multiselect-state.ts
var use_multiselect_state_exports = {};
__export(use_multiselect_state_exports, {
useMultiSelectState: () => useMultiSelectState
});
module.exports = __toCommonJS(use_multiselect_state_exports);
var import_menu = require("@react-stately/menu");
var import_form = require("@react-stately/form");
var import_react2 = require("react");
// src/use-multiselect-list-state.ts
var import_list = require("@react-stately/list");
var import_react = require("react");
function useMultiSelectListState(props) {
const {
collection,
disabledKeys,
selectionManager,
selectionManager: { setSelectedKeys, selectedKeys, selectionMode }
} = (0, import_list.useListState)(props);
const missingKeys = (0, import_react.useMemo)(() => {
if (!props.isLoading && selectedKeys.size !== 0) {
return Array.from(selectedKeys).filter(Boolean).filter((key) => !collection.getItem(key));
}
return [];
}, [selectedKeys, collection]);
const selectedItems = selectedKeys.size !== 0 ? Array.from(selectedKeys).map((key) => {
return collection.getItem(key);
}).filter(Boolean) : null;
if (missingKeys.length) {
console.warn(
`Select: Keys "${missingKeys.join(
", "
)}" passed to "selectedKeys" are not present in the collection.`
);
}
return {
collection,
disabledKeys,
selectionManager,
selectionMode,
selectedKeys,
setSelectedKeys: setSelectedKeys.bind(selectionManager),
selectedItems
};
}
// src/use-multiselect-state.ts
function useMultiSelectState({
validate,
validationBehavior,
...props
}) {
const [isFocused, setFocused] = (0, import_react2.useState)(false);
const [focusStrategy, setFocusStrategy] = (0, import_react2.useState)(null);
const triggerState = (0, import_menu.useMenuTriggerState)(props);
const listState = useMultiSelectListState({
...props,
onSelectionChange: (keys) => {
if (props.onSelectionChange != null) {
if (keys === "all") {
props.onSelectionChange(new Set(listState.collection.getKeys()));
} else {
props.onSelectionChange(keys);
}
}
if (props.selectionMode === "single") {
triggerState.close();
}
}
});
const validationState = (0, import_form.useFormValidationState)({
...props,
validationBehavior,
validate: (value) => {
if (!validate)
return;
const keys = Array.from(value);
return validate(props.selectionMode === "single" ? keys[0] : keys);
},
value: listState.selectedKeys
});
const shouldHideContent = listState.collection.size === 0 && props.hideEmptyContent;
return {
...validationState,
...listState,
...triggerState,
focusStrategy,
close() {
triggerState.close();
},
open(focusStrategy2 = null) {
if (shouldHideContent)
return;
setFocusStrategy(focusStrategy2);
triggerState.open();
},
toggle(focusStrategy2 = null) {
if (shouldHideContent)
return;
setFocusStrategy(focusStrategy2);
triggerState.toggle();
},
isFocused,
setFocused
};
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
useMultiSelectState
});