42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
// Metro module 3953 (f3954).
|
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
import { useDisposableMemo } from "./Module3954";
|
|
export function useRiveProperty(a0, a1, c13752_2) {
|
|
let c13752_0 = a0;
|
|
const ref = useRef(void 0);
|
|
const disposableMemo = useDisposableMemo(() => {
|
|
if (c13752_0) {
|
|
return c13752_2(c13752_0, a1);
|
|
}
|
|
}, (a0) => a0 == null ? void 0 : a0.dispose(), [a0, a1], ref);
|
|
const [state, setState] = useState(void 0);
|
|
const [state2, setState2] = useState(null);
|
|
useEffect(() => {
|
|
setState2(null);
|
|
}, [a1, a0]);
|
|
useEffect(() => {
|
|
if (c13752_0 && !disposableMemo) {
|
|
setState2(new Error(`Property "${a1}" not found in the ViewModel instance`));
|
|
}
|
|
}, [a0, disposableMemo, a1]);
|
|
useEffect(() => {
|
|
if (disposableMemo) {
|
|
setState(disposableMemo.value);
|
|
let c24896_0 = disposableMemo.addListener((a0) => {
|
|
setState(a0);
|
|
});
|
|
return () => {
|
|
try {
|
|
c24896_0();
|
|
} catch ($e) {}
|
|
};
|
|
}
|
|
}, [disposableMemo]);
|
|
return [state, useCallback((a0) => {
|
|
const current = ref.current;
|
|
if (current) {
|
|
current.value = typeof a0 === "function" ? a0(state) : a0;
|
|
}
|
|
}, [disposableMemo, state]), state2, disposableMemo];
|
|
}
|