import { useImperativeHandle } from "@/import/react";
/**
* Add getter functionality for id, to enable both a function call as a getter.
* @param obj
* @returns {*}
*/
const addIdGetter = (obj) =>
new Proxy(obj, {
get: function (target, prop, receiver) {
if (prop === "id") {
return obj.id();
}
return Reflect.get(obj, prop, receiver);
},
});
export default function useInputImperativeHandle(parentRef, inputRef) {
useImperativeHandle(
parentRef,
() => {
return addIdGetter({
id(itemId) {
if (itemId) {
return inputRef.current?.get(itemId)?.id;
}
return inputRef.current?.id;
},
focus(itemId) {
if (typeof itemId === "string") {
inputRef.current?.get(itemId)?.focus?.();
}
inputRef.current?.focus?.(itemId);
},
scrollIntoView(itemId) {
if (typeof itemId === "string") {
inputRef.current?.get(itemId)?.scrollIntoView?.();
}
inputRef.current?.scrollIntoView?.();
},
});
},
[]
);
}