@vysmo/text 0.1.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.
Files changed (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +429 -0
  3. package/dist/animate.d.ts +28 -0
  4. package/dist/animate.d.ts.map +1 -0
  5. package/dist/animate.js +418 -0
  6. package/dist/animate.js.map +1 -0
  7. package/dist/index.d.ts +8 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +6 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/presets/emphasis.d.ts +11 -0
  12. package/dist/presets/emphasis.d.ts.map +1 -0
  13. package/dist/presets/emphasis.js +54 -0
  14. package/dist/presets/emphasis.js.map +1 -0
  15. package/dist/presets/enter.d.ts +8 -0
  16. package/dist/presets/enter.d.ts.map +1 -0
  17. package/dist/presets/enter.js +58 -0
  18. package/dist/presets/enter.js.map +1 -0
  19. package/dist/presets/exit.d.ts +5 -0
  20. package/dist/presets/exit.d.ts.map +1 -0
  21. package/dist/presets/exit.js +30 -0
  22. package/dist/presets/exit.js.map +1 -0
  23. package/dist/presets/generated.d.ts +240 -0
  24. package/dist/presets/generated.d.ts.map +1 -0
  25. package/dist/presets/generated.js +3084 -0
  26. package/dist/presets/generated.js.map +1 -0
  27. package/dist/presets/index.d.ts +15 -0
  28. package/dist/presets/index.d.ts.map +1 -0
  29. package/dist/presets/index.js +43 -0
  30. package/dist/presets/index.js.map +1 -0
  31. package/dist/properties.d.ts +10 -0
  32. package/dist/properties.d.ts.map +1 -0
  33. package/dist/properties.js +80 -0
  34. package/dist/properties.js.map +1 -0
  35. package/dist/split.d.ts +21 -0
  36. package/dist/split.d.ts.map +1 -0
  37. package/dist/split.js +171 -0
  38. package/dist/split.js.map +1 -0
  39. package/dist/stagger.d.ts +13 -0
  40. package/dist/stagger.d.ts.map +1 -0
  41. package/dist/stagger.js +53 -0
  42. package/dist/stagger.js.map +1 -0
  43. package/dist/types.d.ts +204 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +2 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +56 -0
  48. package/src/__tests__/animate.test.ts +638 -0
  49. package/src/__tests__/presets.test.ts +87 -0
  50. package/src/__tests__/properties.test.ts +62 -0
  51. package/src/__tests__/split.test.ts +140 -0
  52. package/src/__tests__/ssr.test.ts +48 -0
  53. package/src/__tests__/stagger.test.ts +47 -0
  54. package/src/__tests__/types-check.ts +80 -0
  55. package/src/animate.ts +469 -0
  56. package/src/index.ts +38 -0
  57. package/src/presets/emphasis.ts +60 -0
  58. package/src/presets/enter.ts +64 -0
  59. package/src/presets/exit.ts +33 -0
  60. package/src/presets/generated.ts +3315 -0
  61. package/src/presets/index.ts +62 -0
  62. package/src/properties.ts +78 -0
  63. package/src/split.ts +180 -0
  64. package/src/stagger.ts +55 -0
  65. package/src/types.ts +245 -0
@@ -0,0 +1,418 @@
1
+ import { animate } from "@vysmo/animations";
2
+ import { parseEasing } from "@vysmo/easings";
3
+ import { applyProps, clearProps } from "./properties.js";
4
+ import { resolvePreset } from "./presets/index.js";
5
+ import { splitText } from "./split.js";
6
+ import { computeStaggerDelays } from "./stagger.js";
7
+ const DEFAULT_DURATION = 600;
8
+ const DEFAULT_STAGGER = 30;
9
+ function linear(t) {
10
+ return t;
11
+ }
12
+ /**
13
+ * Resolve a spec's `ease` to a callable function. Strings (e.g.
14
+ * `"power2.out"`, `"back.out(2)"`) go through `@vysmo/easings` →
15
+ * `parseEasing()`; functions pass through as-is. Called once per spec
16
+ * at plan time so the per-frame hot path stays a direct call.
17
+ */
18
+ function resolveEase(ease) {
19
+ if (ease === undefined)
20
+ return linear;
21
+ if (typeof ease === "string")
22
+ return parseEasing(ease);
23
+ return ease;
24
+ }
25
+ /**
26
+ * Convert a `TransformOrigin` to the CSS string the browser wants. Two
27
+ * forms: 2D (`x% y%`) and 3D (`x% y% Zpx`). Z is omitted when undefined
28
+ * so 2D presets don't get a meaningless trailing `0px`.
29
+ */
30
+ function originToCss(o) {
31
+ const x = `${o.x * 100}%`;
32
+ const y = `${o.y * 100}%`;
33
+ return o.z === undefined ? `${x} ${y}` : `${x} ${y} ${o.z}px`;
34
+ }
35
+ function isRange(v) {
36
+ return typeof v === "object";
37
+ }
38
+ function midpoint(v) {
39
+ return isRange(v) ? (v.min + v.max) / 2 : v;
40
+ }
41
+ function resolveValue(v, rng) {
42
+ if (!isRange(v))
43
+ return v;
44
+ if (v.min === v.max)
45
+ return v.min;
46
+ return v.min + rng() * (v.max - v.min);
47
+ }
48
+ /**
49
+ * Pure, time-point evaluation of a spec array against a single per-slice
50
+ * clock. Useful for tests and headless rendering. The live animateText
51
+ * renderer subtracts the per-spec stagger offset *before* calling the
52
+ * equivalent of this function, so pass the already-offset slice time.
53
+ *
54
+ * Range `from` / `to` values resolve deterministically to their midpoint
55
+ * here — the live runtime samples per slice via the rng option, but
56
+ * `evaluateSpecs` has no slice context, so it returns the spread's
57
+ * average. Tests that exercise per-slice scatter should drive the live
58
+ * renderer instead.
59
+ */
60
+ export function evaluateSpecs(specs, t) {
61
+ const vals = {};
62
+ for (const spec of specs) {
63
+ const delay = spec.delay ?? 0;
64
+ if (t < delay)
65
+ continue;
66
+ const duration = spec.duration ?? DEFAULT_DURATION;
67
+ const local = duration <= 0 ? 1 : Math.min(1, Math.max(0, (t - delay) / duration));
68
+ const eased = resolveEase(spec.ease)(local);
69
+ const from = midpoint(spec.from);
70
+ const to = midpoint(spec.to);
71
+ vals[spec.prop] = from + (to - from) * eased;
72
+ }
73
+ return vals;
74
+ }
75
+ function prefersReducedMotion() {
76
+ return (typeof window !== "undefined" &&
77
+ typeof window.matchMedia === "function" &&
78
+ window.matchMedia("(prefers-reduced-motion: reduce)").matches);
79
+ }
80
+ function planSpec(spec, sliceCount, defaultStagger, defaultOrder, rng) {
81
+ const stagger = spec.stagger ?? defaultStagger;
82
+ const order = spec.staggerOrder ?? defaultOrder;
83
+ const staggerOffsets = computeStaggerDelays(sliceCount, stagger, order, rng);
84
+ const jitterMax = spec.jitterDelay ?? 0;
85
+ const jitters = new Array(sliceCount);
86
+ for (let i = 0; i < sliceCount; i++) {
87
+ jitters[i] = jitterMax > 0 ? rng() * jitterMax : 0;
88
+ }
89
+ const fromValues = new Array(sliceCount);
90
+ const toValues = new Array(sliceCount);
91
+ for (let i = 0; i < sliceCount; i++) {
92
+ fromValues[i] = resolveValue(spec.from, rng);
93
+ toValues[i] = resolveValue(spec.to, rng);
94
+ }
95
+ const effectiveOffsets = new Array(sliceCount);
96
+ for (let i = 0; i < sliceCount; i++) {
97
+ effectiveOffsets[i] = staggerOffsets[i] + jitters[i];
98
+ }
99
+ return {
100
+ spec,
101
+ staggerOffsets,
102
+ jitters,
103
+ effectiveOffsets,
104
+ fromValues,
105
+ toValues,
106
+ ease: resolveEase(spec.ease),
107
+ };
108
+ }
109
+ function specEnd(plan) {
110
+ let maxOffset = 0;
111
+ for (const o of plan.effectiveOffsets) {
112
+ if (o > maxOffset)
113
+ maxOffset = o;
114
+ }
115
+ const specLocalEnd = (plan.spec.delay ?? 0) + (plan.spec.duration ?? DEFAULT_DURATION);
116
+ return maxOffset + specLocalEnd;
117
+ }
118
+ function evaluateForSlice(plans, sliceIndex, masterT) {
119
+ const vals = {};
120
+ const touched = new Set();
121
+ // Forward pass: standard "later wins" for any spec whose window has opened.
122
+ for (const plan of plans) {
123
+ const { spec, effectiveOffsets, fromValues, toValues } = plan;
124
+ const offset = effectiveOffsets[sliceIndex] ?? 0;
125
+ const localT = masterT - offset;
126
+ const delay = spec.delay ?? 0;
127
+ if (localT < delay)
128
+ continue;
129
+ const duration = spec.duration ?? DEFAULT_DURATION;
130
+ const progress = duration <= 0 ? 1 : Math.min(1, Math.max(0, (localT - delay) / duration));
131
+ const eased = plan.ease(progress);
132
+ const from = fromValues[sliceIndex] ?? 0;
133
+ const to = toValues[sliceIndex] ?? 0;
134
+ vals[spec.prop] = from + (to - from) * eased;
135
+ touched.add(spec.prop);
136
+ }
137
+ // Back-fill: for any prop that hasn't touched yet on this slice (stagger
138
+ // hasn't fired, or the spec delay is still in the future), hold the FIRST
139
+ // spec's from-value so the transform/filter composition stays complete.
140
+ for (const plan of plans) {
141
+ if (!touched.has(plan.spec.prop)) {
142
+ vals[plan.spec.prop] = plan.fromValues[sliceIndex] ?? 0;
143
+ touched.add(plan.spec.prop);
144
+ }
145
+ }
146
+ return vals;
147
+ }
148
+ /**
149
+ * Walk the plans for a slice and return the latest opened spec's
150
+ * `transformOrigin`, or undefined if no override has fired yet. Used to
151
+ * implement last-write-wins per slice, evaluated each frame so seek()
152
+ * stays consistent without separate event state.
153
+ */
154
+ function activeOriginForSlice(plans, sliceIndex, masterT) {
155
+ let active;
156
+ for (const plan of plans) {
157
+ if (plan.spec.transformOrigin === undefined)
158
+ continue;
159
+ const offset = plan.effectiveOffsets[sliceIndex] ?? 0;
160
+ const delay = plan.spec.delay ?? 0;
161
+ if (masterT - offset >= delay)
162
+ active = plan.spec.transformOrigin;
163
+ }
164
+ return active;
165
+ }
166
+ /**
167
+ * The latest opened spec's `perspective` across all slices. A spec's
168
+ * window is considered open as soon as any slice has reached its
169
+ * effective start time, since `perspective` is container-scoped.
170
+ */
171
+ function activePerspective(plans, masterT) {
172
+ let active;
173
+ for (const plan of plans) {
174
+ if (plan.spec.perspective === undefined)
175
+ continue;
176
+ let minOffset = Infinity;
177
+ for (const o of plan.effectiveOffsets) {
178
+ if (o < minOffset)
179
+ minOffset = o;
180
+ }
181
+ if (minOffset === Infinity)
182
+ continue;
183
+ const delay = plan.spec.delay ?? 0;
184
+ if (masterT - minOffset >= delay)
185
+ active = plan.spec.perspective;
186
+ }
187
+ return active;
188
+ }
189
+ /**
190
+ * Animate an element's text with per-slice, per-property choreography.
191
+ *
192
+ * Each spec is an independent timeline — its own `duration`, `delay`,
193
+ * `ease`, `stagger`, and `staggerOrder`. Specs run on a single master
194
+ * clock so one rAF tick produces one DOM write per slice, and same-prop
195
+ * specs chain via `delay` (later wins once its window opens).
196
+ *
197
+ * For 3D transforms (rotateX/Y, translateZ) set `perspective` so children
198
+ * render with depth.
199
+ */
200
+ export function animateText(element, options = {}) {
201
+ const preset = options.preset === undefined
202
+ ? null
203
+ : typeof options.preset === "string"
204
+ ? resolvePreset(options.preset)
205
+ : options.preset;
206
+ const splits = splitText(element, {
207
+ mode: options.split ?? preset?.split ?? "character",
208
+ ...(options.locale !== undefined ? { locale: options.locale } : {}),
209
+ });
210
+ const specs = options.animations ?? preset?.animations ?? [];
211
+ const defaultStagger = options.stagger ?? preset?.stagger ?? DEFAULT_STAGGER;
212
+ const defaultOrder = options.staggerOrder ?? preset?.staggerOrder ?? "start";
213
+ const rng = options.rng ?? Math.random;
214
+ const sliceCount = splits.slices.length;
215
+ const plans = specs.map((s) => planSpec(s, sliceCount, defaultStagger, defaultOrder, rng));
216
+ const totalDuration = plans.length === 0 ? 0 : Math.max(...plans.map(specEnd));
217
+ const baselinePerspective = options.perspective ?? preset?.perspective;
218
+ const perspectiveOrigin = options.perspectiveOrigin;
219
+ const baselineTransformOrigin = options.transformOrigin ?? preset?.transformOrigin;
220
+ let containerPerspectiveApplied = false;
221
+ let containerPerspectiveOriginApplied = false;
222
+ if (baselinePerspective !== undefined) {
223
+ element.style.perspective = `${baselinePerspective}px`;
224
+ containerPerspectiveApplied = true;
225
+ }
226
+ if (perspectiveOrigin !== undefined) {
227
+ element.style.perspectiveOrigin = perspectiveOrigin;
228
+ containerPerspectiveOriginApplied = true;
229
+ }
230
+ if (baselineTransformOrigin !== undefined) {
231
+ const css = originToCss(baselineTransformOrigin);
232
+ for (const slice of splits.slices)
233
+ slice.style.transformOrigin = css;
234
+ }
235
+ // Track which slices we've ever written a per-spec transformOrigin to,
236
+ // so stop() can clear them even if the baseline didn't set one.
237
+ const sliceOriginDirty = new Array(sliceCount).fill(false);
238
+ const autoPlay = options.autoPlay ?? true;
239
+ const respect = options.respectReducedMotion ?? true;
240
+ const reduced = respect && prefersReducedMotion();
241
+ for (let i = 0; i < sliceCount; i++) {
242
+ applyProps(splits.slices[i], evaluateForSlice(plans, i, 0));
243
+ }
244
+ function applyOverrides(masterT) {
245
+ for (let i = 0; i < sliceCount; i++) {
246
+ const origin = activeOriginForSlice(plans, i, masterT);
247
+ if (origin !== undefined) {
248
+ splits.slices[i].style.transformOrigin = originToCss(origin);
249
+ sliceOriginDirty[i] = true;
250
+ }
251
+ else if (sliceOriginDirty[i] && baselineTransformOrigin === undefined) {
252
+ // No override active and no baseline to fall back to — leave the
253
+ // last-written value in place. Per-spec rule: "don't reset between
254
+ // specs". Cleared on stop().
255
+ }
256
+ }
257
+ const persp = activePerspective(plans, masterT);
258
+ if (persp !== undefined) {
259
+ element.style.perspective = `${persp}px`;
260
+ containerPerspectiveApplied = true;
261
+ }
262
+ }
263
+ function restoreContainer() {
264
+ if (containerPerspectiveApplied) {
265
+ element.style.removeProperty("perspective");
266
+ containerPerspectiveApplied = false;
267
+ }
268
+ if (containerPerspectiveOriginApplied) {
269
+ element.style.removeProperty("perspective-origin");
270
+ containerPerspectiveOriginApplied = false;
271
+ }
272
+ if (baselineTransformOrigin !== undefined) {
273
+ for (const slice of splits.slices)
274
+ slice.style.removeProperty("transform-origin");
275
+ }
276
+ else {
277
+ for (let i = 0; i < sliceCount; i++) {
278
+ if (sliceOriginDirty[i]) {
279
+ splits.slices[i].style.removeProperty("transform-origin");
280
+ sliceOriginDirty[i] = false;
281
+ }
282
+ }
283
+ }
284
+ }
285
+ if (plans.length === 0 || reduced || totalDuration <= 0) {
286
+ for (let i = 0; i < sliceCount; i++) {
287
+ applyProps(splits.slices[i], evaluateForSlice(plans, i, totalDuration));
288
+ }
289
+ applyOverrides(totalDuration);
290
+ const handle = {
291
+ play() {
292
+ return handle;
293
+ },
294
+ pause() {
295
+ return handle;
296
+ },
297
+ stop() {
298
+ for (const slice of splits.slices)
299
+ clearProps(slice);
300
+ restoreContainer();
301
+ return handle;
302
+ },
303
+ seek() {
304
+ return handle;
305
+ },
306
+ finished: Promise.resolve(),
307
+ splits,
308
+ };
309
+ return handle;
310
+ }
311
+ const initialDelay = Math.max(0, options.delay ?? 0);
312
+ const repeat = options.repeat ?? preset?.repeat ?? 1;
313
+ const totalCycles = repeat === "infinite" ? Infinity : Math.max(1, repeat);
314
+ const repeatDelay = Math.max(0, options.repeatDelay ?? preset?.repeatDelay ?? 0);
315
+ const schedulerOpt = options.scheduler !== undefined ? { scheduler: options.scheduler } : {};
316
+ function renderAt(masterT) {
317
+ for (let i = 0; i < sliceCount; i++) {
318
+ applyProps(splits.slices[i], evaluateForSlice(plans, i, masterT));
319
+ }
320
+ applyOverrides(masterT);
321
+ }
322
+ let stopped = false;
323
+ let cyclesLeft = totalCycles;
324
+ let currentCycle = null;
325
+ let initialTimer = null;
326
+ let gapTimer = null;
327
+ let resolveFinished;
328
+ const finished = new Promise((res) => {
329
+ resolveFinished = res;
330
+ });
331
+ finished.catch(() => { });
332
+ function clearTimers() {
333
+ if (initialTimer !== null) {
334
+ window.clearTimeout(initialTimer);
335
+ initialTimer = null;
336
+ }
337
+ if (gapTimer !== null) {
338
+ window.clearTimeout(gapTimer);
339
+ gapTimer = null;
340
+ }
341
+ }
342
+ function startCycle() {
343
+ if (stopped)
344
+ return;
345
+ currentCycle = animate({
346
+ from: 0,
347
+ to: 1,
348
+ duration: totalDuration,
349
+ autoPlay: true,
350
+ ...schedulerOpt,
351
+ onUpdate: (_v, p) => renderAt(p * totalDuration),
352
+ });
353
+ currentCycle.finished
354
+ .then(() => {
355
+ if (stopped)
356
+ return;
357
+ cyclesLeft = cyclesLeft === Infinity ? Infinity : cyclesLeft - 1;
358
+ if (cyclesLeft <= 0) {
359
+ resolveFinished();
360
+ return;
361
+ }
362
+ if (repeatDelay > 0) {
363
+ gapTimer = window.setTimeout(startCycle, repeatDelay);
364
+ }
365
+ else {
366
+ startCycle();
367
+ }
368
+ })
369
+ .catch(() => undefined);
370
+ }
371
+ function kickoff() {
372
+ if (initialDelay > 0) {
373
+ initialTimer = window.setTimeout(() => {
374
+ initialTimer = null;
375
+ startCycle();
376
+ }, initialDelay);
377
+ }
378
+ else {
379
+ startCycle();
380
+ }
381
+ }
382
+ const handle = {
383
+ play() {
384
+ if (currentCycle === null)
385
+ kickoff();
386
+ else
387
+ currentCycle.play();
388
+ return handle;
389
+ },
390
+ pause() {
391
+ currentCycle?.pause();
392
+ return handle;
393
+ },
394
+ stop() {
395
+ stopped = true;
396
+ clearTimers();
397
+ currentCycle?.stop();
398
+ currentCycle = null;
399
+ for (const slice of splits.slices)
400
+ clearProps(slice);
401
+ restoreContainer();
402
+ resolveFinished();
403
+ return handle;
404
+ },
405
+ seek(p) {
406
+ currentCycle?.seek(p);
407
+ return handle;
408
+ },
409
+ get finished() {
410
+ return finished;
411
+ },
412
+ splits,
413
+ };
414
+ if (autoPlay)
415
+ kickoff();
416
+ return handle;
417
+ }
418
+ //# sourceMappingURL=animate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animate.js","sourceRoot":"","sources":["../src/animate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { animateText, evaluateSpecs } from "./animate.js";
2
+ export { splitText } from "./split.js";
3
+ export { applyProps, clearProps } from "./properties.js";
4
+ export type { PropValues } from "./properties.js";
5
+ export { computeStaggerDelays } from "./stagger.js";
6
+ export type { AnimateTextHandle, AnimateTextOptions, HandcuratedPresetName, Preset, PresetName, SplitMode, SplitOptions, Splits, StaggerOrder, TextAnimationSpec, TextProperty, TextValue, TransformOrigin, } from "./types.js";
7
+ export { listPresets, resolvePreset, fadeUp, elasticRise, blurIn, scaleIn, flipX, depthZoom, fadeDown, scaleOut, flipAway, pulse, shake, wobble, coinFlip, spin, } from "./presets/index.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,GACL,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { animateText, evaluateSpecs } from "./animate.js";
2
+ export { splitText } from "./split.js";
3
+ export { applyProps, clearProps } from "./properties.js";
4
+ export { computeStaggerDelays } from "./stagger.js";
5
+ export { listPresets, resolvePreset, fadeUp, elasticRise, blurIn, scaleIn, flipX, depthZoom, fadeDown, scaleOut, flipAway, pulse, shake, wobble, coinFlip, spin, } from "./presets/index.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAgBpD,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,GACL,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Preset } from "../types.js";
2
+ /**
3
+ * Emphasis presets chain multiple specs on the same prop — later specs
4
+ * (with later delays) overwrite earlier ones once their window opens.
5
+ */
6
+ export declare const pulse: Preset;
7
+ export declare const shake: Preset;
8
+ export declare const wobble: Preset;
9
+ export declare const coinFlip: Preset;
10
+ export declare const spin: Preset;
11
+ //# sourceMappingURL=emphasis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emphasis.d.ts","sourceRoot":"","sources":["../../src/presets/emphasis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AAEH,eAAO,MAAM,KAAK,EAAE,MAUnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAWnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAWpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAOtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAKlB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Emphasis presets chain multiple specs on the same prop — later specs
3
+ * (with later delays) overwrite earlier ones once their window opens.
4
+ */
5
+ export const pulse = {
6
+ name: "emphasis/pulse",
7
+ split: "character",
8
+ stagger: 20,
9
+ repeat: 3,
10
+ repeatDelay: 400,
11
+ animations: [
12
+ { prop: "scale", from: 1, to: 1.25, duration: 200, ease: "sine.out" },
13
+ { prop: "scale", from: 1.25, to: 1, duration: 250, ease: "sine.in", delay: 200 },
14
+ ],
15
+ };
16
+ export const shake = {
17
+ name: "emphasis/shake",
18
+ split: "character",
19
+ stagger: 15,
20
+ repeat: 2,
21
+ repeatDelay: 300,
22
+ animations: [
23
+ { prop: "translateX", from: 0, to: -6, duration: 80, ease: "sine.inOut" },
24
+ { prop: "translateX", from: -6, to: 6, duration: 120, ease: "sine.inOut", delay: 80 },
25
+ { prop: "translateX", from: 6, to: 0, duration: 100, ease: "sine.inOut", delay: 200 },
26
+ ],
27
+ };
28
+ export const wobble = {
29
+ name: "emphasis/wobble",
30
+ split: "character",
31
+ stagger: 25,
32
+ repeat: 2,
33
+ repeatDelay: 400,
34
+ animations: [
35
+ { prop: "rotate", from: 0, to: -10, duration: 150, ease: "sine.inOut" },
36
+ { prop: "rotate", from: -10, to: 10, duration: 200, ease: "sine.inOut", delay: 150 },
37
+ { prop: "rotate", from: 10, to: 0, duration: 150, ease: "sine.inOut", delay: 350 },
38
+ ],
39
+ };
40
+ export const coinFlip = {
41
+ name: "emphasis/coin-flip",
42
+ split: "character",
43
+ stagger: 30,
44
+ perspective: 800,
45
+ transformOrigin: { x: 0.5, y: 0.5 },
46
+ animations: [{ prop: "rotateY", from: 0, to: 360, duration: 700, ease: "power2.inOut" }],
47
+ };
48
+ export const spin = {
49
+ name: "emphasis/spin",
50
+ split: "character",
51
+ stagger: 20,
52
+ animations: [{ prop: "rotate", from: 0, to: 360, duration: 600, ease: "power2.inOut" }],
53
+ };
54
+ //# sourceMappingURL=emphasis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emphasis.js","sourceRoot":"","sources":["../../src/presets/emphasis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Preset } from "../types.js";
2
+ export declare const fadeUp: Preset;
3
+ export declare const elasticRise: Preset;
4
+ export declare const blurIn: Preset;
5
+ export declare const scaleIn: Preset;
6
+ export declare const flipX: Preset;
7
+ export declare const depthZoom: Preset;
8
+ //# sourceMappingURL=enter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enter.d.ts","sourceRoot":"","sources":["../../src/presets/enter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,MAAM,EAAE,MAQpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAQzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAQpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,MAQrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAUnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MASvB,CAAC"}
@@ -0,0 +1,58 @@
1
+ export const fadeUp = {
2
+ name: "enter/fade-up",
3
+ split: "character",
4
+ stagger: 30,
5
+ animations: [
6
+ { prop: "opacity", from: 0, to: 1, duration: 500, ease: "power2.out" },
7
+ { prop: "translateY", from: 20, to: 0, duration: 500, ease: "power2.out" },
8
+ ],
9
+ };
10
+ export const elasticRise = {
11
+ name: "enter/elastic-rise",
12
+ split: "character",
13
+ stagger: 40,
14
+ animations: [
15
+ { prop: "opacity", from: 0, to: 1, duration: 400, ease: "power2.out" },
16
+ { prop: "translateY", from: 40, to: 0, duration: 800, ease: "elastic.out" },
17
+ ],
18
+ };
19
+ export const blurIn = {
20
+ name: "enter/blur-in",
21
+ split: "word",
22
+ stagger: 60,
23
+ animations: [
24
+ { prop: "opacity", from: 0, to: 1, duration: 500, ease: "sine.out" },
25
+ { prop: "blur", from: 8, to: 0, duration: 500, ease: "sine.out" },
26
+ ],
27
+ };
28
+ export const scaleIn = {
29
+ name: "enter/scale-in",
30
+ split: "character",
31
+ stagger: 35,
32
+ animations: [
33
+ { prop: "opacity", from: 0, to: 1, duration: 300, ease: "power2.out" },
34
+ { prop: "scale", from: 0.3, to: 1, duration: 600, ease: "back.out" },
35
+ ],
36
+ };
37
+ export const flipX = {
38
+ name: "enter/flip-x",
39
+ split: "character",
40
+ stagger: 40,
41
+ perspective: 800,
42
+ transformOrigin: { x: 0.5, y: 1 },
43
+ animations: [
44
+ { prop: "opacity", from: 0, to: 1, duration: 400, ease: "power2.out" },
45
+ { prop: "rotateX", from: -90, to: 0, duration: 700, ease: "back.out" },
46
+ ],
47
+ };
48
+ export const depthZoom = {
49
+ name: "enter/depth-zoom",
50
+ split: "character",
51
+ stagger: 35,
52
+ perspective: 900,
53
+ animations: [
54
+ { prop: "opacity", from: 0, to: 1, duration: 500, ease: "power2.out" },
55
+ { prop: "translateZ", from: -400, to: 0, duration: 700, ease: "power3.out" },
56
+ ],
57
+ };
58
+ //# sourceMappingURL=enter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enter.js","sourceRoot":"","sources":["../../src/presets/enter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Preset } from "../types.js";
2
+ export declare const fadeDown: Preset;
3
+ export declare const scaleOut: Preset;
4
+ export declare const flipAway: Preset;
5
+ //# sourceMappingURL=exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit.d.ts","sourceRoot":"","sources":["../../src/presets/exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,QAAQ,EAAE,MAQtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAQtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAUtB,CAAC"}