{"version":3,"file":"static/chunks/9696-86ad2a309d399086.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/ease.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/back.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/utils/map.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/js/driver-frameloop.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/js/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/memo.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animators/instant.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/circ.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/hover.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/focus.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/press.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/layout.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/debug/record.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/store.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/VisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs"],"sourcesContent":["const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean(!easing ||\n (typeof easing === \"string\" && supportedWaapiEasing[easing]) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing) {\n if (!easing)\n return undefined;\n return isBezierDefinition(easing)\n ? cubicBezierAsString(easing)\n : Array.isArray(easing)\n ? easing.map(mapEasingToNativeEasing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n return element.animate(keyframeOptions, {\n delay,\n duration,\n easing: !Array.isArray(easing) ? easing : \"linear\",\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n}\n\nexport { animateStyle };\n","function getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }) {\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : keyframes.length - 1;\n return keyframes[index];\n}\n\nexport { getFinalKeyframe };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nexport { defaultEasing, keyframes };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n velocity: 0.0,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n const initialVelocity = velocity ? -millisecondsToSeconds(velocity) : 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value),\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t > timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: () => frame.update(passTimestamp, true),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => frameData.isProcessing ? frameData.timestamp : performance.now(),\n };\n};\n\nexport { frameloopDriver };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","import { keyframes } from '../../generators/keyframes.mjs';\nimport { spring } from '../../generators/spring/index.mjs';\nimport { inertia } from '../../generators/inertia.mjs';\nimport { frameloopDriver } from './driver-frameloop.mjs';\nimport { interpolate } from '../../../utils/interpolate.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorDuration } from '../../generators/utils/calc-duration.mjs';\n\nconst types = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\n/**\n * Animate a single value on the main thread.\n *\n * This function is written, where functionality overlaps,\n * to be largely spec-compliant with WAAPI to allow fungibility\n * between the two.\n */\nfunction animateValue({ autoplay = true, delay = 0, driver = frameloopDriver, keyframes: keyframes$1, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", onPlay, onStop, onComplete, onUpdate, ...options }) {\n let speed = 1;\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let animationDriver;\n const generatorFactory = types[type] || keyframes;\n /**\n * If this isn't the keyframes generator and we've been provided\n * strings as keyframes, we need to interpolate these.\n * TODO: Support velocity for units and complex value types/\n */\n let mapNumbersToKeyframes;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n mapNumbersToKeyframes = interpolate([0, 100], keyframes$1, {\n clamp: false,\n });\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n let mirroredGenerator;\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -(options.velocity || 0),\n });\n }\n let playState = \"idle\";\n let holdTime = null;\n let startTime = null;\n let cancelTime = null;\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null && repeat) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n let resolvedDuration = Infinity;\n let totalDuration = Infinity;\n if (calculatedDuration !== null) {\n resolvedDuration = calculatedDuration + repeatDelay;\n totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n }\n let currentTime = 0;\n const tick = (timestamp) => {\n if (startTime === null)\n return;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (speed > 0)\n startTime = Math.min(startTime, timestamp);\n if (speed < 0)\n startTime = Math.min(timestamp - totalDuration / speed, startTime);\n if (holdTime !== null) {\n currentTime = holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n currentTime = Math.round(timestamp - startTime) * speed;\n }\n // Rebase on delay\n const timeWithoutDelay = currentTime - delay * (speed >= 0 ? 1 : -1);\n const isInDelayPhase = speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n currentTime = Math.max(timeWithoutDelay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (playState === \"finished\" && holdTime === null) {\n currentTime = totalDuration;\n }\n let elapsed = currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = currentTime / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const iterationIsOdd = Boolean(currentIteration % 2);\n if (iterationIsOdd) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n let p = clamp(0, 1, iterationProgress);\n if (currentTime > totalDuration) {\n p = repeatType === \"reverse\" && iterationIsOdd ? 1 : 0;\n }\n elapsed = p * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n const state = isInDelayPhase\n ? { done: false, value: keyframes$1[0] }\n : frameGenerator.next(elapsed);\n if (mapNumbersToKeyframes) {\n state.value = mapNumbersToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done = speed >= 0 ? currentTime >= totalDuration : currentTime <= 0;\n }\n const isAnimationFinished = holdTime === null &&\n (playState === \"finished\" || (playState === \"running\" && done));\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n finish();\n }\n return state;\n };\n const stopAnimationDriver = () => {\n animationDriver && animationDriver.stop();\n animationDriver = undefined;\n };\n const cancel = () => {\n playState = \"idle\";\n stopAnimationDriver();\n resolveFinishedPromise();\n updateFinishedPromise();\n startTime = cancelTime = null;\n };\n const finish = () => {\n playState = \"finished\";\n onComplete && onComplete();\n stopAnimationDriver();\n resolveFinishedPromise();\n };\n const play = () => {\n if (hasStopped)\n return;\n if (!animationDriver)\n animationDriver = driver(tick);\n const now = animationDriver.now();\n onPlay && onPlay();\n if (holdTime !== null) {\n startTime = now - holdTime;\n }\n else if (!startTime || playState === \"finished\") {\n startTime = now;\n }\n if (playState === \"finished\") {\n updateFinishedPromise();\n }\n cancelTime = startTime;\n holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n playState = \"running\";\n animationDriver.start();\n };\n if (autoplay) {\n play();\n }\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n get time() {\n return millisecondsToSeconds(currentTime);\n },\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n currentTime = newTime;\n if (holdTime !== null || !animationDriver || speed === 0) {\n holdTime = newTime;\n }\n else {\n startTime = animationDriver.now() - newTime / speed;\n }\n },\n get duration() {\n const duration = generator.calculatedDuration === null\n ? calcGeneratorDuration(generator)\n : generator.calculatedDuration;\n return millisecondsToSeconds(duration);\n },\n get speed() {\n return speed;\n },\n set speed(newSpeed) {\n if (newSpeed === speed || !animationDriver)\n return;\n speed = newSpeed;\n controls.time = millisecondsToSeconds(currentTime);\n },\n get state() {\n return playState;\n },\n play,\n pause: () => {\n playState = \"paused\";\n holdTime = currentTime;\n },\n stop: () => {\n hasStopped = true;\n if (playState === \"idle\")\n return;\n playState = \"idle\";\n onStop && onStop();\n cancel();\n },\n cancel: () => {\n if (cancelTime !== null)\n tick(cancelTime);\n cancel();\n },\n complete: () => {\n playState = \"finished\";\n },\n sample: (elapsed) => {\n startTime = 0;\n return tick(elapsed);\n },\n };\n return controls;\n}\n\nexport { animateValue };\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","import { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\nimport { animateValue } from '../js/index.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { memo } from '../../../utils/memo.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { frameData, frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n \"backgroundColor\",\n]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\nconst requiresPregeneratedKeyframes = (valueName, options) => options.type === \"spring\" ||\n valueName === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease);\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supportsWaapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0 &&\n options.type !== \"inertia\";\n if (!canAccelerateAnimation)\n return false;\n /**\n * TODO: Unify with js/index\n */\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let { keyframes, duration = 300, ease, times } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(valueName, options)) {\n const sampleAnimation = animateValue({\n ...options,\n repeat: 0,\n delay: 0,\n });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < maxDuration) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n times = undefined;\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n duration,\n /**\n * This function is currently not called if ease is provided\n * as a function so the cast is safe.\n *\n * However it would be possible for a future refinement to port\n * in easing pregeneration from Motion One for browsers that\n * support the upcoming `linear()` easing function.\n */\n ease: ease,\n times,\n });\n /**\n * WAAPI animations don't resolve startTime synchronously. But a blocked\n * thread could delay the startTime resolution by a noticeable amount.\n * For synching handoff animations with the new Motion animation we want\n * to ensure startTime is synchronously set.\n */\n if (options.syncStart) {\n animation.startTime = frameData.isProcessing\n ? frameData.timestamp\n : document.timeline\n ? document.timeline.currentTime\n : performance.now();\n }\n const cancelAnimation = () => animation.cancel();\n const safeCancel = () => {\n frame.update(cancelAnimation);\n resolveFinishedPromise();\n updateFinishedPromise();\n };\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n value.set(getFinalKeyframe(keyframes, options));\n onComplete && onComplete();\n safeCancel();\n };\n /**\n * Animation interrupt callback.\n */\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n attachTimeline(timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n return noop;\n },\n get time() {\n return millisecondsToSeconds(animation.currentTime || 0);\n },\n set time(newTime) {\n animation.currentTime = secondsToMilliseconds(newTime);\n },\n get speed() {\n return animation.playbackRate;\n },\n set speed(newSpeed) {\n animation.playbackRate = newSpeed;\n },\n get duration() {\n return millisecondsToSeconds(duration);\n },\n play: () => {\n if (hasStopped)\n return;\n animation.play();\n /**\n * Cancel any pending cancel tasks\n */\n cancelFrame(cancelAnimation);\n },\n pause: () => animation.pause(),\n stop: () => {\n hasStopped = true;\n if (animation.playState === \"idle\")\n return;\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n const { currentTime } = animation;\n if (currentTime) {\n const sampleAnimation = animateValue({\n ...options,\n autoplay: false,\n });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n safeCancel();\n },\n complete: () => animation.finish(),\n cancel: safeCancel,\n };\n return controls;\n}\n\nexport { createAcceleratedAnimation };\n","import { animateValue } from './js/index.mjs';\nimport { noop } from '../../utils/noop.mjs';\n\nfunction createInstantAnimation({ keyframes, delay, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n /**\n * TODO: As this API grows it could make sense to always return\n * animateValue. This will be a bigger project as animateValue\n * is frame-locked whereas this function resolves instantly.\n * This is a behavioural change and also has ramifications regarding\n * assumptions within tests.\n */\n return {\n time: 0,\n speed: 1,\n duration: 0,\n play: (noop),\n pause: (noop),\n stop: (noop),\n then: (resolve) => {\n resolve();\n return Promise.resolve();\n },\n cancel: (noop),\n complete: (noop),\n };\n };\n return delay\n ? animateValue({\n keyframes: [0, 1],\n duration: 0,\n delay,\n onComplete: setValue,\n })\n : setValue();\n}\n\nexport { createInstantAnimation };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n}\n\nexport { isNone };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isNone } from './is-none.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let keyframes;\n if (Array.isArray(target)) {\n keyframes = [...target];\n }\n else {\n keyframes = [null, target];\n }\n const defaultOrigin = transition.from !== undefined ? transition.from : value.get();\n let animatableTemplateValue = undefined;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < keyframes.length; i++) {\n /**\n * Fill null/wildcard keyframes\n */\n if (keyframes[i] === null) {\n keyframes[i] = i === 0 ? defaultOrigin : keyframes[i - 1];\n }\n if (isNone(keyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n // TODO: Clean this conditional, it works for now\n if (typeof keyframes[i] === \"string\" &&\n keyframes[i] !== \"none\" &&\n keyframes[i] !== \"0\") {\n animatableTemplateValue = keyframes[i];\n }\n }\n if (isTargetAnimatable &&\n noneKeyframeIndexes.length &&\n animatableTemplateValue) {\n for (let i = 0; i < noneKeyframeIndexes.length; i++) {\n const index = noneKeyframeIndexes[i];\n keyframes[index] = getAnimatableNone(valueName, animatableTemplateValue);\n }\n }\n return keyframes;\n}\n\nexport { getKeyframes };\n","import { warning } from '../../utils/errors.mjs';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from '../animators/waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from '../animators/instant.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isAnimatable } from '../utils/is-animatable.mjs';\nimport { getKeyframes } from '../utils/keyframes.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { animateValue } from '../animators/js/index.mjs';\n\nconst animateMotionValue = (valueName, value, target, transition = {}) => {\n return (onComplete) => {\n const valueTransition = getValueTransition(transition, valueName) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n const keyframes = getKeyframes(value, valueName, target, valueTransition);\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n let options = {\n keyframes,\n velocity: value.getVelocity(),\n ease: \"easeOut\",\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(valueName, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n if (!isOriginAnimatable ||\n !isTargetAnimatable ||\n instantAnimationState.current ||\n valueTransition.type === false) {\n /**\n * If we can't animate this value, or the global instant animation flag is set,\n * or this is simply defined as an instant transition, return an instant transition.\n */\n return createInstantAnimation(instantAnimationState.current\n ? { ...options, delay: 0 }\n : options);\n }\n /**\n * Animate via WAAPI if possible.\n */\n if (value.owner &&\n value.owner.current instanceof HTMLElement &&\n !value.owner.getProps().onUpdate) {\n const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n if (acceleratedAnimation)\n return acceleratedAnimation;\n }\n /**\n * If we didn't create an accelerated animation, create a JS animation\n */\n return animateValue(options);\n };\n};\n\nexport { animateMotionValue };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, isTransitionDefined };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\n\nexport { circIn, circInOut, circOut };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[pointType + \"X\"],\n y: event[pointType + \"Y\"],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\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 { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { optimizedAppearDataAttribute } from '../optimized-appear/data-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...transition,\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n if (window.HandoffAppearAnimations && !value.hasAnimated) {\n const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n if (appearId) {\n valueTransition.elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n valueTransition.syncStart = true;\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n const animation = value.animation;\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n const resolved = resolveVariant(visualElement, variant, options.custom);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\n\nexport { animateVisualElement };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(options, changedActiveType) {\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined ? props[type] : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev) || variantDidChange) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type, ...options },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive, options) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() { }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete, custom } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent, { custom: custom !== null && custom !== void 0 ? custom : this.node.getProps().custom });\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\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 { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const { onEnd, onSessionEnd } = this.handlers;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mix } from '../../../utils/mix.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic ? mix(min, point, elastic.min) : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic ? mix(max, point, elastic.max) : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, calcOrigin } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n // Stop any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.update(() => onDragStart(event, info), false, true);\n }\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.update(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n const { dragConstraints, dragElastic } = this.getProps();\n const { layout } = this.visualElement.projection || {};\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = \"_drag\" + axis.toUpperCase();\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : undefined) || 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.layoutBox[axis];\n axisValue.set(point[axis] - mix(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mix(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints)) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n measureDragConstraints();\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.update(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), { transformPagePoint: this.node.getTransformPagePoint() });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.update(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = \"pointer\" + (isActive ? \"enter\" : \"leave\");\n const callbackName = \"onHover\" + (isActive ? \"Start\" : \"End\");\n const handleEvent = (event, info) => {\n if (event.type === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n if (props[callbackName]) {\n frame.update(() => props[callbackName](event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removeStartListeners = noop;\n this.removeEndListeners = noop;\n this.removeAccessibleListeners = noop;\n this.startPointerPress = (startEvent, startInfo) => {\n this.removeEndListeners();\n if (this.isPressing)\n return;\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel } = this.node.getProps();\n frame.update(() => {\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel && onTapCancel(endEvent, endInfo)\n : onTap && onTap(endEvent, endInfo);\n });\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, { passive: !(props.onTap || props[\"onPointerUp\"]) });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), { passive: !(props.onTapCancel || props[\"onPointerCancel\"]) });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.update(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n frame.update(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.update(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(this.node.current, \"pointerdown\", this.startPointerPress, { passive: !(props.onTapStart || props[\"onPointerStart\"]) });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return \n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mix } from '../../utils/mix.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mix(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import React__default, { useContext } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends React__default.Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n queueMicrotask(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (React__default.createElement(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","import { mix } from '../../utils/mix.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const instance = node.instance;\n if (instance &&\n instance.style &&\n instance.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { mix } from '../../utils/mix.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mix(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mix(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mix(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { mix } from '../../utils/mix.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mix(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction boxEqualsRounded(a, b) {\n return (Math.round(a.x.min) === Math.round(b.x.min) &&\n Math.round(a.x.max) === Math.round(b.x.max) &&\n Math.round(a.y.min) === Math.round(b.y.min) &&\n Math.round(a.y.max) === Math.round(b.y.max));\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n if (xTranslate || yTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { rotate, rotateX, rotateY } = latestTransform;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = performance.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","function record(data) {\n if (window.MotionDebug) {\n window.MotionDebug.record(data);\n }\n}\n\nexport { record };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { record } from '../../debug/record.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\n/**\n * Use a mutable data object for debug data so as to not create a new\n * object every frame.\n */\nconst projectionFrameData = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n projectionFrameData.totalNodes =\n projectionFrameData.resolvedTargetDeltas =\n projectionFrameData.recalculatedProjection =\n 0;\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n record(projectionFrameData);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = performance.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n queueMicrotask(() => this.update());\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n frame.preRender(this.updateProjection, false, true);\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n projectionFrameData.resolvedTargetDeltas++;\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.projectionTransform) {\n this.projectionDelta = createDelta();\n this.projectionTransform = \"none\";\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n projectionFrameData.recalculatedProjection++;\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n this.options.scheduleRender && this.options.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n let hasRotate = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ) {\n hasRotate = true;\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n const resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n const key = \"rotate\" + transformAxes[i];\n // Record the rotation and then temporarily set it to 0\n if (latestValues[key]) {\n resetValues[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n }\n }\n // Force a render of this element to apply the transform with all rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp = {}) {\n var _a, _b;\n // TODO: Return lifecycle-persistent object\n const styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n projectionFrameData.totalNodes++;\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n else if (isCSSVariableToken(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.current;\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.values.forEach((value) => {\n const current = value.get();\n if (!isCSSVariableToken(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariableToken(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n if (!transitionEnd)\n transitionEnd = {};\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { parseCSSVariable, resolveCSSVariables };\n","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from '../../../utils/errors.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\n};\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.current;\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n value && value.jump(origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n /**\n * Don't allow wildcard keyframes to be used to detect\n * a difference in value types.\n */\n if (to[i] === null)\n break;\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n value.jump(to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\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 { 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","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"10.16.5\", `Attempting to mix Framer Motion versions ${nextValue.version} with 10.16.5 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n constructor({ parent, props, presenceContext, reducedMotionConfig, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps) {\n return {};\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n visualElementStore.delete(this.current);\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n this.features[key].unmount();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate &&\n frame.update(this.notifyUpdate, false, true);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n renderedProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent, } = featureDefinitions[name];\n if (ProjectionNode)\n ProjectionNodeConstructor = ProjectionNode;\n if (isEnabled(renderedProps)) {\n if (!this.features[name] && FeatureConstructor) {\n this.features[name] = new FeatureConstructor(this);\n }\n if (MeasureLayoutComponent) {\n MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if (!this.projection && ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent && this.parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listener = props[\"on\" + key];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n getVariantContext(startAtParent = false) {\n if (startAtParent) {\n return this.parent ? this.parent.getVariantContext() : undefined;\n }\n if (!this.isControllingVariants) {\n const context = this.parent\n ? this.parent.getVariantContext() || {}\n : {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = this.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n if (value !== this.values.get(key)) {\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n }\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key) {\n var _a;\n return this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n}\n\nexport { VisualElement };\n","import { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { parseDomVariant } from './utils/parse-dom-variant.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style ? props.style[key] : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n let origin = getOrigin(target, transition || {}, this);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (isMounted) {\n checkTargetForNewValues(this, target, origin);\n const parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.values.forEach((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n if (value !== null)\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n if (transitionOrigin !== undefined) {\n origin[key] = transitionOrigin;\n }\n else {\n const value = visualElement.getValue(key);\n if (value) {\n origin[key] = value.get();\n }\n }\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\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+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\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 { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n"],"names":["result","callback","instantAnimationState","current","isBezierDefinition","Array","isArray","easing","cubicBezierAsString","a","b","c","d","supportedWaapiEasing","linear","ease","easeIn","easeOut","easeInOut","circIn","circOut","backIn","backOut","calcBezier","t","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","noop","Z","getTForX","binarySubdivide","x","lowerBound","upperBound","currentX","currentT","i","Math","abs","aX","isEasingArray","reverse","M","backInOut","mirror","o","easingLookup","circ","Z7","circInOut","X7","Bn","anticipate","p","pow","easingDefinitionToFunction","definition","errors","k","length","x1","y1","x2","y2","undefined","keyframes","duration","keyframeValues","times","easingFunctions","map","state","done","value","absoluteTimes","offset","offsets_default","Y","mapTimeToKeyframe","interpolate","s","values","splice","calculatedDuration","next","calcGeneratorVelocity","resolveValue","prevT","max","velocity_per_second","R","calcAngularFreq","undampedFreq","dampingRatio","sqrt","durationKeys","physicsKeys","isSpringType","options","keys","some","key","spring","restDelta","restSpeed","resolveSpring","origin","target","stiffness","damping","mass","velocity","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","K","time_conversion","w","clamp","u","X","exponentialDecay","delta","safeMin","exp","e","g","approximateRoot","initialGuess","isNaN","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","sin","cos","dampedAngularFreq","freqForT","min","sinh","cosh","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","timeReachedBoundary","spring$1","isOutOfBounds","v","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","checkCatchBoundary","hasUpdatedFrame","frameloopDriver","passTimestamp","timestamp","update","start","frameloop_frame","Wi","stop","Pn","now","frameData","isProcessing","performance","calcGeneratorDuration","generator","Infinity","types","decay","tween","animateValue","autoplay","delay","driver","keyframes$1","type","repeat","repeatDelay","repeatType","onPlay","onStop","onComplete","onUpdate","resolveFinishedPromise","currentFinishedPromise","animationDriver","mapNumbersToKeyframes","mirroredGenerator","speed","hasStopped","updateFinishedPromise","Promise","resolve","generatorFactory","playState","holdTime","startTime","cancelTime","resolvedDuration","totalDuration","currentTime","tick","timeWithoutDelay","round","isInDelayPhase","elapsed","frameGenerator","progress","currentIteration","floor","iterationProgress","iterationIsOdd","Boolean","isAnimationFinished","finish","stopAnimationDriver","cancel","play","controls","then","reject","time","newTime","newSpeed","pause","complete","sample","supportsWaapi","Object","hasOwnProperty","call","Element","prototype","acceleratedValues","Set","requiresPregeneratedKeyframes","valueName","isWaapiSupportedEasing","every","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","transform","G","has","startsWith","isAnimatable","complex","P","test","animateMotionValue","transition","valueTransition","transitions","getKeyframes","animatableTemplateValue","isTargetAnimatable","defaultOrigin","from","get","noneKeyframeIndexes","is_zero_value_string","W","push","animatable_none","T","originKeyframe","targetKeyframe","isOriginAnimatable","getVelocity","set","r","createInstantAnimation","setValue","owner","HTMLElement","getProps","acceleratedAnimation","createAcceleratedAnimation","sampleAnimation","pregeneratedKeyframes","animation","animateStyle","element","keyframeOptions","mapEasingToNativeEasing","animate","fill","iterations","direction","syncStart","document","timeline","cancelAnimation","safeCancel","onfinish","getFinalKeyframe","index","attachTimeline","playbackRate","setWithVelocity","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","getValueTransition","acos","_modifiers_reverse_mjs__WEBPACK_IMPORTED_MODULE_0__","_modifiers_mirror_mjs__WEBPACK_IMPORTED_MODULE_1__","mirrorEasing","reverseEasing","addDomEvent","eventName","handler","passive","addEventListener","removeEventListener","addPointerEvent","_add_dom_event_mjs__WEBPACK_IMPORTED_MODULE_0__","E","_event_info_mjs__WEBPACK_IMPORTED_MODULE_1__","extractEventInfo","event","pointType","point","y","addPointerInfo","_utils_is_primary_pointer_mjs__WEBPACK_IMPORTED_MODULE_0__","D","isPrimaryPointer","pointerType","button","isPrimary","createLock","name","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","constructor","node","isMounted","shallowCompare","prev","prevLength","optimizedAppearDataAttribute","camel_to_dash","animateTarget","visualElement","transitionOverride","transitionEnd","makeTargetAnimatable","willChange","getValue","animations","animationTypeState","animationState","getState","valueTarget","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","window","HandoffAppearAnimations","hasAnimated","appearId","motion_value","shouldReduceMotion","is","L","add","remove","all","setters","CD","animateVariant","variant","resolved","resolve_dynamic_variants","custom","getAnimation","getChildAnimations","variantChildren","size","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sort","sortByTreeOrder","forEach","child","notify","first","last","sortNodePosition","reversePriorityOrder","variant_props","numAnimationTypes","createTypeState","isActive","prevResolvedValues","AnimationFeature","createAnimationState","animateVisualElement","resolvedDefinition","whileInView","whileHover","whileTap","whileDrag","whileFocus","exit","isInitialRender","buildResolvedTypeValues","acc","animateChanges","changedActiveType","props","context","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","prop","propIsVariant","is_variant_label","$","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","is_animation_controls","H","variantDidChange","shouldAnimateType","definitionList","resolvedValues","reduce","allKeys","markToAnimate","delete","is_keyframes_target","C","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","initial","setActive","_a","setAnimateFunction","makeAnimator","updateAnimationControlsSubscription","unmount","subscribe","mount","prevAnimate","prevProps","id","ExitAnimationFeature","arguments","presenceContext","isPresent","onExitComplete","prevIsPresent","prevPresenceContext","exitAnimation","register","distance","PanSession","handlers","transformPagePoint","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","info","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","panInfo","is_primary_pointer","initialInfo","event_info","Q","onSessionStart","removeListeners","pipe","z","add_pointer_event","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","calcRelativeAxisConstraints","axis","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","elementDragControls","WeakMap","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","originPoint","constraints","hasMutatedConstraints","elastic","models","dO","originEvent","snapToCursor","panSession","stopAnimation","dragPropagation","onDragStart","fJ","resolveConstraints","projection","isAnimationBlocked","each_axis","U","getAxisMotionValue","units","aQ","layout","measuredAxis","layoutBox","delta_calc","JO","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","render","getTransformPagePoint","startAnimation","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","mix","dragConstraints","prevConstraints","is_ref_object","I","resolveRefConstraints","calcRelativeConstraints","top","left","bottom","right","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measure","root","measuredConstraints","userConstraints","conversion","z2","i8","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","startAxisValueAnimation","dragKey","toUpperCase","externalMotionValue","scalePositionWithinConstraints","boxProgress","calcOrigin","source","sourceLength","targetLength","transformTemplate","style","updateScroll","updateLayout","addListeners","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","add_dom_event","stopLayoutUpdateListener","hasLayoutChanged","motionValue","translate","DragGesture","removeGroupControls","dragControls","asyncHandler","PanGesture","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","pan","ProjectionNode","HTMLProjectionNode","MeasureLayout","q","addHoverEvent","callbackName","gD","HoverGesture","FocusGesture","onFocus","isFocusVisible","matches","onBlur","isNodeOrChild","parent","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startInfo","isPressing","removePointerUpListener","endEvent","endInfo","checkPressEnd","onTap","onTapCancel","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","removeKeydownListener","keydownEvent","keyupEvent","removeBlurListener","onTapStart","removePointerListener","removeFocusListener","observerCallbacks","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","InViewFeature","hasEnteredView","isInView","startObserver","viewport","margin","rootMargin","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","JSON","stringify","IntersectionObserver","observe","unobserve","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","gestureAnimations","inView","tap","focus","hover","_projection_node_HTMLProjectionNode_mjs__WEBPACK_IMPORTED_MODULE_0__","_layout_MeasureLayout_mjs__WEBPACK_IMPORTED_MODULE_1__","pixelsToPercent","pixels","correctBorderRadius","correct","px","parseFloat","MeasureLayoutWithContext","react","Component","componentDidMount","layoutGroup","switchLayoutGroup","layoutId","scale_correction","B","defaultScaleCorrectors","group","didUpdate","safeToRemove","setOptions","V","hasEverUpdated","getSnapshotBeforeUpdate","layoutDependency","willUpdate","promote","relegate","postRender","stack","getStack","members","componentDidUpdate","queueMicrotask","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","usePresence","useContext","context_PresenceContext","O","useId","useEffect","LayoutGroupContext","createElement","SwitchLayoutGroupContext","borderRadius","applyTo","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","boxShadow","treeScale","projectionDelta","shadow","parse","template","createTransformer","xScale","scale","yScale","averageScale","convertBoundingBoxToBox","convertBoxToBoundingBox","transformBoxPoints","topLeft","bottomRight","scalePoint","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","applyTreeDeltas","treePath","isSharedTransition","treeLength","instance","display","layoutScroll","scroll","transformBox","_utils_has_transform_mjs__WEBPACK_IMPORTED_MODULE_0__","ud","latestValues","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","_utils_mix_mjs__WEBPACK_IMPORTED_MODULE_1__","xKeys","yKeys","calcLength","isNear","maxDistance","calcAxisDelta","_utils_mix_mjs__WEBPACK_IMPORTED_MODULE_0__","calcBoxDelta","originX","originY","calcRelativeAxis","relative","calcRelativeBox","calcRelativeAxisPosition","calcRelativePosition","createAxisDelta","createDelta","createAxis","createBox","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","delta_apply","q2","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEqualsRounded","aspectRatio","NodeStack","array","y4","scheduleRender","cl","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","rotate","rotateX","rotateY","elementScaleX","elementScaleY","compareByDepth","depth","FlatTree","children","isDirty","transformAxes","projectionFrameData","totalNodes","resolvedTargetDeltas","recalculatedProjection","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","Map","hasTreeAnimated","updateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","MotionDebug","record","hasProjected","isVisible","animationProgress","sharedNodes","path","subscription_manager","notifyListeners","args","subscriptionManager","hasListeners","SVGElement","tagName","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","read","hasAnimatedSinceResize","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetRotation","getTransformTemplate","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","S6","process","preRender","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","has_transform","removeTransform","pageBox","measurePageBox","removeElementScroll","roundAxis","measuredBox","measureViewportBox","am","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","D2","boxWithoutTransform","Lj","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","resolvedRelativeTargetAt","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","b3","targetWithTransforms","tf","o2","D_","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","YY","projectionTransform","wc","projectionDeltaWithTransform","prevProjectionTransform","y$","notifyAll","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","output","mixAxis","to","mixValues","follow","opacity","opacityExit","borderLabel","followRadius","leadRadius","animateSingleValue","motionValue$1","is_motion_value","es_value","BX","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","config","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasRotate","rotateZ","resetValues","setStaticValue","getProjectionStyles","styleProp","_b","styles","visibility","pointerEvents","resolve_motion_value","emptyStyles","valuesToRender","transformOrigin","corrected","num","resetTree","clear","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","toLowerCase","includes","string","roundPoint","wS","DocumentProjectionNode","ref","documentElement","scrollLeft","body","scrollTop","rootProjectionNode","documentNode","getComputedStyle","position","globalProjectionState","eachAxis","isIdentityScale","hasScale","scaleX","scaleY","hasTransform","has2DTranslate","is2DTranslate","_geometry_conversion_mjs__WEBPACK_IMPORTED_MODULE_0__","d7","getBoundingClientRect","viewportBox","_geometry_delta_apply_mjs__WEBPACK_IMPORTED_MODULE_1__","splitCSSVariableRegex","getVariableValue","token","fallback","parseCSSVariable","match","exec","getPropertyValue","trimmed","trim","is_numerical_string","is_css_variable","tm","positionalKeys","isPositionalKey","hasPositionalKey","isNumOrPxType","numbers","Rx","getPosFromMatrix","matrix","pos","split","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","_","filter","positionalValues","width","paddingLeft","paddingRight","height","paddingTop","paddingBottom","translateX","translateY","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","targetBbox","jump","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","hasValue","fromType","dimensions","numKeyframes","fromIndex","removeNonTranslationalTransform","removedTransforms","scrollY","indexOf","pageYOffset","convertedTarget","is_browser","j","scrollTo","parseDomVariant","resolveCSSVariables","prefersReducedMotion","hasReducedMotionListener","visualElementStore","featureNames","definitions","A","numFeatures","propEventHandlers","numVariantProps","VisualElement","reducedMotionConfig","visualState","isVariantNode","isControllingVariants","features","valueSubscriptions","prevMotionValues","events","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","renderState","baseTarget","initialValues","is_controlling_variants","initialMotionValues","scrapeMotionValuesFromProps","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","matchMedia","motionMediaQuery","setReducedMotionPreferences","addListener","valueIsTransform","removeOnChange","on","latestValue","removeOnRenderRequest","other","sortInstanceNodePosition","loadFeatures","renderedProps","isStrict","preloadedFeatures","initialLayoutGroupConfig","ProjectionNodeConstructor","isEnabled","FeatureConstructor","MeasureLayoutComponent","updateFeatures","feature","build","measureInstanceViewportBox","getStaticValue","canMutate","makeTargetAnimatableFromInstance","listener","updateMotionValuesFromProps","nextValue","prevValue","addValue","existingValue","removeValue","handleChildMotionValue","getVariant","variants","getClosestVariantNode","startAtParent","closestVariantNode","unsubscribe","removeValueFromRenderState","defaultValue","readValue","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","resolve_variants","DOMVisualElement","compareDocumentPosition","vars","transformValues","P$","GJ","parsed","HTMLVisualElement","defaultType","defaults","default","computedStyle","f9","J","build_styles","scrape_motion_values","childSubscription","textContent","N","SVGVisualElement","isSVGTag","getAttribute","utils_scrape_motion_values","build_attrs","utils_render","is_svg_tag","createDomVisualElement","is_svg_component","enableHardwareAcceleration","getAnimatableNone","defaultValueType","_defaults_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_1__","h","_value_types_complex_index_mjs__WEBPACK_IMPORTED_MODULE_2__","defaultValueTypes","_number_mjs__WEBPACK_IMPORTED_MODULE_0__","color","_value_types_color_index_mjs__WEBPACK_IMPORTED_MODULE_1__","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_2__","WebkitFilter","getDefaultValueType","dimensionValueTypes","RW","vw","vh","findDimensionValueType","find","l","testValueType","resolveVariant","_resolve_variants_mjs__WEBPACK_IMPORTED_MODULE_0__","getCurrent","valueTypes","findValueType","setTarget","resolve_value","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","getOrigin","transitionOrigin","getOriginFromTransition","isNumericalString","isZeroValueString","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","maxDefaults","applyDefaultFilter","slice","number","_utils_mjs__WEBPACK_IMPORTED_MODULE_0__","KP","unit","replace","functionRegex","_index_mjs__WEBPACK_IMPORTED_MODULE_1__","functions","join","isWillChangeMotionValue","_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_0__"],"sourceRoot":""}