@pixi/react
Version:
Write PixiJS applications using React declarative style.
51 lines (48 loc) • 1.26 kB
JavaScript
import { invariant } from '../helpers/invariant.mjs';
import { useApplication } from './useApplication.mjs';
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.mjs';
;
function useTick(options) {
const {
app,
isInitialised
} = useApplication();
let callback;
let context;
let isEnabled = true;
let priority;
if (typeof options === "function") {
callback = options;
} else {
callback = options.callback;
context = options.context;
isEnabled = options.isEnabled ?? true;
priority = options.priority;
}
invariant(typeof callback === "function", "`useTick` needs a callback function.");
useIsomorphicLayoutEffect(() => {
if (isInitialised) {
const ticker = app?.ticker;
const wasEnabled = isEnabled;
const previousContext = context;
const previousCallback = callback;
if (isEnabled && ticker) {
ticker.add(callback, context, priority);
}
return () => {
if (wasEnabled) {
ticker?.remove(previousCallback, previousContext);
}
};
}
}, [
app?.ticker,
callback,
context,
isEnabled,
isInitialised,
priority
]);
}
export { useTick };
//# sourceMappingURL=useTick.mjs.map