{"version":3,"file":"react-spring-rafz.esm.mjs","sources":["../../../../../node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js"],"sourcesContent":["let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n  let time = raf.now() + ms;\n\n  let cancel = () => {\n    let i = timeouts.findIndex(t => t.cancel == cancel);\n    if (~i) timeouts.splice(i, 1);\n    pendingCount -= ~i ? 1 : 0;\n  };\n\n  let timeout = {\n    time,\n    handler,\n    cancel\n  };\n  timeouts.splice(findTimeout(time), 0, timeout);\n  pendingCount += 1;\n  start();\n  return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n  onStartQueue.delete(fn);\n  onFrameQueue.delete(fn);\n  onFinishQueue.delete(fn);\n  updateQueue.delete(fn);\n  writeQueue.delete(fn);\n};\n\nraf.sync = fn => {\n  sync = true;\n  raf.batchedUpdates(fn);\n  sync = false;\n};\n\nraf.throttle = fn => {\n  let lastArgs;\n\n  function queuedFn() {\n    try {\n      fn(...lastArgs);\n    } finally {\n      lastArgs = null;\n    }\n  }\n\n  function throttled(...args) {\n    lastArgs = args;\n    raf.onStart(queuedFn);\n  }\n\n  throttled.handler = fn;\n\n  throttled.cancel = () => {\n    onStartQueue.delete(queuedFn);\n    lastArgs = null;\n  };\n\n  return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n  if (raf.frameLoop !== 'demand') {\n    console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n  } else {\n    update();\n  }\n};\n\nlet ts = -1;\nlet pendingCount = 0;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n  if (sync) {\n    queue.delete(fn);\n    fn(0);\n  } else {\n    queue.add(fn);\n    start();\n  }\n}\n\nfunction start() {\n  if (ts < 0) {\n    ts = 0;\n\n    if (raf.frameLoop !== 'demand') {\n      nativeRaf(loop);\n    }\n  }\n}\n\nfunction stop() {\n  ts = -1;\n}\n\nfunction loop() {\n  if (~ts) {\n    nativeRaf(loop);\n    raf.batchedUpdates(update);\n  }\n}\n\nfunction update() {\n  let prevTs = ts;\n  ts = raf.now();\n  let count = findTimeout(ts);\n\n  if (count) {\n    eachSafely(timeouts.splice(0, count), t => t.handler());\n    pendingCount -= count;\n  }\n\n  if (!pendingCount) {\n    stop();\n    return;\n  }\n\n  onStartQueue.flush();\n  updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n  onFrameQueue.flush();\n  writeQueue.flush();\n  onFinishQueue.flush();\n}\n\nfunction makeQueue() {\n  let next = new Set();\n  let current = next;\n  return {\n    add(fn) {\n      pendingCount += current == next && !next.has(fn) ? 1 : 0;\n      next.add(fn);\n    },\n\n    delete(fn) {\n      pendingCount -= current == next && next.has(fn) ? 1 : 0;\n      return next.delete(fn);\n    },\n\n    flush(arg) {\n      if (current.size) {\n        next = new Set();\n        pendingCount -= current.size;\n        eachSafely(current, fn => fn(arg) && next.add(fn));\n        pendingCount += next.size;\n        current = next;\n      }\n    }\n\n  };\n}\n\nfunction eachSafely(values, each) {\n  values.forEach(value => {\n    try {\n      each(value);\n    } catch (e) {\n      raf.catch(e);\n    }\n  });\n}\n\nconst __raf = {\n  count() {\n    return pendingCount;\n  },\n\n  isRunning() {\n    return ts >= 0;\n  },\n\n  clear() {\n    ts = -1;\n    timeouts = [];\n    onStartQueue = makeQueue();\n    updateQueue = makeQueue();\n    onFrameQueue = makeQueue();\n    writeQueue = makeQueue();\n    onFinishQueue = makeQueue();\n    pendingCount = 0;\n  }\n\n};\n\nexport { __raf, raf };\n"],"names":["updateQueue","makeQueue","raf","fn","schedule","writeQueue","write","onStartQueue","onStart","onFrameQueue","onFrame","onFinishQueue","onFinish","timeouts","setTimeout","handler","ms","time","now","cancel","i","findIndex","t","splice","pendingCount","timeout","findTimeout","start","length","delete","sync","batchedUpdates","throttle","lastArgs","queuedFn","throttled","args","nativeRaf","window","requestAnimationFrame","use","impl","performance","Date","catch","console","error","frameLoop","advance","warn","update","ts","queue","add","loop","prevTs","count","eachSafely","flush","Math","min","stop","next","Set","current","has","arg","size","values","each","forEach","value","e"],"mappings":"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","x_google_ignoreList":[0]}