📚 Documentação inicial do ALETHEIA
- MANUAL-PRODUTO.md: Manual do usuário final - MANUAL-VENDAS.md: Estratégia comercial e vendas - MANUAL-TECNICO.md: Infraestrutura e deploy - README.md: Visão geral do projeto
This commit is contained in:
164
frontend/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs
generated
vendored
Normal file
164
frontend/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';
|
||||
import { frame } from '../../frameloop/frame.mjs';
|
||||
|
||||
const toResolve = new Set();
|
||||
let isScheduled = false;
|
||||
let anyNeedsMeasurement = false;
|
||||
function measureAllKeyframes() {
|
||||
if (anyNeedsMeasurement) {
|
||||
const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);
|
||||
const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));
|
||||
const transformsToRestore = new Map();
|
||||
/**
|
||||
* Write pass
|
||||
* If we're measuring elements we want to remove bounding box-changing transforms.
|
||||
*/
|
||||
elementsToMeasure.forEach((element) => {
|
||||
const removedTransforms = removeNonTranslationalTransform(element);
|
||||
if (!removedTransforms.length)
|
||||
return;
|
||||
transformsToRestore.set(element, removedTransforms);
|
||||
element.render();
|
||||
});
|
||||
// Read
|
||||
resolversToMeasure.forEach((resolver) => resolver.measureInitialState());
|
||||
// Write
|
||||
elementsToMeasure.forEach((element) => {
|
||||
element.render();
|
||||
const restore = transformsToRestore.get(element);
|
||||
if (restore) {
|
||||
restore.forEach(([key, value]) => {
|
||||
var _a;
|
||||
(_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);
|
||||
});
|
||||
}
|
||||
});
|
||||
// Read
|
||||
resolversToMeasure.forEach((resolver) => resolver.measureEndState());
|
||||
// Write
|
||||
resolversToMeasure.forEach((resolver) => {
|
||||
if (resolver.suspendedScrollY !== undefined) {
|
||||
window.scrollTo(0, resolver.suspendedScrollY);
|
||||
}
|
||||
});
|
||||
}
|
||||
anyNeedsMeasurement = false;
|
||||
isScheduled = false;
|
||||
toResolve.forEach((resolver) => resolver.complete());
|
||||
toResolve.clear();
|
||||
}
|
||||
function readAllKeyframes() {
|
||||
toResolve.forEach((resolver) => {
|
||||
resolver.readKeyframes();
|
||||
if (resolver.needsMeasurement) {
|
||||
anyNeedsMeasurement = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
function flushKeyframeResolvers() {
|
||||
readAllKeyframes();
|
||||
measureAllKeyframes();
|
||||
}
|
||||
class KeyframeResolver {
|
||||
constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {
|
||||
/**
|
||||
* Track whether this resolver has completed. Once complete, it never
|
||||
* needs to attempt keyframe resolution again.
|
||||
*/
|
||||
this.isComplete = false;
|
||||
/**
|
||||
* Track whether this resolver is async. If it is, it'll be added to the
|
||||
* resolver queue and flushed in the next frame. Resolvers that aren't going
|
||||
* to trigger read/write thrashing don't need to be async.
|
||||
*/
|
||||
this.isAsync = false;
|
||||
/**
|
||||
* Track whether this resolver needs to perform a measurement
|
||||
* to resolve its keyframes.
|
||||
*/
|
||||
this.needsMeasurement = false;
|
||||
/**
|
||||
* Track whether this resolver is currently scheduled to resolve
|
||||
* to allow it to be cancelled and resumed externally.
|
||||
*/
|
||||
this.isScheduled = false;
|
||||
this.unresolvedKeyframes = [...unresolvedKeyframes];
|
||||
this.onComplete = onComplete;
|
||||
this.name = name;
|
||||
this.motionValue = motionValue;
|
||||
this.element = element;
|
||||
this.isAsync = isAsync;
|
||||
}
|
||||
scheduleResolve() {
|
||||
this.isScheduled = true;
|
||||
if (this.isAsync) {
|
||||
toResolve.add(this);
|
||||
if (!isScheduled) {
|
||||
isScheduled = true;
|
||||
frame.read(readAllKeyframes);
|
||||
frame.resolveKeyframes(measureAllKeyframes);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.readKeyframes();
|
||||
this.complete();
|
||||
}
|
||||
}
|
||||
readKeyframes() {
|
||||
const { unresolvedKeyframes, name, element, motionValue } = this;
|
||||
/**
|
||||
* If a keyframe is null, we hydrate it either by reading it from
|
||||
* the instance, or propagating from previous keyframes.
|
||||
*/
|
||||
for (let i = 0; i < unresolvedKeyframes.length; i++) {
|
||||
if (unresolvedKeyframes[i] === null) {
|
||||
/**
|
||||
* If the first keyframe is null, we need to find its value by sampling the element
|
||||
*/
|
||||
if (i === 0) {
|
||||
const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();
|
||||
const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
||||
if (currentValue !== undefined) {
|
||||
unresolvedKeyframes[0] = currentValue;
|
||||
}
|
||||
else if (element && name) {
|
||||
const valueAsRead = element.readValue(name, finalKeyframe);
|
||||
if (valueAsRead !== undefined && valueAsRead !== null) {
|
||||
unresolvedKeyframes[0] = valueAsRead;
|
||||
}
|
||||
}
|
||||
if (unresolvedKeyframes[0] === undefined) {
|
||||
unresolvedKeyframes[0] = finalKeyframe;
|
||||
}
|
||||
if (motionValue && currentValue === undefined) {
|
||||
motionValue.set(unresolvedKeyframes[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
setFinalKeyframe() { }
|
||||
measureInitialState() { }
|
||||
renderEndStyles() { }
|
||||
measureEndState() { }
|
||||
complete() {
|
||||
this.isComplete = true;
|
||||
this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);
|
||||
toResolve.delete(this);
|
||||
}
|
||||
cancel() {
|
||||
if (!this.isComplete) {
|
||||
this.isScheduled = false;
|
||||
toResolve.delete(this);
|
||||
}
|
||||
}
|
||||
resume() {
|
||||
if (!this.isComplete)
|
||||
this.scheduleResolve();
|
||||
}
|
||||
}
|
||||
|
||||
export { KeyframeResolver, flushKeyframeResolvers };
|
||||
332
frontend/node_modules/framer-motion/dist/es/render/utils/animation-state.mjs
generated
vendored
Normal file
332
frontend/node_modules/framer-motion/dist/es/render/utils/animation-state.mjs
generated
vendored
Normal file
@@ -0,0 +1,332 @@
|
||||
import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';
|
||||
import { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';
|
||||
import { shallowCompare } from '../../utils/shallow-compare.mjs';
|
||||
import { isVariantLabel } from './is-variant-label.mjs';
|
||||
import { resolveVariant } from './resolve-dynamic-variants.mjs';
|
||||
import { variantPriorityOrder } from './variant-props.mjs';
|
||||
import { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';
|
||||
import { getVariantContext } from './get-variant-context.mjs';
|
||||
|
||||
const reversePriorityOrder = [...variantPriorityOrder].reverse();
|
||||
const numAnimationTypes = variantPriorityOrder.length;
|
||||
function animateList(visualElement) {
|
||||
return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));
|
||||
}
|
||||
function createAnimationState(visualElement) {
|
||||
let animate = animateList(visualElement);
|
||||
let state = createState();
|
||||
let isInitialRender = true;
|
||||
/**
|
||||
* This function will be used to reduce the animation definitions for
|
||||
* each active animation type into an object of resolved values for it.
|
||||
*/
|
||||
const buildResolvedTypeValues = (type) => (acc, definition) => {
|
||||
var _a;
|
||||
const resolved = resolveVariant(visualElement, definition, type === "exit"
|
||||
? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom
|
||||
: undefined);
|
||||
if (resolved) {
|
||||
const { transition, transitionEnd, ...target } = resolved;
|
||||
acc = { ...acc, ...target, ...transitionEnd };
|
||||
}
|
||||
return acc;
|
||||
};
|
||||
/**
|
||||
* This just allows us to inject mocked animation functions
|
||||
* @internal
|
||||
*/
|
||||
function setAnimateFunction(makeAnimator) {
|
||||
animate = makeAnimator(visualElement);
|
||||
}
|
||||
/**
|
||||
* When we receive new props, we need to:
|
||||
* 1. Create a list of protected keys for each type. This is a directory of
|
||||
* value keys that are currently being "handled" by types of a higher priority
|
||||
* so that whenever an animation is played of a given type, these values are
|
||||
* protected from being animated.
|
||||
* 2. Determine if an animation type needs animating.
|
||||
* 3. Determine if any values have been removed from a type and figure out
|
||||
* what to animate those to.
|
||||
*/
|
||||
function animateChanges(changedActiveType) {
|
||||
const { props } = visualElement;
|
||||
const context = getVariantContext(visualElement.parent) || {};
|
||||
/**
|
||||
* A list of animations that we'll build into as we iterate through the animation
|
||||
* types. This will get executed at the end of the function.
|
||||
*/
|
||||
const animations = [];
|
||||
/**
|
||||
* Keep track of which values have been removed. Then, as we hit lower priority
|
||||
* animation types, we can check if they contain removed values and animate to that.
|
||||
*/
|
||||
const removedKeys = new Set();
|
||||
/**
|
||||
* A dictionary of all encountered keys. This is an object to let us build into and
|
||||
* copy it without iteration. Each time we hit an animation type we set its protected
|
||||
* keys - the keys its not allowed to animate - to the latest version of this object.
|
||||
*/
|
||||
let encounteredKeys = {};
|
||||
/**
|
||||
* If a variant has been removed at a given index, and this component is controlling
|
||||
* variant animations, we want to ensure lower-priority variants are forced to animate.
|
||||
*/
|
||||
let removedVariantIndex = Infinity;
|
||||
/**
|
||||
* Iterate through all animation types in reverse priority order. For each, we want to
|
||||
* detect which values it's handling and whether or not they've changed (and therefore
|
||||
* need to be animated). If any values have been removed, we want to detect those in
|
||||
* lower priority props and flag for animation.
|
||||
*/
|
||||
for (let i = 0; i < numAnimationTypes; i++) {
|
||||
const type = reversePriorityOrder[i];
|
||||
const typeState = state[type];
|
||||
const prop = props[type] !== undefined
|
||||
? props[type]
|
||||
: context[type];
|
||||
const propIsVariant = isVariantLabel(prop);
|
||||
/**
|
||||
* If this type has *just* changed isActive status, set activeDelta
|
||||
* to that status. Otherwise set to null.
|
||||
*/
|
||||
const activeDelta = type === changedActiveType ? typeState.isActive : null;
|
||||
if (activeDelta === false)
|
||||
removedVariantIndex = i;
|
||||
/**
|
||||
* If this prop is an inherited variant, rather than been set directly on the
|
||||
* component itself, we want to make sure we allow the parent to trigger animations.
|
||||
*
|
||||
* TODO: Can probably change this to a !isControllingVariants check
|
||||
*/
|
||||
let isInherited = prop === context[type] &&
|
||||
prop !== props[type] &&
|
||||
propIsVariant;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
if (isInherited &&
|
||||
isInitialRender &&
|
||||
visualElement.manuallyAnimateOnMount) {
|
||||
isInherited = false;
|
||||
}
|
||||
/**
|
||||
* Set all encountered keys so far as the protected keys for this type. This will
|
||||
* be any key that has been animated or otherwise handled by active, higher-priortiy types.
|
||||
*/
|
||||
typeState.protectedKeys = { ...encounteredKeys };
|
||||
// Check if we can skip analysing this prop early
|
||||
if (
|
||||
// If it isn't active and hasn't *just* been set as inactive
|
||||
(!typeState.isActive && activeDelta === null) ||
|
||||
// If we didn't and don't have any defined prop for this animation type
|
||||
(!prop && !typeState.prevProp) ||
|
||||
// Or if the prop doesn't define an animation
|
||||
isAnimationControls(prop) ||
|
||||
typeof prop === "boolean") {
|
||||
continue;
|
||||
}
|
||||
/**
|
||||
* As we go look through the values defined on this type, if we detect
|
||||
* a changed value or a value that was removed in a higher priority, we set
|
||||
* this to true and add this prop to the animation list.
|
||||
*/
|
||||
const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);
|
||||
let shouldAnimateType = variantDidChange ||
|
||||
// If we're making this variant active, we want to always make it active
|
||||
(type === changedActiveType &&
|
||||
typeState.isActive &&
|
||||
!isInherited &&
|
||||
propIsVariant) ||
|
||||
// If we removed a higher-priority variant (i is in reverse order)
|
||||
(i > removedVariantIndex && propIsVariant);
|
||||
let handledRemovedValues = false;
|
||||
/**
|
||||
* As animations can be set as variant lists, variants or target objects, we
|
||||
* coerce everything to an array if it isn't one already
|
||||
*/
|
||||
const definitionList = Array.isArray(prop) ? prop : [prop];
|
||||
/**
|
||||
* Build an object of all the resolved values. We'll use this in the subsequent
|
||||
* animateChanges calls to determine whether a value has changed.
|
||||
*/
|
||||
let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});
|
||||
if (activeDelta === false)
|
||||
resolvedValues = {};
|
||||
/**
|
||||
* Now we need to loop through all the keys in the prev prop and this prop,
|
||||
* and decide:
|
||||
* 1. If the value has changed, and needs animating
|
||||
* 2. If it has been removed, and needs adding to the removedKeys set
|
||||
* 3. If it has been removed in a higher priority type and needs animating
|
||||
* 4. If it hasn't been removed in a higher priority but hasn't changed, and
|
||||
* needs adding to the type's protectedKeys list.
|
||||
*/
|
||||
const { prevResolvedValues = {} } = typeState;
|
||||
const allKeys = {
|
||||
...prevResolvedValues,
|
||||
...resolvedValues,
|
||||
};
|
||||
const markToAnimate = (key) => {
|
||||
shouldAnimateType = true;
|
||||
if (removedKeys.has(key)) {
|
||||
handledRemovedValues = true;
|
||||
removedKeys.delete(key);
|
||||
}
|
||||
typeState.needsAnimating[key] = true;
|
||||
const motionValue = visualElement.getValue(key);
|
||||
if (motionValue)
|
||||
motionValue.liveStyle = false;
|
||||
};
|
||||
for (const key in allKeys) {
|
||||
const next = resolvedValues[key];
|
||||
const prev = prevResolvedValues[key];
|
||||
// If we've already handled this we can just skip ahead
|
||||
if (encounteredKeys.hasOwnProperty(key))
|
||||
continue;
|
||||
/**
|
||||
* If the value has changed, we probably want to animate it.
|
||||
*/
|
||||
let valueHasChanged = false;
|
||||
if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {
|
||||
valueHasChanged = !shallowCompare(next, prev);
|
||||
}
|
||||
else {
|
||||
valueHasChanged = next !== prev;
|
||||
}
|
||||
if (valueHasChanged) {
|
||||
if (next !== undefined && next !== null) {
|
||||
// If next is defined and doesn't equal prev, it needs animating
|
||||
markToAnimate(key);
|
||||
}
|
||||
else {
|
||||
// If it's undefined, it's been removed.
|
||||
removedKeys.add(key);
|
||||
}
|
||||
}
|
||||
else if (next !== undefined && removedKeys.has(key)) {
|
||||
/**
|
||||
* If next hasn't changed and it isn't undefined, we want to check if it's
|
||||
* been removed by a higher priority
|
||||
*/
|
||||
markToAnimate(key);
|
||||
}
|
||||
else {
|
||||
/**
|
||||
* If it hasn't changed, we add it to the list of protected values
|
||||
* to ensure it doesn't get animated.
|
||||
*/
|
||||
typeState.protectedKeys[key] = true;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Update the typeState so next time animateChanges is called we can compare the
|
||||
* latest prop and resolvedValues to these.
|
||||
*/
|
||||
typeState.prevProp = prop;
|
||||
typeState.prevResolvedValues = resolvedValues;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
if (typeState.isActive) {
|
||||
encounteredKeys = { ...encounteredKeys, ...resolvedValues };
|
||||
}
|
||||
if (isInitialRender && visualElement.blockInitialAnimation) {
|
||||
shouldAnimateType = false;
|
||||
}
|
||||
/**
|
||||
* If this is an inherited prop we want to skip this animation
|
||||
* unless the inherited variants haven't changed on this render.
|
||||
*/
|
||||
const willAnimateViaParent = isInherited && variantDidChange;
|
||||
const needsAnimating = !willAnimateViaParent || handledRemovedValues;
|
||||
if (shouldAnimateType && needsAnimating) {
|
||||
animations.push(...definitionList.map((animation) => ({
|
||||
animation: animation,
|
||||
options: { type },
|
||||
})));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* If there are some removed value that haven't been dealt with,
|
||||
* we need to create a new animation that falls back either to the value
|
||||
* defined in the style prop, or the last read value.
|
||||
*/
|
||||
if (removedKeys.size) {
|
||||
const fallbackAnimation = {};
|
||||
removedKeys.forEach((key) => {
|
||||
const fallbackTarget = visualElement.getBaseTarget(key);
|
||||
const motionValue = visualElement.getValue(key);
|
||||
if (motionValue)
|
||||
motionValue.liveStyle = true;
|
||||
// @ts-expect-error - @mattgperry to figure if we should do something here
|
||||
fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;
|
||||
});
|
||||
animations.push({ animation: fallbackAnimation });
|
||||
}
|
||||
let shouldAnimate = Boolean(animations.length);
|
||||
if (isInitialRender &&
|
||||
(props.initial === false || props.initial === props.animate) &&
|
||||
!visualElement.manuallyAnimateOnMount) {
|
||||
shouldAnimate = false;
|
||||
}
|
||||
isInitialRender = false;
|
||||
return shouldAnimate ? animate(animations) : Promise.resolve();
|
||||
}
|
||||
/**
|
||||
* Change whether a certain animation type is active.
|
||||
*/
|
||||
function setActive(type, isActive) {
|
||||
var _a;
|
||||
// If the active state hasn't changed, we can safely do nothing here
|
||||
if (state[type].isActive === isActive)
|
||||
return Promise.resolve();
|
||||
// Propagate active change to children
|
||||
(_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); });
|
||||
state[type].isActive = isActive;
|
||||
const animations = animateChanges(type);
|
||||
for (const key in state) {
|
||||
state[key].protectedKeys = {};
|
||||
}
|
||||
return animations;
|
||||
}
|
||||
return {
|
||||
animateChanges,
|
||||
setActive,
|
||||
setAnimateFunction,
|
||||
getState: () => state,
|
||||
reset: () => {
|
||||
state = createState();
|
||||
isInitialRender = true;
|
||||
},
|
||||
};
|
||||
}
|
||||
function checkVariantsDidChange(prev, next) {
|
||||
if (typeof next === "string") {
|
||||
return next !== prev;
|
||||
}
|
||||
else if (Array.isArray(next)) {
|
||||
return !shallowCompare(next, prev);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function createTypeState(isActive = false) {
|
||||
return {
|
||||
isActive,
|
||||
protectedKeys: {},
|
||||
needsAnimating: {},
|
||||
prevResolvedValues: {},
|
||||
};
|
||||
}
|
||||
function createState() {
|
||||
return {
|
||||
animate: createTypeState(true),
|
||||
whileInView: createTypeState(),
|
||||
whileHover: createTypeState(),
|
||||
whileTap: createTypeState(),
|
||||
whileDrag: createTypeState(),
|
||||
whileFocus: createTypeState(),
|
||||
exit: createTypeState(),
|
||||
};
|
||||
}
|
||||
|
||||
export { checkVariantsDidChange, createAnimationState };
|
||||
3
frontend/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs
generated
vendored
Normal file
3
frontend/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
const compareByDepth = (a, b) => a.depth - b.depth;
|
||||
|
||||
export { compareByDepth };
|
||||
24
frontend/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs
generated
vendored
Normal file
24
frontend/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
import { addUniqueItem, removeItem } from '../../utils/array.mjs';
|
||||
import { compareByDepth } from './compare-by-depth.mjs';
|
||||
|
||||
class FlatTree {
|
||||
constructor() {
|
||||
this.children = [];
|
||||
this.isDirty = false;
|
||||
}
|
||||
add(child) {
|
||||
addUniqueItem(this.children, child);
|
||||
this.isDirty = true;
|
||||
}
|
||||
remove(child) {
|
||||
removeItem(this.children, child);
|
||||
this.isDirty = true;
|
||||
}
|
||||
forEach(callback) {
|
||||
this.isDirty && this.children.sort(compareByDepth);
|
||||
this.isDirty = false;
|
||||
this.children.forEach(callback);
|
||||
}
|
||||
}
|
||||
|
||||
export { FlatTree };
|
||||
28
frontend/node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs
generated
vendored
Normal file
28
frontend/node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
import { isVariantLabel } from './is-variant-label.mjs';
|
||||
import { variantProps } from './variant-props.mjs';
|
||||
|
||||
const numVariantProps = variantProps.length;
|
||||
function getVariantContext(visualElement) {
|
||||
if (!visualElement)
|
||||
return undefined;
|
||||
if (!visualElement.isControllingVariants) {
|
||||
const context = visualElement.parent
|
||||
? getVariantContext(visualElement.parent) || {}
|
||||
: {};
|
||||
if (visualElement.props.initial !== undefined) {
|
||||
context.initial = visualElement.props.initial;
|
||||
}
|
||||
return context;
|
||||
}
|
||||
const context = {};
|
||||
for (let i = 0; i < numVariantProps; i++) {
|
||||
const name = variantProps[i];
|
||||
const prop = visualElement.props[name];
|
||||
if (isVariantLabel(prop) || prop === false) {
|
||||
context[name] = prop;
|
||||
}
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
export { getVariantContext };
|
||||
13
frontend/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs
generated
vendored
Normal file
13
frontend/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';
|
||||
import { isVariantLabel } from './is-variant-label.mjs';
|
||||
import { variantProps } from './variant-props.mjs';
|
||||
|
||||
function isControllingVariants(props) {
|
||||
return (isAnimationControls(props.animate) ||
|
||||
variantProps.some((name) => isVariantLabel(props[name])));
|
||||
}
|
||||
function isVariantNode(props) {
|
||||
return Boolean(isControllingVariants(props) || props.variants);
|
||||
}
|
||||
|
||||
export { isControllingVariants, isVariantNode };
|
||||
8
frontend/node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs
generated
vendored
Normal file
8
frontend/node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Decides if the supplied variable is variant label
|
||||
*/
|
||||
function isVariantLabel(v) {
|
||||
return typeof v === "string" || Array.isArray(v);
|
||||
}
|
||||
|
||||
export { isVariantLabel };
|
||||
59
frontend/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs
generated
vendored
Normal file
59
frontend/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
import { warnOnce } from '../../utils/warn-once.mjs';
|
||||
import { motionValue } from '../../value/index.mjs';
|
||||
import { isMotionValue } from '../../value/utils/is-motion-value.mjs';
|
||||
|
||||
function updateMotionValuesFromProps(element, next, prev) {
|
||||
for (const key in next) {
|
||||
const nextValue = next[key];
|
||||
const prevValue = prev[key];
|
||||
if (isMotionValue(nextValue)) {
|
||||
/**
|
||||
* If this is a motion value found in props or style, we want to add it
|
||||
* to our visual element's motion value map.
|
||||
*/
|
||||
element.addValue(key, nextValue);
|
||||
/**
|
||||
* Check the version of the incoming motion value with this version
|
||||
* and warn against mismatches.
|
||||
*/
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
warnOnce(nextValue.version === "11.18.2", `Attempting to mix Motion versions ${nextValue.version} with 11.18.2 may not work as expected.`);
|
||||
}
|
||||
}
|
||||
else if (isMotionValue(prevValue)) {
|
||||
/**
|
||||
* If we're swapping from a motion value to a static value,
|
||||
* create a new motion value from that
|
||||
*/
|
||||
element.addValue(key, motionValue(nextValue, { owner: element }));
|
||||
}
|
||||
else if (prevValue !== nextValue) {
|
||||
/**
|
||||
* If this is a flat value that has changed, update the motion value
|
||||
* or create one if it doesn't exist. We only want to do this if we're
|
||||
* not handling the value with our animation state.
|
||||
*/
|
||||
if (element.hasValue(key)) {
|
||||
const existingValue = element.getValue(key);
|
||||
if (existingValue.liveStyle === true) {
|
||||
existingValue.jump(nextValue);
|
||||
}
|
||||
else if (!existingValue.hasAnimated) {
|
||||
existingValue.set(nextValue);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const latestValue = element.getStaticValue(key);
|
||||
element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));
|
||||
}
|
||||
}
|
||||
}
|
||||
// Handle removed values
|
||||
for (const key in prev) {
|
||||
if (next[key] === undefined)
|
||||
element.removeValue(key);
|
||||
}
|
||||
return next;
|
||||
}
|
||||
|
||||
export { updateMotionValuesFromProps };
|
||||
8
frontend/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs
generated
vendored
Normal file
8
frontend/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
import { resolveVariantFromProps } from './resolve-variants.mjs';
|
||||
|
||||
function resolveVariant(visualElement, definition, custom) {
|
||||
const props = visualElement.getProps();
|
||||
return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);
|
||||
}
|
||||
|
||||
export { resolveVariant };
|
||||
36
frontend/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs
generated
vendored
Normal file
36
frontend/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
function getValueState(visualElement) {
|
||||
const state = [{}, {}];
|
||||
visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {
|
||||
state[0][key] = value.get();
|
||||
state[1][key] = value.getVelocity();
|
||||
});
|
||||
return state;
|
||||
}
|
||||
function resolveVariantFromProps(props, definition, custom, visualElement) {
|
||||
/**
|
||||
* If the variant definition is a function, resolve.
|
||||
*/
|
||||
if (typeof definition === "function") {
|
||||
const [current, velocity] = getValueState(visualElement);
|
||||
definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
|
||||
}
|
||||
/**
|
||||
* If the variant definition is a variant label, or
|
||||
* the function returned a variant label, resolve.
|
||||
*/
|
||||
if (typeof definition === "string") {
|
||||
definition = props.variants && props.variants[definition];
|
||||
}
|
||||
/**
|
||||
* At this point we've resolved both functions and variant labels,
|
||||
* but the resolved variant label might itself have been a function.
|
||||
* If so, resolve. This can only have returned a valid target object.
|
||||
*/
|
||||
if (typeof definition === "function") {
|
||||
const [current, velocity] = getValueState(visualElement);
|
||||
definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
|
||||
}
|
||||
return definition;
|
||||
}
|
||||
|
||||
export { resolveVariantFromProps };
|
||||
27
frontend/node_modules/framer-motion/dist/es/render/utils/setters.mjs
generated
vendored
Normal file
27
frontend/node_modules/framer-motion/dist/es/render/utils/setters.mjs
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';
|
||||
import { motionValue } from '../../value/index.mjs';
|
||||
import { resolveVariant } from './resolve-dynamic-variants.mjs';
|
||||
|
||||
/**
|
||||
* Set VisualElement's MotionValue, creating a new MotionValue for it if
|
||||
* it doesn't exist.
|
||||
*/
|
||||
function setMotionValue(visualElement, key, value) {
|
||||
if (visualElement.hasValue(key)) {
|
||||
visualElement.getValue(key).set(value);
|
||||
}
|
||||
else {
|
||||
visualElement.addValue(key, motionValue(value));
|
||||
}
|
||||
}
|
||||
function setTarget(visualElement, definition) {
|
||||
const resolved = resolveVariant(visualElement, definition);
|
||||
let { transitionEnd = {}, transition = {}, ...target } = resolved || {};
|
||||
target = { ...target, ...transitionEnd };
|
||||
for (const key in target) {
|
||||
const value = resolveFinalValueInKeyframes(target[key]);
|
||||
setMotionValue(visualElement, key, value);
|
||||
}
|
||||
}
|
||||
|
||||
export { setTarget };
|
||||
12
frontend/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs
generated
vendored
Normal file
12
frontend/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
const variantPriorityOrder = [
|
||||
"animate",
|
||||
"whileInView",
|
||||
"whileFocus",
|
||||
"whileHover",
|
||||
"whileTap",
|
||||
"whileDrag",
|
||||
"exit",
|
||||
];
|
||||
const variantProps = ["initial", ...variantPriorityOrder];
|
||||
|
||||
export { variantPriorityOrder, variantProps };
|
||||
Reference in New Issue
Block a user