{"version":3,"file":"react-spring-core.esm.mjs","sources":["../../../../../node_modules/@react-spring/core/dist/react-spring-core.esm.js"],"sourcesContent":["import { eachProp, is, toArray, getFluidValue, isAnimatedString, Globals, useIsomorphicLayoutEffect, each, easings, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, useConstant, onScroll, onResize, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator, easings, useIsomorphicLayoutEffect, useReducedMotion } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n  return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n  let keys = DEFAULT_PROPS;\n\n  if (props.default && props.default !== true) {\n    props = props.default;\n    keys = Object.keys(props);\n  }\n\n  const defaults = {};\n\n  for (const key of keys) {\n    const value = transform(props[key], key);\n\n    if (!is.und(value)) {\n      defaults[key] = value;\n    }\n  }\n\n  return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n  config: 1,\n  from: 1,\n  to: 1,\n  ref: 1,\n  loop: 1,\n  reset: 1,\n  pause: 1,\n  cancel: 1,\n  reverse: 1,\n  immediate: 1,\n  default: 1,\n  delay: 1,\n  onProps: 1,\n  onStart: 1,\n  onChange: 1,\n  onPause: 1,\n  onResume: 1,\n  onRest: 1,\n  onResolve: 1,\n  items: 1,\n  trail: 1,\n  sort: 1,\n  expires: 1,\n  initial: 1,\n  enter: 1,\n  update: 1,\n  leave: 1,\n  children: 1,\n  onDestroyed: 1,\n  keys: 1,\n  callId: 1,\n  parentId: 1\n};\n\nfunction getForwardProps(props) {\n  const forward = {};\n  let count = 0;\n  eachProp(props, (value, prop) => {\n    if (!RESERVED_PROPS[prop]) {\n      forward[prop] = value;\n      count++;\n    }\n  });\n\n  if (count) {\n    return forward;\n  }\n}\n\nfunction inferTo(props) {\n  const to = getForwardProps(props);\n\n  if (to) {\n    const out = {\n      to\n    };\n    eachProp(props, (val, key) => key in to || (out[key] = val));\n    return out;\n  }\n\n  return _extends({}, props);\n}\nfunction computeGoal(value) {\n  value = getFluidValue(value);\n  return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n    range: [0, 1],\n    output: [value, value]\n  })(1) : value;\n}\nfunction hasProps(props) {\n  for (const _ in props) return true;\n\n  return false;\n}\nfunction isAsyncTo(to) {\n  return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n  var _ctrl$ref;\n\n  (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n  ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n  if (ref && ctrl.ref !== ref) {\n    var _ctrl$ref2;\n\n    (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n    ref.add(ctrl);\n    ctrl.ref = ref;\n  }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n  useIsomorphicLayoutEffect(() => {\n    if (timeSteps) {\n      let prevDelay = 0;\n      each(refs, (ref, i) => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          let delay = timeFrame * timeSteps[i];\n          if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n          each(controllers, ctrl => {\n            each(ctrl.queue, props => {\n              const memoizedDelayProp = props.delay;\n\n              props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n            });\n          });\n          ref.start();\n        }\n      });\n    } else {\n      let p = Promise.resolve();\n      each(refs, ref => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          const queues = controllers.map(ctrl => {\n            const q = ctrl.queue;\n            ctrl.queue = [];\n            return q;\n          });\n          p = p.then(() => {\n            each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n            return Promise.all(ref.start());\n          });\n        }\n      });\n    }\n  });\n}\n\nconst config = {\n  default: {\n    tension: 170,\n    friction: 26\n  },\n  gentle: {\n    tension: 120,\n    friction: 14\n  },\n  wobbly: {\n    tension: 180,\n    friction: 12\n  },\n  stiff: {\n    tension: 210,\n    friction: 20\n  },\n  slow: {\n    tension: 280,\n    friction: 60\n  },\n  molasses: {\n    tension: 280,\n    friction: 120\n  }\n};\n\nconst defaults = _extends({}, config.default, {\n  mass: 1,\n  damping: 1,\n  easing: easings.linear,\n  clamp: false\n});\n\nclass AnimationConfig {\n  constructor() {\n    this.tension = void 0;\n    this.friction = void 0;\n    this.frequency = void 0;\n    this.damping = void 0;\n    this.mass = void 0;\n    this.velocity = 0;\n    this.restVelocity = void 0;\n    this.precision = void 0;\n    this.progress = void 0;\n    this.duration = void 0;\n    this.easing = void 0;\n    this.clamp = void 0;\n    this.bounce = void 0;\n    this.decay = void 0;\n    this.round = void 0;\n    Object.assign(this, defaults);\n  }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n  if (defaultConfig) {\n    defaultConfig = _extends({}, defaultConfig);\n    sanitizeConfig(defaultConfig, newConfig);\n    newConfig = _extends({}, defaultConfig, newConfig);\n  }\n\n  sanitizeConfig(config, newConfig);\n  Object.assign(config, newConfig);\n\n  for (const key in defaults) {\n    if (config[key] == null) {\n      config[key] = defaults[key];\n    }\n  }\n\n  let {\n    mass,\n    frequency,\n    damping\n  } = config;\n\n  if (!is.und(frequency)) {\n    if (frequency < 0.01) frequency = 0.01;\n    if (damping < 0) damping = 0;\n    config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n    config.friction = 4 * Math.PI * damping * mass / frequency;\n  }\n\n  return config;\n}\n\nfunction sanitizeConfig(config, props) {\n  if (!is.und(props.decay)) {\n    config.duration = undefined;\n  } else {\n    const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n    if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n      config.duration = undefined;\n      config.decay = undefined;\n    }\n\n    if (isTensionConfig) {\n      config.frequency = undefined;\n    }\n  }\n}\n\nconst emptyArray = [];\nclass Animation {\n  constructor() {\n    this.changed = false;\n    this.values = emptyArray;\n    this.toValues = null;\n    this.fromValues = emptyArray;\n    this.to = void 0;\n    this.from = void 0;\n    this.config = new AnimationConfig();\n    this.immediate = false;\n  }\n\n}\n\nfunction scheduleProps(callId, {\n  key,\n  props,\n  defaultProps,\n  state,\n  actions\n}) {\n  return new Promise((resolve, reject) => {\n    var _props$cancel;\n\n    let delay;\n    let timeout;\n    let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n    if (cancel) {\n      onStart();\n    } else {\n      if (!is.und(props.pause)) {\n        state.paused = matchProp(props.pause, key);\n      }\n\n      let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n      if (pause !== true) {\n        pause = state.paused || matchProp(pause, key);\n      }\n\n      delay = callProp(props.delay || 0, key);\n\n      if (pause) {\n        state.resumeQueue.add(onResume);\n        actions.pause();\n      } else {\n        actions.resume();\n        onResume();\n      }\n    }\n\n    function onPause() {\n      state.resumeQueue.add(onResume);\n      state.timeouts.delete(timeout);\n      timeout.cancel();\n      delay = timeout.time - raf.now();\n    }\n\n    function onResume() {\n      if (delay > 0 && !Globals.skipAnimation) {\n        state.delayed = true;\n        timeout = raf.setTimeout(onStart, delay);\n        state.pauseQueue.add(onPause);\n        state.timeouts.add(timeout);\n      } else {\n        onStart();\n      }\n    }\n\n    function onStart() {\n      if (state.delayed) {\n        state.delayed = false;\n      }\n\n      state.pauseQueue.delete(onPause);\n      state.timeouts.delete(timeout);\n\n      if (callId <= (state.cancelId || 0)) {\n        cancel = true;\n      }\n\n      try {\n        actions.start(_extends({}, props, {\n          callId,\n          cancel\n        }), resolve);\n      } catch (err) {\n        reject(err);\n      }\n    }\n  });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n  value,\n  noop: true,\n  finished: true,\n  cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n  value,\n  finished,\n  cancelled\n});\nconst getCancelledResult = value => ({\n  value,\n  cancelled: true,\n  finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n  const {\n    callId,\n    parentId,\n    onRest\n  } = props;\n  const {\n    asyncTo: prevTo,\n    promise: prevPromise\n  } = state;\n\n  if (!parentId && to === prevTo && !props.reset) {\n    return prevPromise;\n  }\n\n  return state.promise = (async () => {\n    state.asyncId = callId;\n    state.asyncTo = to;\n    const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n    let preventBail;\n    let bail;\n    const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n    const bailIfEnded = bailSignal => {\n      const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n      if (bailResult) {\n        bailSignal.result = bailResult;\n        bail(bailSignal);\n        throw bailSignal;\n      }\n    };\n\n    const animate = (arg1, arg2) => {\n      const bailSignal = new BailSignal();\n      const skipAnimationSignal = new SkipAnimationSignal();\n      return (async () => {\n        if (Globals.skipAnimation) {\n          stopAsync(state);\n          skipAnimationSignal.result = getFinishedResult(target, false);\n          bail(skipAnimationSignal);\n          throw skipAnimationSignal;\n        }\n\n        bailIfEnded(bailSignal);\n        const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n          to: arg1\n        });\n        props.parentId = callId;\n        eachProp(defaultProps, (value, key) => {\n          if (is.und(props[key])) {\n            props[key] = value;\n          }\n        });\n        const result = await target.start(props);\n        bailIfEnded(bailSignal);\n\n        if (state.paused) {\n          await new Promise(resume => {\n            state.resumeQueue.add(resume);\n          });\n        }\n\n        return result;\n      })();\n    };\n\n    let result;\n\n    if (Globals.skipAnimation) {\n      stopAsync(state);\n      return getFinishedResult(target, false);\n    }\n\n    try {\n      let animating;\n\n      if (is.arr(to)) {\n        animating = (async queue => {\n          for (const props of queue) {\n            await animate(props);\n          }\n        })(to);\n      } else {\n        animating = Promise.resolve(to(animate, target.stop.bind(target)));\n      }\n\n      await Promise.all([animating.then(preventBail), bailPromise]);\n      result = getFinishedResult(target.get(), true, false);\n    } catch (err) {\n      if (err instanceof BailSignal) {\n        result = err.result;\n      } else if (err instanceof SkipAnimationSignal) {\n        result = err.result;\n      } else {\n        throw err;\n      }\n    } finally {\n      if (callId == state.asyncId) {\n        state.asyncId = parentId;\n        state.asyncTo = parentId ? prevTo : undefined;\n        state.promise = parentId ? prevPromise : undefined;\n      }\n    }\n\n    if (is.fun(onRest)) {\n      raf.batchedUpdates(() => {\n        onRest(result, target, target.item);\n      });\n    }\n\n    return result;\n  })();\n}\nfunction stopAsync(state, cancelId) {\n  flush(state.timeouts, t => t.cancel());\n  state.pauseQueue.clear();\n  state.resumeQueue.clear();\n  state.asyncId = state.asyncTo = state.promise = undefined;\n  if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n  constructor() {\n    super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n    this.result = void 0;\n  }\n\n}\nclass SkipAnimationSignal extends Error {\n  constructor() {\n    super('SkipAnimationSignal');\n    this.result = void 0;\n  }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n  constructor(...args) {\n    super(...args);\n    this.id = nextId$1++;\n    this.key = void 0;\n    this._priority = 0;\n  }\n\n  get priority() {\n    return this._priority;\n  }\n\n  set priority(priority) {\n    if (this._priority != priority) {\n      this._priority = priority;\n\n      this._onPriorityChange(priority);\n    }\n  }\n\n  get() {\n    const node = getAnimated(this);\n    return node && node.getValue();\n  }\n\n  to(...args) {\n    return Globals.to(this, args);\n  }\n\n  interpolate(...args) {\n    deprecateInterpolate();\n    return Globals.to(this, args);\n  }\n\n  toJSON() {\n    return this.get();\n  }\n\n  observerAdded(count) {\n    if (count == 1) this._attach();\n  }\n\n  observerRemoved(count) {\n    if (count == 0) this._detach();\n  }\n\n  _attach() {}\n\n  _detach() {}\n\n  _onChange(value, idle = false) {\n    callFluidObservers(this, {\n      type: 'change',\n      parent: this,\n      value,\n      idle\n    });\n  }\n\n  _onPriorityChange(priority) {\n    if (!this.idle) {\n      frameLoop.sort(this);\n    }\n\n    callFluidObservers(this, {\n      type: 'priority',\n      parent: this,\n      priority\n    });\n  }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n  constructor(arg1, arg2) {\n    super();\n    this.key = void 0;\n    this.animation = new Animation();\n    this.queue = void 0;\n    this.defaultProps = {};\n    this._state = {\n      paused: false,\n      delayed: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._pendingCalls = new Set();\n    this._lastCallId = 0;\n    this._lastToId = 0;\n    this._memoizedDuration = 0;\n\n    if (!is.und(arg1) || !is.und(arg2)) {\n      const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n        from: arg1\n      });\n\n      if (is.und(props.default)) {\n        props.default = true;\n      }\n\n      this.start(props);\n    }\n  }\n\n  get idle() {\n    return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n  }\n\n  get goal() {\n    return getFluidValue(this.animation.to);\n  }\n\n  get velocity() {\n    const node = getAnimated(this);\n    return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n  }\n\n  get hasAnimated() {\n    return hasAnimated(this);\n  }\n\n  get isAnimating() {\n    return isAnimating(this);\n  }\n\n  get isPaused() {\n    return isPaused(this);\n  }\n\n  get isDelayed() {\n    return this._state.delayed;\n  }\n\n  advance(dt) {\n    let idle = true;\n    let changed = false;\n    const anim = this.animation;\n    let {\n      config,\n      toValues\n    } = anim;\n    const payload = getPayload(anim.to);\n\n    if (!payload && hasFluidValue(anim.to)) {\n      toValues = toArray(getFluidValue(anim.to));\n    }\n\n    anim.values.forEach((node, i) => {\n      if (node.done) return;\n      const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n      let finished = anim.immediate;\n      let position = to;\n\n      if (!finished) {\n        position = node.lastPosition;\n\n        if (config.tension <= 0) {\n          node.done = true;\n          return;\n        }\n\n        let elapsed = node.elapsedTime += dt;\n        const from = anim.fromValues[i];\n        const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n        let velocity;\n        const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n\n        if (!is.und(config.duration)) {\n          let p = 1;\n\n          if (config.duration > 0) {\n            if (this._memoizedDuration !== config.duration) {\n              this._memoizedDuration = config.duration;\n\n              if (node.durationProgress > 0) {\n                node.elapsedTime = config.duration * node.durationProgress;\n                elapsed = node.elapsedTime += dt;\n              }\n            }\n\n            p = (config.progress || 0) + elapsed / this._memoizedDuration;\n            p = p > 1 ? 1 : p < 0 ? 0 : p;\n            node.durationProgress = p;\n          }\n\n          position = from + config.easing(p) * (to - from);\n          velocity = (position - node.lastPosition) / dt;\n          finished = p == 1;\n        } else if (config.decay) {\n          const decay = config.decay === true ? 0.998 : config.decay;\n          const e = Math.exp(-(1 - decay) * elapsed);\n          position = from + v0 / (1 - decay) * (1 - e);\n          finished = Math.abs(node.lastPosition - position) <= precision;\n          velocity = v0 * e;\n        } else {\n          velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n          const restVelocity = config.restVelocity || precision / 10;\n          const bounceFactor = config.clamp ? 0 : config.bounce;\n          const canBounce = !is.und(bounceFactor);\n          const isGrowing = from == to ? node.v0 > 0 : from < to;\n          let isMoving;\n          let isBouncing = false;\n          const step = 1;\n          const numSteps = Math.ceil(dt / step);\n\n          for (let n = 0; n < numSteps; ++n) {\n            isMoving = Math.abs(velocity) > restVelocity;\n\n            if (!isMoving) {\n              finished = Math.abs(to - position) <= precision;\n\n              if (finished) {\n                break;\n              }\n            }\n\n            if (canBounce) {\n              isBouncing = position == to || position > to == isGrowing;\n\n              if (isBouncing) {\n                velocity = -velocity * bounceFactor;\n                position = to;\n              }\n            }\n\n            const springForce = -config.tension * 0.000001 * (position - to);\n            const dampingForce = -config.friction * 0.001 * velocity;\n            const acceleration = (springForce + dampingForce) / config.mass;\n            velocity = velocity + acceleration * step;\n            position = position + velocity * step;\n          }\n        }\n\n        node.lastVelocity = velocity;\n\n        if (Number.isNaN(position)) {\n          console.warn(`Got NaN while animating:`, this);\n          finished = true;\n        }\n      }\n\n      if (payload && !payload[i].done) {\n        finished = false;\n      }\n\n      if (finished) {\n        node.done = true;\n      } else {\n        idle = false;\n      }\n\n      if (node.setValue(position, config.round)) {\n        changed = true;\n      }\n    });\n    const node = getAnimated(this);\n    const currVal = node.getValue();\n\n    if (idle) {\n      const finalVal = getFluidValue(anim.to);\n\n      if ((currVal !== finalVal || changed) && !config.decay) {\n        node.setValue(finalVal);\n\n        this._onChange(finalVal);\n      } else if (changed && config.decay) {\n        this._onChange(currVal);\n      }\n\n      this._stop();\n    } else if (changed) {\n      this._onChange(currVal);\n    }\n  }\n\n  set(value) {\n    raf.batchedUpdates(() => {\n      this._stop();\n\n      this._focus(value);\n\n      this._set(value);\n    });\n    return this;\n  }\n\n  pause() {\n    this._update({\n      pause: true\n    });\n  }\n\n  resume() {\n    this._update({\n      pause: false\n    });\n  }\n\n  finish() {\n    if (isAnimating(this)) {\n      const {\n        to,\n        config\n      } = this.animation;\n      raf.batchedUpdates(() => {\n        this._onStart();\n\n        if (!config.decay) {\n          this._set(to, false);\n        }\n\n        this._stop();\n      });\n    }\n\n    return this;\n  }\n\n  update(props) {\n    const queue = this.queue || (this.queue = []);\n    queue.push(props);\n    return this;\n  }\n\n  start(to, arg2) {\n    let queue;\n\n    if (!is.und(to)) {\n      queue = [is.obj(to) ? to : _extends({}, arg2, {\n        to\n      })];\n    } else {\n      queue = this.queue || [];\n      this.queue = [];\n    }\n\n    return Promise.all(queue.map(props => {\n      const up = this._update(props);\n\n      return up;\n    })).then(results => getCombinedResult(this, results));\n  }\n\n  stop(cancel) {\n    const {\n      to\n    } = this.animation;\n\n    this._focus(this.get());\n\n    stopAsync(this._state, cancel && this._lastCallId);\n    raf.batchedUpdates(() => this._stop(to, cancel));\n    return this;\n  }\n\n  reset() {\n    this._update({\n      reset: true\n    });\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._start();\n    } else if (event.type == 'priority') {\n      this.priority = event.priority + 1;\n    }\n  }\n\n  _prepareNode(props) {\n    const key = this.key || '';\n    let {\n      to,\n      from\n    } = props;\n    to = is.obj(to) ? to[key] : to;\n\n    if (to == null || isAsyncTo(to)) {\n      to = undefined;\n    }\n\n    from = is.obj(from) ? from[key] : from;\n\n    if (from == null) {\n      from = undefined;\n    }\n\n    const range = {\n      to,\n      from\n    };\n\n    if (!hasAnimated(this)) {\n      if (props.reverse) [to, from] = [from, to];\n      from = getFluidValue(from);\n\n      if (!is.und(from)) {\n        this._set(from);\n      } else if (!getAnimated(this)) {\n        this._set(to);\n      }\n    }\n\n    return range;\n  }\n\n  _update(_ref, isLoop) {\n    let props = _extends({}, _ref);\n\n    const {\n      key,\n      defaultProps\n    } = this;\n    if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n    mergeActiveFn(this, props, 'onProps');\n    sendEvent(this, 'onProps', props, this);\n\n    const range = this._prepareNode(props);\n\n    if (Object.isFrozen(this)) {\n      throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n    }\n\n    const state = this._state;\n    return scheduleProps(++this._lastCallId, {\n      key,\n      props,\n      defaultProps,\n      state,\n      actions: {\n        pause: () => {\n          if (!isPaused(this)) {\n            setPausedBit(this, true);\n            flushCalls(state.pauseQueue);\n            sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        resume: () => {\n          if (isPaused(this)) {\n            setPausedBit(this, false);\n\n            if (isAnimating(this)) {\n              this._resume();\n            }\n\n            flushCalls(state.resumeQueue);\n            sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        start: this._merge.bind(this, range)\n      }\n    }).then(result => {\n      if (props.loop && result.finished && !(isLoop && result.noop)) {\n        const nextProps = createLoopUpdate(props);\n\n        if (nextProps) {\n          return this._update(nextProps, true);\n        }\n      }\n\n      return result;\n    });\n  }\n\n  _merge(range, props, resolve) {\n    if (props.cancel) {\n      this.stop(true);\n      return resolve(getCancelledResult(this));\n    }\n\n    const hasToProp = !is.und(range.to);\n    const hasFromProp = !is.und(range.from);\n\n    if (hasToProp || hasFromProp) {\n      if (props.callId > this._lastToId) {\n        this._lastToId = props.callId;\n      } else {\n        return resolve(getCancelledResult(this));\n      }\n    }\n\n    const {\n      key,\n      defaultProps,\n      animation: anim\n    } = this;\n    const {\n      to: prevTo,\n      from: prevFrom\n    } = anim;\n    let {\n      to = prevTo,\n      from = prevFrom\n    } = range;\n\n    if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n      to = from;\n    }\n\n    if (props.reverse) [to, from] = [from, to];\n    const hasFromChanged = !isEqual(from, prevFrom);\n\n    if (hasFromChanged) {\n      anim.from = from;\n    }\n\n    from = getFluidValue(from);\n    const hasToChanged = !isEqual(to, prevTo);\n\n    if (hasToChanged) {\n      this._focus(to);\n    }\n\n    const hasAsyncTo = isAsyncTo(props.to);\n    const {\n      config\n    } = anim;\n    const {\n      decay,\n      velocity\n    } = config;\n\n    if (hasToProp || hasFromProp) {\n      config.velocity = 0;\n    }\n\n    if (props.config && !hasAsyncTo) {\n      mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n    }\n\n    let node = getAnimated(this);\n\n    if (!node || is.und(to)) {\n      return resolve(getFinishedResult(this, true));\n    }\n\n    const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n    const value = reset ? from : this.get();\n    const goal = computeGoal(to);\n    const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n    const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n    if (hasToChanged) {\n      const nodeType = getAnimatedType(to);\n\n      if (nodeType !== node.constructor) {\n        if (immediate) {\n          node = this._set(goal);\n        } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n      }\n    }\n\n    const goalType = node.constructor;\n    let started = hasFluidValue(to);\n    let finished = false;\n\n    if (!started) {\n      const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n      if (hasToChanged || hasValueChanged) {\n        finished = isEqual(computeGoal(value), goal);\n        started = !finished;\n      }\n\n      if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n        started = true;\n      }\n    }\n\n    if (finished && isAnimating(this)) {\n      if (anim.changed && !reset) {\n        started = true;\n      } else if (!started) {\n        this._stop(prevTo);\n      }\n    }\n\n    if (!hasAsyncTo) {\n      if (started || hasFluidValue(prevTo)) {\n        anim.values = node.getPayload();\n        anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n      }\n\n      if (anim.immediate != immediate) {\n        anim.immediate = immediate;\n\n        if (!immediate && !reset) {\n          this._set(prevTo);\n        }\n      }\n\n      if (started) {\n        const {\n          onRest\n        } = anim;\n        each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n        const result = getFinishedResult(this, checkFinished(this, prevTo));\n        flushCalls(this._pendingCalls, result);\n\n        this._pendingCalls.add(resolve);\n\n        if (anim.changed) raf.batchedUpdates(() => {\n          anim.changed = !reset;\n          onRest == null ? void 0 : onRest(result, this);\n\n          if (reset) {\n            callProp(defaultProps.onRest, result);\n          } else {\n            anim.onStart == null ? void 0 : anim.onStart(result, this);\n          }\n        });\n      }\n    }\n\n    if (reset) {\n      this._set(value);\n    }\n\n    if (hasAsyncTo) {\n      resolve(runAsync(props.to, props, this._state, this));\n    } else if (started) {\n      this._start();\n    } else if (isAnimating(this) && !hasToChanged) {\n      this._pendingCalls.add(resolve);\n    } else {\n      resolve(getNoopResult(value));\n    }\n  }\n\n  _focus(value) {\n    const anim = this.animation;\n\n    if (value !== anim.to) {\n      if (getFluidObservers(this)) {\n        this._detach();\n      }\n\n      anim.to = value;\n\n      if (getFluidObservers(this)) {\n        this._attach();\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 0;\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      addFluidObserver(to, this);\n\n      if (isFrameValue(to)) {\n        priority = to.priority + 1;\n      }\n    }\n\n    this.priority = priority;\n  }\n\n  _detach() {\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      removeFluidObserver(to, this);\n    }\n  }\n\n  _set(arg, idle = true) {\n    const value = getFluidValue(arg);\n\n    if (!is.und(value)) {\n      const oldNode = getAnimated(this);\n\n      if (!oldNode || !isEqual(value, oldNode.getValue())) {\n        const nodeType = getAnimatedType(value);\n\n        if (!oldNode || oldNode.constructor != nodeType) {\n          setAnimated(this, nodeType.create(value));\n        } else {\n          oldNode.setValue(value);\n        }\n\n        if (oldNode) {\n          raf.batchedUpdates(() => {\n            this._onChange(value, idle);\n          });\n        }\n      }\n    }\n\n    return getAnimated(this);\n  }\n\n  _onStart() {\n    const anim = this.animation;\n\n    if (!anim.changed) {\n      anim.changed = true;\n      sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n    }\n  }\n\n  _onChange(value, idle) {\n    if (!idle) {\n      this._onStart();\n\n      callProp(this.animation.onChange, value, this);\n    }\n\n    callProp(this.defaultProps.onChange, value, this);\n\n    super._onChange(value, idle);\n  }\n\n  _start() {\n    const anim = this.animation;\n    getAnimated(this).reset(getFluidValue(anim.to));\n\n    if (!anim.immediate) {\n      anim.fromValues = anim.values.map(node => node.lastPosition);\n    }\n\n    if (!isAnimating(this)) {\n      setActiveBit(this, true);\n\n      if (!isPaused(this)) {\n        this._resume();\n      }\n    }\n  }\n\n  _resume() {\n    if (Globals.skipAnimation) {\n      this.finish();\n    } else {\n      frameLoop.start(this);\n    }\n  }\n\n  _stop(goal, cancel) {\n    if (isAnimating(this)) {\n      setActiveBit(this, false);\n      const anim = this.animation;\n      each(anim.values, node => {\n        node.done = true;\n      });\n\n      if (anim.toValues) {\n        anim.onChange = anim.onPause = anim.onResume = undefined;\n      }\n\n      callFluidObservers(this, {\n        type: 'idle',\n        parent: this\n      });\n      const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n      flushCalls(this._pendingCalls, result);\n\n      if (anim.changed) {\n        anim.changed = false;\n        sendEvent(this, 'onRest', result, this);\n      }\n    }\n  }\n\n}\n\nfunction checkFinished(target, to) {\n  const goal = computeGoal(to);\n  const value = computeGoal(target.get());\n  return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n  let loopRet = callProp(loop);\n\n  if (loopRet) {\n    const overrides = loopRet !== true && inferTo(loopRet);\n    const reverse = (overrides || props).reverse;\n    const reset = !overrides || overrides.reset;\n    return createUpdate(_extends({}, props, {\n      loop,\n      default: false,\n      pause: undefined,\n      to: !reverse || isAsyncTo(to) ? to : undefined,\n      from: reset ? props.from : undefined,\n      reset\n    }, overrides));\n  }\n}\nfunction createUpdate(props) {\n  const {\n    to,\n    from\n  } = props = inferTo(props);\n  const keys = new Set();\n  if (is.obj(to)) findDefined(to, keys);\n  if (is.obj(from)) findDefined(from, keys);\n  props.keys = keys.size ? Array.from(keys) : null;\n  return props;\n}\nfunction declareUpdate(props) {\n  const update = createUpdate(props);\n\n  if (is.und(update.default)) {\n    update.default = getDefaultProps(update);\n  }\n\n  return update;\n}\n\nfunction findDefined(values, keys) {\n  eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n  target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n  var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n  (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n  (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n  constructor(props, flush) {\n    this.id = nextId++;\n    this.springs = {};\n    this.queue = [];\n    this.ref = void 0;\n    this._flush = void 0;\n    this._initialProps = void 0;\n    this._lastAsyncId = 0;\n    this._active = new Set();\n    this._changed = new Set();\n    this._started = false;\n    this._item = void 0;\n    this._state = {\n      paused: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._events = {\n      onStart: new Map(),\n      onChange: new Map(),\n      onRest: new Map()\n    };\n    this._onFrame = this._onFrame.bind(this);\n\n    if (flush) {\n      this._flush = flush;\n    }\n\n    if (props) {\n      this.start(_extends({\n        default: true\n      }, props));\n    }\n  }\n\n  get idle() {\n    return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n      return spring.idle && !spring.isDelayed && !spring.isPaused;\n    });\n  }\n\n  get item() {\n    return this._item;\n  }\n\n  set item(item) {\n    this._item = item;\n  }\n\n  get() {\n    const values = {};\n    this.each((spring, key) => values[key] = spring.get());\n    return values;\n  }\n\n  set(values) {\n    for (const key in values) {\n      const value = values[key];\n\n      if (!is.und(value)) {\n        this.springs[key].set(value);\n      }\n    }\n  }\n\n  update(props) {\n    if (props) {\n      this.queue.push(createUpdate(props));\n    }\n\n    return this;\n  }\n\n  start(props) {\n    let {\n      queue\n    } = this;\n\n    if (props) {\n      queue = toArray(props).map(createUpdate);\n    } else {\n      this.queue = [];\n    }\n\n    if (this._flush) {\n      return this._flush(this, queue);\n    }\n\n    prepareKeys(this, queue);\n    return flushUpdateQueue(this, queue);\n  }\n\n  stop(arg, keys) {\n    if (arg !== !!arg) {\n      keys = arg;\n    }\n\n    if (keys) {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].stop(!!arg));\n    } else {\n      stopAsync(this._state, this._lastAsyncId);\n      this.each(spring => spring.stop(!!arg));\n    }\n\n    return this;\n  }\n\n  pause(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: true\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].pause());\n    }\n\n    return this;\n  }\n\n  resume(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: false\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].resume());\n    }\n\n    return this;\n  }\n\n  each(iterator) {\n    eachProp(this.springs, iterator);\n  }\n\n  _onFrame() {\n    const {\n      onStart,\n      onChange,\n      onRest\n    } = this._events;\n    const active = this._active.size > 0;\n    const changed = this._changed.size > 0;\n\n    if (active && !this._started || changed && !this._started) {\n      this._started = true;\n      flush(onStart, ([onStart, result]) => {\n        result.value = this.get();\n        onStart(result, this, this._item);\n      });\n    }\n\n    const idle = !active && this._started;\n    const values = changed || idle && onRest.size ? this.get() : null;\n\n    if (changed && onChange.size) {\n      flush(onChange, ([onChange, result]) => {\n        result.value = values;\n        onChange(result, this, this._item);\n      });\n    }\n\n    if (idle) {\n      this._started = false;\n      flush(onRest, ([onRest, result]) => {\n        result.value = values;\n        onRest(result, this, this._item);\n      });\n    }\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._changed.add(event.parent);\n\n      if (!event.idle) {\n        this._active.add(event.parent);\n      }\n    } else if (event.type == 'idle') {\n      this._active.delete(event.parent);\n    } else return;\n\n    raf.onFrame(this._onFrame);\n  }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n  return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n  const {\n    keys,\n    to,\n    from,\n    loop,\n    onRest,\n    onResolve\n  } = props;\n  const defaults = is.obj(props.default) && props.default;\n\n  if (loop) {\n    props.loop = false;\n  }\n\n  if (to === false) props.to = null;\n  if (from === false) props.from = null;\n  const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n  if (asyncTo) {\n    props.to = undefined;\n    props.onRest = undefined;\n\n    if (defaults) {\n      defaults.onRest = undefined;\n    }\n  } else {\n    each(BATCHED_EVENTS, key => {\n      const handler = props[key];\n\n      if (is.fun(handler)) {\n        const queue = ctrl['_events'][key];\n\n        props[key] = ({\n          finished,\n          cancelled\n        }) => {\n          const result = queue.get(handler);\n\n          if (result) {\n            if (!finished) result.finished = false;\n            if (cancelled) result.cancelled = true;\n          } else {\n            queue.set(handler, {\n              value: null,\n              finished: finished || false,\n              cancelled: cancelled || false\n            });\n          }\n        };\n\n        if (defaults) {\n          defaults[key] = props[key];\n        }\n      }\n    });\n  }\n\n  const state = ctrl['_state'];\n\n  if (props.pause === !state.paused) {\n    state.paused = props.pause;\n    flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n  } else if (state.paused) {\n    props.pause = true;\n  }\n\n  const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n  const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n  if (asyncTo || cancel && state.asyncId) {\n    promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n      props,\n      state,\n      actions: {\n        pause: noop,\n        resume: noop,\n\n        start(props, resolve) {\n          if (cancel) {\n            stopAsync(state, ctrl['_lastAsyncId']);\n            resolve(getCancelledResult(ctrl));\n          } else {\n            props.onRest = onRest;\n            resolve(runAsync(asyncTo, props, state, ctrl));\n          }\n        }\n\n      }\n    }));\n  }\n\n  if (state.paused) {\n    await new Promise(resume => {\n      state.resumeQueue.add(resume);\n    });\n  }\n\n  const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n  if (loop && result.finished && !(isLoop && result.noop)) {\n    const nextProps = createLoopUpdate(props, loop, to);\n\n    if (nextProps) {\n      prepareKeys(ctrl, [nextProps]);\n      return flushUpdate(ctrl, nextProps, true);\n    }\n  }\n\n  if (onResolve) {\n    raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n  }\n\n  return result;\n}\nfunction getSprings(ctrl, props) {\n  const springs = _extends({}, ctrl.springs);\n\n  if (props) {\n    each(toArray(props), props => {\n      if (is.und(props.keys)) {\n        props = createUpdate(props);\n      }\n\n      if (!is.obj(props.to)) {\n        props = _extends({}, props, {\n          to: undefined\n        });\n      }\n\n      prepareSprings(springs, props, key => {\n        return createSpring(key);\n      });\n    });\n  }\n\n  setSprings(ctrl, springs);\n  return springs;\n}\nfunction setSprings(ctrl, springs) {\n  eachProp(springs, (spring, key) => {\n    if (!ctrl.springs[key]) {\n      ctrl.springs[key] = spring;\n      addFluidObserver(spring, ctrl);\n    }\n  });\n}\n\nfunction createSpring(key, observer) {\n  const spring = new SpringValue();\n  spring.key = key;\n\n  if (observer) {\n    addFluidObserver(spring, observer);\n  }\n\n  return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n  if (props.keys) {\n    each(props.keys, key => {\n      const spring = springs[key] || (springs[key] = create(key));\n      spring['_prepareNode'](props);\n    });\n  }\n}\n\nfunction prepareKeys(ctrl, queue) {\n  each(queue, props => {\n    prepareSprings(ctrl.springs, props, key => {\n      return createSpring(key, ctrl);\n    });\n  });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst _excluded$6 = [\"children\"];\nconst SpringContext = _ref => {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$6);\n\n  const inherited = useContext(ctx);\n  const pause = props.pause || !!inherited.pause,\n        immediate = props.immediate || !!inherited.immediate;\n  props = useMemoOne(() => ({\n    pause,\n    immediate\n  }), [pause, immediate]);\n  const {\n    Provider\n  } = ctx;\n  return React.createElement(Provider, {\n    value: props\n  }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n  Object.assign(target, React.createContext(init));\n  target.Provider._context = target;\n  target.Consumer._context = target;\n  return target;\n}\n\nconst SpringRef = () => {\n  const current = [];\n\n  const SpringRef = function SpringRef(props) {\n    deprecateDirectCall();\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = _getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.current = current;\n\n  SpringRef.add = function (ctrl) {\n    if (!current.includes(ctrl)) {\n      current.push(ctrl);\n    }\n  };\n\n  SpringRef.delete = function (ctrl) {\n    const i = current.indexOf(ctrl);\n    if (~i) current.splice(i, 1);\n  };\n\n  SpringRef.pause = function () {\n    each(current, ctrl => ctrl.pause(...arguments));\n    return this;\n  };\n\n  SpringRef.resume = function () {\n    each(current, ctrl => ctrl.resume(...arguments));\n    return this;\n  };\n\n  SpringRef.set = function (values) {\n    each(current, ctrl => ctrl.set(values));\n  };\n\n  SpringRef.start = function (props) {\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = this._getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.stop = function () {\n    each(current, ctrl => ctrl.stop(...arguments));\n    return this;\n  };\n\n  SpringRef.update = function (props) {\n    each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n    return this;\n  };\n\n  const _getProps = function _getProps(arg, ctrl, index) {\n    return is.fun(arg) ? arg(index, ctrl) : arg;\n  };\n\n  SpringRef._getProps = _getProps;\n  return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n  const propsFn = is.fun(props) && props;\n  if (propsFn && !deps) deps = [];\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const layoutId = useRef(0);\n  const forceUpdate = useForceUpdate();\n  const state = useMemo(() => ({\n    ctrls: [],\n    queue: [],\n\n    flush(ctrl, updates) {\n      const springs = getSprings(ctrl, updates);\n      const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n      return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n        setSprings(ctrl, springs);\n        state.queue.push(() => {\n          resolve(flushUpdateQueue(ctrl, updates));\n        });\n        forceUpdate();\n      });\n    }\n\n  }), []);\n  const ctrls = useRef([...state.ctrls]);\n  const updates = [];\n  const prevLength = usePrev(length) || 0;\n  useMemo(() => {\n    each(ctrls.current.slice(length, prevLength), ctrl => {\n      detachRefs(ctrl, ref);\n      ctrl.stop(true);\n    });\n    ctrls.current.length = length;\n    declareUpdates(prevLength, length);\n  }, [length]);\n  useMemo(() => {\n    declareUpdates(0, Math.min(prevLength, length));\n  }, deps);\n\n  function declareUpdates(startIndex, endIndex) {\n    for (let i = startIndex; i < endIndex; i++) {\n      const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n      const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n      if (update) {\n        updates[i] = declareUpdate(update);\n      }\n    }\n  }\n\n  const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useIsomorphicLayoutEffect(() => {\n    layoutId.current++;\n    state.ctrls = ctrls.current;\n    const {\n      queue\n    } = state;\n\n    if (queue.length) {\n      state.queue = [];\n      each(queue, cb => cb());\n    }\n\n    each(ctrls.current, (ctrl, i) => {\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      const update = updates[i];\n\n      if (update) {\n        replaceRef(ctrl, update.ref);\n\n        if (ctrl.ref) {\n          ctrl.queue.push(update);\n        } else {\n          ctrl.start(update);\n        }\n      }\n    });\n  });\n  useOnce(() => () => {\n    each(state.ctrls, ctrl => ctrl.stop(true));\n  });\n  const values = springs.map(x => _extends({}, x));\n  return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n  const isFn = is.fun(props);\n  const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n  return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nconst useSpringValue = (initial, props) => {\n  const springValue = useConstant(() => new SpringValue(initial, props));\n  useOnce(() => () => {\n    springValue.stop();\n  });\n  return springValue;\n};\n\nfunction useTrail(length, propsArg, deps) {\n  const propsFn = is.fun(propsArg) && propsArg;\n  if (propsFn && !deps) deps = [];\n  let reverse = true;\n  let passedRef = undefined;\n  const result = useSprings(length, (i, ctrl) => {\n    const props = propsFn ? propsFn(i, ctrl) : propsArg;\n    passedRef = props.ref;\n    reverse = reverse && props.reverse;\n    return props;\n  }, deps || [{}]);\n  useIsomorphicLayoutEffect(() => {\n    each(result[1].current, (ctrl, i) => {\n      const parent = result[1].current[i + (reverse ? 1 : -1)];\n      replaceRef(ctrl, passedRef);\n\n      if (ctrl.ref) {\n        if (parent) {\n          ctrl.update({\n            to: parent.springs\n          });\n        }\n\n        return;\n      }\n\n      if (parent) {\n        ctrl.start({\n          to: parent.springs\n        });\n      } else {\n        ctrl.start();\n      }\n    });\n  }, deps);\n\n  if (propsFn || arguments.length == 3) {\n    var _passedRef;\n\n    const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n\n    ref['_getProps'] = (propsArg, ctrl, i) => {\n      const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n      if (props) {\n        const parent = ref.current[i + (props.reverse ? 1 : -1)];\n        if (parent) props.to = parent.springs;\n        return props;\n      }\n    };\n\n    return result;\n  }\n\n  return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n  TransitionPhase[\"MOUNT\"] = \"mount\";\n  TransitionPhase[\"ENTER\"] = \"enter\";\n  TransitionPhase[\"UPDATE\"] = \"update\";\n  TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n  const propsFn = is.fun(props) && props;\n  const {\n    reset,\n    sort,\n    trail = 0,\n    expires = true,\n    exitBeforeEnter = false,\n    onDestroyed,\n    ref: propsRef,\n    config: propsConfig\n  } = propsFn ? propsFn() : props;\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const items = toArray(data);\n  const transitions = [];\n  const usedTransitions = useRef(null);\n  const prevTransitions = reset ? null : usedTransitions.current;\n  useIsomorphicLayoutEffect(() => {\n    usedTransitions.current = transitions;\n  });\n  useOnce(() => {\n    each(transitions, t => {\n      ref == null ? void 0 : ref.add(t.ctrl);\n      t.ctrl.ref = ref;\n    });\n    return () => {\n      each(usedTransitions.current, t => {\n        if (t.expired) {\n          clearTimeout(t.expirationId);\n        }\n\n        detachRefs(t.ctrl, ref);\n        t.ctrl.stop(true);\n      });\n    };\n  });\n  const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n  const expired = reset && usedTransitions.current || [];\n  useIsomorphicLayoutEffect(() => each(expired, ({\n    ctrl,\n    item,\n    key\n  }) => {\n    detachRefs(ctrl, ref);\n    callProp(onDestroyed, item, key);\n  }));\n  const reused = [];\n  if (prevTransitions) each(prevTransitions, (t, i) => {\n    if (t.expired) {\n      clearTimeout(t.expirationId);\n      expired.push(t);\n    } else {\n      i = reused[i] = keys.indexOf(t.key);\n      if (~i) transitions[i] = t;\n    }\n  });\n  each(items, (item, i) => {\n    if (!transitions[i]) {\n      transitions[i] = {\n        key: keys[i],\n        item,\n        phase: TransitionPhase.MOUNT,\n        ctrl: new Controller()\n      };\n      transitions[i].ctrl.item = item;\n    }\n  });\n\n  if (reused.length) {\n    let i = -1;\n    const {\n      leave\n    } = propsFn ? propsFn() : props;\n    each(reused, (keyIndex, prevIndex) => {\n      const t = prevTransitions[prevIndex];\n\n      if (~keyIndex) {\n        i = transitions.indexOf(t);\n        transitions[i] = _extends({}, t, {\n          item: items[keyIndex]\n        });\n      } else if (leave) {\n        transitions.splice(++i, 0, t);\n      }\n    });\n  }\n\n  if (is.fun(sort)) {\n    transitions.sort((a, b) => sort(a.item, b.item));\n  }\n\n  let delay = -trail;\n  const forceUpdate = useForceUpdate();\n  const defaultProps = getDefaultProps(props);\n  const changes = new Map();\n  const exitingTransitions = useRef(new Map());\n  const forceChange = useRef(false);\n  each(transitions, (t, i) => {\n    const key = t.key;\n    const prevPhase = t.phase;\n    const p = propsFn ? propsFn() : props;\n    let to;\n    let phase;\n    let propsDelay = callProp(p.delay || 0, key);\n\n    if (prevPhase == TransitionPhase.MOUNT) {\n      to = p.enter;\n      phase = TransitionPhase.ENTER;\n    } else {\n      const isLeave = keys.indexOf(key) < 0;\n\n      if (prevPhase != TransitionPhase.LEAVE) {\n        if (isLeave) {\n          to = p.leave;\n          phase = TransitionPhase.LEAVE;\n        } else if (to = p.update) {\n          phase = TransitionPhase.UPDATE;\n        } else return;\n      } else if (!isLeave) {\n        to = p.enter;\n        phase = TransitionPhase.ENTER;\n      } else return;\n    }\n\n    to = callProp(to, t.item, i);\n    to = is.obj(to) ? inferTo(to) : {\n      to\n    };\n\n    if (!to.config) {\n      const config = propsConfig || defaultProps.config;\n      to.config = callProp(config, t.item, i, phase);\n    }\n\n    delay += trail;\n\n    const payload = _extends({}, defaultProps, {\n      delay: propsDelay + delay,\n      ref: propsRef,\n      immediate: p.immediate,\n      reset: false\n    }, to);\n\n    if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n      const _p = propsFn ? propsFn() : props;\n\n      const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n      payload.from = callProp(from, t.item, i);\n    }\n\n    const {\n      onResolve\n    } = payload;\n\n    payload.onResolve = result => {\n      callProp(onResolve, result);\n      const transitions = usedTransitions.current;\n      const t = transitions.find(t => t.key === key);\n      if (!t) return;\n\n      if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n        return;\n      }\n\n      if (t.ctrl.idle) {\n        const idle = transitions.every(t => t.ctrl.idle);\n\n        if (t.phase == TransitionPhase.LEAVE) {\n          const expiry = callProp(expires, t.item);\n\n          if (expiry !== false) {\n            const expiryMs = expiry === true ? 0 : expiry;\n            t.expired = true;\n\n            if (!idle && expiryMs > 0) {\n              if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n              return;\n            }\n          }\n        }\n\n        if (idle && transitions.some(t => t.expired)) {\n          exitingTransitions.current.delete(t);\n\n          if (exitBeforeEnter) {\n            forceChange.current = true;\n          }\n\n          forceUpdate();\n        }\n      }\n    };\n\n    const springs = getSprings(t.ctrl, payload);\n\n    if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n      exitingTransitions.current.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    } else {\n      changes.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    }\n  });\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useIsomorphicLayoutEffect(() => {\n    if (hasContext) {\n      each(transitions, t => {\n        t.ctrl.start({\n          default: context\n        });\n      });\n    }\n  }, [context]);\n  each(changes, (_, t) => {\n    if (exitingTransitions.current.size) {\n      const ind = transitions.findIndex(state => state.key === t.key);\n      transitions.splice(ind, 1);\n    }\n  });\n  useIsomorphicLayoutEffect(() => {\n    each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n      phase,\n      payload\n    }, t) => {\n      const {\n        ctrl\n      } = t;\n      t.phase = phase;\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext && phase == TransitionPhase.ENTER) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      if (payload) {\n        replaceRef(ctrl, payload.ref);\n\n        if ((ctrl.ref || ref) && !forceChange.current) {\n          ctrl.update(payload);\n        } else {\n          ctrl.start(payload);\n\n          if (forceChange.current) {\n            forceChange.current = false;\n          }\n        }\n      }\n    });\n  }, reset ? void 0 : deps);\n\n  const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n    const {\n      springs\n    } = changes.get(t) || t.ctrl;\n    const elem = render(_extends({}, springs), t.item, t, i);\n    return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n      key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n      ref: elem.ref\n    })) : elem;\n  }));\n\n  return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n  key,\n  keys = key\n}, prevTransitions) {\n  if (keys === null) {\n    const reused = new Set();\n    return items.map(item => {\n      const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n      if (t) {\n        reused.add(t);\n        return t.key;\n      }\n\n      return nextKey++;\n    });\n  }\n\n  return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$5 = [\"container\"];\nconst useScroll = (_ref = {}) => {\n  let {\n    container\n  } = _ref,\n      springOptions = _objectWithoutPropertiesLoose(_ref, _excluded$5);\n\n  const [scrollValues, api] = useSpring(() => _extends({\n    scrollX: 0,\n    scrollY: 0,\n    scrollXProgress: 0,\n    scrollYProgress: 0\n  }, springOptions), []);\n  useIsomorphicLayoutEffect(() => {\n    const cleanupScroll = onScroll(({\n      x,\n      y\n    }) => {\n      api.start({\n        scrollX: x.current,\n        scrollXProgress: x.progress,\n        scrollY: y.current,\n        scrollYProgress: y.progress\n      });\n    }, {\n      container: (container == null ? void 0 : container.current) || undefined\n    });\n    return () => {\n      each(Object.values(scrollValues), value => value.stop());\n      cleanupScroll();\n    };\n  }, []);\n  return scrollValues;\n};\n\nconst _excluded$4 = [\"container\"];\nconst useResize = _ref => {\n  let {\n    container\n  } = _ref,\n      springOptions = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n\n  const [sizeValues, api] = useSpring(() => _extends({\n    width: 0,\n    height: 0\n  }, springOptions), []);\n  useIsomorphicLayoutEffect(() => {\n    const cleanupScroll = onResize(({\n      width,\n      height\n    }) => {\n      api.start({\n        width,\n        height,\n        immediate: sizeValues.width.get() === 0 || sizeValues.height.get() === 0\n      });\n    }, {\n      container: (container == null ? void 0 : container.current) || undefined\n    });\n    return () => {\n      each(Object.values(sizeValues), value => value.stop());\n      cleanupScroll();\n    };\n  }, []);\n  return sizeValues;\n};\n\nconst _excluded$3 = [\"to\", \"from\"],\n      _excluded2 = [\"root\", \"once\", \"amount\"];\nconst defaultThresholdOptions = {\n  any: 0,\n  all: 1\n};\nfunction useInView(props, args) {\n  const [isInView, setIsInView] = useState(false);\n  const ref = useRef();\n  const propsFn = is.fun(props) && props;\n  const springsProps = propsFn ? propsFn() : {};\n\n  const {\n    to = {},\n    from = {}\n  } = springsProps,\n        restSpringProps = _objectWithoutPropertiesLoose(springsProps, _excluded$3);\n\n  const intersectionArguments = propsFn ? args : props;\n  const [springs, api] = useSpring(() => _extends({\n    from\n  }, restSpringProps), []);\n  useIsomorphicLayoutEffect(() => {\n    const element = ref.current;\n\n    const _ref = intersectionArguments != null ? intersectionArguments : {},\n          {\n      root,\n      once,\n      amount = 'any'\n    } = _ref,\n          restArgs = _objectWithoutPropertiesLoose(_ref, _excluded2);\n\n    if (!element || once && isInView || typeof IntersectionObserver === 'undefined') return;\n    const activeIntersections = new WeakMap();\n\n    const onEnter = () => {\n      if (to) {\n        api.start(to);\n      }\n\n      setIsInView(true);\n\n      const cleanup = () => {\n        if (from) {\n          api.start(from);\n        }\n\n        setIsInView(false);\n      };\n\n      return once ? undefined : cleanup;\n    };\n\n    const handleIntersection = entries => {\n      entries.forEach(entry => {\n        const onLeave = activeIntersections.get(entry.target);\n\n        if (entry.isIntersecting === Boolean(onLeave)) {\n          return;\n        }\n\n        if (entry.isIntersecting) {\n          const newOnLeave = onEnter();\n\n          if (is.fun(newOnLeave)) {\n            activeIntersections.set(entry.target, newOnLeave);\n          } else {\n            observer.unobserve(entry.target);\n          }\n        } else if (onLeave) {\n          onLeave();\n          activeIntersections.delete(entry.target);\n        }\n      });\n    };\n\n    const observer = new IntersectionObserver(handleIntersection, _extends({\n      root: root && root.current || undefined,\n      threshold: typeof amount === 'number' || Array.isArray(amount) ? amount : defaultThresholdOptions[amount]\n    }, restArgs));\n    observer.observe(element);\n    return () => observer.unobserve(element);\n  }, [intersectionArguments]);\n\n  if (propsFn) {\n    return [ref, springs];\n  }\n\n  return [ref, isInView];\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n  const trails = useTrail(items.length, props);\n  return items.map((item, index) => {\n    const result = children(item, index);\n    return is.fun(result) ? result(trails[index]) : result;\n  });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n  constructor(source, args) {\n    super();\n    this.key = void 0;\n    this.idle = true;\n    this.calc = void 0;\n    this._active = new Set();\n    this.source = source;\n    this.calc = createInterpolator(...args);\n\n    const value = this._get();\n\n    const nodeType = getAnimatedType(value);\n    setAnimated(this, nodeType.create(value));\n  }\n\n  advance(_dt) {\n    const value = this._get();\n\n    const oldValue = this.get();\n\n    if (!isEqual(value, oldValue)) {\n      getAnimated(this).setValue(value);\n\n      this._onChange(value, this.idle);\n    }\n\n    if (!this.idle && checkIdle(this._active)) {\n      becomeIdle(this);\n    }\n  }\n\n  _get() {\n    const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n    return this.calc(...inputs);\n  }\n\n  _start() {\n    if (this.idle && !checkIdle(this._active)) {\n      this.idle = false;\n      each(getPayload(this), node => {\n        node.done = false;\n      });\n\n      if (Globals.skipAnimation) {\n        raf.batchedUpdates(() => this.advance());\n        becomeIdle(this);\n      } else {\n        frameLoop.start(this);\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 1;\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        addFluidObserver(source, this);\n      }\n\n      if (isFrameValue(source)) {\n        if (!source.idle) {\n          this._active.add(source);\n        }\n\n        priority = Math.max(priority, source.priority + 1);\n      }\n    });\n    this.priority = priority;\n\n    this._start();\n  }\n\n  _detach() {\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        removeFluidObserver(source, this);\n      }\n    });\n\n    this._active.clear();\n\n    becomeIdle(this);\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      if (event.idle) {\n        this.advance();\n      } else {\n        this._active.add(event.parent);\n\n        this._start();\n      }\n    } else if (event.type == 'idle') {\n      this._active.delete(event.parent);\n    } else if (event.type == 'priority') {\n      this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n    }\n  }\n\n}\n\nfunction isIdle(source) {\n  return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n  return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n  if (!self.idle) {\n    self.idle = true;\n    each(getPayload(self), node => {\n      node.done = true;\n    });\n    callFluidObservers(self, {\n      type: 'idle',\n      parent: self\n    });\n  }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n  createStringInterpolator,\n  to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, inferTo, interpolate, to, update, useChain, useInView, useResize, useScroll, useSpring, useSpringRef, useSpringValue, useSprings, useTrail, useTransition };\n"],"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","callProp","value","args","is","fun","matchProp","toArray","includes","resolveProp","prop","obj","getDefaultProp","props","default","undefined","noopTransform","getDefaultProps","transform","keys","DEFAULT_PROPS","defaults","und","RESERVED_PROPS","config","from","to","ref","loop","reset","pause","cancel","reverse","immediate","delay","onProps","onStart","onChange","onPause","onResume","onRest","onResolve","items","trail","sort","expires","initial","enter","update","leave","children","onDestroyed","callId","parentId","inferTo","getForwardProps","forward","count","eachProp","out","val","computeGoal","getFluidValue","arr","map","isAnimatedString","Globals","createStringInterpolator","range","output","isAsyncTo","tension","friction","gentle","wobbly","stiff","slow","molasses","mass","damping","easing","easings","linear","clamp","AnimationConfig","constructor","frequency","velocity","restVelocity","precision","progress","duration","bounce","decay","round","sanitizeConfig","isTensionConfig","emptyArray","Animation","changed","values","toValues","fromValues","scheduleProps","defaultProps","state","actions","Promise","resolve","reject","_props$cancel","timeout","paused","resumeQueue","add","resume","timeouts","delete","time","raf","now","skipAnimation","delayed","setTimeout","pauseQueue","cancelId","start","err","getCombinedResult","results","some","result","cancelled","getCancelledResult","get","every","noop","getNoopResult","getFinishedResult","finished","runAsync","asyncTo","prevTo","promise","prevPromise","asyncId","preventBail","bail","bailPromise","bailIfEnded","bailSignal","bailResult","animate","arg1","arg2","BailSignal","skipAnimationSignal","SkipAnimationSignal","stopAsync","animating","async","queue","stop","all","then","batchedUpdates","item","flush","t","clear","Error","super","isFrameValue","FrameValue","nextId$1","FluidValue","id","_priority","priority","_onPriorityChange","node","getAnimated","getValue","interpolate","deprecateInterpolate","toJSON","observerAdded","_attach","observerRemoved","_detach","_onChange","idle","callFluidObservers","type","parent","frameLoop","$P","Symbol","for","hasAnimated","isAnimating","isPaused","setActiveBit","active","IS_ANIMATING","setPausedBit","SpringValue","animation","_state","Set","_pendingCalls","_lastCallId","_lastToId","_memoizedDuration","goal","AnimatedValue","lastVelocity","getPayload","isDelayed","advance","dt","anim","payload","hasFluidValue","forEach","done","AnimatedString","lastPosition","position","elapsed","elapsedTime","v0","Math","min","abs","e","exp","bounceFactor","canBounce","isGrowing","isMoving","isBouncing","step","numSteps","ceil","n","p","durationProgress","Number","isNaN","console","warn","setValue","currVal","finalVal","_stop","set","_focus","_set","_update","finish","_onStart","push","eventObserved","event","_start","_prepareNode","_ref","isLoop","test","mergeActiveFn","sendEvent","isFrozen","flushCalls","checkFinished","_resume","_merge","nextProps","createLoopUpdate","hasToProp","hasFromProp","prevFrom","hasFromChanged","isEqual","hasToChanged","hasAsyncTo","mergeConfig","newConfig","defaultConfig","pow","PI","isAnimatable","num","nodeType","getAnimatedType","name","goalType","started","hasValueChanged","each","ACTIVE_EVENTS","getFluidObservers","addFluidObserver","removeFluidObserver","arg","oldNode","setAnimated","create","loopRet","overrides","createUpdate","findDefined","size","Array","declareUpdate","_target$animation$typ","_target$animation","_target$defaultProps$","_target$defaultProps","BATCHED_EVENTS","nextId","Controller","springs","_flush","_initialProps","_lastAsyncId","_active","_changed","_started","_item","_events","Map","_onFrame","spring","prepareKeys","flushUpdateQueue","iterator","onFrame","ctrl","flushUpdate","handler","promises","getSprings","prepareSprings","createSpring","setSprings","observer","_excluded$6","SpringContext","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","inherited","useContext","ctx","useMemoOne","Provider","React","createElement","makeContext","init","createContext","_context","Consumer","SpringRef","current","deprecateDirectCall","_getProps","splice","index","useSprings","deps","propsFn","useMemo","layoutId","useRef","forceUpdate","useForceUpdate","ctrls","updates","prevLength","usePrev","declareUpdates","startIndex","endIndex","slice","detachRefs","_ctrl$ref","context","prevContext","hasContext","hasProps","_","useIsomorphicLayoutEffect","cb","replaceRef","_ctrl$ref2","useOnce","x","useSpring","isFn","TransitionPhase","Interpolation","calc","createInterpolator","_get","_dt","oldValue","checkIdle","becomeIdle","inputs","max","reduce","highest","isIdle","self"],"mappings":"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","x_google_ignoreList":[0]}