Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
162 lines
5.4 KiB
Plaintext
162 lines
5.4 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.ts
|
|
var use_multiselect_exports = {};
|
|
__export(use_multiselect_exports, {
|
|
useMultiSelect: () => useMultiSelect
|
|
});
|
|
module.exports = __toCommonJS(use_multiselect_exports);
|
|
var import_i18n = require("@react-aria/i18n");
|
|
var import_interactions = require("@react-aria/interactions");
|
|
var import_label = require("@react-aria/label");
|
|
var import_menu = require("@react-aria/menu");
|
|
var import_selection = require("@react-aria/selection");
|
|
var import_utils = require("@react-aria/utils");
|
|
var import_react = require("react");
|
|
function useMultiSelect(props, state, ref) {
|
|
const { disallowEmptySelection, isDisabled } = props;
|
|
const collator = (0, import_i18n.useCollator)({ usage: "search", sensitivity: "base" });
|
|
const delegate = (0, import_react.useMemo)(
|
|
() => new import_selection.ListKeyboardDelegate(state.collection, state.disabledKeys, null, collator),
|
|
[state.collection, state.disabledKeys, collator]
|
|
);
|
|
const { menuTriggerProps, menuProps } = (0, import_menu.useMenuTrigger)(
|
|
{
|
|
isDisabled,
|
|
type: "listbox"
|
|
},
|
|
state,
|
|
ref
|
|
);
|
|
const triggerOnKeyDown = (e) => {
|
|
if (state.selectionMode === "single") {
|
|
switch (e.key) {
|
|
case "ArrowLeft": {
|
|
e.preventDefault();
|
|
const key = state.selectedKeys.size > 0 ? delegate.getKeyAbove(state.selectedKeys.values().next().value) : delegate.getFirstKey();
|
|
if (key) {
|
|
state.setSelectedKeys([key]);
|
|
}
|
|
break;
|
|
}
|
|
case "ArrowRight": {
|
|
e.preventDefault();
|
|
const key = state.selectedKeys.size > 0 ? delegate.getKeyBelow(state.selectedKeys.values().next().value) : delegate.getFirstKey();
|
|
if (key) {
|
|
state.setSelectedKeys([key]);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const { typeSelectProps } = (0, import_selection.useTypeSelect)({
|
|
keyboardDelegate: delegate,
|
|
selectionManager: state.selectionManager,
|
|
onTypeSelect(key) {
|
|
state.setSelectedKeys([key]);
|
|
}
|
|
});
|
|
const { isInvalid, validationErrors, validationDetails } = state.displayValidation;
|
|
const { labelProps, fieldProps, descriptionProps, errorMessageProps } = (0, import_label.useField)({
|
|
...props,
|
|
labelElementType: "span",
|
|
isInvalid,
|
|
errorMessage: props.errorMessage || validationErrors
|
|
});
|
|
typeSelectProps.onKeyDown = typeSelectProps.onKeyDownCapture;
|
|
delete typeSelectProps.onKeyDownCapture;
|
|
const domProps = (0, import_utils.filterDOMProps)(props, { labelable: true });
|
|
const triggerProps = (0, import_utils.mergeProps)(typeSelectProps, menuTriggerProps, fieldProps);
|
|
const valueId = (0, import_utils.useId)();
|
|
return {
|
|
labelProps: {
|
|
...labelProps,
|
|
onClick: () => {
|
|
var _a;
|
|
if (!props.isDisabled) {
|
|
(_a = ref.current) == null ? void 0 : _a.focus();
|
|
(0, import_interactions.setInteractionModality)("keyboard");
|
|
}
|
|
}
|
|
},
|
|
triggerProps: (0, import_utils.mergeProps)(domProps, {
|
|
...triggerProps,
|
|
onKeyDown: (0, import_utils.chain)(triggerProps.onKeyDown, triggerOnKeyDown, props.onKeyDown),
|
|
onKeyUp: props.onKeyUp,
|
|
"aria-labelledby": [
|
|
valueId,
|
|
domProps["aria-label"] !== void 0 ? domProps["aria-labelledby"] !== void 0 ? domProps["aria-labelledby"] : triggerProps.id : triggerProps["aria-labelledby"]
|
|
].join(" "),
|
|
onFocus(e) {
|
|
if (state.isFocused) {
|
|
return;
|
|
}
|
|
if (props.onFocus) {
|
|
props.onFocus(e);
|
|
}
|
|
state.setFocused(true);
|
|
},
|
|
onBlur(e) {
|
|
if (state.isOpen) {
|
|
return;
|
|
}
|
|
if (props.onBlur) {
|
|
props.onBlur(e);
|
|
}
|
|
state.setFocused(false);
|
|
}
|
|
}),
|
|
valueProps: {
|
|
id: valueId
|
|
},
|
|
menuProps: {
|
|
...menuProps,
|
|
disallowEmptySelection,
|
|
autoFocus: state.focusStrategy || true,
|
|
shouldSelectOnPressUp: true,
|
|
shouldFocusOnHover: true,
|
|
onBlur: (e) => {
|
|
if (e.currentTarget.contains(e.relatedTarget)) {
|
|
return;
|
|
}
|
|
if (props.onBlur) {
|
|
props.onBlur(e);
|
|
}
|
|
state.setFocused(false);
|
|
},
|
|
onFocus: menuProps == null ? void 0 : menuProps.onFocus,
|
|
"aria-labelledby": [
|
|
fieldProps["aria-labelledby"],
|
|
triggerProps["aria-label"] && !fieldProps["aria-labelledby"] ? triggerProps.id : null
|
|
].filter(Boolean).join(" ")
|
|
},
|
|
descriptionProps,
|
|
errorMessageProps,
|
|
isInvalid,
|
|
validationErrors,
|
|
validationDetails
|
|
};
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
useMultiSelect
|
|
});
|