@1agh/maude 0.22.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/commands/design-link.test.mjs +53 -1
- package/cli/commands/hub.test.mjs +10 -9
- package/cli/lib/design-link.mjs +154 -7
- package/cli/lib/hubs-config.mjs +42 -4
- package/package.json +9 -9
- package/plugins/design/dev-server/bin/check-runtime-bundles.sh +125 -0
- package/plugins/design/dev-server/bin/runtime-health.sh +47 -6
- package/plugins/design/dev-server/build.ts +87 -7
- package/plugins/design/dev-server/canvas-comment-mount.tsx +384 -0
- package/plugins/design/dev-server/canvas-lib.tsx +22 -6
- package/plugins/design/dev-server/canvas-shell.tsx +25 -226
- package/plugins/design/dev-server/client/app.jsx +37 -15
- package/plugins/design/dev-server/collab/awareness-bridge.ts +77 -0
- package/plugins/design/dev-server/collab/registry.ts +51 -0
- package/plugins/design/dev-server/config.schema.json +20 -0
- package/plugins/design/dev-server/context.ts +7 -0
- package/plugins/design/dev-server/dist/client.bundle.js +21 -12
- package/plugins/design/dev-server/dist/comment-mount.js +1801 -0
- package/plugins/design/dev-server/dist/runtime/.min-sizes.json +16 -0
- package/plugins/design/dev-server/dist/runtime/lib0_decoding.js +2 -6
- package/plugins/design/dev-server/dist/runtime/lib0_encoding.js +2 -6
- package/plugins/design/dev-server/dist/runtime/motion.js +4787 -8
- package/plugins/design/dev-server/dist/runtime/motion_react.js +9654 -7
- package/plugins/design/dev-server/dist/runtime/pixi-js.js +5865 -5469
- package/plugins/design/dev-server/dist/runtime/react-dom.js +4 -22
- package/plugins/design/dev-server/dist/runtime/react-dom_client.js +5 -23
- package/plugins/design/dev-server/dist/runtime/react.js +4 -22
- package/plugins/design/dev-server/dist/runtime/react_jsx-dev-runtime.js +4 -22
- package/plugins/design/dev-server/dist/runtime/react_jsx-runtime.js +4 -22
- package/plugins/design/dev-server/dist/runtime/y-protocols_awareness.js +2 -6
- package/plugins/design/dev-server/dist/runtime/y-protocols_sync.js +2 -6
- package/plugins/design/dev-server/dist/runtime/yjs.js +2 -6
- package/plugins/design/dev-server/dom-selection.ts +156 -0
- package/plugins/design/dev-server/hmr-broadcast.ts +51 -20
- package/plugins/design/dev-server/input-router.tsx +99 -61
- package/plugins/design/dev-server/server.ts +18 -0
- package/plugins/design/dev-server/sync/agent.ts +323 -0
- package/plugins/design/dev-server/sync/atomic-write.ts +103 -0
- package/plugins/design/dev-server/sync/codec.ts +169 -0
- package/plugins/design/dev-server/sync/echo-guard.ts +108 -0
- package/plugins/design/dev-server/sync/fs-mirror.ts +160 -0
- package/plugins/design/dev-server/sync/hubs-config.ts +87 -0
- package/plugins/design/dev-server/sync/index.ts +474 -0
- package/plugins/design/dev-server/test/collab-awareness-bridge.test.ts +223 -0
- package/plugins/design/dev-server/test/comment-mount.test.ts +87 -0
- package/plugins/design/dev-server/test/hmr-classify.test.ts +70 -0
- package/plugins/design/dev-server/test/sync-agent.test.ts +278 -0
- package/plugins/design/dev-server/test/sync-atomic-write.test.ts +63 -0
- package/plugins/design/dev-server/test/sync-codec.test.ts +165 -0
- package/plugins/design/dev-server/test/sync-echo-guard.test.ts +96 -0
- package/plugins/design/dev-server/test/sync-fs-mirror.test.ts +182 -0
- package/plugins/design/dev-server/test/sync-hardening.test.ts +520 -0
- package/plugins/design/dev-server/test/sync-hubs-config.test.ts +130 -0
- package/plugins/design/dev-server/test/sync-runtime.test.ts +285 -0
- package/plugins/design/dev-server/test/use-collab.test.ts +0 -0
- package/plugins/design/dev-server/use-collab.tsx +157 -13
- package/plugins/design/dev-server/use-selection-set.tsx +12 -0
- package/plugins/design/dev-server/use-tool-mode.tsx +12 -0
- package/plugins/design/templates/_shell.html +15 -5
- package/plugins/design/templates/design-system-inspiration/SUB-AGENT-PROMPTS.md +1 -0
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var __returnValue = (v) => v;
|
|
3
|
-
function __exportSetter(name, newValue) {
|
|
4
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
5
|
-
}
|
|
6
2
|
var __export = (target, all) => {
|
|
7
3
|
for (var name in all)
|
|
8
4
|
__defProp(target, name, {
|
|
9
5
|
get: all[name],
|
|
10
6
|
enumerable: true,
|
|
11
7
|
configurable: true,
|
|
12
|
-
set:
|
|
8
|
+
set: (newValue) => all[name] = () => newValue
|
|
13
9
|
});
|
|
14
10
|
};
|
|
15
11
|
|
|
@@ -64,7 +60,4790 @@ __export(exports_lib, {
|
|
|
64
60
|
MotionValue: () => MotionValue
|
|
65
61
|
});
|
|
66
62
|
|
|
67
|
-
//
|
|
63
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/gestures/drag/state/is-active.mjs
|
|
64
|
+
var isDragging = {
|
|
65
|
+
x: false,
|
|
66
|
+
y: false
|
|
67
|
+
};
|
|
68
|
+
function isDragActive() {
|
|
69
|
+
return isDragging.x || isDragging.y;
|
|
70
|
+
}
|
|
71
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/noop.mjs
|
|
72
|
+
var noop = (any) => any;
|
|
73
|
+
|
|
74
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/errors.mjs
|
|
75
|
+
var warning = noop;
|
|
76
|
+
var invariant = noop;
|
|
77
|
+
if (false) {}
|
|
78
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/progress.mjs
|
|
79
|
+
var progress = (from, to, value) => {
|
|
80
|
+
const toFromDifference = to - from;
|
|
81
|
+
return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
|
|
82
|
+
};
|
|
83
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/memo.mjs
|
|
84
|
+
function memo(callback) {
|
|
85
|
+
let result;
|
|
86
|
+
return () => {
|
|
87
|
+
if (result === undefined)
|
|
88
|
+
result = callback();
|
|
89
|
+
return result;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/scroll-timeline.mjs
|
|
94
|
+
var supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);
|
|
95
|
+
|
|
96
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/controls/BaseGroup.mjs
|
|
97
|
+
class BaseGroupPlaybackControls {
|
|
98
|
+
constructor(animations) {
|
|
99
|
+
this.stop = () => this.runAll("stop");
|
|
100
|
+
this.animations = animations.filter(Boolean);
|
|
101
|
+
}
|
|
102
|
+
get finished() {
|
|
103
|
+
return Promise.all(this.animations.map((animation) => ("finished" in animation) ? animation.finished : animation));
|
|
104
|
+
}
|
|
105
|
+
getAll(propName) {
|
|
106
|
+
return this.animations[0][propName];
|
|
107
|
+
}
|
|
108
|
+
setAll(propName, newValue) {
|
|
109
|
+
for (let i = 0;i < this.animations.length; i++) {
|
|
110
|
+
this.animations[i][propName] = newValue;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
attachTimeline(timeline, fallback) {
|
|
114
|
+
const subscriptions = this.animations.map((animation) => {
|
|
115
|
+
if (supportsScrollTimeline() && animation.attachTimeline) {
|
|
116
|
+
return animation.attachTimeline(timeline);
|
|
117
|
+
} else if (typeof fallback === "function") {
|
|
118
|
+
return fallback(animation);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return () => {
|
|
122
|
+
subscriptions.forEach((cancel, i) => {
|
|
123
|
+
cancel && cancel();
|
|
124
|
+
this.animations[i].stop();
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
get time() {
|
|
129
|
+
return this.getAll("time");
|
|
130
|
+
}
|
|
131
|
+
set time(time) {
|
|
132
|
+
this.setAll("time", time);
|
|
133
|
+
}
|
|
134
|
+
get speed() {
|
|
135
|
+
return this.getAll("speed");
|
|
136
|
+
}
|
|
137
|
+
set speed(speed) {
|
|
138
|
+
this.setAll("speed", speed);
|
|
139
|
+
}
|
|
140
|
+
get startTime() {
|
|
141
|
+
return this.getAll("startTime");
|
|
142
|
+
}
|
|
143
|
+
get duration() {
|
|
144
|
+
let max = 0;
|
|
145
|
+
for (let i = 0;i < this.animations.length; i++) {
|
|
146
|
+
max = Math.max(max, this.animations[i].duration);
|
|
147
|
+
}
|
|
148
|
+
return max;
|
|
149
|
+
}
|
|
150
|
+
runAll(methodName) {
|
|
151
|
+
this.animations.forEach((controls) => controls[methodName]());
|
|
152
|
+
}
|
|
153
|
+
flatten() {
|
|
154
|
+
this.runAll("flatten");
|
|
155
|
+
}
|
|
156
|
+
play() {
|
|
157
|
+
this.runAll("play");
|
|
158
|
+
}
|
|
159
|
+
pause() {
|
|
160
|
+
this.runAll("pause");
|
|
161
|
+
}
|
|
162
|
+
cancel() {
|
|
163
|
+
this.runAll("cancel");
|
|
164
|
+
}
|
|
165
|
+
complete() {
|
|
166
|
+
this.runAll("complete");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/controls/Group.mjs
|
|
171
|
+
class GroupPlaybackControls extends BaseGroupPlaybackControls {
|
|
172
|
+
then(onResolve, onReject) {
|
|
173
|
+
return Promise.all(this.animations).then(onResolve).catch(onReject);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/time-conversion.mjs
|
|
178
|
+
var secondsToMilliseconds = (seconds) => seconds * 1000;
|
|
179
|
+
var millisecondsToSeconds = (milliseconds) => milliseconds / 1000;
|
|
180
|
+
|
|
181
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs
|
|
182
|
+
var maxGeneratorDuration = 20000;
|
|
183
|
+
function calcGeneratorDuration(generator) {
|
|
184
|
+
let duration = 0;
|
|
185
|
+
const timeStep = 50;
|
|
186
|
+
let state = generator.next(duration);
|
|
187
|
+
while (!state.done && duration < maxGeneratorDuration) {
|
|
188
|
+
duration += timeStep;
|
|
189
|
+
state = generator.next(duration);
|
|
190
|
+
}
|
|
191
|
+
return duration >= maxGeneratorDuration ? Infinity : duration;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/linear.mjs
|
|
195
|
+
var generateLinearEasing = (easing, duration, resolution = 10) => {
|
|
196
|
+
let points = "";
|
|
197
|
+
const numPoints = Math.max(Math.round(duration / resolution), 2);
|
|
198
|
+
for (let i = 0;i < numPoints; i++) {
|
|
199
|
+
points += easing(progress(0, numPoints - 1, i)) + ", ";
|
|
200
|
+
}
|
|
201
|
+
return `linear(${points.substring(0, points.length - 2)})`;
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/clamp.mjs
|
|
205
|
+
var clamp = (min, max, v) => {
|
|
206
|
+
if (v > max)
|
|
207
|
+
return max;
|
|
208
|
+
if (v < min)
|
|
209
|
+
return min;
|
|
210
|
+
return v;
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/velocity-per-second.mjs
|
|
214
|
+
function velocityPerSecond(velocity, frameDuration) {
|
|
215
|
+
return frameDuration ? velocity * (1000 / frameDuration) : 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/utils/velocity.mjs
|
|
219
|
+
var velocitySampleDuration = 5;
|
|
220
|
+
function calcGeneratorVelocity(resolveValue, t, current) {
|
|
221
|
+
const prevT = Math.max(t - velocitySampleDuration, 0);
|
|
222
|
+
return velocityPerSecond(current - resolveValue(prevT), t - prevT);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/defaults.mjs
|
|
226
|
+
var springDefaults = {
|
|
227
|
+
stiffness: 100,
|
|
228
|
+
damping: 10,
|
|
229
|
+
mass: 1,
|
|
230
|
+
velocity: 0,
|
|
231
|
+
duration: 800,
|
|
232
|
+
bounce: 0.3,
|
|
233
|
+
visualDuration: 0.3,
|
|
234
|
+
restSpeed: {
|
|
235
|
+
granular: 0.01,
|
|
236
|
+
default: 2
|
|
237
|
+
},
|
|
238
|
+
restDelta: {
|
|
239
|
+
granular: 0.005,
|
|
240
|
+
default: 0.5
|
|
241
|
+
},
|
|
242
|
+
minDuration: 0.01,
|
|
243
|
+
maxDuration: 10,
|
|
244
|
+
minDamping: 0.05,
|
|
245
|
+
maxDamping: 1
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/find.mjs
|
|
249
|
+
var safeMin = 0.001;
|
|
250
|
+
function findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass }) {
|
|
251
|
+
let envelope;
|
|
252
|
+
let derivative;
|
|
253
|
+
warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), "Spring duration must be 10 seconds or less");
|
|
254
|
+
let dampingRatio = 1 - bounce;
|
|
255
|
+
dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);
|
|
256
|
+
duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));
|
|
257
|
+
if (dampingRatio < 1) {
|
|
258
|
+
envelope = (undampedFreq2) => {
|
|
259
|
+
const exponentialDecay = undampedFreq2 * dampingRatio;
|
|
260
|
+
const delta = exponentialDecay * duration;
|
|
261
|
+
const a = exponentialDecay - velocity;
|
|
262
|
+
const b = calcAngularFreq(undampedFreq2, dampingRatio);
|
|
263
|
+
const c = Math.exp(-delta);
|
|
264
|
+
return safeMin - a / b * c;
|
|
265
|
+
};
|
|
266
|
+
derivative = (undampedFreq2) => {
|
|
267
|
+
const exponentialDecay = undampedFreq2 * dampingRatio;
|
|
268
|
+
const delta = exponentialDecay * duration;
|
|
269
|
+
const d = delta * velocity + velocity;
|
|
270
|
+
const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;
|
|
271
|
+
const f = Math.exp(-delta);
|
|
272
|
+
const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);
|
|
273
|
+
const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;
|
|
274
|
+
return factor * ((d - e) * f) / g;
|
|
275
|
+
};
|
|
276
|
+
} else {
|
|
277
|
+
envelope = (undampedFreq2) => {
|
|
278
|
+
const a = Math.exp(-undampedFreq2 * duration);
|
|
279
|
+
const b = (undampedFreq2 - velocity) * duration + 1;
|
|
280
|
+
return -safeMin + a * b;
|
|
281
|
+
};
|
|
282
|
+
derivative = (undampedFreq2) => {
|
|
283
|
+
const a = Math.exp(-undampedFreq2 * duration);
|
|
284
|
+
const b = (velocity - undampedFreq2) * (duration * duration);
|
|
285
|
+
return a * b;
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
const initialGuess = 5 / duration;
|
|
289
|
+
const undampedFreq = approximateRoot(envelope, derivative, initialGuess);
|
|
290
|
+
duration = secondsToMilliseconds(duration);
|
|
291
|
+
if (isNaN(undampedFreq)) {
|
|
292
|
+
return {
|
|
293
|
+
stiffness: springDefaults.stiffness,
|
|
294
|
+
damping: springDefaults.damping,
|
|
295
|
+
duration
|
|
296
|
+
};
|
|
297
|
+
} else {
|
|
298
|
+
const stiffness = Math.pow(undampedFreq, 2) * mass;
|
|
299
|
+
return {
|
|
300
|
+
stiffness,
|
|
301
|
+
damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),
|
|
302
|
+
duration
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
var rootIterations = 12;
|
|
307
|
+
function approximateRoot(envelope, derivative, initialGuess) {
|
|
308
|
+
let result = initialGuess;
|
|
309
|
+
for (let i = 1;i < rootIterations; i++) {
|
|
310
|
+
result = result - envelope(result) / derivative(result);
|
|
311
|
+
}
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
function calcAngularFreq(undampedFreq, dampingRatio) {
|
|
315
|
+
return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/index.mjs
|
|
319
|
+
var durationKeys = ["duration", "bounce"];
|
|
320
|
+
var physicsKeys = ["stiffness", "damping", "mass"];
|
|
321
|
+
function isSpringType(options, keys) {
|
|
322
|
+
return keys.some((key) => options[key] !== undefined);
|
|
323
|
+
}
|
|
324
|
+
function getSpringOptions(options) {
|
|
325
|
+
let springOptions = {
|
|
326
|
+
velocity: springDefaults.velocity,
|
|
327
|
+
stiffness: springDefaults.stiffness,
|
|
328
|
+
damping: springDefaults.damping,
|
|
329
|
+
mass: springDefaults.mass,
|
|
330
|
+
isResolvedFromDuration: false,
|
|
331
|
+
...options
|
|
332
|
+
};
|
|
333
|
+
if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {
|
|
334
|
+
if (options.visualDuration) {
|
|
335
|
+
const visualDuration = options.visualDuration;
|
|
336
|
+
const root = 2 * Math.PI / (visualDuration * 1.2);
|
|
337
|
+
const stiffness = root * root;
|
|
338
|
+
const damping = 2 * clamp(0.05, 1, 1 - (options.bounce || 0)) * Math.sqrt(stiffness);
|
|
339
|
+
springOptions = {
|
|
340
|
+
...springOptions,
|
|
341
|
+
mass: springDefaults.mass,
|
|
342
|
+
stiffness,
|
|
343
|
+
damping
|
|
344
|
+
};
|
|
345
|
+
} else {
|
|
346
|
+
const derived = findSpring(options);
|
|
347
|
+
springOptions = {
|
|
348
|
+
...springOptions,
|
|
349
|
+
...derived,
|
|
350
|
+
mass: springDefaults.mass
|
|
351
|
+
};
|
|
352
|
+
springOptions.isResolvedFromDuration = true;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return springOptions;
|
|
356
|
+
}
|
|
357
|
+
function spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {
|
|
358
|
+
const options = typeof optionsOrVisualDuration !== "object" ? {
|
|
359
|
+
visualDuration: optionsOrVisualDuration,
|
|
360
|
+
keyframes: [0, 1],
|
|
361
|
+
bounce
|
|
362
|
+
} : optionsOrVisualDuration;
|
|
363
|
+
let { restSpeed, restDelta } = options;
|
|
364
|
+
const origin = options.keyframes[0];
|
|
365
|
+
const target = options.keyframes[options.keyframes.length - 1];
|
|
366
|
+
const state = { done: false, value: origin };
|
|
367
|
+
const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({
|
|
368
|
+
...options,
|
|
369
|
+
velocity: -millisecondsToSeconds(options.velocity || 0)
|
|
370
|
+
});
|
|
371
|
+
const initialVelocity = velocity || 0;
|
|
372
|
+
const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));
|
|
373
|
+
const initialDelta = target - origin;
|
|
374
|
+
const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));
|
|
375
|
+
const isGranularScale = Math.abs(initialDelta) < 5;
|
|
376
|
+
restSpeed || (restSpeed = isGranularScale ? springDefaults.restSpeed.granular : springDefaults.restSpeed.default);
|
|
377
|
+
restDelta || (restDelta = isGranularScale ? springDefaults.restDelta.granular : springDefaults.restDelta.default);
|
|
378
|
+
let resolveSpring;
|
|
379
|
+
if (dampingRatio < 1) {
|
|
380
|
+
const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
|
|
381
|
+
resolveSpring = (t) => {
|
|
382
|
+
const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
|
|
383
|
+
return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));
|
|
384
|
+
};
|
|
385
|
+
} else if (dampingRatio === 1) {
|
|
386
|
+
resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);
|
|
387
|
+
} else {
|
|
388
|
+
const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);
|
|
389
|
+
resolveSpring = (t) => {
|
|
390
|
+
const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
|
|
391
|
+
const freqForT = Math.min(dampedAngularFreq * t, 300);
|
|
392
|
+
return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
const generator = {
|
|
396
|
+
calculatedDuration: isResolvedFromDuration ? duration || null : null,
|
|
397
|
+
next: (t) => {
|
|
398
|
+
const current = resolveSpring(t);
|
|
399
|
+
if (!isResolvedFromDuration) {
|
|
400
|
+
let currentVelocity = 0;
|
|
401
|
+
if (dampingRatio < 1) {
|
|
402
|
+
currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current);
|
|
403
|
+
}
|
|
404
|
+
const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;
|
|
405
|
+
const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;
|
|
406
|
+
state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
|
|
407
|
+
} else {
|
|
408
|
+
state.done = t >= duration;
|
|
409
|
+
}
|
|
410
|
+
state.value = state.done ? target : current;
|
|
411
|
+
return state;
|
|
412
|
+
},
|
|
413
|
+
toString: () => {
|
|
414
|
+
const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
|
|
415
|
+
const easing = generateLinearEasing((progress2) => generator.next(calculatedDuration * progress2).value, calculatedDuration, 30);
|
|
416
|
+
return calculatedDuration + "ms " + easing;
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
return generator;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs
|
|
423
|
+
function createGeneratorEasing(options, scale = 100, createGenerator) {
|
|
424
|
+
const generator = createGenerator({ ...options, keyframes: [0, scale] });
|
|
425
|
+
const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
|
|
426
|
+
return {
|
|
427
|
+
type: "keyframes",
|
|
428
|
+
ease: (progress2) => {
|
|
429
|
+
return generator.next(duration * progress2).value / scale;
|
|
430
|
+
},
|
|
431
|
+
duration: millisecondsToSeconds(duration)
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/is-generator.mjs
|
|
436
|
+
function isGenerator(type) {
|
|
437
|
+
return typeof type === "function";
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/wrap.mjs
|
|
441
|
+
var wrap = (min, max, v) => {
|
|
442
|
+
const rangeSize = max - min;
|
|
443
|
+
return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/is-easing-array.mjs
|
|
447
|
+
var isEasingArray = (ease) => {
|
|
448
|
+
return Array.isArray(ease) && typeof ease[0] !== "number";
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs
|
|
452
|
+
function getEasingForSegment(easing, i) {
|
|
453
|
+
return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/number.mjs
|
|
457
|
+
var mixNumber = (from, to, progress2) => {
|
|
458
|
+
return from + (to - from) * progress2;
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/fill.mjs
|
|
462
|
+
function fillOffset(offset, remaining) {
|
|
463
|
+
const min = offset[offset.length - 1];
|
|
464
|
+
for (let i = 1;i <= remaining; i++) {
|
|
465
|
+
const offsetProgress = progress(0, remaining, i);
|
|
466
|
+
offset.push(mixNumber(min, 1, offsetProgress));
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/default.mjs
|
|
471
|
+
function defaultOffset(arr) {
|
|
472
|
+
const offset = [0];
|
|
473
|
+
fillOffset(offset, arr.length - 1);
|
|
474
|
+
return offset;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/utils/is-motion-value.mjs
|
|
478
|
+
var isMotionValue = (value) => Boolean(value && value.getVelocity);
|
|
479
|
+
|
|
480
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/resolve-elements.mjs
|
|
481
|
+
function resolveElements(elementOrSelector, scope, selectorCache) {
|
|
482
|
+
var _a;
|
|
483
|
+
if (elementOrSelector instanceof Element) {
|
|
484
|
+
return [elementOrSelector];
|
|
485
|
+
} else if (typeof elementOrSelector === "string") {
|
|
486
|
+
let root = document;
|
|
487
|
+
if (scope) {
|
|
488
|
+
root = scope.current;
|
|
489
|
+
}
|
|
490
|
+
const elements = (_a = selectorCache === null || selectorCache === undefined ? undefined : selectorCache[elementOrSelector]) !== null && _a !== undefined ? _a : root.querySelectorAll(elementOrSelector);
|
|
491
|
+
return elements ? Array.from(elements) : [];
|
|
492
|
+
}
|
|
493
|
+
return Array.from(elementOrSelector);
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs
|
|
497
|
+
function isDOMKeyframes(keyframes) {
|
|
498
|
+
return typeof keyframes === "object" && !Array.isArray(keyframes);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/resolve-subjects.mjs
|
|
502
|
+
function resolveSubjects(subject, keyframes, scope, selectorCache) {
|
|
503
|
+
if (typeof subject === "string" && isDOMKeyframes(keyframes)) {
|
|
504
|
+
return resolveElements(subject, scope, selectorCache);
|
|
505
|
+
} else if (subject instanceof NodeList) {
|
|
506
|
+
return Array.from(subject);
|
|
507
|
+
} else if (Array.isArray(subject)) {
|
|
508
|
+
return subject;
|
|
509
|
+
} else {
|
|
510
|
+
return [subject];
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs
|
|
515
|
+
function calculateRepeatDuration(duration, repeat, _repeatDelay) {
|
|
516
|
+
return duration * (repeat + 1);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs
|
|
520
|
+
function calcNextTime(current, next, prev, labels) {
|
|
521
|
+
var _a;
|
|
522
|
+
if (typeof next === "number") {
|
|
523
|
+
return next;
|
|
524
|
+
} else if (next.startsWith("-") || next.startsWith("+")) {
|
|
525
|
+
return Math.max(0, current + parseFloat(next));
|
|
526
|
+
} else if (next === "<") {
|
|
527
|
+
return prev;
|
|
528
|
+
} else {
|
|
529
|
+
return (_a = labels.get(next)) !== null && _a !== undefined ? _a : current;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/array.mjs
|
|
534
|
+
function addUniqueItem(arr, item) {
|
|
535
|
+
if (arr.indexOf(item) === -1)
|
|
536
|
+
arr.push(item);
|
|
537
|
+
}
|
|
538
|
+
function removeItem(arr, item) {
|
|
539
|
+
const index = arr.indexOf(item);
|
|
540
|
+
if (index > -1)
|
|
541
|
+
arr.splice(index, 1);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs
|
|
545
|
+
function eraseKeyframes(sequence, startTime, endTime) {
|
|
546
|
+
for (let i = 0;i < sequence.length; i++) {
|
|
547
|
+
const keyframe = sequence[i];
|
|
548
|
+
if (keyframe.at > startTime && keyframe.at < endTime) {
|
|
549
|
+
removeItem(sequence, keyframe);
|
|
550
|
+
i--;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {
|
|
555
|
+
eraseKeyframes(sequence, startTime, endTime);
|
|
556
|
+
for (let i = 0;i < keyframes.length; i++) {
|
|
557
|
+
sequence.push({
|
|
558
|
+
value: keyframes[i],
|
|
559
|
+
at: mixNumber(startTime, endTime, offset[i]),
|
|
560
|
+
easing: getEasingForSegment(easing, i)
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs
|
|
566
|
+
function normalizeTimes(times, repeat) {
|
|
567
|
+
for (let i = 0;i < times.length; i++) {
|
|
568
|
+
times[i] = times[i] / (repeat + 1);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/sort.mjs
|
|
573
|
+
function compareByTime(a, b) {
|
|
574
|
+
if (a.at === b.at) {
|
|
575
|
+
if (a.value === null)
|
|
576
|
+
return 1;
|
|
577
|
+
if (b.value === null)
|
|
578
|
+
return -1;
|
|
579
|
+
return 0;
|
|
580
|
+
} else {
|
|
581
|
+
return a.at - b.at;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/create.mjs
|
|
586
|
+
var defaultSegmentEasing = "easeInOut";
|
|
587
|
+
var MAX_REPEAT = 20;
|
|
588
|
+
function createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {
|
|
589
|
+
const defaultDuration = defaultTransition.duration || 0.3;
|
|
590
|
+
const animationDefinitions = new Map;
|
|
591
|
+
const sequences = new Map;
|
|
592
|
+
const elementCache = {};
|
|
593
|
+
const timeLabels = new Map;
|
|
594
|
+
let prevTime = 0;
|
|
595
|
+
let currentTime = 0;
|
|
596
|
+
let totalDuration = 0;
|
|
597
|
+
for (let i = 0;i < sequence.length; i++) {
|
|
598
|
+
const segment = sequence[i];
|
|
599
|
+
if (typeof segment === "string") {
|
|
600
|
+
timeLabels.set(segment, currentTime);
|
|
601
|
+
continue;
|
|
602
|
+
} else if (!Array.isArray(segment)) {
|
|
603
|
+
timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));
|
|
604
|
+
continue;
|
|
605
|
+
}
|
|
606
|
+
let [subject, keyframes, transition = {}] = segment;
|
|
607
|
+
if (transition.at !== undefined) {
|
|
608
|
+
currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);
|
|
609
|
+
}
|
|
610
|
+
let maxDuration = 0;
|
|
611
|
+
const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {
|
|
612
|
+
const valueKeyframesAsList = keyframesAsList(valueKeyframes);
|
|
613
|
+
const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = "keyframes", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;
|
|
614
|
+
let { ease = defaultTransition.ease || "easeOut", duration } = valueTransition;
|
|
615
|
+
const calculatedDelay = typeof delay === "function" ? delay(elementIndex, numSubjects) : delay;
|
|
616
|
+
const numKeyframes = valueKeyframesAsList.length;
|
|
617
|
+
const createGenerator = isGenerator(type) ? type : generators === null || generators === undefined ? undefined : generators[type];
|
|
618
|
+
if (numKeyframes <= 2 && createGenerator) {
|
|
619
|
+
let absoluteDelta = 100;
|
|
620
|
+
if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {
|
|
621
|
+
const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];
|
|
622
|
+
absoluteDelta = Math.abs(delta);
|
|
623
|
+
}
|
|
624
|
+
const springTransition = { ...remainingTransition };
|
|
625
|
+
if (duration !== undefined) {
|
|
626
|
+
springTransition.duration = secondsToMilliseconds(duration);
|
|
627
|
+
}
|
|
628
|
+
const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);
|
|
629
|
+
ease = springEasing.ease;
|
|
630
|
+
duration = springEasing.duration;
|
|
631
|
+
}
|
|
632
|
+
duration !== null && duration !== undefined || (duration = defaultDuration);
|
|
633
|
+
const startTime = currentTime + calculatedDelay;
|
|
634
|
+
if (times.length === 1 && times[0] === 0) {
|
|
635
|
+
times[1] = 1;
|
|
636
|
+
}
|
|
637
|
+
const remainder = times.length - valueKeyframesAsList.length;
|
|
638
|
+
remainder > 0 && fillOffset(times, remainder);
|
|
639
|
+
valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);
|
|
640
|
+
if (repeat) {
|
|
641
|
+
invariant(repeat < MAX_REPEAT, "Repeat count too high, must be less than 20");
|
|
642
|
+
duration = calculateRepeatDuration(duration, repeat);
|
|
643
|
+
const originalKeyframes = [...valueKeyframesAsList];
|
|
644
|
+
const originalTimes = [...times];
|
|
645
|
+
ease = Array.isArray(ease) ? [...ease] : [ease];
|
|
646
|
+
const originalEase = [...ease];
|
|
647
|
+
for (let repeatIndex = 0;repeatIndex < repeat; repeatIndex++) {
|
|
648
|
+
valueKeyframesAsList.push(...originalKeyframes);
|
|
649
|
+
for (let keyframeIndex = 0;keyframeIndex < originalKeyframes.length; keyframeIndex++) {
|
|
650
|
+
times.push(originalTimes[keyframeIndex] + (repeatIndex + 1));
|
|
651
|
+
ease.push(keyframeIndex === 0 ? "linear" : getEasingForSegment(originalEase, keyframeIndex - 1));
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
normalizeTimes(times, repeat);
|
|
655
|
+
}
|
|
656
|
+
const targetTime = startTime + duration;
|
|
657
|
+
addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime);
|
|
658
|
+
maxDuration = Math.max(calculatedDelay + duration, maxDuration);
|
|
659
|
+
totalDuration = Math.max(targetTime, totalDuration);
|
|
660
|
+
};
|
|
661
|
+
if (isMotionValue(subject)) {
|
|
662
|
+
const subjectSequence = getSubjectSequence(subject, sequences);
|
|
663
|
+
resolveValueSequence(keyframes, transition, getValueSequence("default", subjectSequence));
|
|
664
|
+
} else {
|
|
665
|
+
const subjects = resolveSubjects(subject, keyframes, scope, elementCache);
|
|
666
|
+
const numSubjects = subjects.length;
|
|
667
|
+
for (let subjectIndex = 0;subjectIndex < numSubjects; subjectIndex++) {
|
|
668
|
+
keyframes = keyframes;
|
|
669
|
+
transition = transition;
|
|
670
|
+
const thisSubject = subjects[subjectIndex];
|
|
671
|
+
const subjectSequence = getSubjectSequence(thisSubject, sequences);
|
|
672
|
+
for (const key in keyframes) {
|
|
673
|
+
resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
prevTime = currentTime;
|
|
678
|
+
currentTime += maxDuration;
|
|
679
|
+
}
|
|
680
|
+
sequences.forEach((valueSequences, element) => {
|
|
681
|
+
for (const key in valueSequences) {
|
|
682
|
+
const valueSequence = valueSequences[key];
|
|
683
|
+
valueSequence.sort(compareByTime);
|
|
684
|
+
const keyframes = [];
|
|
685
|
+
const valueOffset = [];
|
|
686
|
+
const valueEasing = [];
|
|
687
|
+
for (let i = 0;i < valueSequence.length; i++) {
|
|
688
|
+
const { at, value, easing } = valueSequence[i];
|
|
689
|
+
keyframes.push(value);
|
|
690
|
+
valueOffset.push(progress(0, totalDuration, at));
|
|
691
|
+
valueEasing.push(easing || "easeOut");
|
|
692
|
+
}
|
|
693
|
+
if (valueOffset[0] !== 0) {
|
|
694
|
+
valueOffset.unshift(0);
|
|
695
|
+
keyframes.unshift(keyframes[0]);
|
|
696
|
+
valueEasing.unshift(defaultSegmentEasing);
|
|
697
|
+
}
|
|
698
|
+
if (valueOffset[valueOffset.length - 1] !== 1) {
|
|
699
|
+
valueOffset.push(1);
|
|
700
|
+
keyframes.push(null);
|
|
701
|
+
}
|
|
702
|
+
if (!animationDefinitions.has(element)) {
|
|
703
|
+
animationDefinitions.set(element, {
|
|
704
|
+
keyframes: {},
|
|
705
|
+
transition: {}
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
const definition = animationDefinitions.get(element);
|
|
709
|
+
definition.keyframes[key] = keyframes;
|
|
710
|
+
definition.transition[key] = {
|
|
711
|
+
...defaultTransition,
|
|
712
|
+
duration: totalDuration,
|
|
713
|
+
ease: valueEasing,
|
|
714
|
+
times: valueOffset,
|
|
715
|
+
...sequenceTransition
|
|
716
|
+
};
|
|
717
|
+
}
|
|
718
|
+
});
|
|
719
|
+
return animationDefinitions;
|
|
720
|
+
}
|
|
721
|
+
function getSubjectSequence(subject, sequences) {
|
|
722
|
+
!sequences.has(subject) && sequences.set(subject, {});
|
|
723
|
+
return sequences.get(subject);
|
|
724
|
+
}
|
|
725
|
+
function getValueSequence(name, sequences) {
|
|
726
|
+
if (!sequences[name])
|
|
727
|
+
sequences[name] = [];
|
|
728
|
+
return sequences[name];
|
|
729
|
+
}
|
|
730
|
+
function keyframesAsList(keyframes) {
|
|
731
|
+
return Array.isArray(keyframes) ? keyframes : [keyframes];
|
|
732
|
+
}
|
|
733
|
+
function getValueTransition(transition, key) {
|
|
734
|
+
return transition && transition[key] ? {
|
|
735
|
+
...transition,
|
|
736
|
+
...transition[key]
|
|
737
|
+
} : { ...transition };
|
|
738
|
+
}
|
|
739
|
+
var isNumber = (keyframe) => typeof keyframe === "number";
|
|
740
|
+
var isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber);
|
|
741
|
+
|
|
742
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/store.mjs
|
|
743
|
+
var visualElementStore = new WeakMap;
|
|
744
|
+
|
|
745
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/utils/get-value-transition.mjs
|
|
746
|
+
function getValueTransition2(transition, key) {
|
|
747
|
+
return transition ? transition[key] || transition["default"] || transition : undefined;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/keys-transform.mjs
|
|
751
|
+
var transformPropOrder = [
|
|
752
|
+
"transformPerspective",
|
|
753
|
+
"x",
|
|
754
|
+
"y",
|
|
755
|
+
"z",
|
|
756
|
+
"translateX",
|
|
757
|
+
"translateY",
|
|
758
|
+
"translateZ",
|
|
759
|
+
"scale",
|
|
760
|
+
"scaleX",
|
|
761
|
+
"scaleY",
|
|
762
|
+
"rotate",
|
|
763
|
+
"rotateX",
|
|
764
|
+
"rotateY",
|
|
765
|
+
"rotateZ",
|
|
766
|
+
"skew",
|
|
767
|
+
"skewX",
|
|
768
|
+
"skewY"
|
|
769
|
+
];
|
|
770
|
+
var transformProps = new Set(transformPropOrder);
|
|
771
|
+
|
|
772
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/keys-position.mjs
|
|
773
|
+
var positionalKeys = new Set([
|
|
774
|
+
"width",
|
|
775
|
+
"height",
|
|
776
|
+
"top",
|
|
777
|
+
"left",
|
|
778
|
+
"right",
|
|
779
|
+
"bottom",
|
|
780
|
+
...transformPropOrder
|
|
781
|
+
]);
|
|
782
|
+
|
|
783
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs
|
|
784
|
+
var isKeyframesTarget = (v) => {
|
|
785
|
+
return Array.isArray(v);
|
|
786
|
+
};
|
|
787
|
+
|
|
788
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/resolve-value.mjs
|
|
789
|
+
var resolveFinalValueInKeyframes = (v) => {
|
|
790
|
+
return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;
|
|
791
|
+
};
|
|
792
|
+
|
|
793
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/GlobalConfig.mjs
|
|
794
|
+
var MotionGlobalConfig = {
|
|
795
|
+
skipAnimations: false,
|
|
796
|
+
useManualTiming: false
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/render-step.mjs
|
|
800
|
+
function createRenderStep(runNextFrame) {
|
|
801
|
+
let thisFrame = new Set;
|
|
802
|
+
let nextFrame = new Set;
|
|
803
|
+
let isProcessing = false;
|
|
804
|
+
let flushNextFrame = false;
|
|
805
|
+
const toKeepAlive = new WeakSet;
|
|
806
|
+
let latestFrameData = {
|
|
807
|
+
delta: 0,
|
|
808
|
+
timestamp: 0,
|
|
809
|
+
isProcessing: false
|
|
810
|
+
};
|
|
811
|
+
function triggerCallback(callback) {
|
|
812
|
+
if (toKeepAlive.has(callback)) {
|
|
813
|
+
step.schedule(callback);
|
|
814
|
+
runNextFrame();
|
|
815
|
+
}
|
|
816
|
+
callback(latestFrameData);
|
|
817
|
+
}
|
|
818
|
+
const step = {
|
|
819
|
+
schedule: (callback, keepAlive = false, immediate = false) => {
|
|
820
|
+
const addToCurrentFrame = immediate && isProcessing;
|
|
821
|
+
const queue = addToCurrentFrame ? thisFrame : nextFrame;
|
|
822
|
+
if (keepAlive)
|
|
823
|
+
toKeepAlive.add(callback);
|
|
824
|
+
if (!queue.has(callback))
|
|
825
|
+
queue.add(callback);
|
|
826
|
+
return callback;
|
|
827
|
+
},
|
|
828
|
+
cancel: (callback) => {
|
|
829
|
+
nextFrame.delete(callback);
|
|
830
|
+
toKeepAlive.delete(callback);
|
|
831
|
+
},
|
|
832
|
+
process: (frameData) => {
|
|
833
|
+
latestFrameData = frameData;
|
|
834
|
+
if (isProcessing) {
|
|
835
|
+
flushNextFrame = true;
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
838
|
+
isProcessing = true;
|
|
839
|
+
[thisFrame, nextFrame] = [nextFrame, thisFrame];
|
|
840
|
+
thisFrame.forEach(triggerCallback);
|
|
841
|
+
thisFrame.clear();
|
|
842
|
+
isProcessing = false;
|
|
843
|
+
if (flushNextFrame) {
|
|
844
|
+
flushNextFrame = false;
|
|
845
|
+
step.process(frameData);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
};
|
|
849
|
+
return step;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/batcher.mjs
|
|
853
|
+
var stepsOrder = [
|
|
854
|
+
"read",
|
|
855
|
+
"resolveKeyframes",
|
|
856
|
+
"update",
|
|
857
|
+
"preRender",
|
|
858
|
+
"render",
|
|
859
|
+
"postRender"
|
|
860
|
+
];
|
|
861
|
+
var maxElapsed = 40;
|
|
862
|
+
function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
|
|
863
|
+
let runNextFrame = false;
|
|
864
|
+
let useDefaultElapsed = true;
|
|
865
|
+
const state = {
|
|
866
|
+
delta: 0,
|
|
867
|
+
timestamp: 0,
|
|
868
|
+
isProcessing: false
|
|
869
|
+
};
|
|
870
|
+
const flagRunNextFrame = () => runNextFrame = true;
|
|
871
|
+
const steps = stepsOrder.reduce((acc, key) => {
|
|
872
|
+
acc[key] = createRenderStep(flagRunNextFrame);
|
|
873
|
+
return acc;
|
|
874
|
+
}, {});
|
|
875
|
+
const { read, resolveKeyframes, update, preRender, render, postRender } = steps;
|
|
876
|
+
const processBatch = () => {
|
|
877
|
+
const timestamp = MotionGlobalConfig.useManualTiming ? state.timestamp : performance.now();
|
|
878
|
+
runNextFrame = false;
|
|
879
|
+
state.delta = useDefaultElapsed ? 1000 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);
|
|
880
|
+
state.timestamp = timestamp;
|
|
881
|
+
state.isProcessing = true;
|
|
882
|
+
read.process(state);
|
|
883
|
+
resolveKeyframes.process(state);
|
|
884
|
+
update.process(state);
|
|
885
|
+
preRender.process(state);
|
|
886
|
+
render.process(state);
|
|
887
|
+
postRender.process(state);
|
|
888
|
+
state.isProcessing = false;
|
|
889
|
+
if (runNextFrame && allowKeepAlive) {
|
|
890
|
+
useDefaultElapsed = false;
|
|
891
|
+
scheduleNextBatch(processBatch);
|
|
892
|
+
}
|
|
893
|
+
};
|
|
894
|
+
const wake = () => {
|
|
895
|
+
runNextFrame = true;
|
|
896
|
+
useDefaultElapsed = true;
|
|
897
|
+
if (!state.isProcessing) {
|
|
898
|
+
scheduleNextBatch(processBatch);
|
|
899
|
+
}
|
|
900
|
+
};
|
|
901
|
+
const schedule = stepsOrder.reduce((acc, key) => {
|
|
902
|
+
const step = steps[key];
|
|
903
|
+
acc[key] = (process, keepAlive = false, immediate = false) => {
|
|
904
|
+
if (!runNextFrame)
|
|
905
|
+
wake();
|
|
906
|
+
return step.schedule(process, keepAlive, immediate);
|
|
907
|
+
};
|
|
908
|
+
return acc;
|
|
909
|
+
}, {});
|
|
910
|
+
const cancel = (process) => {
|
|
911
|
+
for (let i = 0;i < stepsOrder.length; i++) {
|
|
912
|
+
steps[stepsOrder[i]].cancel(process);
|
|
913
|
+
}
|
|
914
|
+
};
|
|
915
|
+
return { schedule, cancel, state, steps };
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/frame.mjs
|
|
919
|
+
var { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
|
|
920
|
+
|
|
921
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/sync-time.mjs
|
|
922
|
+
var now;
|
|
923
|
+
function clearTime() {
|
|
924
|
+
now = undefined;
|
|
925
|
+
}
|
|
926
|
+
var time = {
|
|
927
|
+
now: () => {
|
|
928
|
+
if (now === undefined) {
|
|
929
|
+
time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());
|
|
930
|
+
}
|
|
931
|
+
return now;
|
|
932
|
+
},
|
|
933
|
+
set: (newTime) => {
|
|
934
|
+
now = newTime;
|
|
935
|
+
queueMicrotask(clearTime);
|
|
936
|
+
}
|
|
937
|
+
};
|
|
938
|
+
|
|
939
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/subscription-manager.mjs
|
|
940
|
+
class SubscriptionManager {
|
|
941
|
+
constructor() {
|
|
942
|
+
this.subscriptions = [];
|
|
943
|
+
}
|
|
944
|
+
add(handler) {
|
|
945
|
+
addUniqueItem(this.subscriptions, handler);
|
|
946
|
+
return () => removeItem(this.subscriptions, handler);
|
|
947
|
+
}
|
|
948
|
+
notify(a, b, c) {
|
|
949
|
+
const numSubscriptions = this.subscriptions.length;
|
|
950
|
+
if (!numSubscriptions)
|
|
951
|
+
return;
|
|
952
|
+
if (numSubscriptions === 1) {
|
|
953
|
+
this.subscriptions[0](a, b, c);
|
|
954
|
+
} else {
|
|
955
|
+
for (let i = 0;i < numSubscriptions; i++) {
|
|
956
|
+
const handler = this.subscriptions[i];
|
|
957
|
+
handler && handler(a, b, c);
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
getSize() {
|
|
962
|
+
return this.subscriptions.length;
|
|
963
|
+
}
|
|
964
|
+
clear() {
|
|
965
|
+
this.subscriptions.length = 0;
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/warn-once.mjs
|
|
970
|
+
var warned = new Set;
|
|
971
|
+
|
|
972
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/index.mjs
|
|
973
|
+
var MAX_VELOCITY_DELTA = 30;
|
|
974
|
+
var isFloat = (value) => {
|
|
975
|
+
return !isNaN(parseFloat(value));
|
|
976
|
+
};
|
|
977
|
+
var collectMotionValues = {
|
|
978
|
+
current: undefined
|
|
979
|
+
};
|
|
980
|
+
|
|
981
|
+
class MotionValue {
|
|
982
|
+
constructor(init, options = {}) {
|
|
983
|
+
this.version = "11.18.2";
|
|
984
|
+
this.canTrackVelocity = null;
|
|
985
|
+
this.events = {};
|
|
986
|
+
this.updateAndNotify = (v, render = true) => {
|
|
987
|
+
const currentTime = time.now();
|
|
988
|
+
if (this.updatedAt !== currentTime) {
|
|
989
|
+
this.setPrevFrameValue();
|
|
990
|
+
}
|
|
991
|
+
this.prev = this.current;
|
|
992
|
+
this.setCurrent(v);
|
|
993
|
+
if (this.current !== this.prev && this.events.change) {
|
|
994
|
+
this.events.change.notify(this.current);
|
|
995
|
+
}
|
|
996
|
+
if (render && this.events.renderRequest) {
|
|
997
|
+
this.events.renderRequest.notify(this.current);
|
|
998
|
+
}
|
|
999
|
+
};
|
|
1000
|
+
this.hasAnimated = false;
|
|
1001
|
+
this.setCurrent(init);
|
|
1002
|
+
this.owner = options.owner;
|
|
1003
|
+
}
|
|
1004
|
+
setCurrent(current) {
|
|
1005
|
+
this.current = current;
|
|
1006
|
+
this.updatedAt = time.now();
|
|
1007
|
+
if (this.canTrackVelocity === null && current !== undefined) {
|
|
1008
|
+
this.canTrackVelocity = isFloat(this.current);
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
setPrevFrameValue(prevFrameValue = this.current) {
|
|
1012
|
+
this.prevFrameValue = prevFrameValue;
|
|
1013
|
+
this.prevUpdatedAt = this.updatedAt;
|
|
1014
|
+
}
|
|
1015
|
+
onChange(subscription) {
|
|
1016
|
+
if (false) {}
|
|
1017
|
+
return this.on("change", subscription);
|
|
1018
|
+
}
|
|
1019
|
+
on(eventName, callback) {
|
|
1020
|
+
if (!this.events[eventName]) {
|
|
1021
|
+
this.events[eventName] = new SubscriptionManager;
|
|
1022
|
+
}
|
|
1023
|
+
const unsubscribe = this.events[eventName].add(callback);
|
|
1024
|
+
if (eventName === "change") {
|
|
1025
|
+
return () => {
|
|
1026
|
+
unsubscribe();
|
|
1027
|
+
frame.read(() => {
|
|
1028
|
+
if (!this.events.change.getSize()) {
|
|
1029
|
+
this.stop();
|
|
1030
|
+
}
|
|
1031
|
+
});
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
1034
|
+
return unsubscribe;
|
|
1035
|
+
}
|
|
1036
|
+
clearListeners() {
|
|
1037
|
+
for (const eventManagers in this.events) {
|
|
1038
|
+
this.events[eventManagers].clear();
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
attach(passiveEffect, stopPassiveEffect) {
|
|
1042
|
+
this.passiveEffect = passiveEffect;
|
|
1043
|
+
this.stopPassiveEffect = stopPassiveEffect;
|
|
1044
|
+
}
|
|
1045
|
+
set(v, render = true) {
|
|
1046
|
+
if (!render || !this.passiveEffect) {
|
|
1047
|
+
this.updateAndNotify(v, render);
|
|
1048
|
+
} else {
|
|
1049
|
+
this.passiveEffect(v, this.updateAndNotify);
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
setWithVelocity(prev, current, delta) {
|
|
1053
|
+
this.set(current);
|
|
1054
|
+
this.prev = undefined;
|
|
1055
|
+
this.prevFrameValue = prev;
|
|
1056
|
+
this.prevUpdatedAt = this.updatedAt - delta;
|
|
1057
|
+
}
|
|
1058
|
+
jump(v, endAnimation = true) {
|
|
1059
|
+
this.updateAndNotify(v);
|
|
1060
|
+
this.prev = v;
|
|
1061
|
+
this.prevUpdatedAt = this.prevFrameValue = undefined;
|
|
1062
|
+
endAnimation && this.stop();
|
|
1063
|
+
if (this.stopPassiveEffect)
|
|
1064
|
+
this.stopPassiveEffect();
|
|
1065
|
+
}
|
|
1066
|
+
get() {
|
|
1067
|
+
if (collectMotionValues.current) {
|
|
1068
|
+
collectMotionValues.current.push(this);
|
|
1069
|
+
}
|
|
1070
|
+
return this.current;
|
|
1071
|
+
}
|
|
1072
|
+
getPrevious() {
|
|
1073
|
+
return this.prev;
|
|
1074
|
+
}
|
|
1075
|
+
getVelocity() {
|
|
1076
|
+
const currentTime = time.now();
|
|
1077
|
+
if (!this.canTrackVelocity || this.prevFrameValue === undefined || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {
|
|
1078
|
+
return 0;
|
|
1079
|
+
}
|
|
1080
|
+
const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
|
|
1081
|
+
return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);
|
|
1082
|
+
}
|
|
1083
|
+
start(startAnimation) {
|
|
1084
|
+
this.stop();
|
|
1085
|
+
return new Promise((resolve) => {
|
|
1086
|
+
this.hasAnimated = true;
|
|
1087
|
+
this.animation = startAnimation(resolve);
|
|
1088
|
+
if (this.events.animationStart) {
|
|
1089
|
+
this.events.animationStart.notify();
|
|
1090
|
+
}
|
|
1091
|
+
}).then(() => {
|
|
1092
|
+
if (this.events.animationComplete) {
|
|
1093
|
+
this.events.animationComplete.notify();
|
|
1094
|
+
}
|
|
1095
|
+
this.clearAnimation();
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1098
|
+
stop() {
|
|
1099
|
+
if (this.animation) {
|
|
1100
|
+
this.animation.stop();
|
|
1101
|
+
if (this.events.animationCancel) {
|
|
1102
|
+
this.events.animationCancel.notify();
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
this.clearAnimation();
|
|
1106
|
+
}
|
|
1107
|
+
isAnimating() {
|
|
1108
|
+
return !!this.animation;
|
|
1109
|
+
}
|
|
1110
|
+
clearAnimation() {
|
|
1111
|
+
delete this.animation;
|
|
1112
|
+
}
|
|
1113
|
+
destroy() {
|
|
1114
|
+
this.clearListeners();
|
|
1115
|
+
this.stop();
|
|
1116
|
+
if (this.stopPassiveEffect) {
|
|
1117
|
+
this.stopPassiveEffect();
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
function motionValue(init, options) {
|
|
1122
|
+
return new MotionValue(init, options);
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/resolve-variants.mjs
|
|
1126
|
+
function getValueState(visualElement) {
|
|
1127
|
+
const state = [{}, {}];
|
|
1128
|
+
visualElement === null || visualElement === undefined || visualElement.values.forEach((value, key) => {
|
|
1129
|
+
state[0][key] = value.get();
|
|
1130
|
+
state[1][key] = value.getVelocity();
|
|
1131
|
+
});
|
|
1132
|
+
return state;
|
|
1133
|
+
}
|
|
1134
|
+
function resolveVariantFromProps(props, definition, custom, visualElement) {
|
|
1135
|
+
if (typeof definition === "function") {
|
|
1136
|
+
const [current, velocity] = getValueState(visualElement);
|
|
1137
|
+
definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
|
|
1138
|
+
}
|
|
1139
|
+
if (typeof definition === "string") {
|
|
1140
|
+
definition = props.variants && props.variants[definition];
|
|
1141
|
+
}
|
|
1142
|
+
if (typeof definition === "function") {
|
|
1143
|
+
const [current, velocity] = getValueState(visualElement);
|
|
1144
|
+
definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
|
|
1145
|
+
}
|
|
1146
|
+
return definition;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs
|
|
1150
|
+
function resolveVariant(visualElement, definition, custom) {
|
|
1151
|
+
const props = visualElement.getProps();
|
|
1152
|
+
return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/setters.mjs
|
|
1156
|
+
function setMotionValue(visualElement, key, value) {
|
|
1157
|
+
if (visualElement.hasValue(key)) {
|
|
1158
|
+
visualElement.getValue(key).set(value);
|
|
1159
|
+
} else {
|
|
1160
|
+
visualElement.addValue(key, motionValue(value));
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
function setTarget(visualElement, definition) {
|
|
1164
|
+
const resolved = resolveVariant(visualElement, definition);
|
|
1165
|
+
let { transitionEnd = {}, transition = {}, ...target } = resolved || {};
|
|
1166
|
+
target = { ...target, ...transitionEnd };
|
|
1167
|
+
for (const key in target) {
|
|
1168
|
+
const value = resolveFinalValueInKeyframes(target[key]);
|
|
1169
|
+
setMotionValue(visualElement, key, value);
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/use-will-change/is.mjs
|
|
1174
|
+
function isWillChangeMotionValue(value) {
|
|
1175
|
+
return Boolean(isMotionValue(value) && value.add);
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/use-will-change/add-will-change.mjs
|
|
1179
|
+
function addValueToWillChange(visualElement, key) {
|
|
1180
|
+
const willChange = visualElement.getValue("willChange");
|
|
1181
|
+
if (isWillChangeMotionValue(willChange)) {
|
|
1182
|
+
return willChange.add(key);
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs
|
|
1187
|
+
var camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase();
|
|
1188
|
+
|
|
1189
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/optimized-appear/data-id.mjs
|
|
1190
|
+
var optimizedAppearDataId = "framerAppearId";
|
|
1191
|
+
var optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId);
|
|
1192
|
+
|
|
1193
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs
|
|
1194
|
+
function getOptimisedAppearId(visualElement) {
|
|
1195
|
+
return visualElement.props[optimizedAppearDataAttribute];
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/use-instant-transition-state.mjs
|
|
1199
|
+
var instantAnimationState = {
|
|
1200
|
+
current: false
|
|
1201
|
+
};
|
|
1202
|
+
|
|
1203
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs
|
|
1204
|
+
function attachTimeline(animation, timeline) {
|
|
1205
|
+
animation.timeline = timeline;
|
|
1206
|
+
animation.onfinish = null;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/is-bezier-definition.mjs
|
|
1210
|
+
var isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === "number";
|
|
1211
|
+
|
|
1212
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/flags.mjs
|
|
1213
|
+
var supportsFlags = {
|
|
1214
|
+
linearEasing: undefined
|
|
1215
|
+
};
|
|
1216
|
+
|
|
1217
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/memo.mjs
|
|
1218
|
+
function memoSupports(callback, supportsFlag) {
|
|
1219
|
+
const memoized = memo(callback);
|
|
1220
|
+
return () => {
|
|
1221
|
+
var _a;
|
|
1222
|
+
return (_a = supportsFlags[supportsFlag]) !== null && _a !== undefined ? _a : memoized();
|
|
1223
|
+
};
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/linear-easing.mjs
|
|
1227
|
+
var supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {
|
|
1228
|
+
try {
|
|
1229
|
+
document.createElement("div").animate({ opacity: 0 }, { easing: "linear(0, 1)" });
|
|
1230
|
+
} catch (e) {
|
|
1231
|
+
return false;
|
|
1232
|
+
}
|
|
1233
|
+
return true;
|
|
1234
|
+
}, "linearEasing");
|
|
1235
|
+
|
|
1236
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/easing.mjs
|
|
1237
|
+
function isWaapiSupportedEasing(easing) {
|
|
1238
|
+
return Boolean(typeof easing === "function" && supportsLinearEasing() || !easing || typeof easing === "string" && ((easing in supportedWaapiEasing) || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));
|
|
1239
|
+
}
|
|
1240
|
+
var cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;
|
|
1241
|
+
var supportedWaapiEasing = {
|
|
1242
|
+
linear: "linear",
|
|
1243
|
+
ease: "ease",
|
|
1244
|
+
easeIn: "ease-in",
|
|
1245
|
+
easeOut: "ease-out",
|
|
1246
|
+
easeInOut: "ease-in-out",
|
|
1247
|
+
circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),
|
|
1248
|
+
circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),
|
|
1249
|
+
backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),
|
|
1250
|
+
backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])
|
|
1251
|
+
};
|
|
1252
|
+
function mapEasingToNativeEasing(easing, duration) {
|
|
1253
|
+
if (!easing) {
|
|
1254
|
+
return;
|
|
1255
|
+
} else if (typeof easing === "function" && supportsLinearEasing()) {
|
|
1256
|
+
return generateLinearEasing(easing, duration);
|
|
1257
|
+
} else if (isBezierDefinition(easing)) {
|
|
1258
|
+
return cubicBezierAsString(easing);
|
|
1259
|
+
} else if (Array.isArray(easing)) {
|
|
1260
|
+
return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);
|
|
1261
|
+
} else {
|
|
1262
|
+
return supportedWaapiEasing[easing];
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/cubic-bezier.mjs
|
|
1267
|
+
var calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;
|
|
1268
|
+
var subdivisionPrecision = 0.0000001;
|
|
1269
|
+
var subdivisionMaxIterations = 12;
|
|
1270
|
+
function binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {
|
|
1271
|
+
let currentX;
|
|
1272
|
+
let currentT;
|
|
1273
|
+
let i = 0;
|
|
1274
|
+
do {
|
|
1275
|
+
currentT = lowerBound + (upperBound - lowerBound) / 2;
|
|
1276
|
+
currentX = calcBezier(currentT, mX1, mX2) - x;
|
|
1277
|
+
if (currentX > 0) {
|
|
1278
|
+
upperBound = currentT;
|
|
1279
|
+
} else {
|
|
1280
|
+
lowerBound = currentT;
|
|
1281
|
+
}
|
|
1282
|
+
} while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);
|
|
1283
|
+
return currentT;
|
|
1284
|
+
}
|
|
1285
|
+
function cubicBezier(mX1, mY1, mX2, mY2) {
|
|
1286
|
+
if (mX1 === mY1 && mX2 === mY2)
|
|
1287
|
+
return noop;
|
|
1288
|
+
const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);
|
|
1289
|
+
return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/modifiers/mirror.mjs
|
|
1293
|
+
var mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
|
|
1294
|
+
|
|
1295
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/modifiers/reverse.mjs
|
|
1296
|
+
var reverseEasing = (easing) => (p) => 1 - easing(1 - p);
|
|
1297
|
+
|
|
1298
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/back.mjs
|
|
1299
|
+
var backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);
|
|
1300
|
+
var backIn = /* @__PURE__ */ reverseEasing(backOut);
|
|
1301
|
+
var backInOut = /* @__PURE__ */ mirrorEasing(backIn);
|
|
1302
|
+
|
|
1303
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/anticipate.mjs
|
|
1304
|
+
var anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
|
|
1305
|
+
|
|
1306
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/circ.mjs
|
|
1307
|
+
var circIn = (p) => 1 - Math.sin(Math.acos(p));
|
|
1308
|
+
var circOut = reverseEasing(circIn);
|
|
1309
|
+
var circInOut = mirrorEasing(circIn);
|
|
1310
|
+
|
|
1311
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-zero-value-string.mjs
|
|
1312
|
+
var isZeroValueString = (v) => /^0[^.\s]+$/u.test(v);
|
|
1313
|
+
|
|
1314
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-none.mjs
|
|
1315
|
+
function isNone(value) {
|
|
1316
|
+
if (typeof value === "number") {
|
|
1317
|
+
return value === 0;
|
|
1318
|
+
} else if (value !== null) {
|
|
1319
|
+
return value === "none" || value === "0" || isZeroValueString(value);
|
|
1320
|
+
} else {
|
|
1321
|
+
return true;
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/numbers/index.mjs
|
|
1326
|
+
var number = {
|
|
1327
|
+
test: (v) => typeof v === "number",
|
|
1328
|
+
parse: parseFloat,
|
|
1329
|
+
transform: (v) => v
|
|
1330
|
+
};
|
|
1331
|
+
var alpha = {
|
|
1332
|
+
...number,
|
|
1333
|
+
transform: (v) => clamp(0, 1, v)
|
|
1334
|
+
};
|
|
1335
|
+
var scale = {
|
|
1336
|
+
...number,
|
|
1337
|
+
default: 1
|
|
1338
|
+
};
|
|
1339
|
+
|
|
1340
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/sanitize.mjs
|
|
1341
|
+
var sanitize = (v) => Math.round(v * 1e5) / 1e5;
|
|
1342
|
+
|
|
1343
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/float-regex.mjs
|
|
1344
|
+
var floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
|
|
1345
|
+
|
|
1346
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/is-nullish.mjs
|
|
1347
|
+
function isNullish(v) {
|
|
1348
|
+
return v == null;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/single-color-regex.mjs
|
|
1352
|
+
var singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;
|
|
1353
|
+
|
|
1354
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/utils.mjs
|
|
1355
|
+
var isColorString = (type, testProp) => (v) => {
|
|
1356
|
+
return Boolean(typeof v === "string" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));
|
|
1357
|
+
};
|
|
1358
|
+
var splitColor = (aName, bName, cName) => (v) => {
|
|
1359
|
+
if (typeof v !== "string")
|
|
1360
|
+
return v;
|
|
1361
|
+
const [a, b, c, alpha2] = v.match(floatRegex);
|
|
1362
|
+
return {
|
|
1363
|
+
[aName]: parseFloat(a),
|
|
1364
|
+
[bName]: parseFloat(b),
|
|
1365
|
+
[cName]: parseFloat(c),
|
|
1366
|
+
alpha: alpha2 !== undefined ? parseFloat(alpha2) : 1
|
|
1367
|
+
};
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/rgba.mjs
|
|
1371
|
+
var clampRgbUnit = (v) => clamp(0, 255, v);
|
|
1372
|
+
var rgbUnit = {
|
|
1373
|
+
...number,
|
|
1374
|
+
transform: (v) => Math.round(clampRgbUnit(v))
|
|
1375
|
+
};
|
|
1376
|
+
var rgba = {
|
|
1377
|
+
test: /* @__PURE__ */ isColorString("rgb", "red"),
|
|
1378
|
+
parse: /* @__PURE__ */ splitColor("red", "green", "blue"),
|
|
1379
|
+
transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + rgbUnit.transform(red) + ", " + rgbUnit.transform(green) + ", " + rgbUnit.transform(blue) + ", " + sanitize(alpha.transform(alpha$1)) + ")"
|
|
1380
|
+
};
|
|
1381
|
+
|
|
1382
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/hex.mjs
|
|
1383
|
+
function parseHex(v) {
|
|
1384
|
+
let r = "";
|
|
1385
|
+
let g = "";
|
|
1386
|
+
let b = "";
|
|
1387
|
+
let a = "";
|
|
1388
|
+
if (v.length > 5) {
|
|
1389
|
+
r = v.substring(1, 3);
|
|
1390
|
+
g = v.substring(3, 5);
|
|
1391
|
+
b = v.substring(5, 7);
|
|
1392
|
+
a = v.substring(7, 9);
|
|
1393
|
+
} else {
|
|
1394
|
+
r = v.substring(1, 2);
|
|
1395
|
+
g = v.substring(2, 3);
|
|
1396
|
+
b = v.substring(3, 4);
|
|
1397
|
+
a = v.substring(4, 5);
|
|
1398
|
+
r += r;
|
|
1399
|
+
g += g;
|
|
1400
|
+
b += b;
|
|
1401
|
+
a += a;
|
|
1402
|
+
}
|
|
1403
|
+
return {
|
|
1404
|
+
red: parseInt(r, 16),
|
|
1405
|
+
green: parseInt(g, 16),
|
|
1406
|
+
blue: parseInt(b, 16),
|
|
1407
|
+
alpha: a ? parseInt(a, 16) / 255 : 1
|
|
1408
|
+
};
|
|
1409
|
+
}
|
|
1410
|
+
var hex = {
|
|
1411
|
+
test: /* @__PURE__ */ isColorString("#"),
|
|
1412
|
+
parse: parseHex,
|
|
1413
|
+
transform: rgba.transform
|
|
1414
|
+
};
|
|
1415
|
+
|
|
1416
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/numbers/units.mjs
|
|
1417
|
+
var createUnitType = (unit) => ({
|
|
1418
|
+
test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
|
|
1419
|
+
parse: parseFloat,
|
|
1420
|
+
transform: (v) => `${v}${unit}`
|
|
1421
|
+
});
|
|
1422
|
+
var degrees = /* @__PURE__ */ createUnitType("deg");
|
|
1423
|
+
var percent = /* @__PURE__ */ createUnitType("%");
|
|
1424
|
+
var px = /* @__PURE__ */ createUnitType("px");
|
|
1425
|
+
var vh = /* @__PURE__ */ createUnitType("vh");
|
|
1426
|
+
var vw = /* @__PURE__ */ createUnitType("vw");
|
|
1427
|
+
var progressPercentage = {
|
|
1428
|
+
...percent,
|
|
1429
|
+
parse: (v) => percent.parse(v) / 100,
|
|
1430
|
+
transform: (v) => percent.transform(v * 100)
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/hsla.mjs
|
|
1434
|
+
var hsla = {
|
|
1435
|
+
test: /* @__PURE__ */ isColorString("hsl", "hue"),
|
|
1436
|
+
parse: /* @__PURE__ */ splitColor("hue", "saturation", "lightness"),
|
|
1437
|
+
transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
|
|
1438
|
+
return "hsla(" + Math.round(hue) + ", " + percent.transform(sanitize(saturation)) + ", " + percent.transform(sanitize(lightness)) + ", " + sanitize(alpha.transform(alpha$1)) + ")";
|
|
1439
|
+
}
|
|
1440
|
+
};
|
|
1441
|
+
|
|
1442
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/index.mjs
|
|
1443
|
+
var color = {
|
|
1444
|
+
test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
|
|
1445
|
+
parse: (v) => {
|
|
1446
|
+
if (rgba.test(v)) {
|
|
1447
|
+
return rgba.parse(v);
|
|
1448
|
+
} else if (hsla.test(v)) {
|
|
1449
|
+
return hsla.parse(v);
|
|
1450
|
+
} else {
|
|
1451
|
+
return hex.parse(v);
|
|
1452
|
+
}
|
|
1453
|
+
},
|
|
1454
|
+
transform: (v) => {
|
|
1455
|
+
return typeof v === "string" ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
|
|
1456
|
+
}
|
|
1457
|
+
};
|
|
1458
|
+
|
|
1459
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/color-regex.mjs
|
|
1460
|
+
var colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
|
|
1461
|
+
|
|
1462
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/complex/index.mjs
|
|
1463
|
+
function test(v) {
|
|
1464
|
+
var _a, _b;
|
|
1465
|
+
return isNaN(v) && typeof v === "string" && (((_a = v.match(floatRegex)) === null || _a === undefined ? undefined : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === undefined ? undefined : _b.length) || 0) > 0;
|
|
1466
|
+
}
|
|
1467
|
+
var NUMBER_TOKEN = "number";
|
|
1468
|
+
var COLOR_TOKEN = "color";
|
|
1469
|
+
var VAR_TOKEN = "var";
|
|
1470
|
+
var VAR_FUNCTION_TOKEN = "var(";
|
|
1471
|
+
var SPLIT_TOKEN = "${}";
|
|
1472
|
+
var complexRegex = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
|
|
1473
|
+
function analyseComplexValue(value) {
|
|
1474
|
+
const originalValue = value.toString();
|
|
1475
|
+
const values = [];
|
|
1476
|
+
const indexes = {
|
|
1477
|
+
color: [],
|
|
1478
|
+
number: [],
|
|
1479
|
+
var: []
|
|
1480
|
+
};
|
|
1481
|
+
const types = [];
|
|
1482
|
+
let i = 0;
|
|
1483
|
+
const tokenised = originalValue.replace(complexRegex, (parsedValue) => {
|
|
1484
|
+
if (color.test(parsedValue)) {
|
|
1485
|
+
indexes.color.push(i);
|
|
1486
|
+
types.push(COLOR_TOKEN);
|
|
1487
|
+
values.push(color.parse(parsedValue));
|
|
1488
|
+
} else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {
|
|
1489
|
+
indexes.var.push(i);
|
|
1490
|
+
types.push(VAR_TOKEN);
|
|
1491
|
+
values.push(parsedValue);
|
|
1492
|
+
} else {
|
|
1493
|
+
indexes.number.push(i);
|
|
1494
|
+
types.push(NUMBER_TOKEN);
|
|
1495
|
+
values.push(parseFloat(parsedValue));
|
|
1496
|
+
}
|
|
1497
|
+
++i;
|
|
1498
|
+
return SPLIT_TOKEN;
|
|
1499
|
+
});
|
|
1500
|
+
const split = tokenised.split(SPLIT_TOKEN);
|
|
1501
|
+
return { values, split, indexes, types };
|
|
1502
|
+
}
|
|
1503
|
+
function parseComplexValue(v) {
|
|
1504
|
+
return analyseComplexValue(v).values;
|
|
1505
|
+
}
|
|
1506
|
+
function createTransformer(source) {
|
|
1507
|
+
const { split, types } = analyseComplexValue(source);
|
|
1508
|
+
const numSections = split.length;
|
|
1509
|
+
return (v) => {
|
|
1510
|
+
let output = "";
|
|
1511
|
+
for (let i = 0;i < numSections; i++) {
|
|
1512
|
+
output += split[i];
|
|
1513
|
+
if (v[i] !== undefined) {
|
|
1514
|
+
const type = types[i];
|
|
1515
|
+
if (type === NUMBER_TOKEN) {
|
|
1516
|
+
output += sanitize(v[i]);
|
|
1517
|
+
} else if (type === COLOR_TOKEN) {
|
|
1518
|
+
output += color.transform(v[i]);
|
|
1519
|
+
} else {
|
|
1520
|
+
output += v[i];
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
return output;
|
|
1525
|
+
};
|
|
1526
|
+
}
|
|
1527
|
+
var convertNumbersToZero = (v) => typeof v === "number" ? 0 : v;
|
|
1528
|
+
function getAnimatableNone(v) {
|
|
1529
|
+
const parsed = parseComplexValue(v);
|
|
1530
|
+
const transformer = createTransformer(v);
|
|
1531
|
+
return transformer(parsed.map(convertNumbersToZero));
|
|
1532
|
+
}
|
|
1533
|
+
var complex = {
|
|
1534
|
+
test,
|
|
1535
|
+
parse: parseComplexValue,
|
|
1536
|
+
createTransformer,
|
|
1537
|
+
getAnimatableNone
|
|
1538
|
+
};
|
|
1539
|
+
|
|
1540
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/complex/filter.mjs
|
|
1541
|
+
var maxDefaults = new Set(["brightness", "contrast", "saturate", "opacity"]);
|
|
1542
|
+
function applyDefaultFilter(v) {
|
|
1543
|
+
const [name, value] = v.slice(0, -1).split("(");
|
|
1544
|
+
if (name === "drop-shadow")
|
|
1545
|
+
return v;
|
|
1546
|
+
const [number2] = value.match(floatRegex) || [];
|
|
1547
|
+
if (!number2)
|
|
1548
|
+
return v;
|
|
1549
|
+
const unit = value.replace(number2, "");
|
|
1550
|
+
let defaultValue = maxDefaults.has(name) ? 1 : 0;
|
|
1551
|
+
if (number2 !== value)
|
|
1552
|
+
defaultValue *= 100;
|
|
1553
|
+
return name + "(" + defaultValue + unit + ")";
|
|
1554
|
+
}
|
|
1555
|
+
var functionRegex = /\b([a-z-]*)\(.*?\)/gu;
|
|
1556
|
+
var filter = {
|
|
1557
|
+
...complex,
|
|
1558
|
+
getAnimatableNone: (v) => {
|
|
1559
|
+
const functions = v.match(functionRegex);
|
|
1560
|
+
return functions ? functions.map(applyDefaultFilter).join(" ") : v;
|
|
1561
|
+
}
|
|
1562
|
+
};
|
|
1563
|
+
|
|
1564
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/number-browser.mjs
|
|
1565
|
+
var browserNumberValueTypes = {
|
|
1566
|
+
borderWidth: px,
|
|
1567
|
+
borderTopWidth: px,
|
|
1568
|
+
borderRightWidth: px,
|
|
1569
|
+
borderBottomWidth: px,
|
|
1570
|
+
borderLeftWidth: px,
|
|
1571
|
+
borderRadius: px,
|
|
1572
|
+
radius: px,
|
|
1573
|
+
borderTopLeftRadius: px,
|
|
1574
|
+
borderTopRightRadius: px,
|
|
1575
|
+
borderBottomRightRadius: px,
|
|
1576
|
+
borderBottomLeftRadius: px,
|
|
1577
|
+
width: px,
|
|
1578
|
+
maxWidth: px,
|
|
1579
|
+
height: px,
|
|
1580
|
+
maxHeight: px,
|
|
1581
|
+
top: px,
|
|
1582
|
+
right: px,
|
|
1583
|
+
bottom: px,
|
|
1584
|
+
left: px,
|
|
1585
|
+
padding: px,
|
|
1586
|
+
paddingTop: px,
|
|
1587
|
+
paddingRight: px,
|
|
1588
|
+
paddingBottom: px,
|
|
1589
|
+
paddingLeft: px,
|
|
1590
|
+
margin: px,
|
|
1591
|
+
marginTop: px,
|
|
1592
|
+
marginRight: px,
|
|
1593
|
+
marginBottom: px,
|
|
1594
|
+
marginLeft: px,
|
|
1595
|
+
backgroundPositionX: px,
|
|
1596
|
+
backgroundPositionY: px
|
|
1597
|
+
};
|
|
1598
|
+
|
|
1599
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/transform.mjs
|
|
1600
|
+
var transformValueTypes = {
|
|
1601
|
+
rotate: degrees,
|
|
1602
|
+
rotateX: degrees,
|
|
1603
|
+
rotateY: degrees,
|
|
1604
|
+
rotateZ: degrees,
|
|
1605
|
+
scale,
|
|
1606
|
+
scaleX: scale,
|
|
1607
|
+
scaleY: scale,
|
|
1608
|
+
scaleZ: scale,
|
|
1609
|
+
skew: degrees,
|
|
1610
|
+
skewX: degrees,
|
|
1611
|
+
skewY: degrees,
|
|
1612
|
+
distance: px,
|
|
1613
|
+
translateX: px,
|
|
1614
|
+
translateY: px,
|
|
1615
|
+
translateZ: px,
|
|
1616
|
+
x: px,
|
|
1617
|
+
y: px,
|
|
1618
|
+
z: px,
|
|
1619
|
+
perspective: px,
|
|
1620
|
+
transformPerspective: px,
|
|
1621
|
+
opacity: alpha,
|
|
1622
|
+
originX: progressPercentage,
|
|
1623
|
+
originY: progressPercentage,
|
|
1624
|
+
originZ: px
|
|
1625
|
+
};
|
|
1626
|
+
|
|
1627
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/type-int.mjs
|
|
1628
|
+
var int = {
|
|
1629
|
+
...number,
|
|
1630
|
+
transform: Math.round
|
|
1631
|
+
};
|
|
1632
|
+
|
|
1633
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/number.mjs
|
|
1634
|
+
var numberValueTypes = {
|
|
1635
|
+
...browserNumberValueTypes,
|
|
1636
|
+
...transformValueTypes,
|
|
1637
|
+
zIndex: int,
|
|
1638
|
+
size: px,
|
|
1639
|
+
fillOpacity: alpha,
|
|
1640
|
+
strokeOpacity: alpha,
|
|
1641
|
+
numOctaves: int
|
|
1642
|
+
};
|
|
1643
|
+
|
|
1644
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/defaults.mjs
|
|
1645
|
+
var defaultValueTypes = {
|
|
1646
|
+
...numberValueTypes,
|
|
1647
|
+
color,
|
|
1648
|
+
backgroundColor: color,
|
|
1649
|
+
outlineColor: color,
|
|
1650
|
+
fill: color,
|
|
1651
|
+
stroke: color,
|
|
1652
|
+
borderColor: color,
|
|
1653
|
+
borderTopColor: color,
|
|
1654
|
+
borderRightColor: color,
|
|
1655
|
+
borderBottomColor: color,
|
|
1656
|
+
borderLeftColor: color,
|
|
1657
|
+
filter,
|
|
1658
|
+
WebkitFilter: filter
|
|
1659
|
+
};
|
|
1660
|
+
var getDefaultValueType = (key) => defaultValueTypes[key];
|
|
1661
|
+
|
|
1662
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs
|
|
1663
|
+
function getAnimatableNone2(key, value) {
|
|
1664
|
+
let defaultValueType = getDefaultValueType(key);
|
|
1665
|
+
if (defaultValueType !== filter)
|
|
1666
|
+
defaultValueType = complex;
|
|
1667
|
+
return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : undefined;
|
|
1668
|
+
}
|
|
1669
|
+
|
|
1670
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs
|
|
1671
|
+
var invalidTemplates = new Set(["auto", "none", "0"]);
|
|
1672
|
+
function makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {
|
|
1673
|
+
let i = 0;
|
|
1674
|
+
let animatableTemplate = undefined;
|
|
1675
|
+
while (i < unresolvedKeyframes.length && !animatableTemplate) {
|
|
1676
|
+
const keyframe = unresolvedKeyframes[i];
|
|
1677
|
+
if (typeof keyframe === "string" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {
|
|
1678
|
+
animatableTemplate = unresolvedKeyframes[i];
|
|
1679
|
+
}
|
|
1680
|
+
i++;
|
|
1681
|
+
}
|
|
1682
|
+
if (animatableTemplate && name) {
|
|
1683
|
+
for (const noneIndex of noneKeyframeIndexes) {
|
|
1684
|
+
unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs
|
|
1690
|
+
var isNumOrPxType = (v) => v === number || v === px;
|
|
1691
|
+
var getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(", ")[pos]);
|
|
1692
|
+
var getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {
|
|
1693
|
+
if (transform === "none" || !transform)
|
|
1694
|
+
return 0;
|
|
1695
|
+
const matrix3d = transform.match(/^matrix3d\((.+)\)$/u);
|
|
1696
|
+
if (matrix3d) {
|
|
1697
|
+
return getPosFromMatrix(matrix3d[1], pos3);
|
|
1698
|
+
} else {
|
|
1699
|
+
const matrix = transform.match(/^matrix\((.+)\)$/u);
|
|
1700
|
+
if (matrix) {
|
|
1701
|
+
return getPosFromMatrix(matrix[1], pos2);
|
|
1702
|
+
} else {
|
|
1703
|
+
return 0;
|
|
1704
|
+
}
|
|
1705
|
+
}
|
|
1706
|
+
};
|
|
1707
|
+
var transformKeys = new Set(["x", "y", "z"]);
|
|
1708
|
+
var nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
|
|
1709
|
+
function removeNonTranslationalTransform(visualElement) {
|
|
1710
|
+
const removedTransforms = [];
|
|
1711
|
+
nonTranslationalTransformKeys.forEach((key) => {
|
|
1712
|
+
const value = visualElement.getValue(key);
|
|
1713
|
+
if (value !== undefined) {
|
|
1714
|
+
removedTransforms.push([key, value.get()]);
|
|
1715
|
+
value.set(key.startsWith("scale") ? 1 : 0);
|
|
1716
|
+
}
|
|
1717
|
+
});
|
|
1718
|
+
return removedTransforms;
|
|
1719
|
+
}
|
|
1720
|
+
var positionalValues = {
|
|
1721
|
+
width: ({ x }, { paddingLeft = "0", paddingRight = "0" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),
|
|
1722
|
+
height: ({ y }, { paddingTop = "0", paddingBottom = "0" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),
|
|
1723
|
+
top: (_bbox, { top }) => parseFloat(top),
|
|
1724
|
+
left: (_bbox, { left }) => parseFloat(left),
|
|
1725
|
+
bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
|
|
1726
|
+
right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
|
|
1727
|
+
x: getTranslateFromMatrix(4, 13),
|
|
1728
|
+
y: getTranslateFromMatrix(5, 14)
|
|
1729
|
+
};
|
|
1730
|
+
positionalValues.translateX = positionalValues.x;
|
|
1731
|
+
positionalValues.translateY = positionalValues.y;
|
|
1732
|
+
|
|
1733
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/KeyframesResolver.mjs
|
|
1734
|
+
var toResolve = new Set;
|
|
1735
|
+
var isScheduled = false;
|
|
1736
|
+
var anyNeedsMeasurement = false;
|
|
1737
|
+
function measureAllKeyframes() {
|
|
1738
|
+
if (anyNeedsMeasurement) {
|
|
1739
|
+
const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);
|
|
1740
|
+
const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));
|
|
1741
|
+
const transformsToRestore = new Map;
|
|
1742
|
+
elementsToMeasure.forEach((element) => {
|
|
1743
|
+
const removedTransforms = removeNonTranslationalTransform(element);
|
|
1744
|
+
if (!removedTransforms.length)
|
|
1745
|
+
return;
|
|
1746
|
+
transformsToRestore.set(element, removedTransforms);
|
|
1747
|
+
element.render();
|
|
1748
|
+
});
|
|
1749
|
+
resolversToMeasure.forEach((resolver) => resolver.measureInitialState());
|
|
1750
|
+
elementsToMeasure.forEach((element) => {
|
|
1751
|
+
element.render();
|
|
1752
|
+
const restore = transformsToRestore.get(element);
|
|
1753
|
+
if (restore) {
|
|
1754
|
+
restore.forEach(([key, value]) => {
|
|
1755
|
+
var _a;
|
|
1756
|
+
(_a = element.getValue(key)) === null || _a === undefined || _a.set(value);
|
|
1757
|
+
});
|
|
1758
|
+
}
|
|
1759
|
+
});
|
|
1760
|
+
resolversToMeasure.forEach((resolver) => resolver.measureEndState());
|
|
1761
|
+
resolversToMeasure.forEach((resolver) => {
|
|
1762
|
+
if (resolver.suspendedScrollY !== undefined) {
|
|
1763
|
+
window.scrollTo(0, resolver.suspendedScrollY);
|
|
1764
|
+
}
|
|
1765
|
+
});
|
|
1766
|
+
}
|
|
1767
|
+
anyNeedsMeasurement = false;
|
|
1768
|
+
isScheduled = false;
|
|
1769
|
+
toResolve.forEach((resolver) => resolver.complete());
|
|
1770
|
+
toResolve.clear();
|
|
1771
|
+
}
|
|
1772
|
+
function readAllKeyframes() {
|
|
1773
|
+
toResolve.forEach((resolver) => {
|
|
1774
|
+
resolver.readKeyframes();
|
|
1775
|
+
if (resolver.needsMeasurement) {
|
|
1776
|
+
anyNeedsMeasurement = true;
|
|
1777
|
+
}
|
|
1778
|
+
});
|
|
1779
|
+
}
|
|
1780
|
+
function flushKeyframeResolvers() {
|
|
1781
|
+
readAllKeyframes();
|
|
1782
|
+
measureAllKeyframes();
|
|
1783
|
+
}
|
|
1784
|
+
|
|
1785
|
+
class KeyframeResolver {
|
|
1786
|
+
constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {
|
|
1787
|
+
this.isComplete = false;
|
|
1788
|
+
this.isAsync = false;
|
|
1789
|
+
this.needsMeasurement = false;
|
|
1790
|
+
this.isScheduled = false;
|
|
1791
|
+
this.unresolvedKeyframes = [...unresolvedKeyframes];
|
|
1792
|
+
this.onComplete = onComplete;
|
|
1793
|
+
this.name = name;
|
|
1794
|
+
this.motionValue = motionValue2;
|
|
1795
|
+
this.element = element;
|
|
1796
|
+
this.isAsync = isAsync;
|
|
1797
|
+
}
|
|
1798
|
+
scheduleResolve() {
|
|
1799
|
+
this.isScheduled = true;
|
|
1800
|
+
if (this.isAsync) {
|
|
1801
|
+
toResolve.add(this);
|
|
1802
|
+
if (!isScheduled) {
|
|
1803
|
+
isScheduled = true;
|
|
1804
|
+
frame.read(readAllKeyframes);
|
|
1805
|
+
frame.resolveKeyframes(measureAllKeyframes);
|
|
1806
|
+
}
|
|
1807
|
+
} else {
|
|
1808
|
+
this.readKeyframes();
|
|
1809
|
+
this.complete();
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
readKeyframes() {
|
|
1813
|
+
const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;
|
|
1814
|
+
for (let i = 0;i < unresolvedKeyframes.length; i++) {
|
|
1815
|
+
if (unresolvedKeyframes[i] === null) {
|
|
1816
|
+
if (i === 0) {
|
|
1817
|
+
const currentValue = motionValue2 === null || motionValue2 === undefined ? undefined : motionValue2.get();
|
|
1818
|
+
const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
1819
|
+
if (currentValue !== undefined) {
|
|
1820
|
+
unresolvedKeyframes[0] = currentValue;
|
|
1821
|
+
} else if (element && name) {
|
|
1822
|
+
const valueAsRead = element.readValue(name, finalKeyframe);
|
|
1823
|
+
if (valueAsRead !== undefined && valueAsRead !== null) {
|
|
1824
|
+
unresolvedKeyframes[0] = valueAsRead;
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
if (unresolvedKeyframes[0] === undefined) {
|
|
1828
|
+
unresolvedKeyframes[0] = finalKeyframe;
|
|
1829
|
+
}
|
|
1830
|
+
if (motionValue2 && currentValue === undefined) {
|
|
1831
|
+
motionValue2.set(unresolvedKeyframes[0]);
|
|
1832
|
+
}
|
|
1833
|
+
} else {
|
|
1834
|
+
unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
setFinalKeyframe() {}
|
|
1840
|
+
measureInitialState() {}
|
|
1841
|
+
renderEndStyles() {}
|
|
1842
|
+
measureEndState() {}
|
|
1843
|
+
complete() {
|
|
1844
|
+
this.isComplete = true;
|
|
1845
|
+
this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);
|
|
1846
|
+
toResolve.delete(this);
|
|
1847
|
+
}
|
|
1848
|
+
cancel() {
|
|
1849
|
+
if (!this.isComplete) {
|
|
1850
|
+
this.isScheduled = false;
|
|
1851
|
+
toResolve.delete(this);
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
resume() {
|
|
1855
|
+
if (!this.isComplete)
|
|
1856
|
+
this.scheduleResolve();
|
|
1857
|
+
}
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-numerical-string.mjs
|
|
1861
|
+
var isNumericalString = (v) => /^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v);
|
|
1862
|
+
|
|
1863
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs
|
|
1864
|
+
var checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
|
|
1865
|
+
var isCSSVariableName = /* @__PURE__ */ checkStringStartsWith("--");
|
|
1866
|
+
var startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith("var(--");
|
|
1867
|
+
var isCSSVariableToken = (value) => {
|
|
1868
|
+
const startsWithToken = startsAsVariableToken(value);
|
|
1869
|
+
if (!startsWithToken)
|
|
1870
|
+
return false;
|
|
1871
|
+
return singleCssVariableRegex.test(value.split("/*")[0].trim());
|
|
1872
|
+
};
|
|
1873
|
+
var singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
|
|
1874
|
+
|
|
1875
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs
|
|
1876
|
+
var splitCSSVariableRegex = /^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;
|
|
1877
|
+
function parseCSSVariable(current) {
|
|
1878
|
+
const match = splitCSSVariableRegex.exec(current);
|
|
1879
|
+
if (!match)
|
|
1880
|
+
return [,];
|
|
1881
|
+
const [, token1, token2, fallback] = match;
|
|
1882
|
+
return [`--${token1 !== null && token1 !== undefined ? token1 : token2}`, fallback];
|
|
1883
|
+
}
|
|
1884
|
+
var maxDepth = 4;
|
|
1885
|
+
function getVariableValue(current, element, depth = 1) {
|
|
1886
|
+
invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property "${current}". This may indicate a circular fallback dependency.`);
|
|
1887
|
+
const [token, fallback] = parseCSSVariable(current);
|
|
1888
|
+
if (!token)
|
|
1889
|
+
return;
|
|
1890
|
+
const resolved = window.getComputedStyle(element).getPropertyValue(token);
|
|
1891
|
+
if (resolved) {
|
|
1892
|
+
const trimmed = resolved.trim();
|
|
1893
|
+
return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;
|
|
1894
|
+
}
|
|
1895
|
+
return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/test.mjs
|
|
1899
|
+
var testValueType = (v) => (type) => type.test(v);
|
|
1900
|
+
|
|
1901
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/type-auto.mjs
|
|
1902
|
+
var auto = {
|
|
1903
|
+
test: (v) => v === "auto",
|
|
1904
|
+
parse: (v) => v
|
|
1905
|
+
};
|
|
1906
|
+
|
|
1907
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/dimensions.mjs
|
|
1908
|
+
var dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];
|
|
1909
|
+
var findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));
|
|
1910
|
+
|
|
1911
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs
|
|
1912
|
+
class DOMKeyframesResolver extends KeyframeResolver {
|
|
1913
|
+
constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {
|
|
1914
|
+
super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);
|
|
1915
|
+
}
|
|
1916
|
+
readKeyframes() {
|
|
1917
|
+
const { unresolvedKeyframes, element, name } = this;
|
|
1918
|
+
if (!element || !element.current)
|
|
1919
|
+
return;
|
|
1920
|
+
super.readKeyframes();
|
|
1921
|
+
for (let i = 0;i < unresolvedKeyframes.length; i++) {
|
|
1922
|
+
let keyframe = unresolvedKeyframes[i];
|
|
1923
|
+
if (typeof keyframe === "string") {
|
|
1924
|
+
keyframe = keyframe.trim();
|
|
1925
|
+
if (isCSSVariableToken(keyframe)) {
|
|
1926
|
+
const resolved = getVariableValue(keyframe, element.current);
|
|
1927
|
+
if (resolved !== undefined) {
|
|
1928
|
+
unresolvedKeyframes[i] = resolved;
|
|
1929
|
+
}
|
|
1930
|
+
if (i === unresolvedKeyframes.length - 1) {
|
|
1931
|
+
this.finalKeyframe = keyframe;
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
}
|
|
1936
|
+
this.resolveNoneKeyframes();
|
|
1937
|
+
if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {
|
|
1938
|
+
return;
|
|
1939
|
+
}
|
|
1940
|
+
const [origin, target] = unresolvedKeyframes;
|
|
1941
|
+
const originType = findDimensionValueType(origin);
|
|
1942
|
+
const targetType = findDimensionValueType(target);
|
|
1943
|
+
if (originType === targetType)
|
|
1944
|
+
return;
|
|
1945
|
+
if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {
|
|
1946
|
+
for (let i = 0;i < unresolvedKeyframes.length; i++) {
|
|
1947
|
+
const value = unresolvedKeyframes[i];
|
|
1948
|
+
if (typeof value === "string") {
|
|
1949
|
+
unresolvedKeyframes[i] = parseFloat(value);
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
} else {
|
|
1953
|
+
this.needsMeasurement = true;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
resolveNoneKeyframes() {
|
|
1957
|
+
const { unresolvedKeyframes, name } = this;
|
|
1958
|
+
const noneKeyframeIndexes = [];
|
|
1959
|
+
for (let i = 0;i < unresolvedKeyframes.length; i++) {
|
|
1960
|
+
if (isNone(unresolvedKeyframes[i])) {
|
|
1961
|
+
noneKeyframeIndexes.push(i);
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1964
|
+
if (noneKeyframeIndexes.length) {
|
|
1965
|
+
makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
1968
|
+
measureInitialState() {
|
|
1969
|
+
const { element, unresolvedKeyframes, name } = this;
|
|
1970
|
+
if (!element || !element.current)
|
|
1971
|
+
return;
|
|
1972
|
+
if (name === "height") {
|
|
1973
|
+
this.suspendedScrollY = window.pageYOffset;
|
|
1974
|
+
}
|
|
1975
|
+
this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
|
|
1976
|
+
unresolvedKeyframes[0] = this.measuredOrigin;
|
|
1977
|
+
const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
1978
|
+
if (measureKeyframe !== undefined) {
|
|
1979
|
+
element.getValue(name, measureKeyframe).jump(measureKeyframe, false);
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
measureEndState() {
|
|
1983
|
+
var _a;
|
|
1984
|
+
const { element, name, unresolvedKeyframes } = this;
|
|
1985
|
+
if (!element || !element.current)
|
|
1986
|
+
return;
|
|
1987
|
+
const value = element.getValue(name);
|
|
1988
|
+
value && value.jump(this.measuredOrigin, false);
|
|
1989
|
+
const finalKeyframeIndex = unresolvedKeyframes.length - 1;
|
|
1990
|
+
const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
|
|
1991
|
+
unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
|
|
1992
|
+
if (finalKeyframe !== null && this.finalKeyframe === undefined) {
|
|
1993
|
+
this.finalKeyframe = finalKeyframe;
|
|
1994
|
+
}
|
|
1995
|
+
if ((_a = this.removedTransforms) === null || _a === undefined ? undefined : _a.length) {
|
|
1996
|
+
this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
|
|
1997
|
+
element.getValue(unsetTransformName).set(unsetTransformValue);
|
|
1998
|
+
});
|
|
1999
|
+
}
|
|
2000
|
+
this.resolveNoneKeyframes();
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-animatable.mjs
|
|
2005
|
+
var isAnimatable = (value, name) => {
|
|
2006
|
+
if (name === "zIndex")
|
|
2007
|
+
return false;
|
|
2008
|
+
if (typeof value === "number" || Array.isArray(value))
|
|
2009
|
+
return true;
|
|
2010
|
+
if (typeof value === "string" && (complex.test(value) || value === "0") && !value.startsWith("url(")) {
|
|
2011
|
+
return true;
|
|
2012
|
+
}
|
|
2013
|
+
return false;
|
|
2014
|
+
};
|
|
2015
|
+
|
|
2016
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/utils/can-animate.mjs
|
|
2017
|
+
function hasKeyframesChanged(keyframes) {
|
|
2018
|
+
const current = keyframes[0];
|
|
2019
|
+
if (keyframes.length === 1)
|
|
2020
|
+
return true;
|
|
2021
|
+
for (let i = 0;i < keyframes.length; i++) {
|
|
2022
|
+
if (keyframes[i] !== current)
|
|
2023
|
+
return true;
|
|
2024
|
+
}
|
|
2025
|
+
}
|
|
2026
|
+
function canAnimate(keyframes, name, type, velocity) {
|
|
2027
|
+
const originKeyframe = keyframes[0];
|
|
2028
|
+
if (originKeyframe === null)
|
|
2029
|
+
return false;
|
|
2030
|
+
if (name === "display" || name === "visibility")
|
|
2031
|
+
return true;
|
|
2032
|
+
const targetKeyframe = keyframes[keyframes.length - 1];
|
|
2033
|
+
const isOriginAnimatable = isAnimatable(originKeyframe, name);
|
|
2034
|
+
const isTargetAnimatable = isAnimatable(targetKeyframe, name);
|
|
2035
|
+
warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} 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.`);
|
|
2036
|
+
if (!isOriginAnimatable || !isTargetAnimatable) {
|
|
2037
|
+
return false;
|
|
2038
|
+
}
|
|
2039
|
+
return hasKeyframesChanged(keyframes) || (type === "spring" || isGenerator(type)) && velocity;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs
|
|
2043
|
+
var isNotNull = (value) => value !== null;
|
|
2044
|
+
function getFinalKeyframe(keyframes, { repeat, repeatType = "loop" }, finalKeyframe) {
|
|
2045
|
+
const resolvedKeyframes = keyframes.filter(isNotNull);
|
|
2046
|
+
const index = repeat && repeatType !== "loop" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;
|
|
2047
|
+
return !index || finalKeyframe === undefined ? resolvedKeyframes[index] : finalKeyframe;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/BaseAnimation.mjs
|
|
2051
|
+
var MAX_RESOLVE_DELAY = 40;
|
|
2052
|
+
|
|
2053
|
+
class BaseAnimation {
|
|
2054
|
+
constructor({ autoplay = true, delay = 0, type = "keyframes", repeat = 0, repeatDelay = 0, repeatType = "loop", ...options }) {
|
|
2055
|
+
this.isStopped = false;
|
|
2056
|
+
this.hasAttemptedResolve = false;
|
|
2057
|
+
this.createdAt = time.now();
|
|
2058
|
+
this.options = {
|
|
2059
|
+
autoplay,
|
|
2060
|
+
delay,
|
|
2061
|
+
type,
|
|
2062
|
+
repeat,
|
|
2063
|
+
repeatDelay,
|
|
2064
|
+
repeatType,
|
|
2065
|
+
...options
|
|
2066
|
+
};
|
|
2067
|
+
this.updateFinishedPromise();
|
|
2068
|
+
}
|
|
2069
|
+
calcStartTime() {
|
|
2070
|
+
if (!this.resolvedAt)
|
|
2071
|
+
return this.createdAt;
|
|
2072
|
+
return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;
|
|
2073
|
+
}
|
|
2074
|
+
get resolved() {
|
|
2075
|
+
if (!this._resolved && !this.hasAttemptedResolve) {
|
|
2076
|
+
flushKeyframeResolvers();
|
|
2077
|
+
}
|
|
2078
|
+
return this._resolved;
|
|
2079
|
+
}
|
|
2080
|
+
onKeyframesResolved(keyframes, finalKeyframe) {
|
|
2081
|
+
this.resolvedAt = time.now();
|
|
2082
|
+
this.hasAttemptedResolve = true;
|
|
2083
|
+
const { name, type, velocity, delay, onComplete, onUpdate, isGenerator: isGenerator2 } = this.options;
|
|
2084
|
+
if (!isGenerator2 && !canAnimate(keyframes, name, type, velocity)) {
|
|
2085
|
+
if (instantAnimationState.current || !delay) {
|
|
2086
|
+
onUpdate && onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));
|
|
2087
|
+
onComplete && onComplete();
|
|
2088
|
+
this.resolveFinishedPromise();
|
|
2089
|
+
return;
|
|
2090
|
+
} else {
|
|
2091
|
+
this.options.duration = 0;
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2094
|
+
const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);
|
|
2095
|
+
if (resolvedAnimation === false)
|
|
2096
|
+
return;
|
|
2097
|
+
this._resolved = {
|
|
2098
|
+
keyframes,
|
|
2099
|
+
finalKeyframe,
|
|
2100
|
+
...resolvedAnimation
|
|
2101
|
+
};
|
|
2102
|
+
this.onPostResolved();
|
|
2103
|
+
}
|
|
2104
|
+
onPostResolved() {}
|
|
2105
|
+
then(resolve, reject) {
|
|
2106
|
+
return this.currentFinishedPromise.then(resolve, reject);
|
|
2107
|
+
}
|
|
2108
|
+
flatten() {
|
|
2109
|
+
this.options.type = "keyframes";
|
|
2110
|
+
this.options.ease = "linear";
|
|
2111
|
+
}
|
|
2112
|
+
updateFinishedPromise() {
|
|
2113
|
+
this.currentFinishedPromise = new Promise((resolve) => {
|
|
2114
|
+
this.resolveFinishedPromise = resolve;
|
|
2115
|
+
});
|
|
2116
|
+
}
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2119
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/hsla-to-rgba.mjs
|
|
2120
|
+
function hueToRgb(p, q, t) {
|
|
2121
|
+
if (t < 0)
|
|
2122
|
+
t += 1;
|
|
2123
|
+
if (t > 1)
|
|
2124
|
+
t -= 1;
|
|
2125
|
+
if (t < 1 / 6)
|
|
2126
|
+
return p + (q - p) * 6 * t;
|
|
2127
|
+
if (t < 1 / 2)
|
|
2128
|
+
return q;
|
|
2129
|
+
if (t < 2 / 3)
|
|
2130
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
2131
|
+
return p;
|
|
2132
|
+
}
|
|
2133
|
+
function hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {
|
|
2134
|
+
hue /= 360;
|
|
2135
|
+
saturation /= 100;
|
|
2136
|
+
lightness /= 100;
|
|
2137
|
+
let red = 0;
|
|
2138
|
+
let green = 0;
|
|
2139
|
+
let blue = 0;
|
|
2140
|
+
if (!saturation) {
|
|
2141
|
+
red = green = blue = lightness;
|
|
2142
|
+
} else {
|
|
2143
|
+
const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;
|
|
2144
|
+
const p = 2 * lightness - q;
|
|
2145
|
+
red = hueToRgb(p, q, hue + 1 / 3);
|
|
2146
|
+
green = hueToRgb(p, q, hue);
|
|
2147
|
+
blue = hueToRgb(p, q, hue - 1 / 3);
|
|
2148
|
+
}
|
|
2149
|
+
return {
|
|
2150
|
+
red: Math.round(red * 255),
|
|
2151
|
+
green: Math.round(green * 255),
|
|
2152
|
+
blue: Math.round(blue * 255),
|
|
2153
|
+
alpha: alpha2
|
|
2154
|
+
};
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/immediate.mjs
|
|
2158
|
+
function mixImmediate(a, b) {
|
|
2159
|
+
return (p) => p > 0 ? b : a;
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/color.mjs
|
|
2163
|
+
var mixLinearColor = (from, to, v) => {
|
|
2164
|
+
const fromExpo = from * from;
|
|
2165
|
+
const expo = v * (to * to - fromExpo) + fromExpo;
|
|
2166
|
+
return expo < 0 ? 0 : Math.sqrt(expo);
|
|
2167
|
+
};
|
|
2168
|
+
var colorTypes = [hex, rgba, hsla];
|
|
2169
|
+
var getColorType = (v) => colorTypes.find((type) => type.test(v));
|
|
2170
|
+
function asRGBA(color2) {
|
|
2171
|
+
const type = getColorType(color2);
|
|
2172
|
+
warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);
|
|
2173
|
+
if (!Boolean(type))
|
|
2174
|
+
return false;
|
|
2175
|
+
let model = type.parse(color2);
|
|
2176
|
+
if (type === hsla) {
|
|
2177
|
+
model = hslaToRgba(model);
|
|
2178
|
+
}
|
|
2179
|
+
return model;
|
|
2180
|
+
}
|
|
2181
|
+
var mixColor = (from, to) => {
|
|
2182
|
+
const fromRGBA = asRGBA(from);
|
|
2183
|
+
const toRGBA = asRGBA(to);
|
|
2184
|
+
if (!fromRGBA || !toRGBA) {
|
|
2185
|
+
return mixImmediate(from, to);
|
|
2186
|
+
}
|
|
2187
|
+
const blended = { ...fromRGBA };
|
|
2188
|
+
return (v) => {
|
|
2189
|
+
blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);
|
|
2190
|
+
blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);
|
|
2191
|
+
blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);
|
|
2192
|
+
blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);
|
|
2193
|
+
return rgba.transform(blended);
|
|
2194
|
+
};
|
|
2195
|
+
};
|
|
2196
|
+
|
|
2197
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/pipe.mjs
|
|
2198
|
+
var combineFunctions = (a, b) => (v) => b(a(v));
|
|
2199
|
+
var pipe = (...transformers) => transformers.reduce(combineFunctions);
|
|
2200
|
+
|
|
2201
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/visibility.mjs
|
|
2202
|
+
var invisibleValues = new Set(["none", "hidden"]);
|
|
2203
|
+
function mixVisibility(origin, target) {
|
|
2204
|
+
if (invisibleValues.has(origin)) {
|
|
2205
|
+
return (p) => p <= 0 ? origin : target;
|
|
2206
|
+
} else {
|
|
2207
|
+
return (p) => p >= 1 ? target : origin;
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/complex.mjs
|
|
2212
|
+
function mixNumber2(a, b) {
|
|
2213
|
+
return (p) => mixNumber(a, b, p);
|
|
2214
|
+
}
|
|
2215
|
+
function getMixer(a) {
|
|
2216
|
+
if (typeof a === "number") {
|
|
2217
|
+
return mixNumber2;
|
|
2218
|
+
} else if (typeof a === "string") {
|
|
2219
|
+
return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;
|
|
2220
|
+
} else if (Array.isArray(a)) {
|
|
2221
|
+
return mixArray;
|
|
2222
|
+
} else if (typeof a === "object") {
|
|
2223
|
+
return color.test(a) ? mixColor : mixObject;
|
|
2224
|
+
}
|
|
2225
|
+
return mixImmediate;
|
|
2226
|
+
}
|
|
2227
|
+
function mixArray(a, b) {
|
|
2228
|
+
const output = [...a];
|
|
2229
|
+
const numValues = output.length;
|
|
2230
|
+
const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));
|
|
2231
|
+
return (p) => {
|
|
2232
|
+
for (let i = 0;i < numValues; i++) {
|
|
2233
|
+
output[i] = blendValue[i](p);
|
|
2234
|
+
}
|
|
2235
|
+
return output;
|
|
2236
|
+
};
|
|
2237
|
+
}
|
|
2238
|
+
function mixObject(a, b) {
|
|
2239
|
+
const output = { ...a, ...b };
|
|
2240
|
+
const blendValue = {};
|
|
2241
|
+
for (const key in output) {
|
|
2242
|
+
if (a[key] !== undefined && b[key] !== undefined) {
|
|
2243
|
+
blendValue[key] = getMixer(a[key])(a[key], b[key]);
|
|
2244
|
+
}
|
|
2245
|
+
}
|
|
2246
|
+
return (v) => {
|
|
2247
|
+
for (const key in blendValue) {
|
|
2248
|
+
output[key] = blendValue[key](v);
|
|
2249
|
+
}
|
|
2250
|
+
return output;
|
|
2251
|
+
};
|
|
2252
|
+
}
|
|
2253
|
+
function matchOrder(origin, target) {
|
|
2254
|
+
var _a;
|
|
2255
|
+
const orderedOrigin = [];
|
|
2256
|
+
const pointers = { color: 0, var: 0, number: 0 };
|
|
2257
|
+
for (let i = 0;i < target.values.length; i++) {
|
|
2258
|
+
const type = target.types[i];
|
|
2259
|
+
const originIndex = origin.indexes[type][pointers[type]];
|
|
2260
|
+
const originValue = (_a = origin.values[originIndex]) !== null && _a !== undefined ? _a : 0;
|
|
2261
|
+
orderedOrigin[i] = originValue;
|
|
2262
|
+
pointers[type]++;
|
|
2263
|
+
}
|
|
2264
|
+
return orderedOrigin;
|
|
2265
|
+
}
|
|
2266
|
+
var mixComplex = (origin, target) => {
|
|
2267
|
+
const template = complex.createTransformer(target);
|
|
2268
|
+
const originStats = analyseComplexValue(origin);
|
|
2269
|
+
const targetStats = analyseComplexValue(target);
|
|
2270
|
+
const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;
|
|
2271
|
+
if (canInterpolate) {
|
|
2272
|
+
if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {
|
|
2273
|
+
return mixVisibility(origin, target);
|
|
2274
|
+
}
|
|
2275
|
+
return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);
|
|
2276
|
+
} else {
|
|
2277
|
+
warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);
|
|
2278
|
+
return mixImmediate(origin, target);
|
|
2279
|
+
}
|
|
2280
|
+
};
|
|
2281
|
+
|
|
2282
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/index.mjs
|
|
2283
|
+
function mix(from, to, p) {
|
|
2284
|
+
if (typeof from === "number" && typeof to === "number" && typeof p === "number") {
|
|
2285
|
+
return mixNumber(from, to, p);
|
|
2286
|
+
}
|
|
2287
|
+
const mixer = getMixer(from);
|
|
2288
|
+
return mixer(from, to);
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/inertia.mjs
|
|
2292
|
+
function inertia({ keyframes, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {
|
|
2293
|
+
const origin = keyframes[0];
|
|
2294
|
+
const state = {
|
|
2295
|
+
done: false,
|
|
2296
|
+
value: origin
|
|
2297
|
+
};
|
|
2298
|
+
const isOutOfBounds = (v) => min !== undefined && v < min || max !== undefined && v > max;
|
|
2299
|
+
const nearestBoundary = (v) => {
|
|
2300
|
+
if (min === undefined)
|
|
2301
|
+
return max;
|
|
2302
|
+
if (max === undefined)
|
|
2303
|
+
return min;
|
|
2304
|
+
return Math.abs(min - v) < Math.abs(max - v) ? min : max;
|
|
2305
|
+
};
|
|
2306
|
+
let amplitude = power * velocity;
|
|
2307
|
+
const ideal = origin + amplitude;
|
|
2308
|
+
const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);
|
|
2309
|
+
if (target !== ideal)
|
|
2310
|
+
amplitude = target - origin;
|
|
2311
|
+
const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);
|
|
2312
|
+
const calcLatest = (t) => target + calcDelta(t);
|
|
2313
|
+
const applyFriction = (t) => {
|
|
2314
|
+
const delta = calcDelta(t);
|
|
2315
|
+
const latest = calcLatest(t);
|
|
2316
|
+
state.done = Math.abs(delta) <= restDelta;
|
|
2317
|
+
state.value = state.done ? target : latest;
|
|
2318
|
+
};
|
|
2319
|
+
let timeReachedBoundary;
|
|
2320
|
+
let spring$1;
|
|
2321
|
+
const checkCatchBoundary = (t) => {
|
|
2322
|
+
if (!isOutOfBounds(state.value))
|
|
2323
|
+
return;
|
|
2324
|
+
timeReachedBoundary = t;
|
|
2325
|
+
spring$1 = spring({
|
|
2326
|
+
keyframes: [state.value, nearestBoundary(state.value)],
|
|
2327
|
+
velocity: calcGeneratorVelocity(calcLatest, t, state.value),
|
|
2328
|
+
damping: bounceDamping,
|
|
2329
|
+
stiffness: bounceStiffness,
|
|
2330
|
+
restDelta,
|
|
2331
|
+
restSpeed
|
|
2332
|
+
});
|
|
2333
|
+
};
|
|
2334
|
+
checkCatchBoundary(0);
|
|
2335
|
+
return {
|
|
2336
|
+
calculatedDuration: null,
|
|
2337
|
+
next: (t) => {
|
|
2338
|
+
let hasUpdatedFrame = false;
|
|
2339
|
+
if (!spring$1 && timeReachedBoundary === undefined) {
|
|
2340
|
+
hasUpdatedFrame = true;
|
|
2341
|
+
applyFriction(t);
|
|
2342
|
+
checkCatchBoundary(t);
|
|
2343
|
+
}
|
|
2344
|
+
if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {
|
|
2345
|
+
return spring$1.next(t - timeReachedBoundary);
|
|
2346
|
+
} else {
|
|
2347
|
+
!hasUpdatedFrame && applyFriction(t);
|
|
2348
|
+
return state;
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
};
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2354
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/ease.mjs
|
|
2355
|
+
var easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);
|
|
2356
|
+
var easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);
|
|
2357
|
+
var easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);
|
|
2358
|
+
|
|
2359
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/map.mjs
|
|
2360
|
+
var easingLookup = {
|
|
2361
|
+
linear: noop,
|
|
2362
|
+
easeIn,
|
|
2363
|
+
easeInOut,
|
|
2364
|
+
easeOut,
|
|
2365
|
+
circIn,
|
|
2366
|
+
circInOut,
|
|
2367
|
+
circOut,
|
|
2368
|
+
backIn,
|
|
2369
|
+
backInOut,
|
|
2370
|
+
backOut,
|
|
2371
|
+
anticipate
|
|
2372
|
+
};
|
|
2373
|
+
var easingDefinitionToFunction = (definition) => {
|
|
2374
|
+
if (isBezierDefinition(definition)) {
|
|
2375
|
+
invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);
|
|
2376
|
+
const [x1, y1, x2, y2] = definition;
|
|
2377
|
+
return cubicBezier(x1, y1, x2, y2);
|
|
2378
|
+
} else if (typeof definition === "string") {
|
|
2379
|
+
invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);
|
|
2380
|
+
return easingLookup[definition];
|
|
2381
|
+
}
|
|
2382
|
+
return definition;
|
|
2383
|
+
};
|
|
2384
|
+
|
|
2385
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/interpolate.mjs
|
|
2386
|
+
function createMixers(output, ease, customMixer) {
|
|
2387
|
+
const mixers = [];
|
|
2388
|
+
const mixerFactory = customMixer || mix;
|
|
2389
|
+
const numMixers = output.length - 1;
|
|
2390
|
+
for (let i = 0;i < numMixers; i++) {
|
|
2391
|
+
let mixer = mixerFactory(output[i], output[i + 1]);
|
|
2392
|
+
if (ease) {
|
|
2393
|
+
const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;
|
|
2394
|
+
mixer = pipe(easingFunction, mixer);
|
|
2395
|
+
}
|
|
2396
|
+
mixers.push(mixer);
|
|
2397
|
+
}
|
|
2398
|
+
return mixers;
|
|
2399
|
+
}
|
|
2400
|
+
function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
|
|
2401
|
+
const inputLength = input.length;
|
|
2402
|
+
invariant(inputLength === output.length, "Both input and output ranges must be the same length");
|
|
2403
|
+
if (inputLength === 1)
|
|
2404
|
+
return () => output[0];
|
|
2405
|
+
if (inputLength === 2 && output[0] === output[1])
|
|
2406
|
+
return () => output[1];
|
|
2407
|
+
const isZeroDeltaRange = input[0] === input[1];
|
|
2408
|
+
if (input[0] > input[inputLength - 1]) {
|
|
2409
|
+
input = [...input].reverse();
|
|
2410
|
+
output = [...output].reverse();
|
|
2411
|
+
}
|
|
2412
|
+
const mixers = createMixers(output, ease, mixer);
|
|
2413
|
+
const numMixers = mixers.length;
|
|
2414
|
+
const interpolator = (v) => {
|
|
2415
|
+
if (isZeroDeltaRange && v < input[0])
|
|
2416
|
+
return output[0];
|
|
2417
|
+
let i = 0;
|
|
2418
|
+
if (numMixers > 1) {
|
|
2419
|
+
for (;i < input.length - 2; i++) {
|
|
2420
|
+
if (v < input[i + 1])
|
|
2421
|
+
break;
|
|
2422
|
+
}
|
|
2423
|
+
}
|
|
2424
|
+
const progressInRange = progress(input[i], input[i + 1], v);
|
|
2425
|
+
return mixers[i](progressInRange);
|
|
2426
|
+
};
|
|
2427
|
+
return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;
|
|
2428
|
+
}
|
|
2429
|
+
|
|
2430
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/time.mjs
|
|
2431
|
+
function convertOffsetToTimes(offset, duration) {
|
|
2432
|
+
return offset.map((o) => o * duration);
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/keyframes.mjs
|
|
2436
|
+
function defaultEasing(values, easing) {
|
|
2437
|
+
return values.map(() => easing || easeInOut).splice(0, values.length - 1);
|
|
2438
|
+
}
|
|
2439
|
+
function keyframes({ duration = 300, keyframes: keyframeValues, times, ease = "easeInOut" }) {
|
|
2440
|
+
const easingFunctions = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);
|
|
2441
|
+
const state = {
|
|
2442
|
+
done: false,
|
|
2443
|
+
value: keyframeValues[0]
|
|
2444
|
+
};
|
|
2445
|
+
const absoluteTimes = convertOffsetToTimes(times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues), duration);
|
|
2446
|
+
const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {
|
|
2447
|
+
ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)
|
|
2448
|
+
});
|
|
2449
|
+
return {
|
|
2450
|
+
calculatedDuration: duration,
|
|
2451
|
+
next: (t) => {
|
|
2452
|
+
state.value = mapTimeToKeyframe(t);
|
|
2453
|
+
state.done = t >= duration;
|
|
2454
|
+
return state;
|
|
2455
|
+
}
|
|
2456
|
+
};
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2459
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs
|
|
2460
|
+
var frameloopDriver = (update) => {
|
|
2461
|
+
const passTimestamp = ({ timestamp }) => update(timestamp);
|
|
2462
|
+
return {
|
|
2463
|
+
start: () => frame.update(passTimestamp, true),
|
|
2464
|
+
stop: () => cancelFrame(passTimestamp),
|
|
2465
|
+
now: () => frameData.isProcessing ? frameData.timestamp : time.now()
|
|
2466
|
+
};
|
|
2467
|
+
};
|
|
2468
|
+
|
|
2469
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs
|
|
2470
|
+
var generators = {
|
|
2471
|
+
decay: inertia,
|
|
2472
|
+
inertia,
|
|
2473
|
+
tween: keyframes,
|
|
2474
|
+
keyframes,
|
|
2475
|
+
spring
|
|
2476
|
+
};
|
|
2477
|
+
var percentToProgress = (percent2) => percent2 / 100;
|
|
2478
|
+
|
|
2479
|
+
class MainThreadAnimation extends BaseAnimation {
|
|
2480
|
+
constructor(options) {
|
|
2481
|
+
super(options);
|
|
2482
|
+
this.holdTime = null;
|
|
2483
|
+
this.cancelTime = null;
|
|
2484
|
+
this.currentTime = 0;
|
|
2485
|
+
this.playbackSpeed = 1;
|
|
2486
|
+
this.pendingPlayState = "running";
|
|
2487
|
+
this.startTime = null;
|
|
2488
|
+
this.state = "idle";
|
|
2489
|
+
this.stop = () => {
|
|
2490
|
+
this.resolver.cancel();
|
|
2491
|
+
this.isStopped = true;
|
|
2492
|
+
if (this.state === "idle")
|
|
2493
|
+
return;
|
|
2494
|
+
this.teardown();
|
|
2495
|
+
const { onStop } = this.options;
|
|
2496
|
+
onStop && onStop();
|
|
2497
|
+
};
|
|
2498
|
+
const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;
|
|
2499
|
+
const KeyframeResolver$1 = (element === null || element === undefined ? undefined : element.KeyframeResolver) || KeyframeResolver;
|
|
2500
|
+
const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);
|
|
2501
|
+
this.resolver = new KeyframeResolver$1(keyframes2, onResolved, name, motionValue2, element);
|
|
2502
|
+
this.resolver.scheduleResolve();
|
|
2503
|
+
}
|
|
2504
|
+
flatten() {
|
|
2505
|
+
super.flatten();
|
|
2506
|
+
if (this._resolved) {
|
|
2507
|
+
Object.assign(this._resolved, this.initPlayback(this._resolved.keyframes));
|
|
2508
|
+
}
|
|
2509
|
+
}
|
|
2510
|
+
initPlayback(keyframes$1) {
|
|
2511
|
+
const { type = "keyframes", repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = this.options;
|
|
2512
|
+
const generatorFactory = isGenerator(type) ? type : generators[type] || keyframes;
|
|
2513
|
+
let mapPercentToKeyframes;
|
|
2514
|
+
let mirroredGenerator;
|
|
2515
|
+
if (generatorFactory !== keyframes && typeof keyframes$1[0] !== "number") {
|
|
2516
|
+
if (false) {}
|
|
2517
|
+
mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));
|
|
2518
|
+
keyframes$1 = [0, 100];
|
|
2519
|
+
}
|
|
2520
|
+
const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });
|
|
2521
|
+
if (repeatType === "mirror") {
|
|
2522
|
+
mirroredGenerator = generatorFactory({
|
|
2523
|
+
...this.options,
|
|
2524
|
+
keyframes: [...keyframes$1].reverse(),
|
|
2525
|
+
velocity: -velocity
|
|
2526
|
+
});
|
|
2527
|
+
}
|
|
2528
|
+
if (generator.calculatedDuration === null) {
|
|
2529
|
+
generator.calculatedDuration = calcGeneratorDuration(generator);
|
|
2530
|
+
}
|
|
2531
|
+
const { calculatedDuration } = generator;
|
|
2532
|
+
const resolvedDuration = calculatedDuration + repeatDelay;
|
|
2533
|
+
const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;
|
|
2534
|
+
return {
|
|
2535
|
+
generator,
|
|
2536
|
+
mirroredGenerator,
|
|
2537
|
+
mapPercentToKeyframes,
|
|
2538
|
+
calculatedDuration,
|
|
2539
|
+
resolvedDuration,
|
|
2540
|
+
totalDuration
|
|
2541
|
+
};
|
|
2542
|
+
}
|
|
2543
|
+
onPostResolved() {
|
|
2544
|
+
const { autoplay = true } = this.options;
|
|
2545
|
+
this.play();
|
|
2546
|
+
if (this.pendingPlayState === "paused" || !autoplay) {
|
|
2547
|
+
this.pause();
|
|
2548
|
+
} else {
|
|
2549
|
+
this.state = this.pendingPlayState;
|
|
2550
|
+
}
|
|
2551
|
+
}
|
|
2552
|
+
tick(timestamp, sample = false) {
|
|
2553
|
+
const { resolved } = this;
|
|
2554
|
+
if (!resolved) {
|
|
2555
|
+
const { keyframes: keyframes3 } = this.options;
|
|
2556
|
+
return { done: true, value: keyframes3[keyframes3.length - 1] };
|
|
2557
|
+
}
|
|
2558
|
+
const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes: keyframes2, calculatedDuration, totalDuration, resolvedDuration } = resolved;
|
|
2559
|
+
if (this.startTime === null)
|
|
2560
|
+
return generator.next(0);
|
|
2561
|
+
const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;
|
|
2562
|
+
if (this.speed > 0) {
|
|
2563
|
+
this.startTime = Math.min(this.startTime, timestamp);
|
|
2564
|
+
} else if (this.speed < 0) {
|
|
2565
|
+
this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);
|
|
2566
|
+
}
|
|
2567
|
+
if (sample) {
|
|
2568
|
+
this.currentTime = timestamp;
|
|
2569
|
+
} else if (this.holdTime !== null) {
|
|
2570
|
+
this.currentTime = this.holdTime;
|
|
2571
|
+
} else {
|
|
2572
|
+
this.currentTime = Math.round(timestamp - this.startTime) * this.speed;
|
|
2573
|
+
}
|
|
2574
|
+
const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);
|
|
2575
|
+
const isInDelayPhase = this.speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;
|
|
2576
|
+
this.currentTime = Math.max(timeWithoutDelay, 0);
|
|
2577
|
+
if (this.state === "finished" && this.holdTime === null) {
|
|
2578
|
+
this.currentTime = totalDuration;
|
|
2579
|
+
}
|
|
2580
|
+
let elapsed = this.currentTime;
|
|
2581
|
+
let frameGenerator = generator;
|
|
2582
|
+
if (repeat) {
|
|
2583
|
+
const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;
|
|
2584
|
+
let currentIteration = Math.floor(progress2);
|
|
2585
|
+
let iterationProgress = progress2 % 1;
|
|
2586
|
+
if (!iterationProgress && progress2 >= 1) {
|
|
2587
|
+
iterationProgress = 1;
|
|
2588
|
+
}
|
|
2589
|
+
iterationProgress === 1 && currentIteration--;
|
|
2590
|
+
currentIteration = Math.min(currentIteration, repeat + 1);
|
|
2591
|
+
const isOddIteration = Boolean(currentIteration % 2);
|
|
2592
|
+
if (isOddIteration) {
|
|
2593
|
+
if (repeatType === "reverse") {
|
|
2594
|
+
iterationProgress = 1 - iterationProgress;
|
|
2595
|
+
if (repeatDelay) {
|
|
2596
|
+
iterationProgress -= repeatDelay / resolvedDuration;
|
|
2597
|
+
}
|
|
2598
|
+
} else if (repeatType === "mirror") {
|
|
2599
|
+
frameGenerator = mirroredGenerator;
|
|
2600
|
+
}
|
|
2601
|
+
}
|
|
2602
|
+
elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;
|
|
2603
|
+
}
|
|
2604
|
+
const state = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);
|
|
2605
|
+
if (mapPercentToKeyframes) {
|
|
2606
|
+
state.value = mapPercentToKeyframes(state.value);
|
|
2607
|
+
}
|
|
2608
|
+
let { done } = state;
|
|
2609
|
+
if (!isInDelayPhase && calculatedDuration !== null) {
|
|
2610
|
+
done = this.speed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;
|
|
2611
|
+
}
|
|
2612
|
+
const isAnimationFinished = this.holdTime === null && (this.state === "finished" || this.state === "running" && done);
|
|
2613
|
+
if (isAnimationFinished && finalKeyframe !== undefined) {
|
|
2614
|
+
state.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe);
|
|
2615
|
+
}
|
|
2616
|
+
if (onUpdate) {
|
|
2617
|
+
onUpdate(state.value);
|
|
2618
|
+
}
|
|
2619
|
+
if (isAnimationFinished) {
|
|
2620
|
+
this.finish();
|
|
2621
|
+
}
|
|
2622
|
+
return state;
|
|
2623
|
+
}
|
|
2624
|
+
get duration() {
|
|
2625
|
+
const { resolved } = this;
|
|
2626
|
+
return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;
|
|
2627
|
+
}
|
|
2628
|
+
get time() {
|
|
2629
|
+
return millisecondsToSeconds(this.currentTime);
|
|
2630
|
+
}
|
|
2631
|
+
set time(newTime) {
|
|
2632
|
+
newTime = secondsToMilliseconds(newTime);
|
|
2633
|
+
this.currentTime = newTime;
|
|
2634
|
+
if (this.holdTime !== null || this.speed === 0) {
|
|
2635
|
+
this.holdTime = newTime;
|
|
2636
|
+
} else if (this.driver) {
|
|
2637
|
+
this.startTime = this.driver.now() - newTime / this.speed;
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2640
|
+
get speed() {
|
|
2641
|
+
return this.playbackSpeed;
|
|
2642
|
+
}
|
|
2643
|
+
set speed(newSpeed) {
|
|
2644
|
+
const hasChanged = this.playbackSpeed !== newSpeed;
|
|
2645
|
+
this.playbackSpeed = newSpeed;
|
|
2646
|
+
if (hasChanged) {
|
|
2647
|
+
this.time = millisecondsToSeconds(this.currentTime);
|
|
2648
|
+
}
|
|
2649
|
+
}
|
|
2650
|
+
play() {
|
|
2651
|
+
if (!this.resolver.isScheduled) {
|
|
2652
|
+
this.resolver.resume();
|
|
2653
|
+
}
|
|
2654
|
+
if (!this._resolved) {
|
|
2655
|
+
this.pendingPlayState = "running";
|
|
2656
|
+
return;
|
|
2657
|
+
}
|
|
2658
|
+
if (this.isStopped)
|
|
2659
|
+
return;
|
|
2660
|
+
const { driver = frameloopDriver, onPlay, startTime } = this.options;
|
|
2661
|
+
if (!this.driver) {
|
|
2662
|
+
this.driver = driver((timestamp) => this.tick(timestamp));
|
|
2663
|
+
}
|
|
2664
|
+
onPlay && onPlay();
|
|
2665
|
+
const now2 = this.driver.now();
|
|
2666
|
+
if (this.holdTime !== null) {
|
|
2667
|
+
this.startTime = now2 - this.holdTime;
|
|
2668
|
+
} else if (!this.startTime) {
|
|
2669
|
+
this.startTime = startTime !== null && startTime !== undefined ? startTime : this.calcStartTime();
|
|
2670
|
+
} else if (this.state === "finished") {
|
|
2671
|
+
this.startTime = now2;
|
|
2672
|
+
}
|
|
2673
|
+
if (this.state === "finished") {
|
|
2674
|
+
this.updateFinishedPromise();
|
|
2675
|
+
}
|
|
2676
|
+
this.cancelTime = this.startTime;
|
|
2677
|
+
this.holdTime = null;
|
|
2678
|
+
this.state = "running";
|
|
2679
|
+
this.driver.start();
|
|
2680
|
+
}
|
|
2681
|
+
pause() {
|
|
2682
|
+
var _a;
|
|
2683
|
+
if (!this._resolved) {
|
|
2684
|
+
this.pendingPlayState = "paused";
|
|
2685
|
+
return;
|
|
2686
|
+
}
|
|
2687
|
+
this.state = "paused";
|
|
2688
|
+
this.holdTime = (_a = this.currentTime) !== null && _a !== undefined ? _a : 0;
|
|
2689
|
+
}
|
|
2690
|
+
complete() {
|
|
2691
|
+
if (this.state !== "running") {
|
|
2692
|
+
this.play();
|
|
2693
|
+
}
|
|
2694
|
+
this.pendingPlayState = this.state = "finished";
|
|
2695
|
+
this.holdTime = null;
|
|
2696
|
+
}
|
|
2697
|
+
finish() {
|
|
2698
|
+
this.teardown();
|
|
2699
|
+
this.state = "finished";
|
|
2700
|
+
const { onComplete } = this.options;
|
|
2701
|
+
onComplete && onComplete();
|
|
2702
|
+
}
|
|
2703
|
+
cancel() {
|
|
2704
|
+
if (this.cancelTime !== null) {
|
|
2705
|
+
this.tick(this.cancelTime);
|
|
2706
|
+
}
|
|
2707
|
+
this.teardown();
|
|
2708
|
+
this.updateFinishedPromise();
|
|
2709
|
+
}
|
|
2710
|
+
teardown() {
|
|
2711
|
+
this.state = "idle";
|
|
2712
|
+
this.stopDriver();
|
|
2713
|
+
this.resolveFinishedPromise();
|
|
2714
|
+
this.updateFinishedPromise();
|
|
2715
|
+
this.startTime = this.cancelTime = null;
|
|
2716
|
+
this.resolver.cancel();
|
|
2717
|
+
}
|
|
2718
|
+
stopDriver() {
|
|
2719
|
+
if (!this.driver)
|
|
2720
|
+
return;
|
|
2721
|
+
this.driver.stop();
|
|
2722
|
+
this.driver = undefined;
|
|
2723
|
+
}
|
|
2724
|
+
sample(time2) {
|
|
2725
|
+
this.startTime = 0;
|
|
2726
|
+
return this.tick(time2, true);
|
|
2727
|
+
}
|
|
2728
|
+
}
|
|
2729
|
+
|
|
2730
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs
|
|
2731
|
+
var acceleratedValues = new Set([
|
|
2732
|
+
"opacity",
|
|
2733
|
+
"clipPath",
|
|
2734
|
+
"filter",
|
|
2735
|
+
"transform"
|
|
2736
|
+
]);
|
|
2737
|
+
|
|
2738
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/index.mjs
|
|
2739
|
+
function startWaapiAnimation(element, valueName, keyframes2, { delay = 0, duration = 300, repeat = 0, repeatType = "loop", ease = "easeInOut", times } = {}) {
|
|
2740
|
+
const keyframeOptions = { [valueName]: keyframes2 };
|
|
2741
|
+
if (times)
|
|
2742
|
+
keyframeOptions.offset = times;
|
|
2743
|
+
const easing = mapEasingToNativeEasing(ease, duration);
|
|
2744
|
+
if (Array.isArray(easing))
|
|
2745
|
+
keyframeOptions.easing = easing;
|
|
2746
|
+
return element.animate(keyframeOptions, {
|
|
2747
|
+
delay,
|
|
2748
|
+
duration,
|
|
2749
|
+
easing: !Array.isArray(easing) ? easing : "linear",
|
|
2750
|
+
fill: "both",
|
|
2751
|
+
iterations: repeat + 1,
|
|
2752
|
+
direction: repeatType === "reverse" ? "alternate" : "normal"
|
|
2753
|
+
});
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs
|
|
2757
|
+
var supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate"));
|
|
2758
|
+
|
|
2759
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs
|
|
2760
|
+
var sampleDelta = 10;
|
|
2761
|
+
var maxDuration = 20000;
|
|
2762
|
+
function requiresPregeneratedKeyframes(options) {
|
|
2763
|
+
return isGenerator(options.type) || options.type === "spring" || !isWaapiSupportedEasing(options.ease);
|
|
2764
|
+
}
|
|
2765
|
+
function pregenerateKeyframes(keyframes2, options) {
|
|
2766
|
+
const sampleAnimation = new MainThreadAnimation({
|
|
2767
|
+
...options,
|
|
2768
|
+
keyframes: keyframes2,
|
|
2769
|
+
repeat: 0,
|
|
2770
|
+
delay: 0,
|
|
2771
|
+
isGenerator: true
|
|
2772
|
+
});
|
|
2773
|
+
let state = { done: false, value: keyframes2[0] };
|
|
2774
|
+
const pregeneratedKeyframes = [];
|
|
2775
|
+
let t = 0;
|
|
2776
|
+
while (!state.done && t < maxDuration) {
|
|
2777
|
+
state = sampleAnimation.sample(t);
|
|
2778
|
+
pregeneratedKeyframes.push(state.value);
|
|
2779
|
+
t += sampleDelta;
|
|
2780
|
+
}
|
|
2781
|
+
return {
|
|
2782
|
+
times: undefined,
|
|
2783
|
+
keyframes: pregeneratedKeyframes,
|
|
2784
|
+
duration: t - sampleDelta,
|
|
2785
|
+
ease: "linear"
|
|
2786
|
+
};
|
|
2787
|
+
}
|
|
2788
|
+
var unsupportedEasingFunctions = {
|
|
2789
|
+
anticipate,
|
|
2790
|
+
backInOut,
|
|
2791
|
+
circInOut
|
|
2792
|
+
};
|
|
2793
|
+
function isUnsupportedEase(key) {
|
|
2794
|
+
return key in unsupportedEasingFunctions;
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2797
|
+
class AcceleratedAnimation extends BaseAnimation {
|
|
2798
|
+
constructor(options) {
|
|
2799
|
+
super(options);
|
|
2800
|
+
const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;
|
|
2801
|
+
this.resolver = new DOMKeyframesResolver(keyframes2, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue2, element);
|
|
2802
|
+
this.resolver.scheduleResolve();
|
|
2803
|
+
}
|
|
2804
|
+
initPlayback(keyframes2, finalKeyframe) {
|
|
2805
|
+
let { duration = 300, times, ease, type, motionValue: motionValue2, name, startTime } = this.options;
|
|
2806
|
+
if (!motionValue2.owner || !motionValue2.owner.current) {
|
|
2807
|
+
return false;
|
|
2808
|
+
}
|
|
2809
|
+
if (typeof ease === "string" && supportsLinearEasing() && isUnsupportedEase(ease)) {
|
|
2810
|
+
ease = unsupportedEasingFunctions[ease];
|
|
2811
|
+
}
|
|
2812
|
+
if (requiresPregeneratedKeyframes(this.options)) {
|
|
2813
|
+
const { onComplete, onUpdate, motionValue: motionValue3, element, ...options } = this.options;
|
|
2814
|
+
const pregeneratedAnimation = pregenerateKeyframes(keyframes2, options);
|
|
2815
|
+
keyframes2 = pregeneratedAnimation.keyframes;
|
|
2816
|
+
if (keyframes2.length === 1) {
|
|
2817
|
+
keyframes2[1] = keyframes2[0];
|
|
2818
|
+
}
|
|
2819
|
+
duration = pregeneratedAnimation.duration;
|
|
2820
|
+
times = pregeneratedAnimation.times;
|
|
2821
|
+
ease = pregeneratedAnimation.ease;
|
|
2822
|
+
type = "keyframes";
|
|
2823
|
+
}
|
|
2824
|
+
const animation = startWaapiAnimation(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease });
|
|
2825
|
+
animation.startTime = startTime !== null && startTime !== undefined ? startTime : this.calcStartTime();
|
|
2826
|
+
if (this.pendingTimeline) {
|
|
2827
|
+
attachTimeline(animation, this.pendingTimeline);
|
|
2828
|
+
this.pendingTimeline = undefined;
|
|
2829
|
+
} else {
|
|
2830
|
+
animation.onfinish = () => {
|
|
2831
|
+
const { onComplete } = this.options;
|
|
2832
|
+
motionValue2.set(getFinalKeyframe(keyframes2, this.options, finalKeyframe));
|
|
2833
|
+
onComplete && onComplete();
|
|
2834
|
+
this.cancel();
|
|
2835
|
+
this.resolveFinishedPromise();
|
|
2836
|
+
};
|
|
2837
|
+
}
|
|
2838
|
+
return {
|
|
2839
|
+
animation,
|
|
2840
|
+
duration,
|
|
2841
|
+
times,
|
|
2842
|
+
type,
|
|
2843
|
+
ease,
|
|
2844
|
+
keyframes: keyframes2
|
|
2845
|
+
};
|
|
2846
|
+
}
|
|
2847
|
+
get duration() {
|
|
2848
|
+
const { resolved } = this;
|
|
2849
|
+
if (!resolved)
|
|
2850
|
+
return 0;
|
|
2851
|
+
const { duration } = resolved;
|
|
2852
|
+
return millisecondsToSeconds(duration);
|
|
2853
|
+
}
|
|
2854
|
+
get time() {
|
|
2855
|
+
const { resolved } = this;
|
|
2856
|
+
if (!resolved)
|
|
2857
|
+
return 0;
|
|
2858
|
+
const { animation } = resolved;
|
|
2859
|
+
return millisecondsToSeconds(animation.currentTime || 0);
|
|
2860
|
+
}
|
|
2861
|
+
set time(newTime) {
|
|
2862
|
+
const { resolved } = this;
|
|
2863
|
+
if (!resolved)
|
|
2864
|
+
return;
|
|
2865
|
+
const { animation } = resolved;
|
|
2866
|
+
animation.currentTime = secondsToMilliseconds(newTime);
|
|
2867
|
+
}
|
|
2868
|
+
get speed() {
|
|
2869
|
+
const { resolved } = this;
|
|
2870
|
+
if (!resolved)
|
|
2871
|
+
return 1;
|
|
2872
|
+
const { animation } = resolved;
|
|
2873
|
+
return animation.playbackRate;
|
|
2874
|
+
}
|
|
2875
|
+
set speed(newSpeed) {
|
|
2876
|
+
const { resolved } = this;
|
|
2877
|
+
if (!resolved)
|
|
2878
|
+
return;
|
|
2879
|
+
const { animation } = resolved;
|
|
2880
|
+
animation.playbackRate = newSpeed;
|
|
2881
|
+
}
|
|
2882
|
+
get state() {
|
|
2883
|
+
const { resolved } = this;
|
|
2884
|
+
if (!resolved)
|
|
2885
|
+
return "idle";
|
|
2886
|
+
const { animation } = resolved;
|
|
2887
|
+
return animation.playState;
|
|
2888
|
+
}
|
|
2889
|
+
get startTime() {
|
|
2890
|
+
const { resolved } = this;
|
|
2891
|
+
if (!resolved)
|
|
2892
|
+
return null;
|
|
2893
|
+
const { animation } = resolved;
|
|
2894
|
+
return animation.startTime;
|
|
2895
|
+
}
|
|
2896
|
+
attachTimeline(timeline) {
|
|
2897
|
+
if (!this._resolved) {
|
|
2898
|
+
this.pendingTimeline = timeline;
|
|
2899
|
+
} else {
|
|
2900
|
+
const { resolved } = this;
|
|
2901
|
+
if (!resolved)
|
|
2902
|
+
return noop;
|
|
2903
|
+
const { animation } = resolved;
|
|
2904
|
+
attachTimeline(animation, timeline);
|
|
2905
|
+
}
|
|
2906
|
+
return noop;
|
|
2907
|
+
}
|
|
2908
|
+
play() {
|
|
2909
|
+
if (this.isStopped)
|
|
2910
|
+
return;
|
|
2911
|
+
const { resolved } = this;
|
|
2912
|
+
if (!resolved)
|
|
2913
|
+
return;
|
|
2914
|
+
const { animation } = resolved;
|
|
2915
|
+
if (animation.playState === "finished") {
|
|
2916
|
+
this.updateFinishedPromise();
|
|
2917
|
+
}
|
|
2918
|
+
animation.play();
|
|
2919
|
+
}
|
|
2920
|
+
pause() {
|
|
2921
|
+
const { resolved } = this;
|
|
2922
|
+
if (!resolved)
|
|
2923
|
+
return;
|
|
2924
|
+
const { animation } = resolved;
|
|
2925
|
+
animation.pause();
|
|
2926
|
+
}
|
|
2927
|
+
stop() {
|
|
2928
|
+
this.resolver.cancel();
|
|
2929
|
+
this.isStopped = true;
|
|
2930
|
+
if (this.state === "idle")
|
|
2931
|
+
return;
|
|
2932
|
+
this.resolveFinishedPromise();
|
|
2933
|
+
this.updateFinishedPromise();
|
|
2934
|
+
const { resolved } = this;
|
|
2935
|
+
if (!resolved)
|
|
2936
|
+
return;
|
|
2937
|
+
const { animation, keyframes: keyframes2, duration, type, ease, times } = resolved;
|
|
2938
|
+
if (animation.playState === "idle" || animation.playState === "finished") {
|
|
2939
|
+
return;
|
|
2940
|
+
}
|
|
2941
|
+
if (this.time) {
|
|
2942
|
+
const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;
|
|
2943
|
+
const sampleAnimation = new MainThreadAnimation({
|
|
2944
|
+
...options,
|
|
2945
|
+
keyframes: keyframes2,
|
|
2946
|
+
duration,
|
|
2947
|
+
type,
|
|
2948
|
+
ease,
|
|
2949
|
+
times,
|
|
2950
|
+
isGenerator: true
|
|
2951
|
+
});
|
|
2952
|
+
const sampleTime = secondsToMilliseconds(this.time);
|
|
2953
|
+
motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);
|
|
2954
|
+
}
|
|
2955
|
+
const { onStop } = this.options;
|
|
2956
|
+
onStop && onStop();
|
|
2957
|
+
this.cancel();
|
|
2958
|
+
}
|
|
2959
|
+
complete() {
|
|
2960
|
+
const { resolved } = this;
|
|
2961
|
+
if (!resolved)
|
|
2962
|
+
return;
|
|
2963
|
+
resolved.animation.finish();
|
|
2964
|
+
}
|
|
2965
|
+
cancel() {
|
|
2966
|
+
const { resolved } = this;
|
|
2967
|
+
if (!resolved)
|
|
2968
|
+
return;
|
|
2969
|
+
resolved.animation.cancel();
|
|
2970
|
+
}
|
|
2971
|
+
static supports(options) {
|
|
2972
|
+
const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;
|
|
2973
|
+
if (!motionValue2 || !motionValue2.owner || !(motionValue2.owner.current instanceof HTMLElement)) {
|
|
2974
|
+
return false;
|
|
2975
|
+
}
|
|
2976
|
+
const { onUpdate, transformTemplate } = motionValue2.owner.getProps();
|
|
2977
|
+
return supportsWaapi() && name && acceleratedValues.has(name) && !onUpdate && !transformTemplate && !repeatDelay && repeatType !== "mirror" && damping !== 0 && type !== "inertia";
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2980
|
+
|
|
2981
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs
|
|
2982
|
+
var underDampedSpring = {
|
|
2983
|
+
type: "spring",
|
|
2984
|
+
stiffness: 500,
|
|
2985
|
+
damping: 25,
|
|
2986
|
+
restSpeed: 10
|
|
2987
|
+
};
|
|
2988
|
+
var criticallyDampedSpring = (target) => ({
|
|
2989
|
+
type: "spring",
|
|
2990
|
+
stiffness: 550,
|
|
2991
|
+
damping: target === 0 ? 2 * Math.sqrt(550) : 30,
|
|
2992
|
+
restSpeed: 10
|
|
2993
|
+
});
|
|
2994
|
+
var keyframesTransition = {
|
|
2995
|
+
type: "keyframes",
|
|
2996
|
+
duration: 0.8
|
|
2997
|
+
};
|
|
2998
|
+
var ease = {
|
|
2999
|
+
type: "keyframes",
|
|
3000
|
+
ease: [0.25, 0.1, 0.35, 1],
|
|
3001
|
+
duration: 0.3
|
|
3002
|
+
};
|
|
3003
|
+
var getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {
|
|
3004
|
+
if (keyframes2.length > 2) {
|
|
3005
|
+
return keyframesTransition;
|
|
3006
|
+
} else if (transformProps.has(valueKey)) {
|
|
3007
|
+
return valueKey.startsWith("scale") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;
|
|
3008
|
+
}
|
|
3009
|
+
return ease;
|
|
3010
|
+
};
|
|
3011
|
+
|
|
3012
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-transition-defined.mjs
|
|
3013
|
+
function isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {
|
|
3014
|
+
return !!Object.keys(transition).length;
|
|
3015
|
+
}
|
|
3016
|
+
|
|
3017
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs
|
|
3018
|
+
var animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {
|
|
3019
|
+
const valueTransition = getValueTransition2(transition, name) || {};
|
|
3020
|
+
const delay = valueTransition.delay || transition.delay || 0;
|
|
3021
|
+
let { elapsed = 0 } = transition;
|
|
3022
|
+
elapsed = elapsed - secondsToMilliseconds(delay);
|
|
3023
|
+
let options = {
|
|
3024
|
+
keyframes: Array.isArray(target) ? target : [null, target],
|
|
3025
|
+
ease: "easeOut",
|
|
3026
|
+
velocity: value.getVelocity(),
|
|
3027
|
+
...valueTransition,
|
|
3028
|
+
delay: -elapsed,
|
|
3029
|
+
onUpdate: (v) => {
|
|
3030
|
+
value.set(v);
|
|
3031
|
+
valueTransition.onUpdate && valueTransition.onUpdate(v);
|
|
3032
|
+
},
|
|
3033
|
+
onComplete: () => {
|
|
3034
|
+
onComplete();
|
|
3035
|
+
valueTransition.onComplete && valueTransition.onComplete();
|
|
3036
|
+
},
|
|
3037
|
+
name,
|
|
3038
|
+
motionValue: value,
|
|
3039
|
+
element: isHandoff ? undefined : element
|
|
3040
|
+
};
|
|
3041
|
+
if (!isTransitionDefined(valueTransition)) {
|
|
3042
|
+
options = {
|
|
3043
|
+
...options,
|
|
3044
|
+
...getDefaultTransition(name, options)
|
|
3045
|
+
};
|
|
3046
|
+
}
|
|
3047
|
+
if (options.duration) {
|
|
3048
|
+
options.duration = secondsToMilliseconds(options.duration);
|
|
3049
|
+
}
|
|
3050
|
+
if (options.repeatDelay) {
|
|
3051
|
+
options.repeatDelay = secondsToMilliseconds(options.repeatDelay);
|
|
3052
|
+
}
|
|
3053
|
+
if (options.from !== undefined) {
|
|
3054
|
+
options.keyframes[0] = options.from;
|
|
3055
|
+
}
|
|
3056
|
+
let shouldSkip = false;
|
|
3057
|
+
if (options.type === false || options.duration === 0 && !options.repeatDelay) {
|
|
3058
|
+
options.duration = 0;
|
|
3059
|
+
if (options.delay === 0) {
|
|
3060
|
+
shouldSkip = true;
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
if (instantAnimationState.current || MotionGlobalConfig.skipAnimations) {
|
|
3064
|
+
shouldSkip = true;
|
|
3065
|
+
options.duration = 0;
|
|
3066
|
+
options.delay = 0;
|
|
3067
|
+
}
|
|
3068
|
+
if (shouldSkip && !isHandoff && value.get() !== undefined) {
|
|
3069
|
+
const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);
|
|
3070
|
+
if (finalKeyframe !== undefined) {
|
|
3071
|
+
frame.update(() => {
|
|
3072
|
+
options.onUpdate(finalKeyframe);
|
|
3073
|
+
options.onComplete();
|
|
3074
|
+
});
|
|
3075
|
+
return new GroupPlaybackControls([]);
|
|
3076
|
+
}
|
|
3077
|
+
}
|
|
3078
|
+
if (!isHandoff && AcceleratedAnimation.supports(options)) {
|
|
3079
|
+
return new AcceleratedAnimation(options);
|
|
3080
|
+
} else {
|
|
3081
|
+
return new MainThreadAnimation(options);
|
|
3082
|
+
}
|
|
3083
|
+
};
|
|
3084
|
+
|
|
3085
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs
|
|
3086
|
+
function shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {
|
|
3087
|
+
const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;
|
|
3088
|
+
needsAnimating[key] = false;
|
|
3089
|
+
return shouldBlock;
|
|
3090
|
+
}
|
|
3091
|
+
function animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {
|
|
3092
|
+
var _a;
|
|
3093
|
+
let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;
|
|
3094
|
+
if (transitionOverride)
|
|
3095
|
+
transition = transitionOverride;
|
|
3096
|
+
const animations = [];
|
|
3097
|
+
const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];
|
|
3098
|
+
for (const key in target) {
|
|
3099
|
+
const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== undefined ? _a : null);
|
|
3100
|
+
const valueTarget = target[key];
|
|
3101
|
+
if (valueTarget === undefined || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {
|
|
3102
|
+
continue;
|
|
3103
|
+
}
|
|
3104
|
+
const valueTransition = {
|
|
3105
|
+
delay,
|
|
3106
|
+
...getValueTransition2(transition || {}, key)
|
|
3107
|
+
};
|
|
3108
|
+
let isHandoff = false;
|
|
3109
|
+
if (window.MotionHandoffAnimation) {
|
|
3110
|
+
const appearId = getOptimisedAppearId(visualElement);
|
|
3111
|
+
if (appearId) {
|
|
3112
|
+
const startTime = window.MotionHandoffAnimation(appearId, key, frame);
|
|
3113
|
+
if (startTime !== null) {
|
|
3114
|
+
valueTransition.startTime = startTime;
|
|
3115
|
+
isHandoff = true;
|
|
3116
|
+
}
|
|
3117
|
+
}
|
|
3118
|
+
}
|
|
3119
|
+
addValueToWillChange(visualElement, key);
|
|
3120
|
+
value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));
|
|
3121
|
+
const animation = value.animation;
|
|
3122
|
+
if (animation) {
|
|
3123
|
+
animations.push(animation);
|
|
3124
|
+
}
|
|
3125
|
+
}
|
|
3126
|
+
if (transitionEnd) {
|
|
3127
|
+
Promise.all(animations).then(() => {
|
|
3128
|
+
frame.update(() => {
|
|
3129
|
+
transitionEnd && setTarget(visualElement, transitionEnd);
|
|
3130
|
+
});
|
|
3131
|
+
});
|
|
3132
|
+
}
|
|
3133
|
+
return animations;
|
|
3134
|
+
}
|
|
3135
|
+
|
|
3136
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs
|
|
3137
|
+
function isSVGElement(element) {
|
|
3138
|
+
return element instanceof SVGElement && element.tagName !== "svg";
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3141
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/geometry/models.mjs
|
|
3142
|
+
var createAxis = () => ({ min: 0, max: 0 });
|
|
3143
|
+
var createBox = () => ({
|
|
3144
|
+
x: createAxis(),
|
|
3145
|
+
y: createAxis()
|
|
3146
|
+
});
|
|
3147
|
+
|
|
3148
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/motion/features/definitions.mjs
|
|
3149
|
+
var featureProps = {
|
|
3150
|
+
animation: [
|
|
3151
|
+
"animate",
|
|
3152
|
+
"variants",
|
|
3153
|
+
"whileHover",
|
|
3154
|
+
"whileTap",
|
|
3155
|
+
"exit",
|
|
3156
|
+
"whileInView",
|
|
3157
|
+
"whileFocus",
|
|
3158
|
+
"whileDrag"
|
|
3159
|
+
],
|
|
3160
|
+
exit: ["exit"],
|
|
3161
|
+
drag: ["drag", "dragControls"],
|
|
3162
|
+
focus: ["whileFocus"],
|
|
3163
|
+
hover: ["whileHover", "onHoverStart", "onHoverEnd"],
|
|
3164
|
+
tap: ["whileTap", "onTap", "onTapStart", "onTapCancel"],
|
|
3165
|
+
pan: ["onPan", "onPanStart", "onPanSessionStart", "onPanEnd"],
|
|
3166
|
+
inView: ["whileInView", "onViewportEnter", "onViewportLeave"],
|
|
3167
|
+
layout: ["layout", "layoutId"]
|
|
3168
|
+
};
|
|
3169
|
+
var featureDefinitions = {};
|
|
3170
|
+
for (const key in featureProps) {
|
|
3171
|
+
featureDefinitions[key] = {
|
|
3172
|
+
isEnabled: (props) => featureProps[key].some((name) => !!props[name])
|
|
3173
|
+
};
|
|
3174
|
+
}
|
|
3175
|
+
|
|
3176
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-browser.mjs
|
|
3177
|
+
var isBrowser = typeof window !== "undefined";
|
|
3178
|
+
|
|
3179
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/reduced-motion/state.mjs
|
|
3180
|
+
var prefersReducedMotion = { current: null };
|
|
3181
|
+
var hasReducedMotionListener = { current: false };
|
|
3182
|
+
|
|
3183
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/reduced-motion/index.mjs
|
|
3184
|
+
function initPrefersReducedMotion() {
|
|
3185
|
+
hasReducedMotionListener.current = true;
|
|
3186
|
+
if (!isBrowser)
|
|
3187
|
+
return;
|
|
3188
|
+
if (window.matchMedia) {
|
|
3189
|
+
const motionMediaQuery = window.matchMedia("(prefers-reduced-motion)");
|
|
3190
|
+
const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;
|
|
3191
|
+
motionMediaQuery.addListener(setReducedMotionPreferences);
|
|
3192
|
+
setReducedMotionPreferences();
|
|
3193
|
+
} else {
|
|
3194
|
+
prefersReducedMotion.current = false;
|
|
3195
|
+
}
|
|
3196
|
+
}
|
|
3197
|
+
|
|
3198
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/find.mjs
|
|
3199
|
+
var valueTypes = [...dimensionValueTypes, color, complex];
|
|
3200
|
+
var findValueType = (v) => valueTypes.find(testValueType(v));
|
|
3201
|
+
|
|
3202
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-animation-controls.mjs
|
|
3203
|
+
function isAnimationControls(v) {
|
|
3204
|
+
return v !== null && typeof v === "object" && typeof v.start === "function";
|
|
3205
|
+
}
|
|
3206
|
+
|
|
3207
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/is-variant-label.mjs
|
|
3208
|
+
function isVariantLabel(v) {
|
|
3209
|
+
return typeof v === "string" || Array.isArray(v);
|
|
3210
|
+
}
|
|
3211
|
+
|
|
3212
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/variant-props.mjs
|
|
3213
|
+
var variantPriorityOrder = [
|
|
3214
|
+
"animate",
|
|
3215
|
+
"whileInView",
|
|
3216
|
+
"whileFocus",
|
|
3217
|
+
"whileHover",
|
|
3218
|
+
"whileTap",
|
|
3219
|
+
"whileDrag",
|
|
3220
|
+
"exit"
|
|
3221
|
+
];
|
|
3222
|
+
var variantProps = ["initial", ...variantPriorityOrder];
|
|
3223
|
+
|
|
3224
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/is-controlling-variants.mjs
|
|
3225
|
+
function isControllingVariants(props) {
|
|
3226
|
+
return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));
|
|
3227
|
+
}
|
|
3228
|
+
function isVariantNode(props) {
|
|
3229
|
+
return Boolean(isControllingVariants(props) || props.variants);
|
|
3230
|
+
}
|
|
3231
|
+
|
|
3232
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs
|
|
3233
|
+
function updateMotionValuesFromProps(element, next, prev) {
|
|
3234
|
+
for (const key in next) {
|
|
3235
|
+
const nextValue = next[key];
|
|
3236
|
+
const prevValue = prev[key];
|
|
3237
|
+
if (isMotionValue(nextValue)) {
|
|
3238
|
+
element.addValue(key, nextValue);
|
|
3239
|
+
if (false) {}
|
|
3240
|
+
} else if (isMotionValue(prevValue)) {
|
|
3241
|
+
element.addValue(key, motionValue(nextValue, { owner: element }));
|
|
3242
|
+
} else if (prevValue !== nextValue) {
|
|
3243
|
+
if (element.hasValue(key)) {
|
|
3244
|
+
const existingValue = element.getValue(key);
|
|
3245
|
+
if (existingValue.liveStyle === true) {
|
|
3246
|
+
existingValue.jump(nextValue);
|
|
3247
|
+
} else if (!existingValue.hasAnimated) {
|
|
3248
|
+
existingValue.set(nextValue);
|
|
3249
|
+
}
|
|
3250
|
+
} else {
|
|
3251
|
+
const latestValue = element.getStaticValue(key);
|
|
3252
|
+
element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));
|
|
3253
|
+
}
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
for (const key in prev) {
|
|
3257
|
+
if (next[key] === undefined)
|
|
3258
|
+
element.removeValue(key);
|
|
3259
|
+
}
|
|
3260
|
+
return next;
|
|
3261
|
+
}
|
|
3262
|
+
|
|
3263
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/VisualElement.mjs
|
|
3264
|
+
var propEventHandlers = [
|
|
3265
|
+
"AnimationStart",
|
|
3266
|
+
"AnimationComplete",
|
|
3267
|
+
"Update",
|
|
3268
|
+
"BeforeLayoutMeasure",
|
|
3269
|
+
"LayoutMeasure",
|
|
3270
|
+
"LayoutAnimationStart",
|
|
3271
|
+
"LayoutAnimationComplete"
|
|
3272
|
+
];
|
|
3273
|
+
|
|
3274
|
+
class VisualElement {
|
|
3275
|
+
scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {
|
|
3276
|
+
return {};
|
|
3277
|
+
}
|
|
3278
|
+
constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {
|
|
3279
|
+
this.current = null;
|
|
3280
|
+
this.children = new Set;
|
|
3281
|
+
this.isVariantNode = false;
|
|
3282
|
+
this.isControllingVariants = false;
|
|
3283
|
+
this.shouldReduceMotion = null;
|
|
3284
|
+
this.values = new Map;
|
|
3285
|
+
this.KeyframeResolver = KeyframeResolver;
|
|
3286
|
+
this.features = {};
|
|
3287
|
+
this.valueSubscriptions = new Map;
|
|
3288
|
+
this.prevMotionValues = {};
|
|
3289
|
+
this.events = {};
|
|
3290
|
+
this.propEventSubscriptions = {};
|
|
3291
|
+
this.notifyUpdate = () => this.notify("Update", this.latestValues);
|
|
3292
|
+
this.render = () => {
|
|
3293
|
+
if (!this.current)
|
|
3294
|
+
return;
|
|
3295
|
+
this.triggerBuild();
|
|
3296
|
+
this.renderInstance(this.current, this.renderState, this.props.style, this.projection);
|
|
3297
|
+
};
|
|
3298
|
+
this.renderScheduledAt = 0;
|
|
3299
|
+
this.scheduleRender = () => {
|
|
3300
|
+
const now2 = time.now();
|
|
3301
|
+
if (this.renderScheduledAt < now2) {
|
|
3302
|
+
this.renderScheduledAt = now2;
|
|
3303
|
+
frame.render(this.render, false, true);
|
|
3304
|
+
}
|
|
3305
|
+
};
|
|
3306
|
+
const { latestValues, renderState, onUpdate } = visualState;
|
|
3307
|
+
this.onUpdate = onUpdate;
|
|
3308
|
+
this.latestValues = latestValues;
|
|
3309
|
+
this.baseTarget = { ...latestValues };
|
|
3310
|
+
this.initialValues = props.initial ? { ...latestValues } : {};
|
|
3311
|
+
this.renderState = renderState;
|
|
3312
|
+
this.parent = parent;
|
|
3313
|
+
this.props = props;
|
|
3314
|
+
this.presenceContext = presenceContext;
|
|
3315
|
+
this.depth = parent ? parent.depth + 1 : 0;
|
|
3316
|
+
this.reducedMotionConfig = reducedMotionConfig;
|
|
3317
|
+
this.options = options;
|
|
3318
|
+
this.blockInitialAnimation = Boolean(blockInitialAnimation);
|
|
3319
|
+
this.isControllingVariants = isControllingVariants(props);
|
|
3320
|
+
this.isVariantNode = isVariantNode(props);
|
|
3321
|
+
if (this.isVariantNode) {
|
|
3322
|
+
this.variantChildren = new Set;
|
|
3323
|
+
}
|
|
3324
|
+
this.manuallyAnimateOnMount = Boolean(parent && parent.current);
|
|
3325
|
+
const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);
|
|
3326
|
+
for (const key in initialMotionValues) {
|
|
3327
|
+
const value = initialMotionValues[key];
|
|
3328
|
+
if (latestValues[key] !== undefined && isMotionValue(value)) {
|
|
3329
|
+
value.set(latestValues[key], false);
|
|
3330
|
+
}
|
|
3331
|
+
}
|
|
3332
|
+
}
|
|
3333
|
+
mount(instance) {
|
|
3334
|
+
this.current = instance;
|
|
3335
|
+
visualElementStore.set(instance, this);
|
|
3336
|
+
if (this.projection && !this.projection.instance) {
|
|
3337
|
+
this.projection.mount(instance);
|
|
3338
|
+
}
|
|
3339
|
+
if (this.parent && this.isVariantNode && !this.isControllingVariants) {
|
|
3340
|
+
this.removeFromVariantTree = this.parent.addVariantChild(this);
|
|
3341
|
+
}
|
|
3342
|
+
this.values.forEach((value, key) => this.bindToMotionValue(key, value));
|
|
3343
|
+
if (!hasReducedMotionListener.current) {
|
|
3344
|
+
initPrefersReducedMotion();
|
|
3345
|
+
}
|
|
3346
|
+
this.shouldReduceMotion = this.reducedMotionConfig === "never" ? false : this.reducedMotionConfig === "always" ? true : prefersReducedMotion.current;
|
|
3347
|
+
if (false) {}
|
|
3348
|
+
if (this.parent)
|
|
3349
|
+
this.parent.children.add(this);
|
|
3350
|
+
this.update(this.props, this.presenceContext);
|
|
3351
|
+
}
|
|
3352
|
+
unmount() {
|
|
3353
|
+
visualElementStore.delete(this.current);
|
|
3354
|
+
this.projection && this.projection.unmount();
|
|
3355
|
+
cancelFrame(this.notifyUpdate);
|
|
3356
|
+
cancelFrame(this.render);
|
|
3357
|
+
this.valueSubscriptions.forEach((remove) => remove());
|
|
3358
|
+
this.valueSubscriptions.clear();
|
|
3359
|
+
this.removeFromVariantTree && this.removeFromVariantTree();
|
|
3360
|
+
this.parent && this.parent.children.delete(this);
|
|
3361
|
+
for (const key in this.events) {
|
|
3362
|
+
this.events[key].clear();
|
|
3363
|
+
}
|
|
3364
|
+
for (const key in this.features) {
|
|
3365
|
+
const feature = this.features[key];
|
|
3366
|
+
if (feature) {
|
|
3367
|
+
feature.unmount();
|
|
3368
|
+
feature.isMounted = false;
|
|
3369
|
+
}
|
|
3370
|
+
}
|
|
3371
|
+
this.current = null;
|
|
3372
|
+
}
|
|
3373
|
+
bindToMotionValue(key, value) {
|
|
3374
|
+
if (this.valueSubscriptions.has(key)) {
|
|
3375
|
+
this.valueSubscriptions.get(key)();
|
|
3376
|
+
}
|
|
3377
|
+
const valueIsTransform = transformProps.has(key);
|
|
3378
|
+
const removeOnChange = value.on("change", (latestValue) => {
|
|
3379
|
+
this.latestValues[key] = latestValue;
|
|
3380
|
+
this.props.onUpdate && frame.preRender(this.notifyUpdate);
|
|
3381
|
+
if (valueIsTransform && this.projection) {
|
|
3382
|
+
this.projection.isTransformDirty = true;
|
|
3383
|
+
}
|
|
3384
|
+
});
|
|
3385
|
+
const removeOnRenderRequest = value.on("renderRequest", this.scheduleRender);
|
|
3386
|
+
let removeSyncCheck;
|
|
3387
|
+
if (window.MotionCheckAppearSync) {
|
|
3388
|
+
removeSyncCheck = window.MotionCheckAppearSync(this, key, value);
|
|
3389
|
+
}
|
|
3390
|
+
this.valueSubscriptions.set(key, () => {
|
|
3391
|
+
removeOnChange();
|
|
3392
|
+
removeOnRenderRequest();
|
|
3393
|
+
if (removeSyncCheck)
|
|
3394
|
+
removeSyncCheck();
|
|
3395
|
+
if (value.owner)
|
|
3396
|
+
value.stop();
|
|
3397
|
+
});
|
|
3398
|
+
}
|
|
3399
|
+
sortNodePosition(other) {
|
|
3400
|
+
if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {
|
|
3401
|
+
return 0;
|
|
3402
|
+
}
|
|
3403
|
+
return this.sortInstanceNodePosition(this.current, other.current);
|
|
3404
|
+
}
|
|
3405
|
+
updateFeatures() {
|
|
3406
|
+
let key = "animation";
|
|
3407
|
+
for (key in featureDefinitions) {
|
|
3408
|
+
const featureDefinition = featureDefinitions[key];
|
|
3409
|
+
if (!featureDefinition)
|
|
3410
|
+
continue;
|
|
3411
|
+
const { isEnabled, Feature: FeatureConstructor } = featureDefinition;
|
|
3412
|
+
if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {
|
|
3413
|
+
this.features[key] = new FeatureConstructor(this);
|
|
3414
|
+
}
|
|
3415
|
+
if (this.features[key]) {
|
|
3416
|
+
const feature = this.features[key];
|
|
3417
|
+
if (feature.isMounted) {
|
|
3418
|
+
feature.update();
|
|
3419
|
+
} else {
|
|
3420
|
+
feature.mount();
|
|
3421
|
+
feature.isMounted = true;
|
|
3422
|
+
}
|
|
3423
|
+
}
|
|
3424
|
+
}
|
|
3425
|
+
}
|
|
3426
|
+
triggerBuild() {
|
|
3427
|
+
this.build(this.renderState, this.latestValues, this.props);
|
|
3428
|
+
}
|
|
3429
|
+
measureViewportBox() {
|
|
3430
|
+
return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();
|
|
3431
|
+
}
|
|
3432
|
+
getStaticValue(key) {
|
|
3433
|
+
return this.latestValues[key];
|
|
3434
|
+
}
|
|
3435
|
+
setStaticValue(key, value) {
|
|
3436
|
+
this.latestValues[key] = value;
|
|
3437
|
+
}
|
|
3438
|
+
update(props, presenceContext) {
|
|
3439
|
+
if (props.transformTemplate || this.props.transformTemplate) {
|
|
3440
|
+
this.scheduleRender();
|
|
3441
|
+
}
|
|
3442
|
+
this.prevProps = this.props;
|
|
3443
|
+
this.props = props;
|
|
3444
|
+
this.prevPresenceContext = this.presenceContext;
|
|
3445
|
+
this.presenceContext = presenceContext;
|
|
3446
|
+
for (let i = 0;i < propEventHandlers.length; i++) {
|
|
3447
|
+
const key = propEventHandlers[i];
|
|
3448
|
+
if (this.propEventSubscriptions[key]) {
|
|
3449
|
+
this.propEventSubscriptions[key]();
|
|
3450
|
+
delete this.propEventSubscriptions[key];
|
|
3451
|
+
}
|
|
3452
|
+
const listenerName = "on" + key;
|
|
3453
|
+
const listener = props[listenerName];
|
|
3454
|
+
if (listener) {
|
|
3455
|
+
this.propEventSubscriptions[key] = this.on(key, listener);
|
|
3456
|
+
}
|
|
3457
|
+
}
|
|
3458
|
+
this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);
|
|
3459
|
+
if (this.handleChildMotionValue) {
|
|
3460
|
+
this.handleChildMotionValue();
|
|
3461
|
+
}
|
|
3462
|
+
this.onUpdate && this.onUpdate(this);
|
|
3463
|
+
}
|
|
3464
|
+
getProps() {
|
|
3465
|
+
return this.props;
|
|
3466
|
+
}
|
|
3467
|
+
getVariant(name) {
|
|
3468
|
+
return this.props.variants ? this.props.variants[name] : undefined;
|
|
3469
|
+
}
|
|
3470
|
+
getDefaultTransition() {
|
|
3471
|
+
return this.props.transition;
|
|
3472
|
+
}
|
|
3473
|
+
getTransformPagePoint() {
|
|
3474
|
+
return this.props.transformPagePoint;
|
|
3475
|
+
}
|
|
3476
|
+
getClosestVariantNode() {
|
|
3477
|
+
return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : undefined;
|
|
3478
|
+
}
|
|
3479
|
+
addVariantChild(child) {
|
|
3480
|
+
const closestVariantNode = this.getClosestVariantNode();
|
|
3481
|
+
if (closestVariantNode) {
|
|
3482
|
+
closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);
|
|
3483
|
+
return () => closestVariantNode.variantChildren.delete(child);
|
|
3484
|
+
}
|
|
3485
|
+
}
|
|
3486
|
+
addValue(key, value) {
|
|
3487
|
+
const existingValue = this.values.get(key);
|
|
3488
|
+
if (value !== existingValue) {
|
|
3489
|
+
if (existingValue)
|
|
3490
|
+
this.removeValue(key);
|
|
3491
|
+
this.bindToMotionValue(key, value);
|
|
3492
|
+
this.values.set(key, value);
|
|
3493
|
+
this.latestValues[key] = value.get();
|
|
3494
|
+
}
|
|
3495
|
+
}
|
|
3496
|
+
removeValue(key) {
|
|
3497
|
+
this.values.delete(key);
|
|
3498
|
+
const unsubscribe = this.valueSubscriptions.get(key);
|
|
3499
|
+
if (unsubscribe) {
|
|
3500
|
+
unsubscribe();
|
|
3501
|
+
this.valueSubscriptions.delete(key);
|
|
3502
|
+
}
|
|
3503
|
+
delete this.latestValues[key];
|
|
3504
|
+
this.removeValueFromRenderState(key, this.renderState);
|
|
3505
|
+
}
|
|
3506
|
+
hasValue(key) {
|
|
3507
|
+
return this.values.has(key);
|
|
3508
|
+
}
|
|
3509
|
+
getValue(key, defaultValue) {
|
|
3510
|
+
if (this.props.values && this.props.values[key]) {
|
|
3511
|
+
return this.props.values[key];
|
|
3512
|
+
}
|
|
3513
|
+
let value = this.values.get(key);
|
|
3514
|
+
if (value === undefined && defaultValue !== undefined) {
|
|
3515
|
+
value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });
|
|
3516
|
+
this.addValue(key, value);
|
|
3517
|
+
}
|
|
3518
|
+
return value;
|
|
3519
|
+
}
|
|
3520
|
+
readValue(key, target) {
|
|
3521
|
+
var _a;
|
|
3522
|
+
let value = this.latestValues[key] !== undefined || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== undefined ? _a : this.readValueFromInstance(this.current, key, this.options);
|
|
3523
|
+
if (value !== undefined && value !== null) {
|
|
3524
|
+
if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) {
|
|
3525
|
+
value = parseFloat(value);
|
|
3526
|
+
} else if (!findValueType(value) && complex.test(target)) {
|
|
3527
|
+
value = getAnimatableNone2(key, target);
|
|
3528
|
+
}
|
|
3529
|
+
this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);
|
|
3530
|
+
}
|
|
3531
|
+
return isMotionValue(value) ? value.get() : value;
|
|
3532
|
+
}
|
|
3533
|
+
setBaseTarget(key, value) {
|
|
3534
|
+
this.baseTarget[key] = value;
|
|
3535
|
+
}
|
|
3536
|
+
getBaseTarget(key) {
|
|
3537
|
+
var _a;
|
|
3538
|
+
const { initial } = this.props;
|
|
3539
|
+
let valueFromInitial;
|
|
3540
|
+
if (typeof initial === "string" || typeof initial === "object") {
|
|
3541
|
+
const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === undefined ? undefined : _a.custom);
|
|
3542
|
+
if (variant) {
|
|
3543
|
+
valueFromInitial = variant[key];
|
|
3544
|
+
}
|
|
3545
|
+
}
|
|
3546
|
+
if (initial && valueFromInitial !== undefined) {
|
|
3547
|
+
return valueFromInitial;
|
|
3548
|
+
}
|
|
3549
|
+
const target = this.getBaseTargetFromProps(this.props, key);
|
|
3550
|
+
if (target !== undefined && !isMotionValue(target))
|
|
3551
|
+
return target;
|
|
3552
|
+
return this.initialValues[key] !== undefined && valueFromInitial === undefined ? undefined : this.baseTarget[key];
|
|
3553
|
+
}
|
|
3554
|
+
on(eventName, callback) {
|
|
3555
|
+
if (!this.events[eventName]) {
|
|
3556
|
+
this.events[eventName] = new SubscriptionManager;
|
|
3557
|
+
}
|
|
3558
|
+
return this.events[eventName].add(callback);
|
|
3559
|
+
}
|
|
3560
|
+
notify(eventName, ...args) {
|
|
3561
|
+
if (this.events[eventName]) {
|
|
3562
|
+
this.events[eventName].notify(...args);
|
|
3563
|
+
}
|
|
3564
|
+
}
|
|
3565
|
+
}
|
|
3566
|
+
|
|
3567
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs
|
|
3568
|
+
class DOMVisualElement extends VisualElement {
|
|
3569
|
+
constructor() {
|
|
3570
|
+
super(...arguments);
|
|
3571
|
+
this.KeyframeResolver = DOMKeyframesResolver;
|
|
3572
|
+
}
|
|
3573
|
+
sortInstanceNodePosition(a, b) {
|
|
3574
|
+
return a.compareDocumentPosition(b) & 2 ? 1 : -1;
|
|
3575
|
+
}
|
|
3576
|
+
getBaseTargetFromProps(props, key) {
|
|
3577
|
+
return props.style ? props.style[key] : undefined;
|
|
3578
|
+
}
|
|
3579
|
+
removeValueFromRenderState(key, { vars, style }) {
|
|
3580
|
+
delete vars[key];
|
|
3581
|
+
delete style[key];
|
|
3582
|
+
}
|
|
3583
|
+
handleChildMotionValue() {
|
|
3584
|
+
if (this.childSubscription) {
|
|
3585
|
+
this.childSubscription();
|
|
3586
|
+
delete this.childSubscription;
|
|
3587
|
+
}
|
|
3588
|
+
const { children } = this.props;
|
|
3589
|
+
if (isMotionValue(children)) {
|
|
3590
|
+
this.childSubscription = children.on("change", (latest) => {
|
|
3591
|
+
if (this.current) {
|
|
3592
|
+
this.current.textContent = `${latest}`;
|
|
3593
|
+
}
|
|
3594
|
+
});
|
|
3595
|
+
}
|
|
3596
|
+
}
|
|
3597
|
+
}
|
|
3598
|
+
|
|
3599
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs
|
|
3600
|
+
var getValueAsType = (value, type) => {
|
|
3601
|
+
return type && typeof value === "number" ? type.transform(value) : value;
|
|
3602
|
+
};
|
|
3603
|
+
|
|
3604
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs
|
|
3605
|
+
var translateAlias = {
|
|
3606
|
+
x: "translateX",
|
|
3607
|
+
y: "translateY",
|
|
3608
|
+
z: "translateZ",
|
|
3609
|
+
transformPerspective: "perspective"
|
|
3610
|
+
};
|
|
3611
|
+
var numTransforms = transformPropOrder.length;
|
|
3612
|
+
function buildTransform(latestValues, transform, transformTemplate) {
|
|
3613
|
+
let transformString = "";
|
|
3614
|
+
let transformIsDefault = true;
|
|
3615
|
+
for (let i = 0;i < numTransforms; i++) {
|
|
3616
|
+
const key = transformPropOrder[i];
|
|
3617
|
+
const value = latestValues[key];
|
|
3618
|
+
if (value === undefined)
|
|
3619
|
+
continue;
|
|
3620
|
+
let valueIsDefault = true;
|
|
3621
|
+
if (typeof value === "number") {
|
|
3622
|
+
valueIsDefault = value === (key.startsWith("scale") ? 1 : 0);
|
|
3623
|
+
} else {
|
|
3624
|
+
valueIsDefault = parseFloat(value) === 0;
|
|
3625
|
+
}
|
|
3626
|
+
if (!valueIsDefault || transformTemplate) {
|
|
3627
|
+
const valueAsType = getValueAsType(value, numberValueTypes[key]);
|
|
3628
|
+
if (!valueIsDefault) {
|
|
3629
|
+
transformIsDefault = false;
|
|
3630
|
+
const transformName = translateAlias[key] || key;
|
|
3631
|
+
transformString += `${transformName}(${valueAsType}) `;
|
|
3632
|
+
}
|
|
3633
|
+
if (transformTemplate) {
|
|
3634
|
+
transform[key] = valueAsType;
|
|
3635
|
+
}
|
|
3636
|
+
}
|
|
3637
|
+
}
|
|
3638
|
+
transformString = transformString.trim();
|
|
3639
|
+
if (transformTemplate) {
|
|
3640
|
+
transformString = transformTemplate(transform, transformIsDefault ? "" : transformString);
|
|
3641
|
+
} else if (transformIsDefault) {
|
|
3642
|
+
transformString = "none";
|
|
3643
|
+
}
|
|
3644
|
+
return transformString;
|
|
3645
|
+
}
|
|
3646
|
+
|
|
3647
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs
|
|
3648
|
+
function buildHTMLStyles(state, latestValues, transformTemplate) {
|
|
3649
|
+
const { style, vars, transformOrigin } = state;
|
|
3650
|
+
let hasTransform = false;
|
|
3651
|
+
let hasTransformOrigin = false;
|
|
3652
|
+
for (const key in latestValues) {
|
|
3653
|
+
const value = latestValues[key];
|
|
3654
|
+
if (transformProps.has(key)) {
|
|
3655
|
+
hasTransform = true;
|
|
3656
|
+
continue;
|
|
3657
|
+
} else if (isCSSVariableName(key)) {
|
|
3658
|
+
vars[key] = value;
|
|
3659
|
+
continue;
|
|
3660
|
+
} else {
|
|
3661
|
+
const valueAsType = getValueAsType(value, numberValueTypes[key]);
|
|
3662
|
+
if (key.startsWith("origin")) {
|
|
3663
|
+
hasTransformOrigin = true;
|
|
3664
|
+
transformOrigin[key] = valueAsType;
|
|
3665
|
+
} else {
|
|
3666
|
+
style[key] = valueAsType;
|
|
3667
|
+
}
|
|
3668
|
+
}
|
|
3669
|
+
}
|
|
3670
|
+
if (!latestValues.transform) {
|
|
3671
|
+
if (hasTransform || transformTemplate) {
|
|
3672
|
+
style.transform = buildTransform(latestValues, state.transform, transformTemplate);
|
|
3673
|
+
} else if (style.transform) {
|
|
3674
|
+
style.transform = "none";
|
|
3675
|
+
}
|
|
3676
|
+
}
|
|
3677
|
+
if (hasTransformOrigin) {
|
|
3678
|
+
const { originX = "50%", originY = "50%", originZ = 0 } = transformOrigin;
|
|
3679
|
+
style.transformOrigin = `${originX} ${originY} ${originZ}`;
|
|
3680
|
+
}
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3683
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs
|
|
3684
|
+
var dashKeys = {
|
|
3685
|
+
offset: "stroke-dashoffset",
|
|
3686
|
+
array: "stroke-dasharray"
|
|
3687
|
+
};
|
|
3688
|
+
var camelKeys = {
|
|
3689
|
+
offset: "strokeDashoffset",
|
|
3690
|
+
array: "strokeDasharray"
|
|
3691
|
+
};
|
|
3692
|
+
function buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {
|
|
3693
|
+
attrs.pathLength = 1;
|
|
3694
|
+
const keys = useDashCase ? dashKeys : camelKeys;
|
|
3695
|
+
attrs[keys.offset] = px.transform(-offset);
|
|
3696
|
+
const pathLength = px.transform(length);
|
|
3697
|
+
const pathSpacing = px.transform(spacing);
|
|
3698
|
+
attrs[keys.array] = `${pathLength} ${pathSpacing}`;
|
|
3699
|
+
}
|
|
3700
|
+
|
|
3701
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/transform-origin.mjs
|
|
3702
|
+
function calcOrigin(origin, offset, size) {
|
|
3703
|
+
return typeof origin === "string" ? origin : px.transform(offset + size * origin);
|
|
3704
|
+
}
|
|
3705
|
+
function calcSVGTransformOrigin(dimensions, originX, originY) {
|
|
3706
|
+
const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);
|
|
3707
|
+
const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);
|
|
3708
|
+
return `${pxOriginX} ${pxOriginY}`;
|
|
3709
|
+
}
|
|
3710
|
+
|
|
3711
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/build-attrs.mjs
|
|
3712
|
+
function buildSVGAttrs(state, {
|
|
3713
|
+
attrX,
|
|
3714
|
+
attrY,
|
|
3715
|
+
attrScale,
|
|
3716
|
+
originX,
|
|
3717
|
+
originY,
|
|
3718
|
+
pathLength,
|
|
3719
|
+
pathSpacing = 1,
|
|
3720
|
+
pathOffset = 0,
|
|
3721
|
+
...latest
|
|
3722
|
+
}, isSVGTag, transformTemplate) {
|
|
3723
|
+
buildHTMLStyles(state, latest, transformTemplate);
|
|
3724
|
+
if (isSVGTag) {
|
|
3725
|
+
if (state.style.viewBox) {
|
|
3726
|
+
state.attrs.viewBox = state.style.viewBox;
|
|
3727
|
+
}
|
|
3728
|
+
return;
|
|
3729
|
+
}
|
|
3730
|
+
state.attrs = state.style;
|
|
3731
|
+
state.style = {};
|
|
3732
|
+
const { attrs, style, dimensions } = state;
|
|
3733
|
+
if (attrs.transform) {
|
|
3734
|
+
if (dimensions)
|
|
3735
|
+
style.transform = attrs.transform;
|
|
3736
|
+
delete attrs.transform;
|
|
3737
|
+
}
|
|
3738
|
+
if (dimensions && (originX !== undefined || originY !== undefined || style.transform)) {
|
|
3739
|
+
style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);
|
|
3740
|
+
}
|
|
3741
|
+
if (attrX !== undefined)
|
|
3742
|
+
attrs.x = attrX;
|
|
3743
|
+
if (attrY !== undefined)
|
|
3744
|
+
attrs.y = attrY;
|
|
3745
|
+
if (attrScale !== undefined)
|
|
3746
|
+
attrs.scale = attrScale;
|
|
3747
|
+
if (pathLength !== undefined) {
|
|
3748
|
+
buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
|
|
3752
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs
|
|
3753
|
+
var camelCaseAttributes = new Set([
|
|
3754
|
+
"baseFrequency",
|
|
3755
|
+
"diffuseConstant",
|
|
3756
|
+
"kernelMatrix",
|
|
3757
|
+
"kernelUnitLength",
|
|
3758
|
+
"keySplines",
|
|
3759
|
+
"keyTimes",
|
|
3760
|
+
"limitingConeAngle",
|
|
3761
|
+
"markerHeight",
|
|
3762
|
+
"markerWidth",
|
|
3763
|
+
"numOctaves",
|
|
3764
|
+
"targetX",
|
|
3765
|
+
"targetY",
|
|
3766
|
+
"surfaceScale",
|
|
3767
|
+
"specularConstant",
|
|
3768
|
+
"specularExponent",
|
|
3769
|
+
"stdDeviation",
|
|
3770
|
+
"tableValues",
|
|
3771
|
+
"viewBox",
|
|
3772
|
+
"gradientTransform",
|
|
3773
|
+
"pathLength",
|
|
3774
|
+
"startOffset",
|
|
3775
|
+
"textLength",
|
|
3776
|
+
"lengthAdjust"
|
|
3777
|
+
]);
|
|
3778
|
+
|
|
3779
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs
|
|
3780
|
+
var isSVGTag = (tag) => typeof tag === "string" && tag.toLowerCase() === "svg";
|
|
3781
|
+
|
|
3782
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/render.mjs
|
|
3783
|
+
function renderHTML(element, { style, vars }, styleProp, projection) {
|
|
3784
|
+
Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));
|
|
3785
|
+
for (const key in vars) {
|
|
3786
|
+
element.style.setProperty(key, vars[key]);
|
|
3787
|
+
}
|
|
3788
|
+
}
|
|
3789
|
+
|
|
3790
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/render.mjs
|
|
3791
|
+
function renderSVG(element, renderState, _styleProp, projection) {
|
|
3792
|
+
renderHTML(element, renderState, undefined, projection);
|
|
3793
|
+
for (const key in renderState.attrs) {
|
|
3794
|
+
element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);
|
|
3795
|
+
}
|
|
3796
|
+
}
|
|
3797
|
+
|
|
3798
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs
|
|
3799
|
+
var scaleCorrectors = {};
|
|
3800
|
+
|
|
3801
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs
|
|
3802
|
+
function isForcedMotionValue(key, { layout, layoutId }) {
|
|
3803
|
+
return transformProps.has(key) || key.startsWith("origin") || (layout || layoutId !== undefined) && (!!scaleCorrectors[key] || key === "opacity");
|
|
3804
|
+
}
|
|
3805
|
+
|
|
3806
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs
|
|
3807
|
+
function scrapeMotionValuesFromProps(props, prevProps, visualElement) {
|
|
3808
|
+
var _a;
|
|
3809
|
+
const { style } = props;
|
|
3810
|
+
const newValues = {};
|
|
3811
|
+
for (const key in style) {
|
|
3812
|
+
if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement === null || visualElement === undefined ? undefined : visualElement.getValue(key)) === null || _a === undefined ? undefined : _a.liveStyle) !== undefined) {
|
|
3813
|
+
newValues[key] = style[key];
|
|
3814
|
+
}
|
|
3815
|
+
}
|
|
3816
|
+
return newValues;
|
|
3817
|
+
}
|
|
3818
|
+
|
|
3819
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs
|
|
3820
|
+
function scrapeMotionValuesFromProps2(props, prevProps, visualElement) {
|
|
3821
|
+
const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);
|
|
3822
|
+
for (const key in props) {
|
|
3823
|
+
if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {
|
|
3824
|
+
const targetKey = transformPropOrder.indexOf(key) !== -1 ? "attr" + key.charAt(0).toUpperCase() + key.substring(1) : key;
|
|
3825
|
+
newValues[targetKey] = props[key];
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
return newValues;
|
|
3829
|
+
}
|
|
3830
|
+
|
|
3831
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs
|
|
3832
|
+
class SVGVisualElement extends DOMVisualElement {
|
|
3833
|
+
constructor() {
|
|
3834
|
+
super(...arguments);
|
|
3835
|
+
this.type = "svg";
|
|
3836
|
+
this.isSVGTag = false;
|
|
3837
|
+
this.measureInstanceViewportBox = createBox;
|
|
3838
|
+
}
|
|
3839
|
+
getBaseTargetFromProps(props, key) {
|
|
3840
|
+
return props[key];
|
|
3841
|
+
}
|
|
3842
|
+
readValueFromInstance(instance, key) {
|
|
3843
|
+
if (transformProps.has(key)) {
|
|
3844
|
+
const defaultType = getDefaultValueType(key);
|
|
3845
|
+
return defaultType ? defaultType.default || 0 : 0;
|
|
3846
|
+
}
|
|
3847
|
+
key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;
|
|
3848
|
+
return instance.getAttribute(key);
|
|
3849
|
+
}
|
|
3850
|
+
scrapeMotionValuesFromProps(props, prevProps, visualElement) {
|
|
3851
|
+
return scrapeMotionValuesFromProps2(props, prevProps, visualElement);
|
|
3852
|
+
}
|
|
3853
|
+
build(renderState, latestValues, props) {
|
|
3854
|
+
buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);
|
|
3855
|
+
}
|
|
3856
|
+
renderInstance(instance, renderState, styleProp, projection) {
|
|
3857
|
+
renderSVG(instance, renderState, styleProp, projection);
|
|
3858
|
+
}
|
|
3859
|
+
mount(instance) {
|
|
3860
|
+
this.isSVGTag = isSVGTag(instance.tagName);
|
|
3861
|
+
super.mount(instance);
|
|
3862
|
+
}
|
|
3863
|
+
}
|
|
3864
|
+
|
|
3865
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/geometry/conversion.mjs
|
|
3866
|
+
function convertBoundingBoxToBox({ top, left, right, bottom }) {
|
|
3867
|
+
return {
|
|
3868
|
+
x: { min: left, max: right },
|
|
3869
|
+
y: { min: top, max: bottom }
|
|
3870
|
+
};
|
|
3871
|
+
}
|
|
3872
|
+
function transformBoxPoints(point, transformPoint) {
|
|
3873
|
+
if (!transformPoint)
|
|
3874
|
+
return point;
|
|
3875
|
+
const topLeft = transformPoint({ x: point.left, y: point.top });
|
|
3876
|
+
const bottomRight = transformPoint({ x: point.right, y: point.bottom });
|
|
3877
|
+
return {
|
|
3878
|
+
top: topLeft.y,
|
|
3879
|
+
left: topLeft.x,
|
|
3880
|
+
bottom: bottomRight.y,
|
|
3881
|
+
right: bottomRight.x
|
|
3882
|
+
};
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3885
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/utils/measure.mjs
|
|
3886
|
+
function measureViewportBox(instance, transformPoint) {
|
|
3887
|
+
return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs
|
|
3891
|
+
function getComputedStyle2(element) {
|
|
3892
|
+
return window.getComputedStyle(element);
|
|
3893
|
+
}
|
|
3894
|
+
|
|
3895
|
+
class HTMLVisualElement extends DOMVisualElement {
|
|
3896
|
+
constructor() {
|
|
3897
|
+
super(...arguments);
|
|
3898
|
+
this.type = "html";
|
|
3899
|
+
this.renderInstance = renderHTML;
|
|
3900
|
+
}
|
|
3901
|
+
readValueFromInstance(instance, key) {
|
|
3902
|
+
if (transformProps.has(key)) {
|
|
3903
|
+
const defaultType = getDefaultValueType(key);
|
|
3904
|
+
return defaultType ? defaultType.default || 0 : 0;
|
|
3905
|
+
} else {
|
|
3906
|
+
const computedStyle = getComputedStyle2(instance);
|
|
3907
|
+
const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;
|
|
3908
|
+
return typeof value === "string" ? value.trim() : value;
|
|
3909
|
+
}
|
|
3910
|
+
}
|
|
3911
|
+
measureInstanceViewportBox(instance, { transformPagePoint }) {
|
|
3912
|
+
return measureViewportBox(instance, transformPagePoint);
|
|
3913
|
+
}
|
|
3914
|
+
build(renderState, latestValues, props) {
|
|
3915
|
+
buildHTMLStyles(renderState, latestValues, props.transformTemplate);
|
|
3916
|
+
}
|
|
3917
|
+
scrapeMotionValuesFromProps(props, prevProps, visualElement) {
|
|
3918
|
+
return scrapeMotionValuesFromProps(props, prevProps, visualElement);
|
|
3919
|
+
}
|
|
3920
|
+
}
|
|
3921
|
+
|
|
3922
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/object/ObjectVisualElement.mjs
|
|
3923
|
+
function isObjectKey(key, object) {
|
|
3924
|
+
return key in object;
|
|
3925
|
+
}
|
|
3926
|
+
|
|
3927
|
+
class ObjectVisualElement extends VisualElement {
|
|
3928
|
+
constructor() {
|
|
3929
|
+
super(...arguments);
|
|
3930
|
+
this.type = "object";
|
|
3931
|
+
}
|
|
3932
|
+
readValueFromInstance(instance, key) {
|
|
3933
|
+
if (isObjectKey(key, instance)) {
|
|
3934
|
+
const value = instance[key];
|
|
3935
|
+
if (typeof value === "string" || typeof value === "number") {
|
|
3936
|
+
return value;
|
|
3937
|
+
}
|
|
3938
|
+
}
|
|
3939
|
+
return;
|
|
3940
|
+
}
|
|
3941
|
+
getBaseTargetFromProps() {
|
|
3942
|
+
return;
|
|
3943
|
+
}
|
|
3944
|
+
removeValueFromRenderState(key, renderState) {
|
|
3945
|
+
delete renderState.output[key];
|
|
3946
|
+
}
|
|
3947
|
+
measureInstanceViewportBox() {
|
|
3948
|
+
return createBox();
|
|
3949
|
+
}
|
|
3950
|
+
build(renderState, latestValues) {
|
|
3951
|
+
Object.assign(renderState.output, latestValues);
|
|
3952
|
+
}
|
|
3953
|
+
renderInstance(instance, { output }) {
|
|
3954
|
+
Object.assign(instance, output);
|
|
3955
|
+
}
|
|
3956
|
+
sortInstanceNodePosition() {
|
|
3957
|
+
return 0;
|
|
3958
|
+
}
|
|
3959
|
+
}
|
|
3960
|
+
|
|
3961
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/create-visual-element.mjs
|
|
3962
|
+
function createDOMVisualElement(element) {
|
|
3963
|
+
const options = {
|
|
3964
|
+
presenceContext: null,
|
|
3965
|
+
props: {},
|
|
3966
|
+
visualState: {
|
|
3967
|
+
renderState: {
|
|
3968
|
+
transform: {},
|
|
3969
|
+
transformOrigin: {},
|
|
3970
|
+
style: {},
|
|
3971
|
+
vars: {},
|
|
3972
|
+
attrs: {}
|
|
3973
|
+
},
|
|
3974
|
+
latestValues: {}
|
|
3975
|
+
}
|
|
3976
|
+
};
|
|
3977
|
+
const node = isSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);
|
|
3978
|
+
node.mount(element);
|
|
3979
|
+
visualElementStore.set(element, node);
|
|
3980
|
+
}
|
|
3981
|
+
function createObjectVisualElement(subject) {
|
|
3982
|
+
const options = {
|
|
3983
|
+
presenceContext: null,
|
|
3984
|
+
props: {},
|
|
3985
|
+
visualState: {
|
|
3986
|
+
renderState: {
|
|
3987
|
+
output: {}
|
|
3988
|
+
},
|
|
3989
|
+
latestValues: {}
|
|
3990
|
+
}
|
|
3991
|
+
};
|
|
3992
|
+
const node = new ObjectVisualElement(options);
|
|
3993
|
+
node.mount(subject);
|
|
3994
|
+
visualElementStore.set(subject, node);
|
|
3995
|
+
}
|
|
3996
|
+
|
|
3997
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/single-value.mjs
|
|
3998
|
+
function animateSingleValue(value, keyframes2, options) {
|
|
3999
|
+
const motionValue$1 = isMotionValue(value) ? value : motionValue(value);
|
|
4000
|
+
motionValue$1.start(animateMotionValue("", motionValue$1, keyframes2, options));
|
|
4001
|
+
return motionValue$1.animation;
|
|
4002
|
+
}
|
|
4003
|
+
|
|
4004
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/subject.mjs
|
|
4005
|
+
function isSingleValue(subject, keyframes2) {
|
|
4006
|
+
return isMotionValue(subject) || typeof subject === "number" || typeof subject === "string" && !isDOMKeyframes(keyframes2);
|
|
4007
|
+
}
|
|
4008
|
+
function animateSubject(subject, keyframes2, options, scope) {
|
|
4009
|
+
const animations = [];
|
|
4010
|
+
if (isSingleValue(subject, keyframes2)) {
|
|
4011
|
+
animations.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));
|
|
4012
|
+
} else {
|
|
4013
|
+
const subjects = resolveSubjects(subject, keyframes2, scope);
|
|
4014
|
+
const numSubjects = subjects.length;
|
|
4015
|
+
invariant(Boolean(numSubjects), "No valid elements provided.");
|
|
4016
|
+
for (let i = 0;i < numSubjects; i++) {
|
|
4017
|
+
const thisSubject = subjects[i];
|
|
4018
|
+
const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;
|
|
4019
|
+
if (!visualElementStore.has(thisSubject)) {
|
|
4020
|
+
createVisualElement(thisSubject);
|
|
4021
|
+
}
|
|
4022
|
+
const visualElement = visualElementStore.get(thisSubject);
|
|
4023
|
+
const transition = { ...options };
|
|
4024
|
+
if ("delay" in transition && typeof transition.delay === "function") {
|
|
4025
|
+
transition.delay = transition.delay(i, numSubjects);
|
|
4026
|
+
}
|
|
4027
|
+
animations.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));
|
|
4028
|
+
}
|
|
4029
|
+
}
|
|
4030
|
+
return animations;
|
|
4031
|
+
}
|
|
4032
|
+
|
|
4033
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs
|
|
4034
|
+
function animateSequence(sequence, options, scope) {
|
|
4035
|
+
const animations = [];
|
|
4036
|
+
const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });
|
|
4037
|
+
animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {
|
|
4038
|
+
animations.push(...animateSubject(subject, keyframes2, transition));
|
|
4039
|
+
});
|
|
4040
|
+
return animations;
|
|
4041
|
+
}
|
|
4042
|
+
|
|
4043
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/index.mjs
|
|
4044
|
+
function isSequence(value) {
|
|
4045
|
+
return Array.isArray(value) && value.some(Array.isArray);
|
|
4046
|
+
}
|
|
4047
|
+
function createScopedAnimate(scope) {
|
|
4048
|
+
function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {
|
|
4049
|
+
let animations = [];
|
|
4050
|
+
if (isSequence(subjectOrSequence)) {
|
|
4051
|
+
animations = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);
|
|
4052
|
+
} else {
|
|
4053
|
+
animations = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);
|
|
4054
|
+
}
|
|
4055
|
+
const animation = new GroupPlaybackControls(animations);
|
|
4056
|
+
if (scope) {
|
|
4057
|
+
scope.animations.push(animation);
|
|
4058
|
+
}
|
|
4059
|
+
return animation;
|
|
4060
|
+
}
|
|
4061
|
+
return scopedAnimate;
|
|
4062
|
+
}
|
|
4063
|
+
var animate = createScopedAnimate();
|
|
4064
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/NativeAnimationControls.mjs
|
|
4065
|
+
class NativeAnimationControls {
|
|
4066
|
+
constructor(animation) {
|
|
4067
|
+
this.animation = animation;
|
|
4068
|
+
}
|
|
4069
|
+
get duration() {
|
|
4070
|
+
var _a, _b, _c;
|
|
4071
|
+
const durationInMs = ((_b = (_a = this.animation) === null || _a === undefined ? undefined : _a.effect) === null || _b === undefined ? undefined : _b.getComputedTiming().duration) || ((_c = this.options) === null || _c === undefined ? undefined : _c.duration) || 300;
|
|
4072
|
+
return millisecondsToSeconds(Number(durationInMs));
|
|
4073
|
+
}
|
|
4074
|
+
get time() {
|
|
4075
|
+
var _a;
|
|
4076
|
+
if (this.animation) {
|
|
4077
|
+
return millisecondsToSeconds(((_a = this.animation) === null || _a === undefined ? undefined : _a.currentTime) || 0);
|
|
4078
|
+
}
|
|
4079
|
+
return 0;
|
|
4080
|
+
}
|
|
4081
|
+
set time(newTime) {
|
|
4082
|
+
if (this.animation) {
|
|
4083
|
+
this.animation.currentTime = secondsToMilliseconds(newTime);
|
|
4084
|
+
}
|
|
4085
|
+
}
|
|
4086
|
+
get speed() {
|
|
4087
|
+
return this.animation ? this.animation.playbackRate : 1;
|
|
4088
|
+
}
|
|
4089
|
+
set speed(newSpeed) {
|
|
4090
|
+
if (this.animation) {
|
|
4091
|
+
this.animation.playbackRate = newSpeed;
|
|
4092
|
+
}
|
|
4093
|
+
}
|
|
4094
|
+
get state() {
|
|
4095
|
+
return this.animation ? this.animation.playState : "finished";
|
|
4096
|
+
}
|
|
4097
|
+
get startTime() {
|
|
4098
|
+
return this.animation ? this.animation.startTime : null;
|
|
4099
|
+
}
|
|
4100
|
+
get finished() {
|
|
4101
|
+
return this.animation ? this.animation.finished : Promise.resolve();
|
|
4102
|
+
}
|
|
4103
|
+
play() {
|
|
4104
|
+
this.animation && this.animation.play();
|
|
4105
|
+
}
|
|
4106
|
+
pause() {
|
|
4107
|
+
this.animation && this.animation.pause();
|
|
4108
|
+
}
|
|
4109
|
+
stop() {
|
|
4110
|
+
if (!this.animation || this.state === "idle" || this.state === "finished") {
|
|
4111
|
+
return;
|
|
4112
|
+
}
|
|
4113
|
+
if (this.animation.commitStyles) {
|
|
4114
|
+
this.animation.commitStyles();
|
|
4115
|
+
}
|
|
4116
|
+
this.cancel();
|
|
4117
|
+
}
|
|
4118
|
+
flatten() {
|
|
4119
|
+
var _a;
|
|
4120
|
+
if (!this.animation)
|
|
4121
|
+
return;
|
|
4122
|
+
(_a = this.animation.effect) === null || _a === undefined || _a.updateTiming({ easing: "linear" });
|
|
4123
|
+
}
|
|
4124
|
+
attachTimeline(timeline) {
|
|
4125
|
+
if (this.animation)
|
|
4126
|
+
attachTimeline(this.animation, timeline);
|
|
4127
|
+
return noop;
|
|
4128
|
+
}
|
|
4129
|
+
complete() {
|
|
4130
|
+
this.animation && this.animation.finish();
|
|
4131
|
+
}
|
|
4132
|
+
cancel() {
|
|
4133
|
+
try {
|
|
4134
|
+
this.animation && this.animation.cancel();
|
|
4135
|
+
} catch (e) {}
|
|
4136
|
+
}
|
|
4137
|
+
}
|
|
4138
|
+
|
|
4139
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs
|
|
4140
|
+
function setCSSVar(element, name, value) {
|
|
4141
|
+
element.style.setProperty(`--${name}`, value);
|
|
4142
|
+
}
|
|
4143
|
+
function setStyle(element, name, value) {
|
|
4144
|
+
element.style[name] = value;
|
|
4145
|
+
}
|
|
4146
|
+
|
|
4147
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs
|
|
4148
|
+
var supportsPartialKeyframes = /* @__PURE__ */ memo(() => {
|
|
4149
|
+
try {
|
|
4150
|
+
document.createElement("div").animate({ opacity: [1] });
|
|
4151
|
+
} catch (e) {
|
|
4152
|
+
return false;
|
|
4153
|
+
}
|
|
4154
|
+
return true;
|
|
4155
|
+
});
|
|
4156
|
+
|
|
4157
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs
|
|
4158
|
+
var state = new WeakMap;
|
|
4159
|
+
function hydrateKeyframes(valueName, keyframes2, read) {
|
|
4160
|
+
for (let i = 0;i < keyframes2.length; i++) {
|
|
4161
|
+
if (keyframes2[i] === null) {
|
|
4162
|
+
keyframes2[i] = i === 0 ? read() : keyframes2[i - 1];
|
|
4163
|
+
}
|
|
4164
|
+
if (typeof keyframes2[i] === "number" && browserNumberValueTypes[valueName]) {
|
|
4165
|
+
keyframes2[i] = browserNumberValueTypes[valueName].transform(keyframes2[i]);
|
|
4166
|
+
}
|
|
4167
|
+
}
|
|
4168
|
+
if (!supportsPartialKeyframes() && keyframes2.length < 2) {
|
|
4169
|
+
keyframes2.unshift(read());
|
|
4170
|
+
}
|
|
4171
|
+
}
|
|
4172
|
+
var defaultEasing2 = "easeOut";
|
|
4173
|
+
function getElementAnimationState(element) {
|
|
4174
|
+
const animationState = state.get(element) || new Map;
|
|
4175
|
+
state.set(element, animationState);
|
|
4176
|
+
return state.get(element);
|
|
4177
|
+
}
|
|
4178
|
+
|
|
4179
|
+
class NativeAnimation extends NativeAnimationControls {
|
|
4180
|
+
constructor(element, valueName, valueKeyframes, options) {
|
|
4181
|
+
const isCSSVar = valueName.startsWith("--");
|
|
4182
|
+
invariant(typeof options.type !== "string", `animateMini doesn't support "type" as a string. Did you mean to import { spring } from "framer-motion"?`);
|
|
4183
|
+
const existingAnimation = getElementAnimationState(element).get(valueName);
|
|
4184
|
+
existingAnimation && existingAnimation.stop();
|
|
4185
|
+
const readInitialKeyframe = () => {
|
|
4186
|
+
return valueName.startsWith("--") ? element.style.getPropertyValue(valueName) : window.getComputedStyle(element)[valueName];
|
|
4187
|
+
};
|
|
4188
|
+
if (!Array.isArray(valueKeyframes)) {
|
|
4189
|
+
valueKeyframes = [valueKeyframes];
|
|
4190
|
+
}
|
|
4191
|
+
hydrateKeyframes(valueName, valueKeyframes, readInitialKeyframe);
|
|
4192
|
+
if (isGenerator(options.type)) {
|
|
4193
|
+
const generatorOptions = createGeneratorEasing(options, 100, options.type);
|
|
4194
|
+
options.ease = supportsLinearEasing() ? generatorOptions.ease : defaultEasing2;
|
|
4195
|
+
options.duration = secondsToMilliseconds(generatorOptions.duration);
|
|
4196
|
+
options.type = "keyframes";
|
|
4197
|
+
} else {
|
|
4198
|
+
options.ease = options.ease || defaultEasing2;
|
|
4199
|
+
}
|
|
4200
|
+
const onFinish = () => {
|
|
4201
|
+
this.setValue(element, valueName, getFinalKeyframe(valueKeyframes, options));
|
|
4202
|
+
this.cancel();
|
|
4203
|
+
this.resolveFinishedPromise();
|
|
4204
|
+
};
|
|
4205
|
+
const init = () => {
|
|
4206
|
+
this.setValue = isCSSVar ? setCSSVar : setStyle;
|
|
4207
|
+
this.options = options;
|
|
4208
|
+
this.updateFinishedPromise();
|
|
4209
|
+
this.removeAnimation = () => {
|
|
4210
|
+
const elementState = state.get(element);
|
|
4211
|
+
elementState && elementState.delete(valueName);
|
|
4212
|
+
};
|
|
4213
|
+
};
|
|
4214
|
+
if (!supportsWaapi()) {
|
|
4215
|
+
super();
|
|
4216
|
+
init();
|
|
4217
|
+
onFinish();
|
|
4218
|
+
} else {
|
|
4219
|
+
super(startWaapiAnimation(element, valueName, valueKeyframes, options));
|
|
4220
|
+
init();
|
|
4221
|
+
if (options.autoplay === false) {
|
|
4222
|
+
this.animation.pause();
|
|
4223
|
+
}
|
|
4224
|
+
this.animation.onfinish = onFinish;
|
|
4225
|
+
getElementAnimationState(element).set(valueName, this);
|
|
4226
|
+
}
|
|
4227
|
+
}
|
|
4228
|
+
then(resolve, reject) {
|
|
4229
|
+
return this.currentFinishedPromise.then(resolve, reject);
|
|
4230
|
+
}
|
|
4231
|
+
updateFinishedPromise() {
|
|
4232
|
+
this.currentFinishedPromise = new Promise((resolve) => {
|
|
4233
|
+
this.resolveFinishedPromise = resolve;
|
|
4234
|
+
});
|
|
4235
|
+
}
|
|
4236
|
+
play() {
|
|
4237
|
+
if (this.state === "finished") {
|
|
4238
|
+
this.updateFinishedPromise();
|
|
4239
|
+
}
|
|
4240
|
+
super.play();
|
|
4241
|
+
}
|
|
4242
|
+
cancel() {
|
|
4243
|
+
this.removeAnimation();
|
|
4244
|
+
super.cancel();
|
|
4245
|
+
}
|
|
4246
|
+
}
|
|
4247
|
+
|
|
4248
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs
|
|
4249
|
+
function animateElements(elementOrSelector, keyframes2, options, scope) {
|
|
4250
|
+
const elements = resolveElements(elementOrSelector, scope);
|
|
4251
|
+
const numElements = elements.length;
|
|
4252
|
+
invariant(Boolean(numElements), "No valid element provided.");
|
|
4253
|
+
const animations = [];
|
|
4254
|
+
for (let i = 0;i < numElements; i++) {
|
|
4255
|
+
const element = elements[i];
|
|
4256
|
+
const elementTransition = { ...options };
|
|
4257
|
+
if (typeof elementTransition.delay === "function") {
|
|
4258
|
+
elementTransition.delay = elementTransition.delay(i, numElements);
|
|
4259
|
+
}
|
|
4260
|
+
for (const valueName in keyframes2) {
|
|
4261
|
+
const valueKeyframes = keyframes2[valueName];
|
|
4262
|
+
const valueOptions = {
|
|
4263
|
+
...getValueTransition2(elementTransition, valueName)
|
|
4264
|
+
};
|
|
4265
|
+
valueOptions.duration = valueOptions.duration ? secondsToMilliseconds(valueOptions.duration) : valueOptions.duration;
|
|
4266
|
+
valueOptions.delay = secondsToMilliseconds(valueOptions.delay || 0);
|
|
4267
|
+
animations.push(new NativeAnimation(element, valueName, valueKeyframes, valueOptions));
|
|
4268
|
+
}
|
|
4269
|
+
}
|
|
4270
|
+
return animations;
|
|
4271
|
+
}
|
|
4272
|
+
|
|
4273
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs
|
|
4274
|
+
var createScopedWaapiAnimate = (scope) => {
|
|
4275
|
+
function scopedAnimate(elementOrSelector, keyframes2, options) {
|
|
4276
|
+
return new GroupPlaybackControls(animateElements(elementOrSelector, keyframes2, options, scope));
|
|
4277
|
+
}
|
|
4278
|
+
return scopedAnimate;
|
|
4279
|
+
};
|
|
4280
|
+
var animateMini = /* @__PURE__ */ createScopedWaapiAnimate();
|
|
4281
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/observe.mjs
|
|
4282
|
+
function observeTimeline(update, timeline) {
|
|
4283
|
+
let prevProgress;
|
|
4284
|
+
const onFrame = () => {
|
|
4285
|
+
const { currentTime } = timeline;
|
|
4286
|
+
const percentage = currentTime === null ? 0 : currentTime.value;
|
|
4287
|
+
const progress2 = percentage / 100;
|
|
4288
|
+
if (prevProgress !== progress2) {
|
|
4289
|
+
update(progress2);
|
|
4290
|
+
}
|
|
4291
|
+
prevProgress = progress2;
|
|
4292
|
+
};
|
|
4293
|
+
frame.update(onFrame, true);
|
|
4294
|
+
return () => cancelFrame(onFrame);
|
|
4295
|
+
}
|
|
4296
|
+
|
|
4297
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/handle-element.mjs
|
|
4298
|
+
var resizeHandlers = new WeakMap;
|
|
4299
|
+
var observer;
|
|
4300
|
+
function getElementSize(target, borderBoxSize) {
|
|
4301
|
+
if (borderBoxSize) {
|
|
4302
|
+
const { inlineSize, blockSize } = borderBoxSize[0];
|
|
4303
|
+
return { width: inlineSize, height: blockSize };
|
|
4304
|
+
} else if (target instanceof SVGElement && "getBBox" in target) {
|
|
4305
|
+
return target.getBBox();
|
|
4306
|
+
} else {
|
|
4307
|
+
return {
|
|
4308
|
+
width: target.offsetWidth,
|
|
4309
|
+
height: target.offsetHeight
|
|
4310
|
+
};
|
|
4311
|
+
}
|
|
4312
|
+
}
|
|
4313
|
+
function notifyTarget({ target, contentRect, borderBoxSize }) {
|
|
4314
|
+
var _a;
|
|
4315
|
+
(_a = resizeHandlers.get(target)) === null || _a === undefined || _a.forEach((handler) => {
|
|
4316
|
+
handler({
|
|
4317
|
+
target,
|
|
4318
|
+
contentSize: contentRect,
|
|
4319
|
+
get size() {
|
|
4320
|
+
return getElementSize(target, borderBoxSize);
|
|
4321
|
+
}
|
|
4322
|
+
});
|
|
4323
|
+
});
|
|
4324
|
+
}
|
|
4325
|
+
function notifyAll(entries) {
|
|
4326
|
+
entries.forEach(notifyTarget);
|
|
4327
|
+
}
|
|
4328
|
+
function createResizeObserver() {
|
|
4329
|
+
if (typeof ResizeObserver === "undefined")
|
|
4330
|
+
return;
|
|
4331
|
+
observer = new ResizeObserver(notifyAll);
|
|
4332
|
+
}
|
|
4333
|
+
function resizeElement(target, handler) {
|
|
4334
|
+
if (!observer)
|
|
4335
|
+
createResizeObserver();
|
|
4336
|
+
const elements = resolveElements(target);
|
|
4337
|
+
elements.forEach((element) => {
|
|
4338
|
+
let elementHandlers = resizeHandlers.get(element);
|
|
4339
|
+
if (!elementHandlers) {
|
|
4340
|
+
elementHandlers = new Set;
|
|
4341
|
+
resizeHandlers.set(element, elementHandlers);
|
|
4342
|
+
}
|
|
4343
|
+
elementHandlers.add(handler);
|
|
4344
|
+
observer === null || observer === undefined || observer.observe(element);
|
|
4345
|
+
});
|
|
4346
|
+
return () => {
|
|
4347
|
+
elements.forEach((element) => {
|
|
4348
|
+
const elementHandlers = resizeHandlers.get(element);
|
|
4349
|
+
elementHandlers === null || elementHandlers === undefined || elementHandlers.delete(handler);
|
|
4350
|
+
if (!(elementHandlers === null || elementHandlers === undefined ? undefined : elementHandlers.size)) {
|
|
4351
|
+
observer === null || observer === undefined || observer.unobserve(element);
|
|
4352
|
+
}
|
|
4353
|
+
});
|
|
4354
|
+
};
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4357
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/handle-window.mjs
|
|
4358
|
+
var windowCallbacks = new Set;
|
|
4359
|
+
var windowResizeHandler;
|
|
4360
|
+
function createWindowResizeHandler() {
|
|
4361
|
+
windowResizeHandler = () => {
|
|
4362
|
+
const size = {
|
|
4363
|
+
width: window.innerWidth,
|
|
4364
|
+
height: window.innerHeight
|
|
4365
|
+
};
|
|
4366
|
+
const info = {
|
|
4367
|
+
target: window,
|
|
4368
|
+
size,
|
|
4369
|
+
contentSize: size
|
|
4370
|
+
};
|
|
4371
|
+
windowCallbacks.forEach((callback) => callback(info));
|
|
4372
|
+
};
|
|
4373
|
+
window.addEventListener("resize", windowResizeHandler);
|
|
4374
|
+
}
|
|
4375
|
+
function resizeWindow(callback) {
|
|
4376
|
+
windowCallbacks.add(callback);
|
|
4377
|
+
if (!windowResizeHandler)
|
|
4378
|
+
createWindowResizeHandler();
|
|
4379
|
+
return () => {
|
|
4380
|
+
windowCallbacks.delete(callback);
|
|
4381
|
+
if (!windowCallbacks.size && windowResizeHandler) {
|
|
4382
|
+
windowResizeHandler = undefined;
|
|
4383
|
+
}
|
|
4384
|
+
};
|
|
4385
|
+
}
|
|
4386
|
+
|
|
4387
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/index.mjs
|
|
4388
|
+
function resize(a, b) {
|
|
4389
|
+
return typeof a === "function" ? resizeWindow(a) : resizeElement(a, b);
|
|
4390
|
+
}
|
|
4391
|
+
|
|
4392
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/info.mjs
|
|
4393
|
+
var maxElapsed2 = 50;
|
|
4394
|
+
var createAxisInfo = () => ({
|
|
4395
|
+
current: 0,
|
|
4396
|
+
offset: [],
|
|
4397
|
+
progress: 0,
|
|
4398
|
+
scrollLength: 0,
|
|
4399
|
+
targetOffset: 0,
|
|
4400
|
+
targetLength: 0,
|
|
4401
|
+
containerLength: 0,
|
|
4402
|
+
velocity: 0
|
|
4403
|
+
});
|
|
4404
|
+
var createScrollInfo = () => ({
|
|
4405
|
+
time: 0,
|
|
4406
|
+
x: createAxisInfo(),
|
|
4407
|
+
y: createAxisInfo()
|
|
4408
|
+
});
|
|
4409
|
+
var keys = {
|
|
4410
|
+
x: {
|
|
4411
|
+
length: "Width",
|
|
4412
|
+
position: "Left"
|
|
4413
|
+
},
|
|
4414
|
+
y: {
|
|
4415
|
+
length: "Height",
|
|
4416
|
+
position: "Top"
|
|
4417
|
+
}
|
|
4418
|
+
};
|
|
4419
|
+
function updateAxisInfo(element, axisName, info, time2) {
|
|
4420
|
+
const axis = info[axisName];
|
|
4421
|
+
const { length, position } = keys[axisName];
|
|
4422
|
+
const prev = axis.current;
|
|
4423
|
+
const prevTime = info.time;
|
|
4424
|
+
axis.current = element[`scroll${position}`];
|
|
4425
|
+
axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];
|
|
4426
|
+
axis.offset.length = 0;
|
|
4427
|
+
axis.offset[0] = 0;
|
|
4428
|
+
axis.offset[1] = axis.scrollLength;
|
|
4429
|
+
axis.progress = progress(0, axis.scrollLength, axis.current);
|
|
4430
|
+
const elapsed = time2 - prevTime;
|
|
4431
|
+
axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);
|
|
4432
|
+
}
|
|
4433
|
+
function updateScrollInfo(element, info, time2) {
|
|
4434
|
+
updateAxisInfo(element, "x", info, time2);
|
|
4435
|
+
updateAxisInfo(element, "y", info, time2);
|
|
4436
|
+
info.time = time2;
|
|
4437
|
+
}
|
|
4438
|
+
|
|
4439
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs
|
|
4440
|
+
function calcInset(element, container) {
|
|
4441
|
+
const inset = { x: 0, y: 0 };
|
|
4442
|
+
let current = element;
|
|
4443
|
+
while (current && current !== container) {
|
|
4444
|
+
if (current instanceof HTMLElement) {
|
|
4445
|
+
inset.x += current.offsetLeft;
|
|
4446
|
+
inset.y += current.offsetTop;
|
|
4447
|
+
current = current.offsetParent;
|
|
4448
|
+
} else if (current.tagName === "svg") {
|
|
4449
|
+
const svgBoundingBox = current.getBoundingClientRect();
|
|
4450
|
+
current = current.parentElement;
|
|
4451
|
+
const parentBoundingBox = current.getBoundingClientRect();
|
|
4452
|
+
inset.x += svgBoundingBox.left - parentBoundingBox.left;
|
|
4453
|
+
inset.y += svgBoundingBox.top - parentBoundingBox.top;
|
|
4454
|
+
} else if (current instanceof SVGGraphicsElement) {
|
|
4455
|
+
const { x, y } = current.getBBox();
|
|
4456
|
+
inset.x += x;
|
|
4457
|
+
inset.y += y;
|
|
4458
|
+
let svg = null;
|
|
4459
|
+
let parent = current.parentNode;
|
|
4460
|
+
while (!svg) {
|
|
4461
|
+
if (parent.tagName === "svg") {
|
|
4462
|
+
svg = parent;
|
|
4463
|
+
}
|
|
4464
|
+
parent = current.parentNode;
|
|
4465
|
+
}
|
|
4466
|
+
current = svg;
|
|
4467
|
+
} else {
|
|
4468
|
+
break;
|
|
4469
|
+
}
|
|
4470
|
+
}
|
|
4471
|
+
return inset;
|
|
4472
|
+
}
|
|
4473
|
+
|
|
4474
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs
|
|
4475
|
+
var namedEdges = {
|
|
4476
|
+
start: 0,
|
|
4477
|
+
center: 0.5,
|
|
4478
|
+
end: 1
|
|
4479
|
+
};
|
|
4480
|
+
function resolveEdge(edge, length, inset = 0) {
|
|
4481
|
+
let delta = 0;
|
|
4482
|
+
if (edge in namedEdges) {
|
|
4483
|
+
edge = namedEdges[edge];
|
|
4484
|
+
}
|
|
4485
|
+
if (typeof edge === "string") {
|
|
4486
|
+
const asNumber = parseFloat(edge);
|
|
4487
|
+
if (edge.endsWith("px")) {
|
|
4488
|
+
delta = asNumber;
|
|
4489
|
+
} else if (edge.endsWith("%")) {
|
|
4490
|
+
edge = asNumber / 100;
|
|
4491
|
+
} else if (edge.endsWith("vw")) {
|
|
4492
|
+
delta = asNumber / 100 * document.documentElement.clientWidth;
|
|
4493
|
+
} else if (edge.endsWith("vh")) {
|
|
4494
|
+
delta = asNumber / 100 * document.documentElement.clientHeight;
|
|
4495
|
+
} else {
|
|
4496
|
+
edge = asNumber;
|
|
4497
|
+
}
|
|
4498
|
+
}
|
|
4499
|
+
if (typeof edge === "number") {
|
|
4500
|
+
delta = length * edge;
|
|
4501
|
+
}
|
|
4502
|
+
return inset + delta;
|
|
4503
|
+
}
|
|
4504
|
+
|
|
4505
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs
|
|
4506
|
+
var defaultOffset2 = [0, 0];
|
|
4507
|
+
function resolveOffset(offset, containerLength, targetLength, targetInset) {
|
|
4508
|
+
let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;
|
|
4509
|
+
let targetPoint = 0;
|
|
4510
|
+
let containerPoint = 0;
|
|
4511
|
+
if (typeof offset === "number") {
|
|
4512
|
+
offsetDefinition = [offset, offset];
|
|
4513
|
+
} else if (typeof offset === "string") {
|
|
4514
|
+
offset = offset.trim();
|
|
4515
|
+
if (offset.includes(" ")) {
|
|
4516
|
+
offsetDefinition = offset.split(" ");
|
|
4517
|
+
} else {
|
|
4518
|
+
offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];
|
|
4519
|
+
}
|
|
4520
|
+
}
|
|
4521
|
+
targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);
|
|
4522
|
+
containerPoint = resolveEdge(offsetDefinition[1], containerLength);
|
|
4523
|
+
return targetPoint - containerPoint;
|
|
4524
|
+
}
|
|
4525
|
+
|
|
4526
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs
|
|
4527
|
+
var ScrollOffset = {
|
|
4528
|
+
Enter: [
|
|
4529
|
+
[0, 1],
|
|
4530
|
+
[1, 1]
|
|
4531
|
+
],
|
|
4532
|
+
Exit: [
|
|
4533
|
+
[0, 0],
|
|
4534
|
+
[1, 0]
|
|
4535
|
+
],
|
|
4536
|
+
Any: [
|
|
4537
|
+
[1, 0],
|
|
4538
|
+
[0, 1]
|
|
4539
|
+
],
|
|
4540
|
+
All: [
|
|
4541
|
+
[0, 0],
|
|
4542
|
+
[1, 1]
|
|
4543
|
+
]
|
|
4544
|
+
};
|
|
4545
|
+
|
|
4546
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs
|
|
4547
|
+
var point = { x: 0, y: 0 };
|
|
4548
|
+
function getTargetSize(target) {
|
|
4549
|
+
return "getBBox" in target && target.tagName !== "svg" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };
|
|
4550
|
+
}
|
|
4551
|
+
function resolveOffsets(container, info, options) {
|
|
4552
|
+
const { offset: offsetDefinition = ScrollOffset.All } = options;
|
|
4553
|
+
const { target = container, axis = "y" } = options;
|
|
4554
|
+
const lengthLabel = axis === "y" ? "height" : "width";
|
|
4555
|
+
const inset = target !== container ? calcInset(target, container) : point;
|
|
4556
|
+
const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);
|
|
4557
|
+
const containerSize = {
|
|
4558
|
+
width: container.clientWidth,
|
|
4559
|
+
height: container.clientHeight
|
|
4560
|
+
};
|
|
4561
|
+
info[axis].offset.length = 0;
|
|
4562
|
+
let hasChanged = !info[axis].interpolate;
|
|
4563
|
+
const numOffsets = offsetDefinition.length;
|
|
4564
|
+
for (let i = 0;i < numOffsets; i++) {
|
|
4565
|
+
const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);
|
|
4566
|
+
if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {
|
|
4567
|
+
hasChanged = true;
|
|
4568
|
+
}
|
|
4569
|
+
info[axis].offset[i] = offset;
|
|
4570
|
+
}
|
|
4571
|
+
if (hasChanged) {
|
|
4572
|
+
info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition), { clamp: false });
|
|
4573
|
+
info[axis].interpolatorOffsets = [...info[axis].offset];
|
|
4574
|
+
}
|
|
4575
|
+
info[axis].progress = clamp(0, 1, info[axis].interpolate(info[axis].current));
|
|
4576
|
+
}
|
|
4577
|
+
|
|
4578
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs
|
|
4579
|
+
function measure(container, target = container, info) {
|
|
4580
|
+
info.x.targetOffset = 0;
|
|
4581
|
+
info.y.targetOffset = 0;
|
|
4582
|
+
if (target !== container) {
|
|
4583
|
+
let node = target;
|
|
4584
|
+
while (node && node !== container) {
|
|
4585
|
+
info.x.targetOffset += node.offsetLeft;
|
|
4586
|
+
info.y.targetOffset += node.offsetTop;
|
|
4587
|
+
node = node.offsetParent;
|
|
4588
|
+
}
|
|
4589
|
+
}
|
|
4590
|
+
info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;
|
|
4591
|
+
info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;
|
|
4592
|
+
info.x.containerLength = container.clientWidth;
|
|
4593
|
+
info.y.containerLength = container.clientHeight;
|
|
4594
|
+
if (false) {}
|
|
4595
|
+
}
|
|
4596
|
+
function createOnScrollHandler(element, onScroll, info, options = {}) {
|
|
4597
|
+
return {
|
|
4598
|
+
measure: () => measure(element, options.target, info),
|
|
4599
|
+
update: (time2) => {
|
|
4600
|
+
updateScrollInfo(element, info, time2);
|
|
4601
|
+
if (options.offset || options.target) {
|
|
4602
|
+
resolveOffsets(element, info, options);
|
|
4603
|
+
}
|
|
4604
|
+
},
|
|
4605
|
+
notify: () => onScroll(info)
|
|
4606
|
+
};
|
|
4607
|
+
}
|
|
4608
|
+
|
|
4609
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/track.mjs
|
|
4610
|
+
var scrollListeners = new WeakMap;
|
|
4611
|
+
var resizeListeners = new WeakMap;
|
|
4612
|
+
var onScrollHandlers = new WeakMap;
|
|
4613
|
+
var getEventTarget = (element) => element === document.documentElement ? window : element;
|
|
4614
|
+
function scrollInfo(onScroll, { container = document.documentElement, ...options } = {}) {
|
|
4615
|
+
let containerHandlers = onScrollHandlers.get(container);
|
|
4616
|
+
if (!containerHandlers) {
|
|
4617
|
+
containerHandlers = new Set;
|
|
4618
|
+
onScrollHandlers.set(container, containerHandlers);
|
|
4619
|
+
}
|
|
4620
|
+
const info = createScrollInfo();
|
|
4621
|
+
const containerHandler = createOnScrollHandler(container, onScroll, info, options);
|
|
4622
|
+
containerHandlers.add(containerHandler);
|
|
4623
|
+
if (!scrollListeners.has(container)) {
|
|
4624
|
+
const measureAll = () => {
|
|
4625
|
+
for (const handler of containerHandlers)
|
|
4626
|
+
handler.measure();
|
|
4627
|
+
};
|
|
4628
|
+
const updateAll = () => {
|
|
4629
|
+
for (const handler of containerHandlers) {
|
|
4630
|
+
handler.update(frameData.timestamp);
|
|
4631
|
+
}
|
|
4632
|
+
};
|
|
4633
|
+
const notifyAll2 = () => {
|
|
4634
|
+
for (const handler of containerHandlers)
|
|
4635
|
+
handler.notify();
|
|
4636
|
+
};
|
|
4637
|
+
const listener2 = () => {
|
|
4638
|
+
frame.read(measureAll, false, true);
|
|
4639
|
+
frame.read(updateAll, false, true);
|
|
4640
|
+
frame.update(notifyAll2, false, true);
|
|
4641
|
+
};
|
|
4642
|
+
scrollListeners.set(container, listener2);
|
|
4643
|
+
const target = getEventTarget(container);
|
|
4644
|
+
window.addEventListener("resize", listener2, { passive: true });
|
|
4645
|
+
if (container !== document.documentElement) {
|
|
4646
|
+
resizeListeners.set(container, resize(container, listener2));
|
|
4647
|
+
}
|
|
4648
|
+
target.addEventListener("scroll", listener2, { passive: true });
|
|
4649
|
+
}
|
|
4650
|
+
const listener = scrollListeners.get(container);
|
|
4651
|
+
frame.read(listener, false, true);
|
|
4652
|
+
return () => {
|
|
4653
|
+
var _a;
|
|
4654
|
+
cancelFrame(listener);
|
|
4655
|
+
const currentHandlers = onScrollHandlers.get(container);
|
|
4656
|
+
if (!currentHandlers)
|
|
4657
|
+
return;
|
|
4658
|
+
currentHandlers.delete(containerHandler);
|
|
4659
|
+
if (currentHandlers.size)
|
|
4660
|
+
return;
|
|
4661
|
+
const scrollListener = scrollListeners.get(container);
|
|
4662
|
+
scrollListeners.delete(container);
|
|
4663
|
+
if (scrollListener) {
|
|
4664
|
+
getEventTarget(container).removeEventListener("scroll", scrollListener);
|
|
4665
|
+
(_a = resizeListeners.get(container)) === null || _a === undefined || _a();
|
|
4666
|
+
window.removeEventListener("resize", scrollListener);
|
|
4667
|
+
}
|
|
4668
|
+
};
|
|
4669
|
+
}
|
|
4670
|
+
|
|
4671
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs
|
|
4672
|
+
function scrollTimelineFallback({ source, container, axis = "y" }) {
|
|
4673
|
+
if (source)
|
|
4674
|
+
container = source;
|
|
4675
|
+
const currentTime = { value: 0 };
|
|
4676
|
+
const cancel = scrollInfo((info) => {
|
|
4677
|
+
currentTime.value = info[axis].progress * 100;
|
|
4678
|
+
}, { container, axis });
|
|
4679
|
+
return { currentTime, cancel };
|
|
4680
|
+
}
|
|
4681
|
+
var timelineCache = new Map;
|
|
4682
|
+
function getTimeline({ source, container = document.documentElement, axis = "y" } = {}) {
|
|
4683
|
+
if (source)
|
|
4684
|
+
container = source;
|
|
4685
|
+
if (!timelineCache.has(container)) {
|
|
4686
|
+
timelineCache.set(container, {});
|
|
4687
|
+
}
|
|
4688
|
+
const elementCache = timelineCache.get(container);
|
|
4689
|
+
if (!elementCache[axis]) {
|
|
4690
|
+
elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ source: container, axis });
|
|
4691
|
+
}
|
|
4692
|
+
return elementCache[axis];
|
|
4693
|
+
}
|
|
4694
|
+
function isOnScrollWithInfo(onScroll) {
|
|
4695
|
+
return onScroll.length === 2;
|
|
4696
|
+
}
|
|
4697
|
+
function needsElementTracking(options) {
|
|
4698
|
+
return options && (options.target || options.offset);
|
|
4699
|
+
}
|
|
4700
|
+
function scrollFunction(onScroll, options) {
|
|
4701
|
+
if (isOnScrollWithInfo(onScroll) || needsElementTracking(options)) {
|
|
4702
|
+
return scrollInfo((info) => {
|
|
4703
|
+
onScroll(info[options.axis].progress, info);
|
|
4704
|
+
}, options);
|
|
4705
|
+
} else {
|
|
4706
|
+
return observeTimeline(onScroll, getTimeline(options));
|
|
4707
|
+
}
|
|
4708
|
+
}
|
|
4709
|
+
function scrollAnimation(animation, options) {
|
|
4710
|
+
animation.flatten();
|
|
4711
|
+
if (needsElementTracking(options)) {
|
|
4712
|
+
animation.pause();
|
|
4713
|
+
return scrollInfo((info) => {
|
|
4714
|
+
animation.time = animation.duration * info[options.axis].progress;
|
|
4715
|
+
}, options);
|
|
4716
|
+
} else {
|
|
4717
|
+
const timeline = getTimeline(options);
|
|
4718
|
+
if (animation.attachTimeline) {
|
|
4719
|
+
return animation.attachTimeline(timeline, (valueAnimation) => {
|
|
4720
|
+
valueAnimation.pause();
|
|
4721
|
+
return observeTimeline((progress2) => {
|
|
4722
|
+
valueAnimation.time = valueAnimation.duration * progress2;
|
|
4723
|
+
}, timeline);
|
|
4724
|
+
});
|
|
4725
|
+
} else {
|
|
4726
|
+
return noop;
|
|
4727
|
+
}
|
|
4728
|
+
}
|
|
4729
|
+
}
|
|
4730
|
+
function scroll(onScroll, { axis = "y", ...options } = {}) {
|
|
4731
|
+
const optionsWithDefaults = { axis, ...options };
|
|
4732
|
+
return typeof onScroll === "function" ? scrollFunction(onScroll, optionsWithDefaults) : scrollAnimation(onScroll, optionsWithDefaults);
|
|
4733
|
+
}
|
|
4734
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/viewport/index.mjs
|
|
4735
|
+
var thresholds = {
|
|
4736
|
+
some: 0,
|
|
4737
|
+
all: 1
|
|
4738
|
+
};
|
|
4739
|
+
function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = "some" } = {}) {
|
|
4740
|
+
const elements = resolveElements(elementOrSelector);
|
|
4741
|
+
const activeIntersections = new WeakMap;
|
|
4742
|
+
const onIntersectionChange = (entries) => {
|
|
4743
|
+
entries.forEach((entry) => {
|
|
4744
|
+
const onEnd = activeIntersections.get(entry.target);
|
|
4745
|
+
if (entry.isIntersecting === Boolean(onEnd))
|
|
4746
|
+
return;
|
|
4747
|
+
if (entry.isIntersecting) {
|
|
4748
|
+
const newOnEnd = onStart(entry);
|
|
4749
|
+
if (typeof newOnEnd === "function") {
|
|
4750
|
+
activeIntersections.set(entry.target, newOnEnd);
|
|
4751
|
+
} else {
|
|
4752
|
+
observer2.unobserve(entry.target);
|
|
4753
|
+
}
|
|
4754
|
+
} else if (typeof onEnd === "function") {
|
|
4755
|
+
onEnd(entry);
|
|
4756
|
+
activeIntersections.delete(entry.target);
|
|
4757
|
+
}
|
|
4758
|
+
});
|
|
4759
|
+
};
|
|
4760
|
+
const observer2 = new IntersectionObserver(onIntersectionChange, {
|
|
4761
|
+
root,
|
|
4762
|
+
rootMargin,
|
|
4763
|
+
threshold: typeof amount === "number" ? amount : thresholds[amount]
|
|
4764
|
+
});
|
|
4765
|
+
elements.forEach((element) => observer2.observe(element));
|
|
4766
|
+
return () => observer2.disconnect();
|
|
4767
|
+
}
|
|
4768
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/steps.mjs
|
|
4769
|
+
function steps(numSteps, direction = "end") {
|
|
4770
|
+
return (progress2) => {
|
|
4771
|
+
progress2 = direction === "end" ? Math.min(progress2, 0.999) : Math.max(progress2, 0.001);
|
|
4772
|
+
const expanded = progress2 * numSteps;
|
|
4773
|
+
const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
|
|
4774
|
+
return clamp(0, 1, rounded / numSteps);
|
|
4775
|
+
};
|
|
4776
|
+
}
|
|
4777
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs
|
|
4778
|
+
function getOriginIndex(from, total) {
|
|
4779
|
+
if (from === "first") {
|
|
4780
|
+
return 0;
|
|
4781
|
+
} else {
|
|
4782
|
+
const lastIndex = total - 1;
|
|
4783
|
+
return from === "last" ? lastIndex : lastIndex / 2;
|
|
4784
|
+
}
|
|
4785
|
+
}
|
|
4786
|
+
function stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {
|
|
4787
|
+
return (i, total) => {
|
|
4788
|
+
const fromIndex = typeof from === "number" ? from : getOriginIndex(from, total);
|
|
4789
|
+
const distance = Math.abs(fromIndex - i);
|
|
4790
|
+
let delay = duration * distance;
|
|
4791
|
+
if (ease2) {
|
|
4792
|
+
const maxDelay = total * duration;
|
|
4793
|
+
const easingFunction = easingDefinitionToFunction(ease2);
|
|
4794
|
+
delay = easingFunction(delay / maxDelay) * maxDelay;
|
|
4795
|
+
}
|
|
4796
|
+
return startDelay + delay;
|
|
4797
|
+
};
|
|
4798
|
+
}
|
|
4799
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/delay.mjs
|
|
4800
|
+
function delay(callback, timeout) {
|
|
4801
|
+
const start = time.now();
|
|
4802
|
+
const checkElapsed = ({ timestamp }) => {
|
|
4803
|
+
const elapsed = timestamp - start;
|
|
4804
|
+
if (elapsed >= timeout) {
|
|
4805
|
+
cancelFrame(checkElapsed);
|
|
4806
|
+
callback(elapsed - timeout);
|
|
4807
|
+
}
|
|
4808
|
+
};
|
|
4809
|
+
frame.read(checkElapsed, true);
|
|
4810
|
+
return () => cancelFrame(checkElapsed);
|
|
4811
|
+
}
|
|
4812
|
+
function delayInSeconds(callback, timeout) {
|
|
4813
|
+
return delay(callback, secondsToMilliseconds(timeout));
|
|
4814
|
+
}
|
|
4815
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/distance.mjs
|
|
4816
|
+
var distance = (a, b) => Math.abs(a - b);
|
|
4817
|
+
function distance2D(a, b) {
|
|
4818
|
+
const xDelta = distance(a.x, b.x);
|
|
4819
|
+
const yDelta = distance(a.y, b.y);
|
|
4820
|
+
return Math.sqrt(xDelta ** 2 + yDelta ** 2);
|
|
4821
|
+
}
|
|
4822
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/transform.mjs
|
|
4823
|
+
var isCustomValueType = (v) => {
|
|
4824
|
+
return v && typeof v === "object" && v.mix;
|
|
4825
|
+
};
|
|
4826
|
+
var getMixer2 = (v) => isCustomValueType(v) ? v.mix : undefined;
|
|
4827
|
+
function transform(...args) {
|
|
4828
|
+
const useImmediate = !Array.isArray(args[0]);
|
|
4829
|
+
const argOffset = useImmediate ? 0 : -1;
|
|
4830
|
+
const inputValue = args[0 + argOffset];
|
|
4831
|
+
const inputRange = args[1 + argOffset];
|
|
4832
|
+
const outputRange = args[2 + argOffset];
|
|
4833
|
+
const options = args[3 + argOffset];
|
|
4834
|
+
const interpolator = interpolate(inputRange, outputRange, {
|
|
4835
|
+
mixer: getMixer2(outputRange[0]),
|
|
4836
|
+
...options
|
|
4837
|
+
});
|
|
4838
|
+
return useImmediate ? interpolator(inputValue) : interpolator;
|
|
4839
|
+
}
|
|
4840
|
+
// ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/index-legacy.mjs
|
|
4841
|
+
var sync = frame;
|
|
4842
|
+
var cancelSync = stepsOrder.reduce((acc, key) => {
|
|
4843
|
+
acc[key] = (process) => cancelFrame(process);
|
|
4844
|
+
return acc;
|
|
4845
|
+
}, {});
|
|
4846
|
+
// synth:/Users/iagh/git/claude-design/plugins/design/dev-server/.runtime-bundle-motion-entry.tsx
|
|
68
4847
|
var {
|
|
69
4848
|
MotionValue: MotionValue2,
|
|
70
4849
|
animate: animate2,
|
|
@@ -81,7 +4860,7 @@ var {
|
|
|
81
4860
|
clamp: clamp2,
|
|
82
4861
|
createScopedAnimate: createScopedAnimate2,
|
|
83
4862
|
cubicBezier: cubicBezier2,
|
|
84
|
-
delay,
|
|
4863
|
+
delay: delay2,
|
|
85
4864
|
distance: distance2,
|
|
86
4865
|
distance2D: distance2D2,
|
|
87
4866
|
easeIn: easeIn2,
|
|
@@ -145,7 +4924,7 @@ export {
|
|
|
145
4924
|
easeIn2 as easeIn,
|
|
146
4925
|
distance2D2 as distance2D,
|
|
147
4926
|
distance2 as distance,
|
|
148
|
-
delay,
|
|
4927
|
+
delay2 as delay,
|
|
149
4928
|
__runtime_bundle_motion_entry_default as default,
|
|
150
4929
|
cubicBezier2 as cubicBezier,
|
|
151
4930
|
createScopedAnimate2 as createScopedAnimate,
|