{"version":3,"file":"useTick.mjs","sources":["../../src/hooks/useTick.ts"],"sourcesContent":["import { type TickerCallback } from 'pixi.js';\nimport { invariant } from '../helpers/invariant';\nimport { type UseTickOptions } from '../typedefs/UseTickOptions';\nimport { useApplication } from './useApplication';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\n/** Attaches a callback to the application's Ticker. */\nexport function useTick<T>(\n    /** @description The function to be called on each tick. */\n    options: TickerCallback<T> | UseTickOptions<T>,\n)\n{\n    const {\n        app,\n        isInitialised,\n    } = useApplication();\n\n    let callback;\n\n    let context: any;\n\n    let isEnabled: boolean = true;\n\n    let priority: number | undefined;\n\n    if (typeof options === 'function')\n    {\n        callback = options;\n    }\n    else\n    {\n        callback = options.callback;\n        context = options.context;\n        isEnabled = options.isEnabled ?? true;\n        priority = options.priority;\n    }\n\n    invariant(typeof callback === 'function', '`useTick` needs a callback function.');\n\n    // eslint-disable-next-line consistent-return\n    useIsomorphicLayoutEffect(() =>\n    {\n        if (isInitialised)\n        {\n            const ticker = app?.ticker;\n            const wasEnabled = isEnabled;\n            const previousContext = context;\n            const previousCallback = callback;\n\n            if (isEnabled && ticker)\n            {\n                ticker.add(callback, context, priority);\n            }\n\n            return () =>\n            {\n                if (wasEnabled)\n                {\n                    ticker?.remove(previousCallback, previousContext);\n                }\n            };\n        }\n    }, [\n        app?.ticker,\n        callback,\n        context,\n        isEnabled,\n        isInitialised,\n        priority,\n    ]);\n}\n"],"names":[],"mappings":";;;;;AAOO,SAAS,QAEZ,OAEJ,EAAA;AACI,EAAM,MAAA;AAAA,IACF,GAAA;AAAA,IACA;AAAA,MACA,cAAe,EAAA;AAEnB,EAAI,IAAA,QAAA;AAEJ,EAAI,IAAA,OAAA;AAEJ,EAAA,IAAI,SAAqB,GAAA,IAAA;AAEzB,EAAI,IAAA,QAAA;AAEJ,EAAI,IAAA,OAAO,YAAY,UACvB,EAAA;AACI,IAAW,QAAA,GAAA,OAAA;AAAA,GAGf,MAAA;AACI,IAAA,QAAA,GAAW,OAAQ,CAAA,QAAA;AACnB,IAAA,OAAA,GAAU,OAAQ,CAAA,OAAA;AAClB,IAAA,SAAA,GAAY,QAAQ,SAAa,IAAA,IAAA;AACjC,IAAA,QAAA,GAAW,OAAQ,CAAA,QAAA;AAAA;AAGvB,EAAU,SAAA,CAAA,OAAO,QAAa,KAAA,UAAA,EAAY,sCAAsC,CAAA;AAGhF,EAAA,yBAAA,CAA0B,MAC1B;AACI,IAAA,IAAI,aACJ,EAAA;AACI,MAAA,MAAM,SAAS,GAAK,EAAA,MAAA;AACpB,MAAA,MAAM,UAAa,GAAA,SAAA;AACnB,MAAA,MAAM,eAAkB,GAAA,OAAA;AACxB,MAAA,MAAM,gBAAmB,GAAA,QAAA;AAEzB,MAAA,IAAI,aAAa,MACjB,EAAA;AACI,QAAO,MAAA,CAAA,GAAA,CAAI,QAAU,EAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AAG1C,MAAA,OAAO,MACP;AACI,QAAA,IAAI,UACJ,EAAA;AACI,UAAQ,MAAA,EAAA,MAAA,CAAO,kBAAkB,eAAe,CAAA;AAAA;AACpD,OACJ;AAAA;AACJ,GACD,EAAA;AAAA,IACC,GAAK,EAAA,MAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACH,CAAA;AACL;;;;"}