@cosmictraveler002/anim-kit 1.4.0 → 1.6.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 (56) hide show
  1. package/README.md +256 -23
  2. package/dist/anim-kit.standalone.js +5 -5
  3. package/dist/anim-kit.standalone.js.map +1 -1
  4. package/dist/core/smooth-scroll.d.ts +29 -1
  5. package/dist/core/smooth-scroll.d.ts.map +1 -1
  6. package/dist/core/smooth-scroll.js +23 -3
  7. package/dist/core/smooth-scroll.js.map +1 -1
  8. package/dist/effects/horizontal-scroll.d.ts.map +1 -1
  9. package/dist/effects/horizontal-scroll.js +3 -0
  10. package/dist/effects/horizontal-scroll.js.map +1 -1
  11. package/dist/effects/ink-wipe.d.ts +41 -0
  12. package/dist/effects/ink-wipe.d.ts.map +1 -0
  13. package/dist/effects/ink-wipe.js +342 -0
  14. package/dist/effects/ink-wipe.js.map +1 -0
  15. package/dist/effects/scatter-text.d.ts.map +1 -1
  16. package/dist/effects/scatter-text.js +3 -0
  17. package/dist/effects/scatter-text.js.map +1 -1
  18. package/dist/effects/stacked-cards.d.ts.map +1 -1
  19. package/dist/effects/stacked-cards.js +3 -0
  20. package/dist/effects/stacked-cards.js.map +1 -1
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/three/coverflow-wheel.d.ts +26 -0
  26. package/dist/three/coverflow-wheel.d.ts.map +1 -0
  27. package/dist/three/coverflow-wheel.js +495 -0
  28. package/dist/three/coverflow-wheel.js.map +1 -0
  29. package/dist/three/dither-reveal.d.ts +36 -0
  30. package/dist/three/dither-reveal.d.ts.map +1 -0
  31. package/dist/three/dither-reveal.js +292 -0
  32. package/dist/three/dither-reveal.js.map +1 -0
  33. package/dist/three/index.d.ts +8 -0
  34. package/dist/three/index.d.ts.map +1 -1
  35. package/dist/three/index.js +4 -0
  36. package/dist/three/index.js.map +1 -1
  37. package/dist/three/tear-reveal.d.ts +54 -0
  38. package/dist/three/tear-reveal.d.ts.map +1 -0
  39. package/dist/three/tear-reveal.js +269 -0
  40. package/dist/three/tear-reveal.js.map +1 -0
  41. package/dist/three/wordmark-wave.d.ts +29 -0
  42. package/dist/three/wordmark-wave.d.ts.map +1 -0
  43. package/dist/three/wordmark-wave.js +461 -0
  44. package/dist/three/wordmark-wave.js.map +1 -0
  45. package/package.json +1 -1
  46. package/src/core/smooth-scroll.ts +44 -2
  47. package/src/effects/horizontal-scroll.ts +3 -0
  48. package/src/effects/ink-wipe.ts +409 -0
  49. package/src/effects/scatter-text.ts +3 -0
  50. package/src/effects/stacked-cards.ts +3 -0
  51. package/src/index.ts +3 -0
  52. package/src/three/coverflow-wheel.ts +569 -0
  53. package/src/three/dither-reveal.ts +365 -0
  54. package/src/three/index.ts +8 -0
  55. package/src/three/tear-reveal.ts +351 -0
  56. package/src/three/wordmark-wave.ts +517 -0
@@ -4,10 +4,14 @@
4
4
  * Uses the canonical Lenis + GSAP recipe:
5
5
  * lenis.on("scroll", ScrollTrigger.update)
6
6
  * gsap.ticker.add(t => lenis.raf(t * 1000))
7
- * gsap.ticker.lagSmoothing(0)
8
7
  *
9
8
  * Driving Lenis from GSAP's ticker (rather than its own rAF) keeps both
10
9
  * clocks on the same frame, which is what stops ScrollTrigger from stuttering.
10
+ * Those ticker callbacks receive the *same* adjusted clock the tweens run on,
11
+ * so GSAP's lag smoothing is deliberately left on: a stalled frame (GC pause,
12
+ * buffer tick) advances one short step everywhere instead of snapping the
13
+ * scroll and every scroll-linked tween to a new time at once. See
14
+ * SmoothScrollOptions.lagSmoothing to retune it or restore the old opt-out.
11
15
  *
12
16
  * `useScrollerProxy: true` additionally proxies `document.documentElement`,
13
17
  * matching kalakritico.in's setup — only needed if you scroll a nested
@@ -28,6 +32,30 @@ export interface SmoothScrollOptions extends CommonOptions {
28
32
  initialScroll?: number;
29
33
  /** Proxy documentElement through ScrollTrigger (nested scrollers). @default false */
30
34
  useScrollerProxy?: boolean;
35
+ /** Touch-drag sensitivity — forwarded to Lenis `touchMultiplier`. @default 1 */
36
+ touchMultiplier?: number;
37
+ /** Mouse-wheel sensitivity — forwarded to Lenis `wheelMultiplier`. @default 1 */
38
+ wheelMultiplier?: number;
39
+ /**
40
+ * GSAP lag smoothing on the shared ticker: a frame longer than `threshold`
41
+ * advances only `adjustedLag` ms, so a hitch can't teleport the scroll and
42
+ * every scroll-linked tween in one jump.
43
+ *
44
+ * - `undefined` — leave GSAP's setup alone; its built-in compensation
45
+ * (500ms → 33ms) stays active.
46
+ * - `false` — disable lag smoothing (anim-kit ≤1.4 behaviour, what the
47
+ * Lenis README recipe asks for): timing stays exactly wall-clock, but
48
+ * every frame longer than the threshold snaps.
49
+ * - `{ threshold, adjustedLag }` — retune it. Lower the threshold (e.g.
50
+ * `150`) to smooth short mobile hitches; raise it if slow devices should
51
+ * keep real-time speed instead of briefly running slow-motion.
52
+ *
53
+ * `destroy()` restores GSAP's default (500/33) whenever this was set.
54
+ */
55
+ lagSmoothing?: false | {
56
+ threshold?: number;
57
+ adjustedLag?: number;
58
+ };
31
59
  }
32
60
  export interface SmoothScrollHandle {
33
61
  /** The Lenis instance, or null when smooth scrolling was skipped. */
@@ -1 +1 @@
1
- {"version":3,"file":"smooth-scroll.d.ts","sourceRoot":"","sources":["../../src/core/smooth-scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7G,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA0FlF"}
1
+ {"version":3,"file":"smooth-scroll.d.ts","sourceRoot":"","sources":["../../src/core/smooth-scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7G,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA2GlF"}
@@ -4,10 +4,14 @@
4
4
  * Uses the canonical Lenis + GSAP recipe:
5
5
  * lenis.on("scroll", ScrollTrigger.update)
6
6
  * gsap.ticker.add(t => lenis.raf(t * 1000))
7
- * gsap.ticker.lagSmoothing(0)
8
7
  *
9
8
  * Driving Lenis from GSAP's ticker (rather than its own rAF) keeps both
10
9
  * clocks on the same frame, which is what stops ScrollTrigger from stuttering.
10
+ * Those ticker callbacks receive the *same* adjusted clock the tweens run on,
11
+ * so GSAP's lag smoothing is deliberately left on: a stalled frame (GC pause,
12
+ * buffer tick) advances one short step everywhere instead of snapping the
13
+ * scroll and every scroll-linked tween to a new time at once. See
14
+ * SmoothScrollOptions.lagSmoothing to retune it or restore the old opt-out.
11
15
  *
12
16
  * `useScrollerProxy: true` additionally proxies `document.documentElement`,
13
17
  * matching kalakritico.in's setup — only needed if you scroll a nested
@@ -24,7 +28,7 @@ const INERT = {
24
28
  };
25
29
  export function smoothScroll(options = {}) {
26
30
  initGSAP();
27
- const { force = false, lerp = 0.08, smoothWheel = true, smoothTouch = false, orientation = "vertical", initialScroll = 0, useScrollerProxy = false, } = options;
31
+ const { force = false, lerp = 0.08, smoothWheel = true, smoothTouch = false, orientation = "vertical", initialScroll = 0, useScrollerProxy = false, touchMultiplier, wheelMultiplier, lagSmoothing, } = options;
28
32
  if (typeof window === "undefined")
29
33
  return INERT;
30
34
  // Honour the OS-level preference: fall back to native scrolling.
@@ -36,6 +40,9 @@ export function smoothScroll(options = {}) {
36
40
  syncTouch: smoothTouch,
37
41
  orientation,
38
42
  autoRaf: false,
43
+ // undefined falls through to Lenis's own defaults (1 / 1).
44
+ touchMultiplier,
45
+ wheelMultiplier,
39
46
  });
40
47
  if (initialScroll)
41
48
  lenis.scrollTo(initialScroll, { immediate: true });
@@ -45,7 +52,18 @@ export function smoothScroll(options = {}) {
45
52
  // 2. Run Lenis off GSAP's ticker so both share one frame clock.
46
53
  const tick = (time) => lenis.raf(time * 1000);
47
54
  gsap.ticker.add(tick);
48
- gsap.ticker.lagSmoothing(0);
55
+ // Lag smoothing drives *one* clock — the tweens' and this ticker's alike —
56
+ // so leaving GSAP's compensation on turns a stalled frame into one short
57
+ // step everywhere instead of a snap. Only touch the ticker when asked, so a
58
+ // host page's own setup is never clobbered.
59
+ let lagTouched = false;
60
+ if (lagSmoothing !== undefined) {
61
+ lagTouched = true;
62
+ if (lagSmoothing === false)
63
+ gsap.ticker.lagSmoothing(0);
64
+ else
65
+ gsap.ticker.lagSmoothing(lagSmoothing.threshold ?? 500, lagSmoothing.adjustedLag ?? 33);
66
+ }
49
67
  // 3. Optional: proxy the scroller (for nested/element scrollers).
50
68
  if (useScrollerProxy) {
51
69
  ScrollTrigger.scrollerProxy(document.documentElement, {
@@ -81,6 +99,8 @@ export function smoothScroll(options = {}) {
81
99
  window.removeEventListener("resize", onResize);
82
100
  window.removeEventListener("load", refresh);
83
101
  gsap.ticker.remove(tick);
102
+ if (lagTouched)
103
+ gsap.ticker.lagSmoothing(500, 33); // undo our change — GSAP's default
84
104
  lenis.off("scroll", onScroll);
85
105
  if (useScrollerProxy) {
86
106
  ScrollTrigger.scrollerProxy(document.documentElement, {});
@@ -1 +1 @@
1
- {"version":3,"file":"smooth-scroll.js","sourceRoot":"","sources":["../../src/core/smooth-scroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smooth-scroll.js","sourceRoot":"","sources":["../../src/core/smooth-scroll.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"horizontal-scroll.d.ts","sourceRoot":"","sources":["../../src/effects/horizontal-scroll.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,yEAAyE;IACzE,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAqFT"}
1
+ {"version":3,"file":"horizontal-scroll.d.ts","sourceRoot":"","sources":["../../src/effects/horizontal-scroll.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,yEAAyE;IACzE,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAwFT"}
@@ -36,6 +36,9 @@ export function horizontalScroll(target, options = {}) {
36
36
  scrollTrigger: {
37
37
  trigger: section,
38
38
  pin: true,
39
+ // Refresh pins first (creation order ≠ document order): our spacer must
40
+ // exist before triggers below us measure, or they start ~9k px early.
41
+ refreshPriority: 1,
39
42
  scrub,
40
43
  end: () => "+=" + travel(),
41
44
  invalidateOnRefresh: true,
@@ -1 +1 @@
1
- {"version":3,"file":"horizontal-scroll.js","sourceRoot":"","sources":["../../src/effects/horizontal-scroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"horizontal-scroll.js","sourceRoot":"","sources":["../../src/effects/horizontal-scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { CommonOptions, Destroy, TargetLike } from "../core/types.js";
2
+ export interface InkWipeOptions extends CommonOptions {
3
+ /** Overlay host — the canvas is appended here. @default document.body */
4
+ host?: TargetLike;
5
+ /** Ink colour. @default "#0b0b0b" */
6
+ color?: string;
7
+ /** Cover duration, ms. @default 550 */
8
+ coverMs?: number;
9
+ /** Unveil duration, ms. @default 650 */
10
+ unveilMs?: number;
11
+ /** GSAP ease for both halves. @default "power2.inOut" */
12
+ ease?: string;
13
+ /** Edge lean — fraction of viewport height the top edge leads by. @default 0.35 */
14
+ tilt?: number;
15
+ /** Noise amplitude on the edge, px. @default 44 */
16
+ rough?: number;
17
+ /** Longest bristle spur, px. @default 180 */
18
+ bristle?: number;
19
+ /**
20
+ * Selector for links that should run the wipe before navigating
21
+ * (intercepted clicks; the next page unveils itself via `sessionKey`).
22
+ */
23
+ links?: string;
24
+ /** sessionStorage key for the cross-page handoff. @default "ak-ink-wipe" */
25
+ sessionKey?: string;
26
+ /** Automatically unveil when the session flag says the page loaded covered. @default true */
27
+ autoUnveil?: boolean;
28
+ /** Overlay z-index. @default 9998 */
29
+ z?: number;
30
+ }
31
+ export interface InkWipeHandle {
32
+ /** Sweep the sheet across the page. Resolves at full cover. */
33
+ cover(): Promise<void>;
34
+ /** Sweep the sheet off the far side. Resolves when the page is clear. */
35
+ unveil(): Promise<void>;
36
+ /** Remove the canvas, listeners and link interception. */
37
+ destroy: Destroy;
38
+ }
39
+ export declare function inkWipe(options: InkWipeOptions): InkWipeHandle;
40
+ export declare function inkWipe(target: TargetLike, options?: Partial<InkWipeOptions>): InkWipeHandle;
41
+ //# sourceMappingURL=ink-wipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ink-wipe.d.ts","sourceRoot":"","sources":["../../src/effects/ink-wipe.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,yEAAyE;IACzE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,yEAAyE;IACzE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAqDD,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC;AAChE,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Ink wipe — a brush-stroke page transition.
3
+ *
4
+ * A full-screen ink sheet sweeps the viewport on a tilted, noise-torn edge
5
+ * with bristle spurs and flung flecks:
6
+ *
7
+ * cover() the sheet sweeps in one direction and swallows the page —
8
+ * swap your DOM (or navigate) while it sits at full cover;
9
+ * unveil() the sheet keeps going and exits the far side, so the new page
10
+ * arrives behind the same stroke that removed the old one.
11
+ *
12
+ * One continuous left→right stroke across both halves — the edge never
13
+ * reverses, which is what keeps the two halves reading as a single gesture
14
+ * instead of a wipe and its undo.
15
+ *
16
+ * The transition is also wired for multi-page sites: pass `links` to catch
17
+ * navigations (cover → leave), and the next page's `inkWipe()` finds the
18
+ * session flag, paints covered on first frame and unveils itself.
19
+ *
20
+ * Reduced motion: cover/unveil snap instantly (a solid sheet while covered,
21
+ * no brush detail) so navigation still never flashes the swap.
22
+ *
23
+ * Works without any 2D context (SSR, jsdom): cover/unveil resolve
24
+ * immediately and nothing paints — destroy() is always safe to call.
25
+ */
26
+ import { gsap, initGSAP } from "../core/gsap.js";
27
+ import { one, prefersReducedMotion } from "../core/util.js";
28
+ /** Distinguish inkWipe("#host", {...}) from inkWipe({ ... }). */
29
+ const isTargetArg = (v) => v === undefined ||
30
+ v === null ||
31
+ typeof v === "string" ||
32
+ (typeof Element !== "undefined" && v instanceof Element) ||
33
+ (typeof NodeList !== "undefined" && v instanceof NodeList) ||
34
+ Array.isArray(v);
35
+ /** jsdom reports a 2D context it cannot actually provide — probe safely. */
36
+ const hasCanvas2D = () => {
37
+ if (typeof document === "undefined")
38
+ return false;
39
+ if (typeof navigator !== "undefined" && /jsdom/i.test(navigator.userAgent || ""))
40
+ return false;
41
+ try {
42
+ const probe = document.createElement("canvas");
43
+ if (typeof probe.getContext !== "function")
44
+ return false;
45
+ return !!probe.getContext("2d");
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ };
51
+ /* Deterministic pseudo-random: same seed → same stroke every frame, so the
52
+ edge shape is stable while it travels instead of boiling. */
53
+ const hash2 = (x, y, seed) => {
54
+ const s = Math.sin(x * 127.1 + y * 311.7 + seed * 74.7) * 43758.5453;
55
+ return s - Math.floor(s);
56
+ };
57
+ const smooth = (t) => t * t * (3 - 2 * t);
58
+ /** 2D value noise, -0.5..0.5. */
59
+ const noise2 = (x, y, seed) => {
60
+ const xi = Math.floor(x), yi = Math.floor(y);
61
+ const xf = x - xi, yf = y - yi;
62
+ const u = smooth(xf), v = smooth(yf);
63
+ const a = hash2(xi, yi, seed), b = hash2(xi + 1, yi, seed);
64
+ const c = hash2(xi, yi + 1, seed), d = hash2(xi + 1, yi + 1, seed);
65
+ const top = a + (b - a) * u;
66
+ const bot = c + (d - c) * u;
67
+ return top + (bot - top) * v - 0.5;
68
+ };
69
+ /** Fractal edge profile along y — the torn, organic boundary. */
70
+ const fbmY = (y, seed, octaves = 4) => {
71
+ let v = 0, amp = 0.55, freq = 1;
72
+ for (let i = 0; i < octaves; i++) {
73
+ v += amp * noise2(y * freq, i * 13.7, seed + i);
74
+ amp *= 0.52;
75
+ freq *= 2.13;
76
+ }
77
+ return v;
78
+ };
79
+ export function inkWipe(targetOrOptions, maybeOptions = {}) {
80
+ initGSAP();
81
+ const options = isTargetArg(targetOrOptions)
82
+ ? { ...maybeOptions, host: targetOrOptions ?? maybeOptions.host }
83
+ : targetOrOptions;
84
+ if (typeof document === "undefined")
85
+ return inertHandle();
86
+ const { color = "#0b0b0b", coverMs = 550, unveilMs = 650, ease = "power2.inOut", tilt = 0.35, rough = 44, bristle = 180, links, sessionKey = "ak-ink-wipe", autoUnveil = true, z = 9998, } = options;
87
+ const host = options.host === undefined ? document.body : one(options.host);
88
+ if (!host)
89
+ return inertHandle();
90
+ const reduced = prefersReducedMotion() && !options.force;
91
+ const canvas = document.createElement("canvas");
92
+ canvas.className = "ak-ink";
93
+ canvas.setAttribute("aria-hidden", "true");
94
+ const ctx = hasCanvas2D() ? canvas.getContext("2d") : null;
95
+ if (!ctx) {
96
+ /* No painter (SSR/jsdom): the handle still sequences. */
97
+ return inertHandle();
98
+ }
99
+ /* Sweep state: sheet spans [trail, lead] in t-space; t 0→1 crosses the
100
+ viewport, ±1 parks it off either side. lead <= trail = nothing drawn. */
101
+ const state = { trail: 1, lead: -1 };
102
+ const seed = 1 + Math.floor(Math.random() * 1e6);
103
+ let w = 0, h = 0, dpr = 1;
104
+ let destroyed = false;
105
+ let current = null;
106
+ let pendingResolve = null;
107
+ /** Kill the in-flight sweep, settling its promise (never strand an await). */
108
+ const killSweep = () => {
109
+ const r = pendingResolve;
110
+ pendingResolve = null;
111
+ if (current) {
112
+ current.kill();
113
+ current = null;
114
+ }
115
+ r?.();
116
+ };
117
+ const pad = () => Math.max(w, h) * 0.5 + rough * 2 + bristle;
118
+ /** Edge x at sweep position t, y-coordinate y (tilt + noise applied). */
119
+ const edgeX = (t, y) => {
120
+ const base = -pad() + t * (w + 2 * pad());
121
+ const lean = (0.5 - y / Math.max(1, h)) * h * tilt;
122
+ const n = fbmY((y / Math.max(1, h)) * 6 + t * 1.7, seed) * rough;
123
+ return base + lean + n;
124
+ };
125
+ const resize = () => {
126
+ dpr = Math.min(window.devicePixelRatio || 1, 2);
127
+ w = window.innerWidth;
128
+ h = window.innerHeight;
129
+ canvas.width = Math.max(2, Math.round(w * dpr));
130
+ canvas.height = Math.max(2, Math.round(h * dpr));
131
+ canvas.style.width = `${w}px`;
132
+ canvas.style.height = `${h}px`;
133
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
134
+ draw();
135
+ };
136
+ /** One bristle spur: a thin wedge reaching away from the sheet interior. */
137
+ const spur = (x, y, dir, len, width) => {
138
+ ctx.beginPath();
139
+ ctx.moveTo(x, y - width / 2);
140
+ ctx.lineTo(x + dir * len, y - width * 0.18);
141
+ ctx.lineTo(x + dir * len * 0.96, y + width * 0.22);
142
+ ctx.lineTo(x, y + width / 2);
143
+ ctx.closePath();
144
+ ctx.fill();
145
+ };
146
+ const draw = () => {
147
+ ctx.clearRect(0, 0, w, h);
148
+ const { trail, lead } = state;
149
+ if (lead <= trail || w === 0)
150
+ return;
151
+ ctx.fillStyle = color;
152
+ /* --- the sheet: a quad between the two edges, sampled along y --- */
153
+ const STEPS = Math.max(16, Math.min(64, Math.round(h / 18)));
154
+ ctx.beginPath();
155
+ for (let i = 0; i <= STEPS; i++) {
156
+ const y = (i / STEPS) * h;
157
+ const x = edgeX(lead, y);
158
+ i === 0 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);
159
+ }
160
+ for (let i = STEPS; i >= 0; i--) {
161
+ const y = (i / STEPS) * h;
162
+ ctx.lineTo(edgeX(trail, y), y);
163
+ }
164
+ ctx.closePath();
165
+ ctx.fill();
166
+ /* --- bristle spurs + flung flecks, away from the sheet interior --- */
167
+ const strands = 30;
168
+ for (let i = 0; i < strands; i++) {
169
+ const y = hash2(i, 3.1, seed) * h;
170
+ /* lead edge pushes into untouched page (+x), trail leaves through
171
+ cleared page (-x) — both reach away from the ink body. */
172
+ const len = (0.25 + 0.75 * hash2(i, 7.7, seed)) * bristle;
173
+ const width = 1.5 + hash2(i, 11.3, seed) * 7;
174
+ const lx = edgeX(lead, y);
175
+ if (lx < w + bristle)
176
+ spur(lx - 2, y, 1, len, width);
177
+ const tx = edgeX(trail, y);
178
+ if (tx > -bristle)
179
+ spur(tx + 2, y, -1, len, width);
180
+ }
181
+ /* Flecks: flung when an edge passes their land point, drawn only while
182
+ they sit outside the sheet (they vanish under it as it catches up). */
183
+ const flecks = 46;
184
+ for (let i = 0; i < flecks; i++) {
185
+ const landT = hash2(i, 21.7, seed);
186
+ const y = hash2(i, 5.9, seed) * h;
187
+ const throwLen = 24 + hash2(i, 9.4, seed) * 170;
188
+ const r = 0.8 + hash2(i, 13.6, seed) * 3.4;
189
+ const lx = edgeX(landT, y) + throwLen;
190
+ if (landT <= lead && lx > edgeX(lead, y) + 6 && lx < w + r) {
191
+ ctx.beginPath();
192
+ ctx.arc(lx, y + r, r, 0, Math.PI * 2);
193
+ ctx.fill();
194
+ }
195
+ const tx = edgeX(landT, y) - throwLen;
196
+ if (landT <= trail && tx < edgeX(trail, y) - 6 && tx > -r) {
197
+ ctx.beginPath();
198
+ ctx.arc(tx, y - r, r, 0, Math.PI * 2);
199
+ ctx.fill();
200
+ }
201
+ }
202
+ };
203
+ const paintSolid = () => {
204
+ ctx.fillStyle = color;
205
+ ctx.fillRect(0, 0, w, h);
206
+ };
207
+ const sweep = (prop, to, ms) => new Promise((resolve) => {
208
+ if (destroyed)
209
+ return resolve();
210
+ killSweep();
211
+ pendingResolve = resolve;
212
+ current = gsap.to(state, {
213
+ [prop]: to,
214
+ duration: ms / 1000,
215
+ ease,
216
+ overwrite: true,
217
+ onUpdate: draw,
218
+ onComplete: () => {
219
+ current = null;
220
+ const r = pendingResolve;
221
+ pendingResolve = null;
222
+ draw();
223
+ r?.();
224
+ },
225
+ });
226
+ });
227
+ /* ---- mounting ---- */
228
+ canvas.style.position = "fixed";
229
+ canvas.style.inset = "0";
230
+ canvas.style.pointerEvents = "none";
231
+ canvas.style.zIndex = String(z);
232
+ host.appendChild(canvas);
233
+ resize();
234
+ window.addEventListener("resize", resize);
235
+ /* ---- multi-page handoff ---- */
236
+ const readFlag = () => {
237
+ try {
238
+ return sessionStorage.getItem(sessionKey);
239
+ }
240
+ catch {
241
+ return null;
242
+ }
243
+ };
244
+ const writeFlag = (v) => {
245
+ try {
246
+ v === null ? sessionStorage.removeItem(sessionKey) : sessionStorage.setItem(sessionKey, v);
247
+ }
248
+ catch {
249
+ /* private mode — the wipe still works, just without the handoff */
250
+ }
251
+ };
252
+ if (autoUnveil && readFlag() === "covered") {
253
+ writeFlag(null);
254
+ state.trail = -1;
255
+ state.lead = 1;
256
+ draw();
257
+ canvas.style.pointerEvents = "auto";
258
+ /* Let first paint land, then sweep the new page in. */
259
+ requestAnimationFrame(() => void unveil());
260
+ }
261
+ /* ---- link interception ---- */
262
+ const onClick = (e) => {
263
+ if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) {
264
+ return;
265
+ }
266
+ const a = e.target?.closest?.("a[href]");
267
+ if (!a || !a.href || a.target === "_blank" || a.hasAttribute("download"))
268
+ return;
269
+ const url = new URL(a.href, location.href);
270
+ if (url.origin !== location.origin || url.href === location.href)
271
+ return;
272
+ if (links && !a.matches(links))
273
+ return;
274
+ e.preventDefault();
275
+ void cover().then(() => {
276
+ writeFlag("covered");
277
+ location.href = url.href;
278
+ });
279
+ };
280
+ if (links)
281
+ document.addEventListener("click", onClick);
282
+ async function cover() {
283
+ if (destroyed)
284
+ return;
285
+ killSweep();
286
+ if (reduced) {
287
+ state.trail = -1;
288
+ state.lead = 1;
289
+ paintSolid();
290
+ canvas.style.pointerEvents = "auto";
291
+ return;
292
+ }
293
+ state.trail = -1;
294
+ state.lead = 0;
295
+ draw();
296
+ await sweep("lead", 1, coverMs);
297
+ if (!destroyed)
298
+ canvas.style.pointerEvents = "auto";
299
+ }
300
+ async function unveil() {
301
+ if (destroyed)
302
+ return;
303
+ killSweep();
304
+ canvas.style.pointerEvents = "none";
305
+ if (reduced) {
306
+ state.trail = 1;
307
+ state.lead = -1;
308
+ ctx?.clearRect(0, 0, w, h);
309
+ return;
310
+ }
311
+ state.trail = -1;
312
+ state.lead = 1;
313
+ draw();
314
+ await sweep("trail", 1, unveilMs);
315
+ if (!destroyed) {
316
+ /* park ready for the next cover() */
317
+ state.trail = 1;
318
+ state.lead = -1;
319
+ ctx?.clearRect(0, 0, w, h);
320
+ }
321
+ }
322
+ function destroy() {
323
+ if (destroyed)
324
+ return;
325
+ destroyed = true;
326
+ killSweep();
327
+ window.removeEventListener("resize", resize);
328
+ if (links)
329
+ document.removeEventListener("click", onClick);
330
+ canvas.remove();
331
+ }
332
+ return { cover, unveil, destroy };
333
+ }
334
+ /** Missing host / no 2D context: sequence instantly, never throw. */
335
+ function inertHandle() {
336
+ return {
337
+ cover: () => Promise.resolve(),
338
+ unveil: () => Promise.resolve(),
339
+ destroy: () => { },
340
+ };
341
+ }
342
+ //# sourceMappingURL=ink-wipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ink-wipe.js","sourceRoot":"","sources":["../../src/effects/ink-wipe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scatter-text.d.ts","sourceRoot":"","sources":["../../src/effects/scatter-text.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CA8FT"}
1
+ {"version":3,"file":"scatter-text.d.ts","sourceRoot":"","sources":["../../src/effects/scatter-text.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAiGT"}
@@ -39,6 +39,9 @@ export function scatterText(target, options = {}) {
39
39
  scrollTrigger: {
40
40
  trigger: wrap,
41
41
  pin: pinTarget,
42
+ // Refresh pins first (creation order ≠ document order): our spacer must
43
+ // exist before triggers below us measure, or they start ~6k px early.
44
+ refreshPriority: 1,
42
45
  scrub,
43
46
  end: () => "+=" + travel(),
44
47
  invalidateOnRefresh: true,
@@ -1 +1 @@
1
- {"version":3,"file":"scatter-text.js","sourceRoot":"","sources":["../../src/effects/scatter-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scatter-text.js","sourceRoot":"","sources":["../../src/effects/scatter-text.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stacked-cards.d.ts","sourceRoot":"","sources":["../../src/effects/stacked-cards.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,qCAAqC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAkDT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,mBAAmB,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAqB,GACzE,OAAO,CAyDT"}
1
+ {"version":3,"file":"stacked-cards.d.ts","sourceRoot":"","sources":["../../src/effects/stacked-cards.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,qCAAqC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAkDT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,mBAAmB,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAqB,GACzE,OAAO,CA4DT"}
@@ -74,6 +74,9 @@ export function stackedCardsPinned(wrapTarget, options = { viewport: "" }) {
74
74
  end: "bottom bottom",
75
75
  pin: viewport,
76
76
  pinSpacing: false,
77
+ // Refresh pins first (creation order ≠ document order) so pin+scrub pairs
78
+ // agree on positions no matter where in the script this effect is created.
79
+ refreshPriority: 1,
77
80
  anticipatePin: 1,
78
81
  invalidateOnRefresh: true,
79
82
  });