@motionscript/layout-grid 0.0.0-stage → 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/LICENSE +201 -0
- package/dist/browser/chunks/chunk-PB3E5HQV.js +2 -0
- package/dist/browser/chunks/chunk-PB3E5HQV.js.map +7 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +7 -0
- package/dist/browser/kit.js +2 -0
- package/dist/browser/kit.js.map +7 -0
- package/dist/browser/manifest.json +12 -0
- package/dist/engine.d.ts +13 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +13 -0
- package/dist/engine.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/kit/index.d.ts +7 -0
- package/dist/kit/index.d.ts.map +1 -0
- package/dist/kit/index.js +7 -0
- package/dist/kit/index.js.map +1 -0
- package/dist/kit/item-effects.d.ts +37 -0
- package/dist/kit/item-effects.d.ts.map +1 -0
- package/dist/kit/item-effects.js +76 -0
- package/dist/kit/item-effects.js.map +1 -0
- package/dist/kit/layout-grid.d.ts +243 -0
- package/dist/kit/layout-grid.d.ts.map +1 -0
- package/dist/kit/layout-grid.js +542 -0
- package/dist/kit/layout-grid.js.map +1 -0
- package/dist/kit/order.d.ts +13 -0
- package/dist/kit/order.d.ts.map +1 -0
- package/dist/kit/order.js +43 -0
- package/dist/kit/order.js.map +1 -0
- package/dist/kit/random.d.ts +7 -0
- package/dist/kit/random.d.ts.map +1 -0
- package/dist/kit/random.js +29 -0
- package/dist/kit/random.js.map +1 -0
- package/dist/kit/slots/index.d.ts +22 -0
- package/dist/kit/slots/index.d.ts.map +1 -0
- package/dist/kit/slots/index.js +28 -0
- package/dist/kit/slots/index.js.map +1 -0
- package/dist/kit/slots/path-templates.d.ts +15 -0
- package/dist/kit/slots/path-templates.d.ts.map +1 -0
- package/dist/kit/slots/path-templates.js +113 -0
- package/dist/kit/slots/path-templates.js.map +1 -0
- package/dist/kit/slots/path.d.ts +45 -0
- package/dist/kit/slots/path.d.ts.map +1 -0
- package/dist/kit/slots/path.js +87 -0
- package/dist/kit/slots/path.js.map +1 -0
- package/dist/kit/slots/radial.d.ts +30 -0
- package/dist/kit/slots/radial.d.ts.map +1 -0
- package/dist/kit/slots/radial.js +45 -0
- package/dist/kit/slots/radial.js.map +1 -0
- package/dist/kit/slots/rectangular.d.ts +42 -0
- package/dist/kit/slots/rectangular.d.ts.map +1 -0
- package/dist/kit/slots/rectangular.js +79 -0
- package/dist/kit/slots/rectangular.js.map +1 -0
- package/dist/kit/slots/slot.d.ts +62 -0
- package/dist/kit/slots/slot.d.ts.map +1 -0
- package/dist/kit/slots/slot.js +41 -0
- package/dist/kit/slots/slot.js.map +1 -0
- package/dist/kit/slots/sphere.d.ts +36 -0
- package/dist/kit/slots/sphere.d.ts.map +1 -0
- package/dist/kit/slots/sphere.js +68 -0
- package/dist/kit/slots/sphere.js.map +1 -0
- package/dist/kit/stagger.d.ts +24 -0
- package/dist/kit/stagger.d.ts.map +1 -0
- package/dist/kit/stagger.js +90 -0
- package/dist/kit/stagger.js.map +1 -0
- package/dist/nodes.d.ts +15 -0
- package/dist/nodes.d.ts.map +1 -0
- package/dist/nodes.js +15 -0
- package/dist/nodes.js.map +1 -0
- package/dist/path-grid/index.d.ts +2 -0
- package/dist/path-grid/index.d.ts.map +1 -0
- package/dist/path-grid/index.js +2 -0
- package/dist/path-grid/index.js.map +1 -0
- package/dist/path-grid/path-grid.d.ts +82 -0
- package/dist/path-grid/path-grid.d.ts.map +1 -0
- package/dist/path-grid/path-grid.js +192 -0
- package/dist/path-grid/path-grid.js.map +1 -0
- package/dist/radial-grid/index.d.ts +2 -0
- package/dist/radial-grid/index.d.ts.map +1 -0
- package/dist/radial-grid/index.js +2 -0
- package/dist/radial-grid/index.js.map +1 -0
- package/dist/radial-grid/radial-grid.d.ts +51 -0
- package/dist/radial-grid/radial-grid.d.ts.map +1 -0
- package/dist/radial-grid/radial-grid.js +95 -0
- package/dist/radial-grid/radial-grid.js.map +1 -0
- package/dist/rectangular-grid/index.d.ts +2 -0
- package/dist/rectangular-grid/index.d.ts.map +1 -0
- package/dist/rectangular-grid/index.js +2 -0
- package/dist/rectangular-grid/index.js.map +1 -0
- package/dist/rectangular-grid/rectangular-grid.d.ts +79 -0
- package/dist/rectangular-grid/rectangular-grid.d.ts.map +1 -0
- package/dist/rectangular-grid/rectangular-grid.js +156 -0
- package/dist/rectangular-grid/rectangular-grid.js.map +1 -0
- package/dist/sphere-grid/index.d.ts +2 -0
- package/dist/sphere-grid/index.d.ts.map +1 -0
- package/dist/sphere-grid/index.js +2 -0
- package/dist/sphere-grid/index.js.map +1 -0
- package/dist/sphere-grid/sphere-grid.d.ts +68 -0
- package/dist/sphere-grid/sphere-grid.d.ts.map +1 -0
- package/dist/sphere-grid/sphere-grid.js +149 -0
- package/dist/sphere-grid/sphere-grid.js.map +1 -0
- package/package.json +69 -3
- package/registry.json +32 -0
- package/src/engine.ts +12 -0
- package/src/index.ts +6 -0
- package/src/kit/index.ts +6 -0
- package/src/kit/item-effects.ts +114 -0
- package/src/kit/layout-grid.ts +605 -0
- package/src/kit/order.ts +41 -0
- package/src/kit/random.ts +29 -0
- package/src/kit/slots/index.ts +39 -0
- package/src/kit/slots/path-templates.ts +120 -0
- package/src/kit/slots/path.ts +120 -0
- package/src/kit/slots/radial.ts +62 -0
- package/src/kit/slots/rectangular.ts +108 -0
- package/src/kit/slots/slot.ts +82 -0
- package/src/kit/slots/sphere.ts +94 -0
- package/src/kit/stagger.ts +96 -0
- package/src/nodes.ts +15 -0
- package/src/path-grid/index.ts +1 -0
- package/src/path-grid/path-grid.ts +213 -0
- package/src/radial-grid/index.ts +1 -0
- package/src/radial-grid/radial-grid.ts +90 -0
- package/src/rectangular-grid/index.ts +1 -0
- package/src/rectangular-grid/rectangular-grid.ts +160 -0
- package/src/sphere-grid/index.ts +1 -0
- package/src/sphere-grid/sphere-grid.ts +143 -0
- package/README.md +0 -4
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { Size2D } from "@motionscript/core"
|
|
2
|
+
|
|
3
|
+
import type { Slot } from "./slots"
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* What an item does on its way in (or out): grow from nothing, fade, fly out of
|
|
7
|
+
* the grid's centre, rise into place, flip up, or spin in.
|
|
8
|
+
*/
|
|
9
|
+
export const REVEAL_STYLES = ["scale", "fade", "center", "rise", "flip", "spin"] as const
|
|
10
|
+
export type RevealStyle = (typeof REVEAL_STYLES)[number]
|
|
11
|
+
|
|
12
|
+
/** What a wave does to each item as it passes. */
|
|
13
|
+
export const WAVE_STYLES = ["scale", "lift", "fade", "spin"] as const
|
|
14
|
+
export type WaveStyle = (typeof WAVE_STYLES)[number]
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* How far into view each item is, `1` shown and `0` gone — past `1` on the
|
|
18
|
+
* way to it under an overshooting ease. Absent means every item is shown.
|
|
19
|
+
*/
|
|
20
|
+
export interface RevealState {
|
|
21
|
+
style: RevealStyle
|
|
22
|
+
values: readonly number[]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Each item's share of the wave passing through it, `0` at rest and `1` at the crest. */
|
|
26
|
+
export interface WaveState {
|
|
27
|
+
style: WaveStyle
|
|
28
|
+
/** How big the crest is — a share of the item's size, opacity or a turn, by style. */
|
|
29
|
+
amount: number
|
|
30
|
+
values: readonly number[]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Each item's emphasis: `1` the focus, `-1` pushed back, `0` untouched. */
|
|
34
|
+
export interface FocusState {
|
|
35
|
+
/** How far the others fade, `0..1`. */
|
|
36
|
+
dim: number
|
|
37
|
+
/** How much the focus grows, as a share of its size; the others shrink by half that. */
|
|
38
|
+
grow: number
|
|
39
|
+
values: readonly number[]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Layer item `i`'s reveal, wave and focus onto its slot, in place. */
|
|
43
|
+
export function applyItemEffects(
|
|
44
|
+
s: Slot,
|
|
45
|
+
i: number,
|
|
46
|
+
size: Size2D,
|
|
47
|
+
reveal: RevealState | null | undefined,
|
|
48
|
+
wave: WaveState | null | undefined,
|
|
49
|
+
focus: FocusState | null | undefined,
|
|
50
|
+
): void {
|
|
51
|
+
if (reveal) applyReveal(s, reveal.style, reveal.values[i] ?? 1, size)
|
|
52
|
+
if (wave) applyWave(s, wave, wave.values[i] ?? 0, size)
|
|
53
|
+
if (focus) applyFocus(s, focus, focus.values[i] ?? 0)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function applyReveal(s: Slot, style: RevealStyle, v: number, size: Size2D): void {
|
|
57
|
+
if (v === 1) return
|
|
58
|
+
const shown = clamp01(v)
|
|
59
|
+
switch (style) {
|
|
60
|
+
case "fade":
|
|
61
|
+
s.opacity *= shown
|
|
62
|
+
break
|
|
63
|
+
case "center":
|
|
64
|
+
s.x *= v
|
|
65
|
+
s.y *= v
|
|
66
|
+
s.depth *= v
|
|
67
|
+
s.opacity *= clamp01(v * 4)
|
|
68
|
+
break
|
|
69
|
+
case "rise":
|
|
70
|
+
s.y -= (1 - v) * Math.max(40, size.height)
|
|
71
|
+
s.opacity *= shown
|
|
72
|
+
break
|
|
73
|
+
case "flip":
|
|
74
|
+
s.rotationX += (1 - v) * 90
|
|
75
|
+
break
|
|
76
|
+
case "spin":
|
|
77
|
+
s.rotation -= (1 - v) * 180
|
|
78
|
+
s.scale *= Math.max(0, v)
|
|
79
|
+
break
|
|
80
|
+
default:
|
|
81
|
+
s.scale *= Math.max(0, v)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function applyWave(s: Slot, wave: WaveState, w: number, size: Size2D): void {
|
|
86
|
+
if (w === 0) return
|
|
87
|
+
switch (wave.style) {
|
|
88
|
+
case "lift":
|
|
89
|
+
s.y += wave.amount * w * Math.max(40, size.height)
|
|
90
|
+
break
|
|
91
|
+
case "fade":
|
|
92
|
+
s.opacity *= clamp01(1 - wave.amount * w)
|
|
93
|
+
break
|
|
94
|
+
case "spin":
|
|
95
|
+
s.rotation += wave.amount * w * 360
|
|
96
|
+
break
|
|
97
|
+
default:
|
|
98
|
+
s.scale *= 1 + wave.amount * w
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function applyFocus(s: Slot, focus: FocusState, f: number): void {
|
|
103
|
+
if (f === 0) return
|
|
104
|
+
if (f > 0) {
|
|
105
|
+
s.scale *= 1 + focus.grow * f
|
|
106
|
+
return
|
|
107
|
+
}
|
|
108
|
+
s.opacity *= clamp01(1 - focus.dim * -f)
|
|
109
|
+
s.scale *= Math.max(0, 1 + focus.grow * 0.5 * f)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function clamp01(v: number): number {
|
|
113
|
+
return v < 0 ? 0 : v > 1 ? 1 : v
|
|
114
|
+
}
|