@pixi/react
Version:
Write PixiJS applications using React declarative style.
53 lines (49 loc) • 1.33 kB
JavaScript
var invariant = require('../helpers/invariant.js');
var useApplication = require('./useApplication.js');
var useIsomorphicLayoutEffect = require('./useIsomorphicLayoutEffect.js');
;
function useTick(options) {
const {
app,
isInitialised
} = useApplication.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.invariant(typeof callback === "function", "`useTick` needs a callback function.");
useIsomorphicLayoutEffect.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
]);
}
exports.useTick = useTick;
//# sourceMappingURL=useTick.js.map
;