@infinityfx/lively 4.0.4 → 4.0.5

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 (94) hide show
  1. package/.rollup.cache/F/projects/code/lively/dist/animatable.js +147 -0
  2. package/.rollup.cache/F/projects/code/lively/dist/animatable.js.map +1 -0
  3. package/.rollup.cache/F/projects/code/lively/dist/animate.js +26 -0
  4. package/.rollup.cache/F/projects/code/lively/dist/animate.js.map +1 -0
  5. package/.rollup.cache/F/projects/code/lively/dist/core/action.js +28 -0
  6. package/.rollup.cache/F/projects/code/lively/dist/core/action.js.map +1 -0
  7. package/.rollup.cache/F/projects/code/lively/dist/core/cache.js +55 -0
  8. package/.rollup.cache/F/projects/code/lively/dist/core/cache.js.map +1 -0
  9. package/.rollup.cache/F/projects/code/lively/dist/core/clip.js +71 -0
  10. package/.rollup.cache/F/projects/code/lively/dist/core/clip.js.map +1 -0
  11. package/.rollup.cache/F/projects/code/lively/dist/core/link.js +39 -0
  12. package/.rollup.cache/F/projects/code/lively/dist/core/link.js.map +1 -0
  13. package/.rollup.cache/F/projects/code/lively/dist/core/timeline.js +107 -0
  14. package/.rollup.cache/F/projects/code/lively/dist/core/timeline.js.map +1 -0
  15. package/.rollup.cache/F/projects/code/lively/dist/core/track.js +147 -0
  16. package/.rollup.cache/F/projects/code/lively/dist/core/track.js.map +1 -0
  17. package/.rollup.cache/F/projects/code/lively/dist/core/utils.js +95 -0
  18. package/.rollup.cache/F/projects/code/lively/dist/core/utils.js.map +1 -0
  19. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-audio.js +63 -0
  20. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-audio.js.map +1 -0
  21. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-link.js +7 -0
  22. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-link.js.map +1 -0
  23. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-path.js +15 -0
  24. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-path.js.map +1 -0
  25. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-reduced-motion.js +14 -0
  26. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-reduced-motion.js.map +1 -0
  27. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-scroll.js +21 -0
  28. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-scroll.js.map +1 -0
  29. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-spring.js +37 -0
  30. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-spring.js.map +1 -0
  31. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-trigger.js +15 -0
  32. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-trigger.js.map +1 -0
  33. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-viewport.js +27 -0
  34. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-viewport.js.map +1 -0
  35. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-visible.js +26 -0
  36. package/.rollup.cache/F/projects/code/lively/dist/hooks/use-visible.js.map +1 -0
  37. package/.rollup.cache/F/projects/code/lively/dist/hooks.js +11 -0
  38. package/.rollup.cache/F/projects/code/lively/dist/hooks.js.map +1 -0
  39. package/.rollup.cache/F/projects/code/lively/dist/index.js +4 -0
  40. package/.rollup.cache/F/projects/code/lively/dist/index.js.map +1 -0
  41. package/.rollup.cache/F/projects/code/lively/dist/layout/layout-group.js +209 -0
  42. package/.rollup.cache/F/projects/code/lively/dist/layout/layout-group.js.map +1 -0
  43. package/.rollup.cache/F/projects/code/lively/dist/layout/morph.js +48 -0
  44. package/.rollup.cache/F/projects/code/lively/dist/layout/morph.js.map +1 -0
  45. package/.rollup.cache/F/projects/code/lively/dist/layout/typable.js +21 -0
  46. package/.rollup.cache/F/projects/code/lively/dist/layout/typable.js.map +1 -0
  47. package/.rollup.cache/F/projects/code/lively/dist/layout.js +5 -0
  48. package/.rollup.cache/F/projects/code/lively/dist/layout.js.map +1 -0
  49. package/.rollup.cache/F/projects/code/lively/dist/tsconfig.tsbuildinfo +1 -0
  50. package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/utils.d.ts +1 -0
  51. package/dist/animatable.js +1 -1
  52. package/dist/animate.js +1 -1
  53. package/dist/core/action.js +1 -1
  54. package/dist/core/action.js.map +1 -1
  55. package/dist/core/cache.js +1 -1
  56. package/dist/core/cache.js.map +1 -1
  57. package/dist/core/clip.js +1 -1
  58. package/dist/core/clip.js.map +1 -1
  59. package/dist/core/timeline.js +1 -1
  60. package/dist/core/timeline.js.map +1 -1
  61. package/dist/core/track.js +1 -1
  62. package/dist/core/track.js.map +1 -1
  63. package/dist/core/utils.js +1 -1
  64. package/dist/core/utils.js.map +1 -1
  65. package/dist/hooks/use-audio.js +1 -1
  66. package/dist/hooks/use-scroll.js +1 -1
  67. package/dist/layout/layout-group.js +1 -1
  68. package/dist/layout/morph.js +1 -1
  69. package/dist/layout/typable.js +1 -1
  70. package/package.json +1 -1
  71. package/tsconfig.json +4 -2
  72. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/animatable.d.ts +0 -0
  73. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/animate.d.ts +0 -0
  74. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/action.d.ts +0 -0
  75. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/cache.d.ts +0 -0
  76. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/clip.d.ts +0 -0
  77. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/link.d.ts +0 -0
  78. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/timeline.d.ts +0 -0
  79. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/core/track.d.ts +0 -0
  80. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-audio.d.ts +0 -0
  81. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-link.d.ts +0 -0
  82. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-path.d.ts +0 -0
  83. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-reduced-motion.d.ts +0 -0
  84. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-scroll.d.ts +0 -0
  85. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-spring.d.ts +0 -0
  86. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-trigger.d.ts +0 -0
  87. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-viewport.d.ts +0 -0
  88. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks/use-visible.d.ts +0 -0
  89. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/hooks.d.ts +0 -0
  90. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/index.d.ts +0 -0
  91. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/layout/layout-group.d.ts +0 -0
  92. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/layout/morph.d.ts +0 -0
  93. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/layout/typable.d.ts +0 -0
  94. /package/{dist → .rollup.cache/F/projects/code/lively/dist}/types/layout.d.ts +0 -0
@@ -0,0 +1,147 @@
1
+ import { StyleCache } from "./cache";
2
+ import { lengthToOffset, limitSmallestQuantity } from "./utils";
3
+ export default class Track {
4
+ constructor(element, deform, cachable) {
5
+ this.playing = 0;
6
+ this.active = [];
7
+ this.queue = [];
8
+ this.paused = false;
9
+ this.scale = [1, 1];
10
+ this.corrected = {
11
+ borderRadius: '',
12
+ boxShadow: ''
13
+ };
14
+ this.element = element;
15
+ this.deform = deform;
16
+ this.cache = new StyleCache(element, cachable);
17
+ }
18
+ push(action) {
19
+ action.onfinish = this.next.bind(this);
20
+ if (this.playing && action.composite === 'none') {
21
+ this.queue.push(action);
22
+ action.animation.pause();
23
+ }
24
+ else {
25
+ this.active.push(action);
26
+ if (action.composite === 'none')
27
+ this.playing++;
28
+ if (this.paused)
29
+ action.animation.pause();
30
+ }
31
+ }
32
+ next() {
33
+ this.cache.update();
34
+ if (--this.playing > 0)
35
+ return;
36
+ this.active = this.queue.length ? this.queue.splice(0, 1) : [];
37
+ this.playing = this.active.length;
38
+ this.pause(false);
39
+ if (!this.playing)
40
+ this.correct();
41
+ }
42
+ clear(partial) {
43
+ this.active.forEach(action => {
44
+ action.onfinish = null;
45
+ try {
46
+ if (!partial) {
47
+ action.animation.finish();
48
+ }
49
+ else if (!action.commit && action.composite !== 'combine') {
50
+ action.animation.cancel();
51
+ }
52
+ }
53
+ catch (ex) {
54
+ action.animation.cancel();
55
+ }
56
+ });
57
+ if (!partial) {
58
+ this.active = [];
59
+ this.queue = [];
60
+ this.playing = 0;
61
+ }
62
+ if (!this.deform) {
63
+ this.element.style.borderRadius = '';
64
+ this.element.style.boxShadow = '';
65
+ this.corrected.borderRadius = this.cache.data.borderRadius = this.cache.computed.borderRadius,
66
+ this.corrected.boxShadow = this.cache.data.boxShadow = this.cache.computed.boxShadow;
67
+ this.scale = [1, 1];
68
+ }
69
+ }
70
+ pause(value) {
71
+ for (const action of this.active)
72
+ action.animation[value ? 'pause' : 'play']();
73
+ this.paused = value;
74
+ }
75
+ step(index) {
76
+ for (const action of this.active)
77
+ action.step(index);
78
+ if (!this.paused && this.active.length)
79
+ this.correct();
80
+ }
81
+ transition(previous, options) {
82
+ this.clear(true);
83
+ const clips = this.cache.difference(previous?.cache.data, options);
84
+ this.cache.update();
85
+ previous?.clear();
86
+ previous?.cache.update();
87
+ clips.forEach(clip => clip.play(this, { commit: false }));
88
+ }
89
+ apply(prop, val) {
90
+ const isStroke = prop === 'strokeLength';
91
+ this.element.style[isStroke ? 'strokeDashoffset' : prop] = isStroke ? lengthToOffset(val) : val;
92
+ }
93
+ decomposeScale() {
94
+ const [xString, yString] = this.cache.computed.scale.split(' ');
95
+ let x = parseFloat(xString), y = yString ? parseFloat(yString) : x;
96
+ if (isNaN(x))
97
+ x = 1;
98
+ if (isNaN(y))
99
+ y = 1;
100
+ if (/%$/.test(xString))
101
+ x /= 100;
102
+ if (/%$/.test(yString))
103
+ y /= 100;
104
+ return [limitSmallestQuantity(x, 1e-4), limitSmallestQuantity(y, 1e-4)];
105
+ }
106
+ correct() {
107
+ if (this.deform)
108
+ return;
109
+ const computed = this.cache.computed;
110
+ const radii = computed.borderRadius.split(/\s*\/\s*/);
111
+ if (radii.length < 2)
112
+ radii[1] = radii[0];
113
+ const shadows = computed.boxShadow.split(/(?<=px),\s?/);
114
+ const [color, shadow] = shadows[0].split(/(?<=\))\s/);
115
+ const previousRadiusScale = computed.borderRadius !== this.corrected.borderRadius ? [1, 1] : this.scale;
116
+ const previousShadowScale = computed.boxShadow !== this.corrected.boxShadow ? [1, 1] : this.scale;
117
+ const [x, y] = this.scale = this.decomposeScale();
118
+ this.element.style.borderRadius = radii.map((axis, i) => {
119
+ return axis.split(' ').map(radius => {
120
+ return parseFloat(radius) * previousRadiusScale[i] / this.scale[i] + (radius.match(/[^\d\.]+$/)?.[0] || 'px');
121
+ }).join(' ');
122
+ }).join('/');
123
+ this.corrected.borderRadius = computed.borderRadius;
124
+ if (shadow) {
125
+ const props = shadow.split(' ').map(parseFloat), i = +(x < y), ms = i ? y : x, pms = Math.max(...previousShadowScale);
126
+ const corrected = new Array(3).fill([
127
+ props[0] * previousShadowScale[0] / x,
128
+ props[1] * previousShadowScale[1] / y,
129
+ props[2] * pms / ms,
130
+ props[3] * pms / ms
131
+ ]);
132
+ corrected[1][0] -= i ? 1 / x : 0;
133
+ corrected[1][1] -= i ? 0 : 1 / y;
134
+ corrected[2][0] += i ? 1 / x : 0;
135
+ corrected[2][1] += i ? 0 : 1 / y;
136
+ this.element.style.boxShadow = corrected.map(val => `${color} ${val.map(val => `${val}px`).join(' ')}`).join(', ');
137
+ this.corrected.boxShadow = computed.boxShadow;
138
+ }
139
+ for (let i = 0; i < this.element.children.length; i++) {
140
+ const child = this.element.children[i];
141
+ const l = child.offsetLeft, t = child.offsetTop, w = child.offsetWidth, h = child.offsetHeight;
142
+ const [tx, ty] = getComputedStyle(child).translate.split(' ').map(parseFloat);
143
+ child.style.transform = `translate(${-tx || 0}px, ${-ty || 0}px) scale(${1 / x}, ${1 / y}) translate(${l * (1 - x) + w / 2 * (1 - x) + (tx || 0)}px, ${t * (1 - y) + h / 2 * (1 - y) + (ty || 0)}px)`;
144
+ }
145
+ }
146
+ }
147
+ //# sourceMappingURL=track.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/core/track.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export function merge(...objects) {
2
+ for (let i = 1; i < objects.length; i++) {
3
+ for (const key in objects[i]) {
4
+ if (key in objects[0] && objects[0][key] !== undefined)
5
+ continue;
6
+ objects[0][key] = objects[i][key];
7
+ }
8
+ }
9
+ return objects[0];
10
+ }
11
+ ;
12
+ export function pick(map, keys) {
13
+ const picked = {};
14
+ for (const key of keys)
15
+ picked[key] = map[key];
16
+ return picked;
17
+ }
18
+ export function combineRefs(...refs) {
19
+ return (el) => {
20
+ refs.forEach(ref => {
21
+ if (ref && 'current' in ref)
22
+ ref.current = el;
23
+ if (ref instanceof Function)
24
+ ref(el);
25
+ });
26
+ };
27
+ }
28
+ export const limitSmallestQuantity = (val, e) => (Math.sign(val) || 1) * Math.max(Math.abs(val), e);
29
+ export const lengthToOffset = (val) => 1 - parseFloat(val.toString());
30
+ export class IndexedMap extends Map {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.stack = [];
34
+ }
35
+ set(key, value) {
36
+ this.stack.push(value);
37
+ return super.set(key, value);
38
+ }
39
+ delete(key) {
40
+ const i = this.stack.indexOf(this.get(key));
41
+ if (i >= 0)
42
+ this.stack.splice(i, 1);
43
+ return super.delete(key);
44
+ }
45
+ }
46
+ export function distributeAnimatableKeyframes(prop, keyframes, map = {}) {
47
+ const set = (offset, value) => {
48
+ const key = offset * 10000, isStroke = prop === 'strokeLength';
49
+ if (!(key in map))
50
+ map[key] = { offset };
51
+ map[key][isStroke ? 'strokeDashoffset' : prop] = isStroke ? lengthToOffset(value) : value;
52
+ };
53
+ for (let i = 0; i < keyframes.length; i++) {
54
+ let { offset, value, after } = keyframes[i];
55
+ if (value !== undefined) {
56
+ if (after !== undefined && offset === 1)
57
+ offset = offset - 0.0001;
58
+ set(offset, value);
59
+ }
60
+ if (after !== undefined) {
61
+ offset = Math.min(offset + 0.0001, 1);
62
+ set(offset, after);
63
+ }
64
+ }
65
+ return map;
66
+ }
67
+ export function normalizeAnimatableKeyframes(keyframes) {
68
+ let equal = 0, match;
69
+ for (let i = 0; i < keyframes.length; i++) {
70
+ let keyframe = keyframes[i], offset = keyframes.length < 2 ? 1 : Math.round(i / (keyframes.length - 1) * 10000) / 10000;
71
+ if (i === 0)
72
+ match = keyframe;
73
+ if (keyframe && typeof keyframe === 'object') {
74
+ if (!('offset' in keyframe))
75
+ keyframe.offset = offset;
76
+ }
77
+ else {
78
+ if (keyframe === match)
79
+ equal++;
80
+ keyframes[i] = { offset, value: keyframe !== null ? keyframe : undefined };
81
+ }
82
+ }
83
+ return equal < 2 || equal !== keyframes.length;
84
+ }
85
+ // might need support for reverse/alternate?
86
+ export function createDynamic(prop, keyframes, easing) {
87
+ return function (t) {
88
+ const animation = this.element.animate(keyframes, { duration: 1000, fill: 'forwards', easing });
89
+ animation.currentTime = 1000 * t;
90
+ const value = getComputedStyle(this.element)[prop];
91
+ animation.cancel();
92
+ return value;
93
+ };
94
+ }
95
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,KAAK,CAAsC,GAAG,OAAU;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS;YAEjE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAc,CAAC;AACnC,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,IAAI,CAAuD,GAAM,EAAE,IAAS;IACxF,MAAM,MAAM,GAAG,EAA0B,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAG,IAAoC;IAC/D,OAAO,CAAC,EAAO,EAAE,EAAE;QACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG;gBAAG,GAA4B,CAAC,OAAO,GAAG,EAAE,CAAC;YACxE,IAAI,GAAG,YAAY,QAAQ;gBAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAEpH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE3E,MAAM,OAAO,UAAiB,SAAQ,GAAS;IAA/C;;QAEI,UAAK,GAAQ,EAAE,CAAC;IAepB,CAAC;IAbG,GAAG,CAAC,GAAM,EAAE,KAAQ;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,GAAM;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CAEJ;AAID,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,SAAqC,EAAE,MAAoC,EAAE;IACrI,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,KAAsB,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,EACtB,QAAQ,GAAG,IAAI,KAAK,cAAc,CAAC;QAEvC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAEzC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,CAAC;gBAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;YAClE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,SAA6C;IACtF,IAAI,KAAK,GAAG,CAAC,EAAE,KAAU,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,EACvB,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAC/F,IAAI,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,QAAQ,CAAC;QAE9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;gBAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1D,CAAC;aAAM,CAAC;YACJ,IAAI,QAAQ,KAAK,KAAK;gBAAE,KAAK,EAAE,CAAC;YAChC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC/E,CAAC;IACL,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAqB,EAAE,MAAc;IAC7E,OAAO,UAAuB,CAAS;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,SAAS,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAW,CAAC,CAAC;QAE1D,SAAS,CAAC,MAAM,EAAE,CAAC;QAEnB,OAAO,KAAK,CAAC;IACjB,CAAC,CAAA;AACL,CAAC"}
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+ import { useEffect, useRef } from "react";
3
+ import useLink from "./use-link";
4
+ let audioContext;
5
+ export default function useAudio({ bands = 8, minFrequency = 100, maxFrequency = 2000, smoothing = 0.7 } = {}) {
6
+ const buffer = useRef(new Float32Array(1024));
7
+ const analyzer = useRef(undefined);
8
+ const source = useRef(undefined);
9
+ const ref = useRef(null);
10
+ const link = useLink(new Array(8).fill(0));
11
+ let frame;
12
+ function update() {
13
+ if (!analyzer.current)
14
+ return;
15
+ analyzer.current.getFloatFrequencyData(buffer.current);
16
+ const arr = link();
17
+ const lower = Math.floor((minFrequency / 24000) * 1024);
18
+ const upper = Math.floor((maxFrequency / 24000) * 1024);
19
+ for (let i = 0; i < bands; i++) {
20
+ const offset = lower + (upper - lower) / bands * i;
21
+ const li = Math.floor(offset), ui = Math.ceil(offset);
22
+ const di = offset - li;
23
+ const val = buffer.current[li] * (1 - di) + buffer.current[ui] * di;
24
+ arr[i] = Math.max(0, (100 + val) / 70);
25
+ }
26
+ link.set(arr);
27
+ frame = requestAnimationFrame(update);
28
+ }
29
+ function play() {
30
+ if (audioContext.state === 'suspended')
31
+ audioContext.resume();
32
+ frame = requestAnimationFrame(update);
33
+ }
34
+ function suspend() {
35
+ cancelAnimationFrame(frame);
36
+ link.set(new Array(bands).fill(0), { duration: 0.3 });
37
+ }
38
+ useEffect(() => {
39
+ const audio = ref.current;
40
+ if (!audio)
41
+ return;
42
+ if (!audioContext)
43
+ audioContext = new AudioContext();
44
+ if (!analyzer.current)
45
+ analyzer.current = new AnalyserNode(audioContext, { fftSize: 2048, smoothingTimeConstant: smoothing });
46
+ if (!source.current)
47
+ source.current = audioContext.createMediaElementSource(audio);
48
+ analyzer.current.connect(audioContext.destination);
49
+ source.current.connect(analyzer.current);
50
+ audio.addEventListener('play', play);
51
+ audio.addEventListener('pause', suspend);
52
+ audio.addEventListener('ended', suspend);
53
+ return () => {
54
+ analyzer.current?.disconnect();
55
+ source.current?.disconnect();
56
+ audio.removeEventListener('play', play);
57
+ audio.removeEventListener('pause', suspend);
58
+ audio.removeEventListener('ended', suspend);
59
+ };
60
+ }, []);
61
+ return [ref, link];
62
+ }
63
+ //# sourceMappingURL=use-audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-audio.js","sourceRoot":"","sources":["../../src/hooks/use-audio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { useRef } from "react";
2
+ import { createLink } from "../core/link";
3
+ export default function useLink(initial) {
4
+ const link = useRef(createLink(initial));
5
+ return link.current;
6
+ }
7
+ //# sourceMappingURL=use-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-link.js","sourceRoot":"","sources":["../../src/hooks/use-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,OAAO,CAAU,OAAU;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAEzC,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { useRef, useCallback } from 'react';
2
+ export default function usePath() {
3
+ const ref = useRef(null);
4
+ const link = useCallback((transform) => {
5
+ return (progress, index) => {
6
+ if (!ref.current)
7
+ return transform([0, 0], index);
8
+ const len = ref.current.getTotalLength() * progress;
9
+ const { x, y } = ref.current.getPointAtLength(len);
10
+ return transform([x, y], index);
11
+ };
12
+ }, [ref]);
13
+ return [ref, link];
14
+ }
15
+ //# sourceMappingURL=use-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-path.js","sourceRoot":"","sources":["../../src/hooks/use-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,OAAO;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,SAA0D,EAAE,EAAE;QACpF,OAAO,CAAC,QAAgB,EAAE,KAAa,EAAE,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAElD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC;YACpD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAEnD,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { useEffect, useState } from 'react';
3
+ export default function useReducedMotion() {
4
+ const [reduced, setReduced] = useState(false);
5
+ useEffect(() => {
6
+ const change = (e) => setReduced(e.matches);
7
+ const query = matchMedia('(prefers-reduced-motion: reduce)');
8
+ query.addEventListener('change', change);
9
+ setReduced(query.matches);
10
+ return () => query.removeEventListener('change', change);
11
+ }, []);
12
+ return reduced;
13
+ }
14
+ //# sourceMappingURL=use-reduced-motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-reduced-motion.js","sourceRoot":"","sources":["../../src/hooks/use-reduced-motion.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,CAAC,CAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAG,UAAU,CAAC,kCAAkC,CAAC,CAAC;QAC7D,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE1B,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+ import { useLayoutEffect } from "react";
3
+ import useLink from "./use-link";
4
+ export default function useScroll({ restore = 0, target } = {}) {
5
+ const link = useLink({ x: 0, y: 0, top: 0, left: 0 });
6
+ useLayoutEffect(() => {
7
+ const element = target?.current ? target.current : window;
8
+ function update(duration) {
9
+ const element = target?.current || document.documentElement;
10
+ const left = element.scrollLeft, x = left / ((element.scrollWidth - element.clientWidth) || 1);
11
+ const top = element.scrollTop, y = top / ((element.scrollHeight - element.clientHeight) || 1);
12
+ link.set({ x, y, top, left }, { duration });
13
+ }
14
+ update(restore);
15
+ const scroll = () => update();
16
+ element.addEventListener('scroll', scroll);
17
+ return () => element.removeEventListener('scroll', scroll);
18
+ }, [target]);
19
+ return link;
20
+ }
21
+ //# sourceMappingURL=use-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../src/hooks/use-scroll.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAwB,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,KAG1E,EAAE;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtD,eAAe,CAAC,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1D,SAAS,MAAM,CAAC,QAAiB;YAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC;YAE5D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/F,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9F,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAE9B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { useRef } from "react";
2
+ import useLink from "./use-link";
3
+ export default function useSpring(initial, { stiffness = 2, damping = .1, mass = 1, restThreshold = 0.01 } = {}) {
4
+ const state = useRef({
5
+ t: 0,
6
+ value: initial,
7
+ velocity: new Array(Array.isArray(initial) ? initial.length : 1).fill(0)
8
+ });
9
+ const internal = useLink(initial);
10
+ const link = useRef(internal(val => val));
11
+ function update() {
12
+ const t = Date.now(), dt = Math.min((t - state.current.t) / 1000, 1 / 12), value = internal(), velocity = state.current.velocity, isVector = Array.isArray(value);
13
+ let scalarOffset = 0, scalarVelocity = 0;
14
+ const vec = isVector ? value : [value];
15
+ const tar = Array.isArray(state.current.value) ? state.current.value : [state.current.value];
16
+ for (let i = 0; i < velocity.length; i++) {
17
+ const offset = tar[i] - vec[i];
18
+ velocity[i] += ((stiffness * offset) - (damping * velocity[i])) / mass;
19
+ vec[i] += velocity[i] * dt;
20
+ scalarOffset += Math.abs(offset);
21
+ scalarVelocity += Math.abs(velocity[i]);
22
+ }
23
+ scalarOffset /= velocity.length;
24
+ scalarVelocity /= velocity.length;
25
+ internal.set(isVector ? vec : vec[0]);
26
+ state.current.t = t;
27
+ if (scalarOffset > restThreshold || scalarVelocity > restThreshold)
28
+ requestAnimationFrame(update);
29
+ }
30
+ link.current.set = (value) => {
31
+ state.current.value = value;
32
+ state.current.t = Date.now();
33
+ requestAnimationFrame(update);
34
+ };
35
+ return link.current;
36
+ }
37
+ //# sourceMappingURL=use-spring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-spring.js","sourceRoot":"","sources":["../../src/hooks/use-spring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { useMemo, useRef, useState } from "react";
3
+ export default function useTrigger() {
4
+ const called = useRef(0);
5
+ const [state, setState] = useState(0);
6
+ const trigger = useMemo(() => {
7
+ function trigger() {
8
+ setState(++called.current);
9
+ }
10
+ trigger.called = state;
11
+ return trigger;
12
+ }, [state]);
13
+ return trigger;
14
+ }
15
+ //# sourceMappingURL=use-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-trigger.js","sourceRoot":"","sources":["../../src/hooks/use-trigger.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIlD,MAAM,CAAC,OAAO,UAAU,UAAU;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,SAAS,OAAO;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAEvB,OAAO,OAAO,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { useLayoutEffect, useRef } from "react";
3
+ import useLink from "./use-link";
4
+ export default function useViewport(threshold = .5) {
5
+ const ref = useRef(null);
6
+ const link = useLink([-1, -1]);
7
+ useLayoutEffect(() => {
8
+ function update() {
9
+ if (!ref.current)
10
+ return;
11
+ const { x, y, width, height } = ref.current.getBoundingClientRect();
12
+ link.set([
13
+ (x + width * threshold) / (window.innerWidth + 2 * width * (threshold - .5)),
14
+ (y + height * threshold) / (window.innerHeight + 2 * height * (threshold - .5))
15
+ ]);
16
+ }
17
+ update();
18
+ window.addEventListener('scroll', update);
19
+ window.addEventListener('resize', update);
20
+ return () => {
21
+ window.removeEventListener('scroll', update);
22
+ window.removeEventListener('resize', update);
23
+ };
24
+ }, [threshold]);
25
+ return [ref, link];
26
+ }
27
+ //# sourceMappingURL=use-viewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-viewport.js","sourceRoot":"","sources":["../../src/hooks/use-viewport.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,WAAW,CAA0B,SAAS,GAAG,EAAE;IACvE,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,eAAe,CAAC,GAAG,EAAE;QACjB,SAAS,MAAM;YACX,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO;YAEzB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAEpE,IAAI,CAAC,GAAG,CAAC;gBACL,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBAC5E,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;aAClF,CAAC,CAAC;QACP,CAAC;QAED,MAAM,EAAE,CAAC;QAET,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1C,OAAO,GAAG,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { useEffect, useRef } from "react";
3
+ import useTrigger from "./use-trigger";
4
+ import useViewport from "./use-viewport";
5
+ export default function useVisible({ enter = 1, exit = false, threshold = .5 } = {}) {
6
+ const [ref, link] = useViewport(threshold);
7
+ const visible = useRef(false);
8
+ const enters = useTrigger();
9
+ const exits = useTrigger();
10
+ useEffect(() => {
11
+ function linkupdate() {
12
+ const [x, y] = link();
13
+ const intersecting = x > 0 && x < 1 && y > 0 && y < 1;
14
+ if (!visible.current && intersecting && enters.called < (enter === true ? Infinity : +enter))
15
+ enters();
16
+ if (visible.current && !intersecting && exits.called < (exit === true ? Infinity : +exit))
17
+ exits();
18
+ visible.current = intersecting;
19
+ }
20
+ linkupdate();
21
+ link.subscribe(linkupdate);
22
+ return () => link.unsubscribe(linkupdate);
23
+ }, [enters, exits]);
24
+ return [ref, enters, exits];
25
+ }
26
+ //# sourceMappingURL=use-visible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-visible.js","sourceRoot":"","sources":["../../src/hooks/use-visible.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,UAAuB,MAAM,eAAe,CAAC;AACpD,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,OAAO,UAAU,UAAU,CAA0B,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,GAAG,EAAE,KAIjG,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACX,SAAS,UAAU;YACf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,MAAM,EAAE,CAAC;YACvG,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,KAAK,EAAE,CAAC;YAEnG,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC;QACnC,CAAC;QAED,UAAU,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE3B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import useLink from "./hooks/use-link";
2
+ import useTrigger from "./hooks/use-trigger";
3
+ import useReducedMotion from "./hooks/use-reduced-motion";
4
+ import useScroll from "./hooks/use-scroll";
5
+ import usePath from "./hooks/use-path";
6
+ import useViewport from "./hooks/use-viewport";
7
+ import useVisible from "./hooks/use-visible";
8
+ import useAudio from "./hooks/use-audio";
9
+ import useSpring from "./hooks/use-spring";
10
+ export { useLink, useTrigger, useReducedMotion, useScroll, usePath, useViewport, useVisible, useAudio, useSpring };
11
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EACH,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACZ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import Animatable from "./animatable";
2
+ import Animate from "./animate";
3
+ export { Animatable, Animate };
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,OAAO,EACH,UAAU,EACV,OAAO,EACV,CAAC"}