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

48 lines
1.6 KiB
Plaintext

/*
* 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.
*/
import {DOMPropsResponderContext} from './DOMPropsContext';
import {HoverProps} from './useHover';
import React, {ForwardedRef, ReactNode, useEffect, useRef} from 'react';
import {useObjectRef} from '@react-aria/utils';
interface DOMPropsResponderProps extends HoverProps {
children: ReactNode
}
export const DOMPropsResponder = React.forwardRef(({children, ...props}: DOMPropsResponderProps, ref: ForwardedRef<Element>) => {
let isRegistered = useRef(false);
let objRef = useObjectRef(ref);
let context = {
...props,
ref: objRef,
register() {
isRegistered.current = true;
}
};
// TODO: Think of a more generic message when this replaces the PressResponder as well
useEffect(() => {
if (!isRegistered.current) {
console.warn(
'A DOMPropsResponder was ultilized without a hoverable DOM node.'
);
}
}, []);
return (
<DOMPropsResponderContext.Provider value={context}>
{children}
</DOMPropsResponderContext.Provider>
);
});