61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
// Metro module 3959 (f3960).
|
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
import { useDisposableMemo } from "./Module3954";
|
|
export function useRiveTrigger(a0, a1, a2) {
|
|
let c13755_0 = a0;
|
|
const onTrigger = (a2 == null ? {} : a2).onTrigger;
|
|
const ref = useRef(void 0);
|
|
const ref2 = useRef(false);
|
|
const ref3 = useRef(onTrigger);
|
|
ref3.current = onTrigger;
|
|
const disposableMemo = useDisposableMemo(() => {
|
|
if (a1) {
|
|
return a1.triggerProperty(c13755_0);
|
|
}
|
|
}, (a0) => a0 == null ? void 0 : a0.dispose(), [a1, a0], ref);
|
|
if (ref.current) {
|
|
ref2.current = true;
|
|
}
|
|
const [error, setState] = useState(null);
|
|
useEffect(() => {
|
|
setState(null);
|
|
}, [a0, a1]);
|
|
useEffect(() => {
|
|
if (a1 && !disposableMemo) {
|
|
setState(new Error(`Property "${c13755_0}" not found in the ViewModel instance`));
|
|
}
|
|
}, [a1, disposableMemo, a0]);
|
|
useEffect(() => {
|
|
if (disposableMemo) {
|
|
let c24897_0 = disposableMemo.addListener(() => {
|
|
const current = ref3.current;
|
|
if (current != null) {
|
|
current.call(ref3);
|
|
}
|
|
});
|
|
return () => {
|
|
try {
|
|
c24897_0();
|
|
} catch ($e) {}
|
|
};
|
|
}
|
|
}, [disposableMemo]);
|
|
return {
|
|
trigger: useCallback(() => {
|
|
if (ref.current) {
|
|
ref.current.trigger();
|
|
} else {
|
|
const current = ref2.current;
|
|
const r4 = console;
|
|
const concat = HermesInternal.concat;
|
|
if (current) {
|
|
r4.warn(concat.call("useRiveTrigger: trigger('", c13755_0, "') called after dispose. The property has been cleaned up — this is likely a stale closure from an async callback that fired after unmount."));
|
|
} else {
|
|
r4.warn(concat.call("useRiveTrigger: trigger('", c13755_0, "') called but the property is not available yet. The viewModelInstance may still be loading."));
|
|
}
|
|
}
|
|
}, [a0]),
|
|
error
|
|
};
|
|
}
|