{"version":3,"file":"react/js/vendor.framer-motion@current-7893c257.0a8027d63dacd6ad94db.js","mappings":"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","sources":["webpack:///./node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/array.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/errors.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/interpolate.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/memo.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/color.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/complex.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/index.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/mix/number.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/noop.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/offsets/default.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/offsets/time.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/progress.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-force-update.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","webpack:///./node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs"],"sourcesContent":["const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from './errors.mjs';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || mix;\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && input[0] === input[1])\n return () => output[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from '../errors.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n var _a;\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return mixImmediate(origin, target);\n }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nexport { mix };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","const noop = (any) => any;\n\nexport { noop };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n"],"names":["MotionGlobalConfig","skipAnimations","useManualTiming","addUniqueItem","arr","item","indexOf","push","removeItem","index","splice","clamp","min","max","v","delay","callback","timeout","start","now","checkElapsed","timestamp","elapsed","read","distance","a","b","Math","abs","distance2D","xDelta","x","yDelta","y","sqrt","warning","invariant","getContextWindow","current","ownerDocument","defaultView","interpolate","input","output","isClamp","ease","mixer","inputLength","length","reverse","mixers","customMixer","mixerFactory","numMixers","i","easingFunction","Array","isArray","createMixers","interpolator","progressInRange","isBrowser","document","isNumericalString","test","isRefObject","ref","Object","prototype","hasOwnProperty","call","isZeroValueString","memo","result","undefined","hueToRgb","p","q","t","mixImmediate","mixLinearColor","from","to","fromExpo","expo","colorTypes","hex","rgba","hsla","asRGBA","color","type","find","Boolean","model","parse","hue","saturation","lightness","alpha","red","green","blue","round","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","transform","invisibleValues","Set","mixNumber","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","map","key","origin","target","template","complex","createTransformer","originStats","targetStats","indexes","var","number","has","values","mixVisibility","pipe","_a","orderedOrigin","pointers","types","originIndex","originValue","matchOrder","mix","progress","noop","any","defaultOffset","offset","remaining","offsetProgress","fillOffset","convertOffsetToTimes","duration","o","combineFunctions","transformers","reduce","value","toFromDifference","initPrefersReducedMotion","window","matchMedia","motionMediaQuery","setReducedMotionPreferences","matches","addListener","prefersReducedMotion","hasReducedMotionListener","isCustomValue","toValue","resolveFinalValueInKeyframes","shallowCompare","next","prev","prevLength","SubscriptionManager","constructor","this","subscriptions","add","handler","notify","c","numSubscriptions","getSize","clear","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","useConstant","init","useRef","useForceUpdate","isMounted","forcedRenderCount","setForcedRenderCount","useState","forceRender","useCallback","postRender","instantAnimationState","useIsMounted","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useUnmountEffect","velocityPerSecond","velocity","frameDuration"],"sourceRoot":""}