{"version":3,"file":"function-BTOlBQHE.js","sources":["../../../app/javascript/function.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ntype Procedure = (...args: unknown[]) => any;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\ninterface AnimationFramed {\n (this: ThisParameterType, ...args: Parameters): Promise>;\n cancel: (reason?: unknown) => void;\n}\n\nexport const noop = (): void => { /* Does nothing */ }\n\nexport const asyncNoop = async (): Promise => { /* Does nothing, asynchronously */ };\n\nexport function animationFrame(this: unknown, func: F, context: unknown = this): AnimationFramed {\n let requestId: number;\n let promises: {\n resolve: (x: ReturnType) => void;\n reject: (reason?: unknown) => void;\n }[] = [];\n\n const animationFramedFunction = function (this: ThisParameterType, ...args: Parameters): Promise> {\n return new Promise>((resolve, reject) => {\n if (requestId !== undefined)\n cancelAnimationFrame(requestId);\n\n requestId = requestAnimationFrame(function () {\n const result = func.apply(context, args);\n promises.forEach(({ resolve }) => resolve(result));\n promises = [];\n });\n\n promises.push({ resolve, reject });\n });\n }\n animationFramedFunction.cancel = function (reason?: unknown) {\n cancelAnimationFrame(requestId);\n promises.forEach(({ reject }) => reject(reason));\n promises = [];\n };\n\n return animationFramedFunction;\n}\n"],"names":["noop","asyncNoop","animationFrame","func","context","requestId","promises","animationFramedFunction","args","resolve","reject","result","reason"],"mappings":"AASO,MAAMA,EAAO,IAAY,CAAqB,EAExCC,EAAY,SAA2B,CAAqC,EAEzE,SAAAC,EAAmDC,EAASC,EAAmB,KAA0B,CACjH,IAAAC,EACAC,EAGI,CAAA,EAEF,MAAAC,EAA0B,YAAyCC,EAA6C,CAClH,OAAO,IAAI,QAAuB,CAACC,EAASC,IAAW,CAC/CL,IAAc,QACd,qBAAqBA,CAAS,EAElCA,EAAY,sBAAsB,UAAY,CAC1C,MAAMM,EAASR,EAAK,MAAMC,EAASI,CAAI,EAC9BF,EAAA,QAAQ,CAAC,CAAE,QAAAG,KAAcA,EAAQE,CAAM,CAAC,EACjDL,EAAW,CAAA,CAAC,CACf,EAEDA,EAAS,KAAK,CAAE,QAAAG,EAAS,OAAAC,CAAQ,CAAA,CAAA,CACpC,CAAA,EAEmB,OAAAH,EAAA,OAAS,SAAUK,EAAkB,CACzD,qBAAqBP,CAAS,EAC9BC,EAAS,QAAQ,CAAC,CAAE,OAAAI,CAAa,IAAAA,EAAOE,CAAM,CAAC,EAC/CN,EAAW,CAAA,CAAC,EAGTC,CACX"}