asciify-engine 4.20.0 → 4.22.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/README.md +14 -0
- package/dist/{animation-presets-ZujFF3i8.d.ts → animation-presets-CEdD0FMM.d.cts} +42 -28
- package/dist/{animation-presets-DhswE0D_.d.cts → animation-presets-KnEWoJ_q.d.ts} +42 -28
- package/dist/core.cjs +1 -1
- package/dist/core.d.cts +4 -4
- package/dist/core.d.ts +4 -4
- package/dist/core.js +1 -1
- package/dist/field.cjs +1 -1
- package/dist/field.d.cts +3 -1
- package/dist/field.d.ts +3 -1
- package/dist/field.js +1 -1
- package/dist/hover-guide-CAfsLjFZ.d.cts +190 -0
- package/dist/hover-guide-CAfsLjFZ.d.ts +190 -0
- package/dist/hover.cjs +1 -1
- package/dist/hover.d.cts +14 -7
- package/dist/hover.d.ts +14 -7
- package/dist/hover.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/{model-9SbRVqqI.d.cts → model-BHIQYYk-.d.ts} +11 -2
- package/dist/{model-DXHhQhxP.d.ts → model-BzgEEqzP.d.cts} +11 -2
- package/dist/studio.cjs +1 -1
- package/dist/studio.d.cts +4 -5
- package/dist/studio.d.ts +4 -5
- package/dist/studio.js +1 -1
- package/dist/{types-CM4452nD.d.ts → types-C9lka3yC.d.ts} +2 -2
- package/dist/{types-FkqhgDYx.d.cts → types-DOl5f2x3.d.cts} +2 -2
- package/package.json +1 -1
- package/skills/asciify-engine/SKILL.md +3 -3
- package/skills/asciify-engine/references/design-matching.md +2 -1
- package/skills/asciify-engine/references/glyph-field.md +1 -1
- package/skills/asciify-engine/references/hero-finish.md +3 -0
- package/skills/asciify-engine/references/looks.md +55 -55
- package/skills/asciify-engine/references/studio-effects.md +73 -24
- package/skills/asciify-engine/references/studio-workspace.md +6 -7
- package/skills/asciify-engine/references/upgrading.md +6 -0
- package/dist/hover-catalog-D85jh6dR.d.cts +0 -173
- package/dist/hover-catalog-D85jh6dR.d.ts +0 -173
|
@@ -30,29 +30,78 @@ The positioned host must fit the displayed source canvas. The surface appends a
|
|
|
30
30
|
|
|
31
31
|
## Hover choices
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| `
|
|
36
|
-
|
|
|
37
|
-
| `
|
|
38
|
-
| `dissolve` |
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
33
|
+
Nineteen hovers plus Off, in three families. All share `strength` (0–1), `radius` (0.1–1), `decay` (0–1, default .5: lower snaps back, higher lingers), `edgeSafe` and `scope` (below), in both `mountStudio` settings (`hover: {...}`) and `mountHover` options.
|
|
34
|
+
|
|
35
|
+
| Module `effect` | Family | Behavior | Good for |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| `trail` | Change characters | Density wake with a fading tail; glyph grid stays fixed. The signature Asciify hover. | Any portrait or hero; the default. |
|
|
38
|
+
| `dissolve` | Change characters | Erases a soft path through the characters; the image reforms. | Quiet editorial pages. |
|
|
39
|
+
| `contour` | Change characters | Fine tonal rings trace the path. | Line-art and print looks. |
|
|
40
|
+
| `etch` | Change characters | Signed light-and-shadow impression (“Emboss”). | Engraving, paper. |
|
|
41
|
+
| `ripple` | Change characters | Expanding signed tonal wave packets; faster strokes ring stronger. | Dot, LED and tile looks. |
|
|
42
|
+
| `bleed` | Change characters | Ink bleed: ink wells up where the cursor rests, spreads along a fibrous paper grain, then dries back from its edges. | Sumi, woodcut, stipple, pen and ink. |
|
|
43
|
+
| `water` | Move the image | Damped height-field refraction that settles after the stroke. | Frosted glass, water, calm heroes. |
|
|
44
|
+
| `silk` | Move the image | Directional folds that follow the hand. | Fabric, fashion, slow motion. |
|
|
45
|
+
| `vortex` | Move the image | A swirling wake. | Playful, music. |
|
|
46
|
+
| `magnetic` | Move the image | The image gathers toward the stroke, then relaxes. | Product details. |
|
|
47
|
+
| `scatter` | Move the image | Characters scatter in soft low-frequency drifts and spring back with one rebound. | Playful campaigns. |
|
|
48
|
+
| `elastic` | Move the image | Pushes with the stroke, recoils past rest once, settles in about a second. | Toys, mascots. |
|
|
49
|
+
| `lens` | Move the image | Lens wake: a magnifying wake along the stroke. | Detail-rich photos. |
|
|
50
|
+
| `smudge` | Move the image | Drags the image along the stroke, no bounce. | Painterly looks. |
|
|
51
|
+
| `loupe` | Follow the cursor | A flat-topped glass loupe rides a slightly springy follow, magnifies what it covers and compresses through a soft rim with a faint glint. Shrinks a little while moving fast, settles when you stop. | Products, cut-outs, halo overlays. |
|
|
52
|
+
| `reveal` | Follow the cursor | A soft spotlight shows the original photograph through the thinned characters (Studio). On `/hover`, which has no photograph, it lights the characters instead. | Editorial, cinema, cut-outs (`scope: 'subject'`). |
|
|
53
|
+
| `repel` | Follow the cursor | Characters part around the cursor into a packed ring, leaving a soft clearing; on leave they spring back with one soft rebound. | Stickers, tiles, mosaics. |
|
|
54
|
+
| `tilt` | Follow the cursor | The image leans toward the cursor like a parallax card; bright areas sit nearer and move more (depth from smoothed brightness). | Album covers, posters, lock screens. |
|
|
55
|
+
| `haze` | Follow the cursor | Heat haze: a rising shimmer bends the characters above the cursor, livelier while moving, calm at rest. | Neon, broadcast, dusk gradients. |
|
|
56
|
+
| `none` | | No hover effect. | |
|
|
57
|
+
|
|
58
|
+
Retired: `rake` (its combed strips tore the image) now plays `silk`. Saved settings and old integrations keep working; `DEPRECATED_STUDIO_HOVERS` lists the mapping. Cursor hovers (`loupe`, `reveal`, `repel`, `tilt`, `haze`) store a fraction of the artwork, so they scale with it; stroke hovers keep their CSS-pixel reach.
|
|
50
59
|
|
|
51
60
|
These are `/hover` module `effect` IDs, not the root engine’s legacy `HoverEffect` values. For example, passing `hoverEffect: 'water'` to the published engine is invalid.
|
|
52
61
|
|
|
62
|
+
## Scope: on the subject, or around it
|
|
63
|
+
|
|
64
|
+
`scope: 'all' | 'subject' | 'outside'` (default `'all'`; labels in `HOVER_SCOPES`: Everywhere, Subject, Around) decides where a hover acts.
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
await mountStudio(canvas, '/product-on-black.jpg', {
|
|
68
|
+
settings: { style: 'mixed', backdrop: { mode: 'transparent' }, hover: { effect: 'reveal', scope: 'subject' } },
|
|
69
|
+
});
|
|
70
|
+
mountHover(host, canvas, { effect: 'trail', scope: 'outside' }); // a wake around a cut-out, never across it
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
How the subject is found, in order:
|
|
74
|
+
1. **Source alpha.** A transparent PNG, WebM or canvas: coverage is its alpha.
|
|
75
|
+
2. **A drawn Studio mask** (`mask.enabled`): the mask is the subject (inverted masks invert it), multiplied with alpha.
|
|
76
|
+
3. **A plain ground.** An opaque image whose border is one even tone (a product or figure on black or white, as the Cutout, Halo overlay and Mascot sticker looks expect) is keyed by each area's distance from that tone.
|
|
77
|
+
4. **Otherwise** (a busy edge-to-edge photo) there is no reliable subject, so every scope behaves like `'all'` rather than guessing.
|
|
78
|
+
|
|
79
|
+
Coverage is feathered over about 2% of the short side, so a scoped hover fades softly at the boundary and never clips hard. Displacement, tone and light are all weighted by it. With `'outside'` on a transparent ground, tone hovers (Trail, Contour, Emboss, Ripple, Ink bleed, Heat haze) draw their own marks in the ink colour on the empty ground. In `/hover` the subject is read from the drawn canvas once per still (`invalidate()` rereads it); for video the first frame's subject is kept.
|
|
80
|
+
|
|
81
|
+
## Smart behaviour
|
|
82
|
+
|
|
83
|
+
- Cursor hovers ease in on entry (no overshoot), start under the pointer instead of sliding in from the last exit, settle when the pointer rests and decay after it leaves; Repel releases with one soft rebound.
|
|
84
|
+
- Touch: `mountHover` follows a finger while it drags (`touch: false` turns this off) and lets go when it lifts; a vertical swipe still scrolls the page. `mountStudio` follows touch drags on its canvas.
|
|
85
|
+
- Reduced motion turns hovers off; hidden or offscreen surfaces stop drawing; a resting loupe stays drawn without redrawing every frame.
|
|
86
|
+
|
|
53
87
|
## Still-image motion and dither
|
|
54
88
|
|
|
55
|
-
|
|
89
|
+
Still-image motion reads the photograph itself (its soft luminance, a relief normal, highlight nearness, local detail and an estimated depth, rebuilt per source frame) so light and movement are motivated by the image instead of laid over it. The `motion` IDs:
|
|
90
|
+
|
|
91
|
+
| ID | Label | Group | What moves | Grid |
|
|
92
|
+
|---|---|---|---|---|
|
|
93
|
+
| `relight` | Relight | Light | A key light circles the subject and models its own relief; flat areas stay put. | anchored |
|
|
94
|
+
| `sheen` | Specular sweep | Light | One slow pass of light across the upper midtones and highlights, bent by their form, then a rest. | anchored |
|
|
95
|
+
| `glow` | Highlight bloom | Light | The brightest areas breathe a halo outward; deep shadows stay deep. | anchored |
|
|
96
|
+
| `shimmer` | Glints | Light | Sparse, phased glints only on bright fine detail (water, metal, eyes). | anchored |
|
|
97
|
+
| `parallax` | Parallax | Depth | Slow camera drift; near and far move against each other. | resampled |
|
|
98
|
+
| `push` | Slow push | Depth | Ken Burns push toward the subject's center and back; nearer areas move slightly more. Never samples outside the frame. | resampled |
|
|
99
|
+
| `focus` | Focus pull | Depth | Focus racks from subject to background and back; out-of-focus areas flatten toward their neighbourhood. | anchored |
|
|
100
|
+
| `mist` | Mist | Atmosphere | Soft mist drifts through the distance and plain areas only. | anchored |
|
|
101
|
+
| `current` | Drift | Atmosphere | Cinemagraph flow in smooth, distant areas; the detailed subject holds. | resampled |
|
|
102
|
+
| `develop` | Develop | Reveal | Holds, fades, then develops back in from highlights to shadows. | anchored |
|
|
103
|
+
|
|
104
|
+
"Anchored" motions change light only. "Resampled" motions move the image through a fixed character grid, so every glyph stays aligned and readable. Light motions mostly brighten the ink and change character density for only part of the shift, so light glows instead of flickering. Every motion except Relight, Glints and Mist shows the untouched still at time 0, which is what reduced motion and a paused preview display. Retired IDs still load as their closest replacement (`DEPRECATED_STUDIO_MOTIONS`): `caustics` → `sheen`, `grain` → `shimmer`, `trace` → `relight`, `tidal`/`weave`/`breeze` → `current`, `reform`/`print`/`unfold` → `develop`. Keep source-video motion alone unless the user intentionally wants another animation layered onto it. For a still, select one motion and a restrained `motionSpeed`, rather than stacking effects.
|
|
56
105
|
|
|
57
106
|
For the website's fine-dither treatment, use the module's `fineDither: true` and `ditherStrength` after matching the backing canvas's character settings. This is separate from the core renderer’s built-in dither behavior. Check a still and a moving scene for flicker before choosing the default.
|
|
58
107
|
|
|
@@ -71,19 +120,19 @@ Version 1.3.0 adds text-shaped charcoal cutouts (`textMask`), peripheral scanlin
|
|
|
71
120
|
|
|
72
121
|
## Catalogs and useful combinations (4.4)
|
|
73
122
|
|
|
74
|
-
Build controls from `STUDIO_HOVERS` and `STUDIO_MOTIONS`, exported by `/studio` and `/hover`. Each entry includes `value`, `label
|
|
123
|
+
Build controls from `STUDIO_HOVERS`, `HOVER_SCOPES` and `STUDIO_MOTIONS`, exported by `/studio` and `/hover`. Each entry includes `value`, `label` and `description` (hovers also a `group`). Show the scope control as a segmented choice next to the hover settings. Use the `value` as the API ID; “Emboss” is `etch`, “Specular sweep” is `sheen` and “Drift” is `current`. Do not maintain a second hard-coded menu or use the legacy core hover IDs for these interactions.
|
|
75
124
|
|
|
76
|
-
For a fixed grid, try
|
|
125
|
+
For a fixed grid, try Relight with Emboss. For depth, try Parallax or Slow push with Tilt. For water and sky, try Drift with Ripple rings. These are combinations of two independent settings, not additional art styles. Keep strength restrained until you have checked the source at actual display size.
|
|
77
126
|
|
|
78
127
|
All ambient modes repeat after `12 / speed` seconds. Looping the motion does not guarantee that a source video, film grain, dust, glitch or animated dither has the same boundary. Exported PNG/JPEG captures one frame; MP4/WebM/GIF carries autonomous motion, not live pointer movement. For complete composition export, use `/studio` rather than capturing the hover overlay.
|
|
79
128
|
|
|
80
129
|
The pointer simulations have bounded storage. Elastic allocates its two velocity buffers only when first selected; idle effects stop. This is not a device-independent FPS promise. Test dense grids, fast reversal and the actual finish stack on the target device.
|
|
81
130
|
|
|
82
|
-
## Lively images
|
|
131
|
+
## Lively images
|
|
83
132
|
|
|
84
|
-
The catalogs contain
|
|
133
|
+
The catalogs contain nineteen active hover effects and ten active ambient motions, plus Off for each (see the table above). All use deterministic 12-second base cycles; `motion.speed` changes cycle duration, `motion.amount` (0–2) changes strength. These are local image treatments driven by the photo's own light and depth estimate, not AI-generated scene or subject motion; the depth estimate favours a subject found from alpha or a plain ground, then sharp, central, lower detail.
|
|
85
134
|
|
|
86
|
-
`STUDIO_ANIMATION_PRESETS` is exported by `/studio` and `/hover`. Its
|
|
135
|
+
`STUDIO_ANIMATION_PRESETS` is exported by `/studio` and `/hover`. Its seven entries have `id`, `label`, `description`, `motion: {type,speed,amount}`, and `hover: {effect,radius,strength}`. These are editable combinations, not additional renderer styles. Do not overwrite the rest of a user's settings to apply one:
|
|
87
136
|
|
|
88
137
|
```ts
|
|
89
138
|
import { mountStudio, STUDIO_ANIMATION_PRESETS } from 'asciify-engine/studio';
|
|
@@ -101,6 +150,6 @@ For a complete integration with independent PNG/MP4 export, copy the repository'
|
|
|
101
150
|
|
|
102
151
|
For `/hover`, the same catalog needs an explicit shape conversion: `surface.update({ motion: preset.motion.type, motionSpeed: preset.motion.speed, effect: preset.hover.effect, radius: preset.hover.radius, strength: preset.hover.strength })`. `/hover` has no `motion.amount` option; use Studio for independently adjustable motion strength. Do not spread the nested Studio groups directly into surface options.
|
|
103
152
|
|
|
104
|
-
Ripple rings uses at most eight wave packets and a fixed-resolution field. It does not allocate particles per character. Lens and Smudge reuse the existing field; their release integrates elapsed time, not a fixed frame count. Zero strength suppresses hover input; completed wakes sleep. These bounds and tests are not a guaranteed frame rate on every device.
|
|
153
|
+
Every hover runs on one fixed field (128 cells on the long side) whatever the image size; cursor hovers are a few springs plus that field, and Ink bleed diffuses on it in fixed sub-steps. Measured in the Studio renderer at 640×480, 6px cells: 5–7ms per frame p50 for every hover, under 10ms p95. Ripple rings uses at most eight wave packets and a fixed-resolution field. It does not allocate particles per character. Lens and Smudge reuse the existing field; their release integrates elapsed time, not a fixed frame count. Zero strength suppresses hover input; completed wakes sleep. These bounds and tests are not a guaranteed frame rate on every device.
|
|
105
154
|
|
|
106
155
|
To export a loop of a photo, use duration `12 / speed`. Restrict the speed/duration to your encoder's limits and use a frame count that fits whole cycles. Film grain, dust, glitch, pattern animation and input videos may not loop at that boundary. Pointer paths are not included in offline export. Respect reduced motion and provide pause; do not advertise artificial depth as true scene reconstruction.
|
|
@@ -113,7 +113,7 @@ For PNG/JPEG, pass `time: player.time` and `motionTime: player.motionTime` to `e
|
|
|
113
113
|
|
|
114
114
|
## Still-image motion (3.0)
|
|
115
115
|
|
|
116
|
-
Import `STUDIO_MOTIONS` from `/studio` to populate controls; each item has `value`, `label`, and `description`. Use `motion: { type: '
|
|
116
|
+
Import `STUDIO_MOTIONS` from `/studio` to populate controls; each item has `value`, `label`, and `description`. Use `motion: { type: 'relight' | 'sheen' | 'glow' | 'shimmer' | 'parallax' | 'push' | 'focus' | 'mist' | 'current' | 'develop' | 'none', speed: 1 }`. Off is the default. Every motion reads the photo's own light and depth ([studio-effects.md](studio-effects.md#still-image-motion-and-dither)); retired IDs such as `caustics` load as their closest replacement. Loops last 12 / speed seconds and preserve source/accent/gray color choice. Speed is 0.1–3. Do not combine source video with ambient motion unless requested. Hover remains independently configurable. Names retired in 3.0 normalize to Off; later retired names map to a current motion. See [upgrading.md](upgrading.md) before moving an existing integration to 3.0.
|
|
117
117
|
|
|
118
118
|
## Sharp previews (3.0.1)
|
|
119
119
|
|
|
@@ -166,9 +166,8 @@ and `scatter` (radial, spatially varied scatter that relaxes). Both retain a
|
|
|
166
166
|
bounded field after cursor exit; radius and strength control the response.
|
|
167
167
|
Use `hover.effect` in Studio and `effect` in mountHover. Defaults remain unchanged.
|
|
168
168
|
|
|
169
|
-
Still-image motion
|
|
170
|
-
|
|
171
|
-
without displacement; Tidal Rings moves the image with protected edges.
|
|
169
|
+
Still-image motion: see the current catalog in [studio-effects.md](studio-effects.md#still-image-motion-and-dither).
|
|
170
|
+
Light motions change tone without displacement; depth motions move the image through a fixed grid.
|
|
172
171
|
Set Studio `motion: { type: 'sheen', speed: 0.7, amount: 0.6 }`.
|
|
173
172
|
Core uses `animationStyle`; mountHover uses `motion` and `motionSpeed`.
|
|
174
173
|
Base cycles last 12 seconds; speed scales duration. Studio amount scales strength.
|
|
@@ -182,9 +181,9 @@ Stationary artwork, masks, lights, backdrops and character bloom are cached whil
|
|
|
182
181
|
|
|
183
182
|
## Expanded motion library (4.4)
|
|
184
183
|
|
|
185
|
-
Use `STUDIO_HOVERS` and `STUDIO_MOTIONS` to show all available hovers and still-image motions, plus Off, grouped by behavior. New hover IDs are `etch`, `elastic`, `rake`;
|
|
184
|
+
Use `STUDIO_HOVERS` and `STUDIO_MOTIONS` to show all available hovers and still-image motions, plus Off, grouped by behavior. New hover IDs are `etch`, `elastic`, `rake`; the 4.4 motions were later replaced by photo-aware ones (see [upgrading.md](upgrading.md)). `hover.radius` and `hover.strength` are independent of `motion.speed` and `motion.amount`. All remain serialized in look links and saved projects. A static photo needs no video input or AI service to animate.
|
|
186
185
|
|
|
187
|
-
Example: `player.update({ motion: { type: '
|
|
186
|
+
Example: `player.update({ motion: { type: 'relight', speed: 1, amount: .7 }, hover: { effect: 'etch', radius: .45, strength: .65 } })`. Tone and character choices remain yours. See [effect behaviors and combinations](studio-effects.md#catalogs-and-useful-combinations-44). Do not run several looping thumbnail canvases just to display this catalog; apply the selected treatment to one shared preview.
|
|
188
187
|
|
|
189
188
|
## Tonal detail and blue noise (4.5)
|
|
190
189
|
|
|
@@ -202,7 +201,7 @@ const player = await mountStudio(canvas, '/portrait.jpg', {
|
|
|
202
201
|
style: 'dither',
|
|
203
202
|
color: { gamma: 1.12, shadows: .15, highlights: -.12 },
|
|
204
203
|
dither: { algorithm: 'blue-noise', palette: 'gray8', scale: 3 },
|
|
205
|
-
motion: { type: '
|
|
204
|
+
motion: { type: 'relight', speed: .7, amount: .4 },
|
|
206
205
|
},
|
|
207
206
|
maxDimension: 960,
|
|
208
207
|
maxCells: 65536,
|
|
@@ -85,3 +85,9 @@ Six additional `STUDIO_STYLES` use optional `print` settings. Existing v1 settin
|
|
|
85
85
|
## 4.10 interaction expansion
|
|
86
86
|
|
|
87
87
|
Adds `lens`, `smudge`, `ripple` hover and `relight`, `shimmer`, `breeze`, `unfold` ambient motion. No IDs are removed and existing defaults remain. `STUDIO_ANIMATION_PRESETS` is exported by Studio and hover; its nested settings are shaped for `player.update`. Core accepts the new ambient IDs through `animationStyle`, with its existing simpler opacity treatment. Do not pass the new surface hover IDs to core `hoverEffect`. Update the npm dependency and refresh the agent skill separately; older packages do not implement these IDs.
|
|
88
|
+
|
|
89
|
+
## Photo-aware motion and finish (after 4.21)
|
|
90
|
+
|
|
91
|
+
The still-image motions are rebuilt to read the photograph's own light, relief, highlights, detail and depth instead of laying a pattern over it. The catalog is `relight`, `sheen` (Specular sweep), `glow` (Highlight bloom, new), `shimmer` (Glints), `parallax`, `push` (Slow push, new), `focus` (Focus pull, new), `mist` (new), `current` (Drift) and `develop` (new), plus `none`. Retired IDs keep working everywhere (Studio settings, share links, `mountHover` `motion`, core `animationStyle`) and load as their closest replacement, listed in `DEPRECATED_STUDIO_MOTIONS`: `caustics` → `sheen`, `grain` → `shimmer`, `trace` → `relight`, `tidal`, `weave`, `breeze` → `current`, `reform`, `print`, `unfold` → `develop`. Normalized settings store the new ID. Depth motions now move the image through a fixed character grid instead of moving glyphs. `STUDIO_ANIMATION_PRESETS` keeps its six IDs with new pairings and adds `depth-study`; the `wallpaper` look uses Relight.
|
|
92
|
+
|
|
93
|
+
The optical finish's `bloom` is now a wide, soft-kneed halation screened over the image (no offset ghosts), and `grain` is fine triangular film grain weighted to the midtones. IDs and ranges are unchanged; existing looks render slightly softer and cleaner.
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
type AmbientMotion = 'none' | 'caustics' | 'current' | 'reform' | 'sheen' | 'tidal' | 'grain' | 'parallax' | 'weave' | 'print' | 'trace' | 'relight' | 'shimmer' | 'breeze' | 'unfold';
|
|
2
|
-
declare const MOTION_STYLES: readonly [{
|
|
3
|
-
readonly value: "none";
|
|
4
|
-
readonly mode: "none";
|
|
5
|
-
readonly group: "Still";
|
|
6
|
-
readonly label: "Off";
|
|
7
|
-
readonly description: "Keep the image still. Hover stays available.";
|
|
8
|
-
}, {
|
|
9
|
-
readonly value: "caustics";
|
|
10
|
-
readonly mode: "caustics";
|
|
11
|
-
readonly group: "Light and texture";
|
|
12
|
-
readonly label: "Caustics";
|
|
13
|
-
readonly description: "Soft ribbons of light travel across a stationary character grid.";
|
|
14
|
-
}, {
|
|
15
|
-
readonly value: "current";
|
|
16
|
-
readonly mode: "current";
|
|
17
|
-
readonly group: "Flow and depth";
|
|
18
|
-
readonly label: "Slow Current";
|
|
19
|
-
readonly description: "A gentle flow through the image, with steady edges.";
|
|
20
|
-
}, {
|
|
21
|
-
readonly value: "reform";
|
|
22
|
-
readonly mode: "reform";
|
|
23
|
-
readonly group: "Rebuild";
|
|
24
|
-
readonly label: "Reveal & Reform";
|
|
25
|
-
readonly description: "Disperse, gather, then hold the complete image.";
|
|
26
|
-
}, {
|
|
27
|
-
readonly value: "sheen";
|
|
28
|
-
readonly mode: "sheen";
|
|
29
|
-
readonly group: "Light and texture";
|
|
30
|
-
readonly label: "Sheen";
|
|
31
|
-
readonly description: "A broad diagonal light sweep; characters stay anchored.";
|
|
32
|
-
}, {
|
|
33
|
-
readonly value: "tidal";
|
|
34
|
-
readonly mode: "tidal";
|
|
35
|
-
readonly group: "Flow and depth";
|
|
36
|
-
readonly label: "Tidal Rings";
|
|
37
|
-
readonly description: "Concentric currents travel outward, with protected edges.";
|
|
38
|
-
}, {
|
|
39
|
-
readonly value: "grain";
|
|
40
|
-
readonly mode: "grain";
|
|
41
|
-
readonly group: "Light and texture";
|
|
42
|
-
readonly label: "Living Grain";
|
|
43
|
-
readonly description: "Slow, individually phased tonal changes on a stationary grid.";
|
|
44
|
-
}, {
|
|
45
|
-
readonly value: "parallax";
|
|
46
|
-
readonly mode: "parallax";
|
|
47
|
-
readonly group: "Flow and depth";
|
|
48
|
-
readonly label: "Parallax";
|
|
49
|
-
readonly description: "A shallow, continuous drift through the image, with the edges held in place.";
|
|
50
|
-
}, {
|
|
51
|
-
readonly value: "weave";
|
|
52
|
-
readonly mode: "weave";
|
|
53
|
-
readonly group: "Flow and depth";
|
|
54
|
-
readonly label: "Woven Flow";
|
|
55
|
-
readonly description: "Interlaced bands move in opposing directions, like a flexible printed fabric.";
|
|
56
|
-
}, {
|
|
57
|
-
readonly value: "print";
|
|
58
|
-
readonly mode: "print";
|
|
59
|
-
readonly group: "Rebuild";
|
|
60
|
-
readonly label: "Print Shift";
|
|
61
|
-
readonly description: "Staggered rows lift, soften and register back into the image.";
|
|
62
|
-
}, {
|
|
63
|
-
readonly value: "trace";
|
|
64
|
-
readonly mode: "trace";
|
|
65
|
-
readonly group: "Light and texture";
|
|
66
|
-
readonly label: "Contour Light";
|
|
67
|
-
readonly description: "Light follows the source image’s tonal contours; every character stays anchored.";
|
|
68
|
-
}, {
|
|
69
|
-
readonly value: "relight";
|
|
70
|
-
readonly mode: "relight";
|
|
71
|
-
readonly group: "Light and texture";
|
|
72
|
-
readonly label: "Relight";
|
|
73
|
-
readonly description: "A slow orbit of light models the image’s midtones, while the character grid stays fixed.";
|
|
74
|
-
}, {
|
|
75
|
-
readonly value: "shimmer";
|
|
76
|
-
readonly mode: "shimmer";
|
|
77
|
-
readonly group: "Light and texture";
|
|
78
|
-
readonly label: "Shimmer";
|
|
79
|
-
readonly description: "Small highlights glint at different moments. Shadows stay quiet and the image stays in place.";
|
|
80
|
-
}, {
|
|
81
|
-
readonly value: "breeze";
|
|
82
|
-
readonly mode: "breeze";
|
|
83
|
-
readonly group: "Flow and depth";
|
|
84
|
-
readonly label: "Breeze";
|
|
85
|
-
readonly description: "A traveling bend gently sways the image, like a print suspended in moving air.";
|
|
86
|
-
}, {
|
|
87
|
-
readonly value: "unfold";
|
|
88
|
-
readonly mode: "unfold";
|
|
89
|
-
readonly group: "Rebuild";
|
|
90
|
-
readonly label: "Unfold";
|
|
91
|
-
readonly description: "Narrow panels turn, soften and return to a complete image, with a readable hold between cycles.";
|
|
92
|
-
}];
|
|
93
|
-
|
|
94
|
-
/** One public catalog for the hero, studio, documentation and integrations. */
|
|
95
|
-
declare const SURFACE_HOVERS: readonly [{
|
|
96
|
-
readonly value: "none";
|
|
97
|
-
readonly label: "Off";
|
|
98
|
-
readonly group: "Still";
|
|
99
|
-
readonly description: "Keep the artwork still under the pointer.";
|
|
100
|
-
}, {
|
|
101
|
-
readonly value: "trail";
|
|
102
|
-
readonly label: "Trail";
|
|
103
|
-
readonly group: "Change characters";
|
|
104
|
-
readonly description: "A fluid wake changes character density and settles behind your cursor.";
|
|
105
|
-
}, {
|
|
106
|
-
readonly value: "dissolve";
|
|
107
|
-
readonly label: "Dissolve";
|
|
108
|
-
readonly group: "Change characters";
|
|
109
|
-
readonly description: "Erase a soft path through the characters; the image gradually reforms.";
|
|
110
|
-
}, {
|
|
111
|
-
readonly value: "contour";
|
|
112
|
-
readonly label: "Contour";
|
|
113
|
-
readonly group: "Change characters";
|
|
114
|
-
readonly description: "Fine tonal rings trace your path without moving the grid.";
|
|
115
|
-
}, {
|
|
116
|
-
readonly value: "etch";
|
|
117
|
-
readonly label: "Emboss";
|
|
118
|
-
readonly group: "Change characters";
|
|
119
|
-
readonly description: "Press a light-and-shadow impression into the characters; the grid stays fixed.";
|
|
120
|
-
}, {
|
|
121
|
-
readonly value: "ripple";
|
|
122
|
-
readonly label: "Ripple rings";
|
|
123
|
-
readonly group: "Change characters";
|
|
124
|
-
readonly description: "Expanding light-and-shadow rings follow your stroke. Faster movement excites stronger rings; the grid stays still.";
|
|
125
|
-
}, {
|
|
126
|
-
readonly value: "water";
|
|
127
|
-
readonly label: "Water";
|
|
128
|
-
readonly group: "Move the image";
|
|
129
|
-
readonly description: "Soft ripples refract the image and settle after your stroke.";
|
|
130
|
-
}, {
|
|
131
|
-
readonly value: "silk";
|
|
132
|
-
readonly label: "Silk";
|
|
133
|
-
readonly group: "Move the image";
|
|
134
|
-
readonly description: "Directional folds follow the movement of your hand.";
|
|
135
|
-
}, {
|
|
136
|
-
readonly value: "vortex";
|
|
137
|
-
readonly label: "Vortex";
|
|
138
|
-
readonly group: "Move the image";
|
|
139
|
-
readonly description: "A swirling wake curls through the image.";
|
|
140
|
-
}, {
|
|
141
|
-
readonly value: "magnetic";
|
|
142
|
-
readonly label: "Magnetic Pull";
|
|
143
|
-
readonly group: "Move the image";
|
|
144
|
-
readonly description: "The image gathers toward your stroke, then relaxes.";
|
|
145
|
-
}, {
|
|
146
|
-
readonly value: "scatter";
|
|
147
|
-
readonly label: "Scatter";
|
|
148
|
-
readonly group: "Move the image";
|
|
149
|
-
readonly description: "A textured outward scatter settles behind your cursor.";
|
|
150
|
-
}, {
|
|
151
|
-
readonly value: "elastic";
|
|
152
|
-
readonly label: "Elastic";
|
|
153
|
-
readonly group: "Move the image";
|
|
154
|
-
readonly description: "Push the image with your stroke; it recoils and springs back into place.";
|
|
155
|
-
}, {
|
|
156
|
-
readonly value: "rake";
|
|
157
|
-
readonly label: "Rake";
|
|
158
|
-
readonly group: "Move the image";
|
|
159
|
-
readonly description: "Comb the image into alternating ribbons that glide back into alignment.";
|
|
160
|
-
}, {
|
|
161
|
-
readonly value: "lens";
|
|
162
|
-
readonly label: "Lens wake";
|
|
163
|
-
readonly group: "Move the image";
|
|
164
|
-
readonly description: "A soft magnifying wake brings details closer, then relaxes back into focus.";
|
|
165
|
-
}, {
|
|
166
|
-
readonly value: "smudge";
|
|
167
|
-
readonly label: "Smudge";
|
|
168
|
-
readonly group: "Move the image";
|
|
169
|
-
readonly description: "Drag the image in the direction of your stroke; a smooth, lingering pull settles without a bounce.";
|
|
170
|
-
}];
|
|
171
|
-
type SurfaceHover = typeof SURFACE_HOVERS[number]['value'];
|
|
172
|
-
|
|
173
|
-
export { type AmbientMotion as A, MOTION_STYLES as M, type SurfaceHover as S, SURFACE_HOVERS as a };
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
type AmbientMotion = 'none' | 'caustics' | 'current' | 'reform' | 'sheen' | 'tidal' | 'grain' | 'parallax' | 'weave' | 'print' | 'trace' | 'relight' | 'shimmer' | 'breeze' | 'unfold';
|
|
2
|
-
declare const MOTION_STYLES: readonly [{
|
|
3
|
-
readonly value: "none";
|
|
4
|
-
readonly mode: "none";
|
|
5
|
-
readonly group: "Still";
|
|
6
|
-
readonly label: "Off";
|
|
7
|
-
readonly description: "Keep the image still. Hover stays available.";
|
|
8
|
-
}, {
|
|
9
|
-
readonly value: "caustics";
|
|
10
|
-
readonly mode: "caustics";
|
|
11
|
-
readonly group: "Light and texture";
|
|
12
|
-
readonly label: "Caustics";
|
|
13
|
-
readonly description: "Soft ribbons of light travel across a stationary character grid.";
|
|
14
|
-
}, {
|
|
15
|
-
readonly value: "current";
|
|
16
|
-
readonly mode: "current";
|
|
17
|
-
readonly group: "Flow and depth";
|
|
18
|
-
readonly label: "Slow Current";
|
|
19
|
-
readonly description: "A gentle flow through the image, with steady edges.";
|
|
20
|
-
}, {
|
|
21
|
-
readonly value: "reform";
|
|
22
|
-
readonly mode: "reform";
|
|
23
|
-
readonly group: "Rebuild";
|
|
24
|
-
readonly label: "Reveal & Reform";
|
|
25
|
-
readonly description: "Disperse, gather, then hold the complete image.";
|
|
26
|
-
}, {
|
|
27
|
-
readonly value: "sheen";
|
|
28
|
-
readonly mode: "sheen";
|
|
29
|
-
readonly group: "Light and texture";
|
|
30
|
-
readonly label: "Sheen";
|
|
31
|
-
readonly description: "A broad diagonal light sweep; characters stay anchored.";
|
|
32
|
-
}, {
|
|
33
|
-
readonly value: "tidal";
|
|
34
|
-
readonly mode: "tidal";
|
|
35
|
-
readonly group: "Flow and depth";
|
|
36
|
-
readonly label: "Tidal Rings";
|
|
37
|
-
readonly description: "Concentric currents travel outward, with protected edges.";
|
|
38
|
-
}, {
|
|
39
|
-
readonly value: "grain";
|
|
40
|
-
readonly mode: "grain";
|
|
41
|
-
readonly group: "Light and texture";
|
|
42
|
-
readonly label: "Living Grain";
|
|
43
|
-
readonly description: "Slow, individually phased tonal changes on a stationary grid.";
|
|
44
|
-
}, {
|
|
45
|
-
readonly value: "parallax";
|
|
46
|
-
readonly mode: "parallax";
|
|
47
|
-
readonly group: "Flow and depth";
|
|
48
|
-
readonly label: "Parallax";
|
|
49
|
-
readonly description: "A shallow, continuous drift through the image, with the edges held in place.";
|
|
50
|
-
}, {
|
|
51
|
-
readonly value: "weave";
|
|
52
|
-
readonly mode: "weave";
|
|
53
|
-
readonly group: "Flow and depth";
|
|
54
|
-
readonly label: "Woven Flow";
|
|
55
|
-
readonly description: "Interlaced bands move in opposing directions, like a flexible printed fabric.";
|
|
56
|
-
}, {
|
|
57
|
-
readonly value: "print";
|
|
58
|
-
readonly mode: "print";
|
|
59
|
-
readonly group: "Rebuild";
|
|
60
|
-
readonly label: "Print Shift";
|
|
61
|
-
readonly description: "Staggered rows lift, soften and register back into the image.";
|
|
62
|
-
}, {
|
|
63
|
-
readonly value: "trace";
|
|
64
|
-
readonly mode: "trace";
|
|
65
|
-
readonly group: "Light and texture";
|
|
66
|
-
readonly label: "Contour Light";
|
|
67
|
-
readonly description: "Light follows the source image’s tonal contours; every character stays anchored.";
|
|
68
|
-
}, {
|
|
69
|
-
readonly value: "relight";
|
|
70
|
-
readonly mode: "relight";
|
|
71
|
-
readonly group: "Light and texture";
|
|
72
|
-
readonly label: "Relight";
|
|
73
|
-
readonly description: "A slow orbit of light models the image’s midtones, while the character grid stays fixed.";
|
|
74
|
-
}, {
|
|
75
|
-
readonly value: "shimmer";
|
|
76
|
-
readonly mode: "shimmer";
|
|
77
|
-
readonly group: "Light and texture";
|
|
78
|
-
readonly label: "Shimmer";
|
|
79
|
-
readonly description: "Small highlights glint at different moments. Shadows stay quiet and the image stays in place.";
|
|
80
|
-
}, {
|
|
81
|
-
readonly value: "breeze";
|
|
82
|
-
readonly mode: "breeze";
|
|
83
|
-
readonly group: "Flow and depth";
|
|
84
|
-
readonly label: "Breeze";
|
|
85
|
-
readonly description: "A traveling bend gently sways the image, like a print suspended in moving air.";
|
|
86
|
-
}, {
|
|
87
|
-
readonly value: "unfold";
|
|
88
|
-
readonly mode: "unfold";
|
|
89
|
-
readonly group: "Rebuild";
|
|
90
|
-
readonly label: "Unfold";
|
|
91
|
-
readonly description: "Narrow panels turn, soften and return to a complete image, with a readable hold between cycles.";
|
|
92
|
-
}];
|
|
93
|
-
|
|
94
|
-
/** One public catalog for the hero, studio, documentation and integrations. */
|
|
95
|
-
declare const SURFACE_HOVERS: readonly [{
|
|
96
|
-
readonly value: "none";
|
|
97
|
-
readonly label: "Off";
|
|
98
|
-
readonly group: "Still";
|
|
99
|
-
readonly description: "Keep the artwork still under the pointer.";
|
|
100
|
-
}, {
|
|
101
|
-
readonly value: "trail";
|
|
102
|
-
readonly label: "Trail";
|
|
103
|
-
readonly group: "Change characters";
|
|
104
|
-
readonly description: "A fluid wake changes character density and settles behind your cursor.";
|
|
105
|
-
}, {
|
|
106
|
-
readonly value: "dissolve";
|
|
107
|
-
readonly label: "Dissolve";
|
|
108
|
-
readonly group: "Change characters";
|
|
109
|
-
readonly description: "Erase a soft path through the characters; the image gradually reforms.";
|
|
110
|
-
}, {
|
|
111
|
-
readonly value: "contour";
|
|
112
|
-
readonly label: "Contour";
|
|
113
|
-
readonly group: "Change characters";
|
|
114
|
-
readonly description: "Fine tonal rings trace your path without moving the grid.";
|
|
115
|
-
}, {
|
|
116
|
-
readonly value: "etch";
|
|
117
|
-
readonly label: "Emboss";
|
|
118
|
-
readonly group: "Change characters";
|
|
119
|
-
readonly description: "Press a light-and-shadow impression into the characters; the grid stays fixed.";
|
|
120
|
-
}, {
|
|
121
|
-
readonly value: "ripple";
|
|
122
|
-
readonly label: "Ripple rings";
|
|
123
|
-
readonly group: "Change characters";
|
|
124
|
-
readonly description: "Expanding light-and-shadow rings follow your stroke. Faster movement excites stronger rings; the grid stays still.";
|
|
125
|
-
}, {
|
|
126
|
-
readonly value: "water";
|
|
127
|
-
readonly label: "Water";
|
|
128
|
-
readonly group: "Move the image";
|
|
129
|
-
readonly description: "Soft ripples refract the image and settle after your stroke.";
|
|
130
|
-
}, {
|
|
131
|
-
readonly value: "silk";
|
|
132
|
-
readonly label: "Silk";
|
|
133
|
-
readonly group: "Move the image";
|
|
134
|
-
readonly description: "Directional folds follow the movement of your hand.";
|
|
135
|
-
}, {
|
|
136
|
-
readonly value: "vortex";
|
|
137
|
-
readonly label: "Vortex";
|
|
138
|
-
readonly group: "Move the image";
|
|
139
|
-
readonly description: "A swirling wake curls through the image.";
|
|
140
|
-
}, {
|
|
141
|
-
readonly value: "magnetic";
|
|
142
|
-
readonly label: "Magnetic Pull";
|
|
143
|
-
readonly group: "Move the image";
|
|
144
|
-
readonly description: "The image gathers toward your stroke, then relaxes.";
|
|
145
|
-
}, {
|
|
146
|
-
readonly value: "scatter";
|
|
147
|
-
readonly label: "Scatter";
|
|
148
|
-
readonly group: "Move the image";
|
|
149
|
-
readonly description: "A textured outward scatter settles behind your cursor.";
|
|
150
|
-
}, {
|
|
151
|
-
readonly value: "elastic";
|
|
152
|
-
readonly label: "Elastic";
|
|
153
|
-
readonly group: "Move the image";
|
|
154
|
-
readonly description: "Push the image with your stroke; it recoils and springs back into place.";
|
|
155
|
-
}, {
|
|
156
|
-
readonly value: "rake";
|
|
157
|
-
readonly label: "Rake";
|
|
158
|
-
readonly group: "Move the image";
|
|
159
|
-
readonly description: "Comb the image into alternating ribbons that glide back into alignment.";
|
|
160
|
-
}, {
|
|
161
|
-
readonly value: "lens";
|
|
162
|
-
readonly label: "Lens wake";
|
|
163
|
-
readonly group: "Move the image";
|
|
164
|
-
readonly description: "A soft magnifying wake brings details closer, then relaxes back into focus.";
|
|
165
|
-
}, {
|
|
166
|
-
readonly value: "smudge";
|
|
167
|
-
readonly label: "Smudge";
|
|
168
|
-
readonly group: "Move the image";
|
|
169
|
-
readonly description: "Drag the image in the direction of your stroke; a smooth, lingering pull settles without a bounce.";
|
|
170
|
-
}];
|
|
171
|
-
type SurfaceHover = typeof SURFACE_HOVERS[number]['value'];
|
|
172
|
-
|
|
173
|
-
export { type AmbientMotion as A, MOTION_STYLES as M, type SurfaceHover as S, SURFACE_HOVERS as a };
|