UNPKG

@pixi/react

Version:

Write PixiJS applications using React declarative style.

1 lines 2.99 kB
{"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;;;;"}