vireglass 1.0.0 → 2.0.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 +83 -9
- package/dist/adapters-BfeAopGO.d.ts +154 -0
- package/dist/adapters-DugC6Qri.d.cts +154 -0
- package/dist/chunk-3PGYF2NK.js +360 -0
- package/dist/chunk-3PGYF2NK.js.map +1 -0
- package/dist/{chunk-HF2AWZEZ.js → chunk-IQOBZGCF.js} +210 -606
- package/dist/chunk-IQOBZGCF.js.map +1 -0
- package/dist/chunk-JF3FK254.js +377 -0
- package/dist/chunk-JF3FK254.js.map +1 -0
- package/dist/chunk-P2ZOODXD.js +58 -0
- package/dist/chunk-P2ZOODXD.js.map +1 -0
- package/dist/chunk-TTOKBARR.js +456 -0
- package/dist/chunk-TTOKBARR.js.map +1 -0
- package/dist/dom.cjs +2055 -0
- package/dist/dom.cjs.map +1 -0
- package/dist/dom.d.cts +347 -0
- package/dist/dom.d.ts +347 -0
- package/dist/dom.js +1082 -0
- package/dist/dom.js.map +1 -0
- package/dist/geometry-GvXtt-_S.d.ts +105 -0
- package/dist/geometry-RhKd7CM5.d.cts +105 -0
- package/dist/group-model-8u4GKrUu.d.cts +194 -0
- package/dist/group-model-vYSmEVia.d.ts +194 -0
- package/dist/index.cjs +737 -244
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +122 -113
- package/dist/index.d.ts +122 -113
- package/dist/index.js +6 -277
- package/dist/index.js.map +1 -1
- package/dist/law.cjs +478 -0
- package/dist/law.cjs.map +1 -0
- package/dist/law.d.cts +543 -0
- package/dist/law.d.ts +543 -0
- package/dist/law.js +3 -0
- package/dist/law.js.map +1 -0
- package/dist/{material-CkUHUBoy.d.cts → material-CnUmdKg1.d.cts} +1 -1
- package/dist/{material-CkUHUBoy.d.ts → material-CnUmdKg1.d.ts} +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/reference.cjs +221 -0
- package/dist/reference.cjs.map +1 -0
- package/dist/reference.d.cts +183 -0
- package/dist/reference.d.ts +183 -0
- package/dist/reference.js +197 -0
- package/dist/reference.js.map +1 -0
- package/dist/web/index.cjs +247 -165
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.d.cts +4 -29
- package/dist/web/index.d.ts +4 -29
- package/dist/web/index.js +5 -90
- package/dist/web/index.js.map +1 -1
- package/docs/adr-001-rendering.md +288 -0
- package/docs/architecture.md +161 -0
- package/docs/benchmarks.md +191 -0
- package/docs/dom.md +160 -0
- package/docs/law.md +65 -0
- package/docs/material-lab.md +799 -0
- package/docs/platform-parity.md +266 -0
- package/docs/reference.md +397 -0
- package/package.json +24 -3
- package/src/accent.ts +35 -0
- package/src/accessibility.ts +30 -16
- package/src/adapters.ts +71 -3
- package/src/appear.ts +45 -0
- package/src/concentric.ts +66 -0
- package/src/dom/body.ts +98 -0
- package/src/dom/displacement.ts +163 -0
- package/src/dom/group.ts +124 -0
- package/src/dom/index.ts +739 -0
- package/src/dom/map-cache.ts +37 -0
- package/src/dom/nesting.ts +32 -0
- package/src/dom/preferences.ts +53 -0
- package/src/dom/probe.ts +163 -0
- package/src/dom/rim.ts +103 -0
- package/src/dom/scroll-edge.ts +106 -0
- package/src/dom/shadow.ts +56 -0
- package/src/dom/spectral-map.ts +102 -0
- package/src/dom/support.ts +47 -0
- package/src/geometry.ts +41 -14
- package/src/glass-scale.ts +3 -5
- package/src/index.ts +3 -1
- package/src/law.ts +562 -0
- package/src/lens-shader.ts +53 -30
- package/src/native/glass-surface.tsx +8 -14
- package/src/native/provider.tsx +22 -2
- package/src/optics.ts +43 -62
- package/src/reference.ts +9 -0
- package/src/scroll-edge.ts +22 -7
- package/src/sdf.ts +195 -8
- package/src/shadow-tint.ts +23 -0
- package/src/spectral.ts +110 -0
- package/src/surface-shader.ts +8 -6
- package/src/touch-response.ts +42 -27
- package/src/web/index.ts +0 -1
- package/dist/adapters-BPB0D5nr.d.cts +0 -357
- package/dist/adapters-BgSc-smX.d.ts +0 -357
- package/dist/chunk-HF2AWZEZ.js.map +0 -1
|
@@ -1,357 +0,0 @@
|
|
|
1
|
-
import { V as VireGlassOptics, n as VireGlassDebugMode } from './material-CkUHUBoy.cjs';
|
|
2
|
-
|
|
3
|
-
/** Glass shape in dp. Circle and capsule are special cases of a rounded rectangle. */
|
|
4
|
-
type VireGlassGeometry = {
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
cornerRadius: number;
|
|
8
|
-
};
|
|
9
|
-
declare const circleGeometry: (size: number) => VireGlassGeometry;
|
|
10
|
-
declare const capsuleGeometry: (width: number, height: number) => VireGlassGeometry;
|
|
11
|
-
declare const roundedRectGeometry: (width: number, height: number, cornerRadius: number) => VireGlassGeometry;
|
|
12
|
-
declare const halfMinDp: (g: VireGlassGeometry) => number;
|
|
13
|
-
/** Viewport margin for a drop that overshoots past the finger: a fraction of the element's half
|
|
14
|
-
* size beyond the drag travel itself. The drop overshoots the body by no more than `dragLimit`,
|
|
15
|
-
* and stitching adds smoothing on top of that — this term covers it too. */
|
|
16
|
-
declare const MAX_STRETCH = 0.34;
|
|
17
|
-
declare const sizeGain: (g: VireGlassGeometry) => number;
|
|
18
|
-
/** A bevel wider than this fraction of the half-size breaks the SDF: the roundings converge in
|
|
19
|
-
* the middle. */
|
|
20
|
-
declare const MAX_BEVEL_FRACTION = 0.65;
|
|
21
|
-
declare const bevelFraction: (g: VireGlassGeometry, o: VireGlassOptics) => number;
|
|
22
|
-
declare const bevelDp: (g: VireGlassGeometry, o: VireGlassOptics) => number;
|
|
23
|
-
declare const thicknessDp: (g: VireGlassGeometry, o: VireGlassOptics) => number;
|
|
24
|
-
/** Glass height right at the silhouette, a fraction of thickness: without it there's nothing at
|
|
25
|
-
* the edge to bend the ray. */
|
|
26
|
-
declare const RIM_FRACTION = 0.85;
|
|
27
|
-
declare const rimDp: (g: VireGlassGeometry, o: VireGlassOptics) => number;
|
|
28
|
-
/** Bigger element, deeper and wider shadow (M 7:14). */
|
|
29
|
-
declare const shadowReachDp: (g: VireGlassGeometry) => number;
|
|
30
|
-
/** How far the second morph shape reaches past the first one's bounds. Without this margin the
|
|
31
|
-
* fused shape gets clipped by the canvas edge and the experiment shows the wrong thing. */
|
|
32
|
-
declare function morphReachDp(g: VireGlassGeometry, morph?: {
|
|
33
|
-
offsetX: number;
|
|
34
|
-
offsetY: number;
|
|
35
|
-
width: number;
|
|
36
|
-
height: number;
|
|
37
|
-
smoothing: number;
|
|
38
|
-
}): number;
|
|
39
|
-
/**
|
|
40
|
-
* Margin around the lens view on each side: beyond it, the shader has nothing to sample.
|
|
41
|
-
*
|
|
42
|
-
* FOUR things have to fit in here. The refraction sample with aberrations. The blur radius —
|
|
43
|
-
* it also samples around the point. The gather radius — the rim picks it up from outside the
|
|
44
|
-
* shape, and without the margin it goes black exactly where it should be catching the
|
|
45
|
-
* surroundings. And drag travel: the lens view moves with the finger, but its bounds don't, and
|
|
46
|
-
* the sample falls off the edge, which is how layers from under the glass leak through.
|
|
47
|
-
*/
|
|
48
|
-
declare function lensPadDp(g: VireGlassGeometry, o: VireGlassOptics, morph?: Parameters<typeof morphReachDp>[1], dragLimit?: number): number;
|
|
49
|
-
/**
|
|
50
|
-
* Margin around the surface canvas: the shadow reaches outside the shape, and dragging shifts it
|
|
51
|
-
* further still.
|
|
52
|
-
*
|
|
53
|
-
* The multiplier is smaller than the shadow's full reach: under the finger, the shader for a
|
|
54
|
-
* rising element multiplies the radius by 1.55, and the very end of that tail falls outside the
|
|
55
|
-
* margin. Left that way on purpose — at the margin's edge it's at 1.2% alpha (2.5% before the
|
|
56
|
-
* shadow was softened), and raising the multiplier means growing every surface view's area. If
|
|
57
|
-
* that tail ever shows up on a device, fix it here.
|
|
58
|
-
*/
|
|
59
|
-
declare function surfacePadDp(g: VireGlassGeometry, dragLimit?: number, morph?: Parameters<typeof morphReachDp>[1]): number;
|
|
60
|
-
declare function shadowOpacity(busy: number): number;
|
|
61
|
-
/** Same thing for platforms where the measurement flows through state: quantized coarsely, like
|
|
62
|
-
* the ambient color, otherwise every probe sample would trigger a surface repaint. */
|
|
63
|
-
declare function shadowOpacityFrom(sample: {
|
|
64
|
-
busy: number;
|
|
65
|
-
}): number;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* REFERENCE CANVASES — the set that both benches draw and that the gates run against.
|
|
69
|
-
*
|
|
70
|
-
* There used to be three kinds of canvas, each in a different place: the web bench had its own
|
|
71
|
-
* zones, the mobile lab had its own, and a third set lived inside `check-optics.mjs`, invisible
|
|
72
|
-
* to everyone else. So the gate measured one thing, the eye looked at another, and there was
|
|
73
|
-
* nothing to confirm the question "does Android differ?" against.
|
|
74
|
-
*
|
|
75
|
-
* The canvases are described as DATA, not drawing code: the canvas and the native views draw
|
|
76
|
-
* differently, but both platforms lay out the same list of layers. Everything is in dp and in
|
|
77
|
-
* fractions — fractions of the stage kept the stripes the same relative thickness on benches of
|
|
78
|
-
* different sizes.
|
|
79
|
-
*
|
|
80
|
-
* Each canvas answers for one promise of the material (`what`), and that's also the caption on
|
|
81
|
-
* the bench. A canvas can't be added to only one bench: platform parity would go back to being
|
|
82
|
-
* a matter of impression.
|
|
83
|
-
*/
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* BENCH SHAPES — shared too. Element size feeds into the optics through sizeGain: a 120 circle
|
|
87
|
-
* and a 150 circle are glass of different thickness, and screenshots from two benches on
|
|
88
|
-
* different shapes are as incomparable as on different canvases. The values match the ones the
|
|
89
|
-
* reference comparisons were shot on.
|
|
90
|
-
*/
|
|
91
|
-
declare const REFERENCE_SHAPES: {
|
|
92
|
-
circle: VireGlassGeometry;
|
|
93
|
-
capsule: VireGlassGeometry;
|
|
94
|
-
tile: VireGlassGeometry;
|
|
95
|
-
};
|
|
96
|
-
type VireGlassRefShapeName = keyof typeof REFERENCE_SHAPES;
|
|
97
|
-
/** A stripe's layer. Lightness is 0..1, sizes are dp: gray, not color (there's nothing to
|
|
98
|
-
* measure color with). */
|
|
99
|
-
type VireGlassRefLayer = {
|
|
100
|
-
readonly kind: 'flat';
|
|
101
|
-
readonly level: number;
|
|
102
|
-
}
|
|
103
|
-
/** Vertical stripes: wider than the bevel, so the body absorbs them rather than the rim. */
|
|
104
|
-
| {
|
|
105
|
-
readonly kind: 'stripes';
|
|
106
|
-
readonly level: number;
|
|
107
|
-
readonly other: number;
|
|
108
|
-
readonly periodDp: number;
|
|
109
|
-
readonly widthDp: number;
|
|
110
|
-
}
|
|
111
|
-
/** A pseudo-random checkerboard — a "cover": structure that fights the ink drawn over the glass. */
|
|
112
|
-
| {
|
|
113
|
-
readonly kind: 'checker';
|
|
114
|
-
readonly level: number;
|
|
115
|
-
readonly amp: number;
|
|
116
|
-
readonly cellDp: number;
|
|
117
|
-
}
|
|
118
|
-
/** Left and right halves at different lightness. */
|
|
119
|
-
| {
|
|
120
|
-
readonly kind: 'step';
|
|
121
|
-
readonly left: number;
|
|
122
|
-
readonly right: number;
|
|
123
|
-
}
|
|
124
|
-
/** A dark bar across the middle of the stripe — measures bulging at the rim against it. */
|
|
125
|
-
| {
|
|
126
|
-
readonly kind: 'bar';
|
|
127
|
-
readonly level: number;
|
|
128
|
-
readonly barLevel: number;
|
|
129
|
-
readonly thicknessDp: number;
|
|
130
|
-
}
|
|
131
|
-
/** A fine grid: any lens distortion shows up on a straight line right away. */
|
|
132
|
-
| {
|
|
133
|
-
readonly kind: 'grid';
|
|
134
|
-
readonly level: number;
|
|
135
|
-
readonly lineLevel: number;
|
|
136
|
-
readonly stepDp: number;
|
|
137
|
-
}
|
|
138
|
-
/** A stepped gradient. Steps, not a smooth fill: the native views can't draw a gradient without
|
|
139
|
-
* an image. */
|
|
140
|
-
| {
|
|
141
|
-
readonly kind: 'gradient';
|
|
142
|
-
readonly from: number;
|
|
143
|
-
readonly to: number;
|
|
144
|
-
readonly steps: number;
|
|
145
|
-
};
|
|
146
|
-
type VireGlassRefBand = {
|
|
147
|
-
/** Stripe thickness in dp. The sum over a canvas is `REFERENCE_SCENE_HEIGHT`. */
|
|
148
|
-
readonly heightDp: number;
|
|
149
|
-
readonly layer: VireGlassRefLayer;
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* Canvas size IN DP, one for all. Height is kept within the mobile lab's zone (0.42 of the
|
|
153
|
-
* screen height), width within the narrowest phone (360 dp) with room to spare for the
|
|
154
|
-
* surrounding field.
|
|
155
|
-
*
|
|
156
|
-
* Width matters NO LESS than height. The pattern is measured from the edge of the canvas, so on
|
|
157
|
-
* a canvas spanning the full width of the stage, the phase of the pattern under the element
|
|
158
|
-
* depended on screen width: 24 dp-period stripes landed under the center differently on a 406 dp
|
|
159
|
-
* phone versus a fifteen-hundred-pixel canvas, and the checkerboard put an entirely different
|
|
160
|
-
* cell arrangement under the element. A fixed-size panel removes this whole class of discrepancy
|
|
161
|
-
* at once.
|
|
162
|
-
*/
|
|
163
|
-
declare const REFERENCE_SCENE_WIDTH = 336;
|
|
164
|
-
declare const REFERENCE_SCENE_HEIGHT = 252;
|
|
165
|
-
/** The field around the canvas. Deliberately off the stripe levels and not gray: it shows where
|
|
166
|
-
* the reference area ends, so its border can't be mistaken for a stripe in a screenshot. */
|
|
167
|
-
declare const REFERENCE_SURROUND = "#3c1f4a";
|
|
168
|
-
/**
|
|
169
|
-
* Where the element sits on the canvas — dp from the panel's top-left corner. Position is as much
|
|
170
|
-
* a part of the contract as canvas size and shape: a bench that parks the element its own way
|
|
171
|
-
* shows it over DIFFERENT stripes, and there's nothing left to compare screenshots against.
|
|
172
|
-
*
|
|
173
|
-
* This has drifted before: the web bench centered the element within the VISIBLE area, while the
|
|
174
|
-
* canvas was drawn centered on the full canvas element — with the control panel open, those are
|
|
175
|
-
* two different points.
|
|
176
|
-
*/
|
|
177
|
-
declare const REFERENCE_PIECE_AT: {
|
|
178
|
-
readonly xDp: number;
|
|
179
|
-
readonly yDp: number;
|
|
180
|
-
};
|
|
181
|
-
type VireGlassRefScene = {
|
|
182
|
-
readonly name: string;
|
|
183
|
-
/** What this canvas checks. Also the caption on the bench — otherwise the set turns to mush. */
|
|
184
|
-
readonly what: string;
|
|
185
|
-
/** Stripes at a given backdrop lightness: benches call with `level`, the gate sweeps the whole range. */
|
|
186
|
-
readonly bands: (level: number) => readonly VireGlassRefBand[];
|
|
187
|
-
/** Default lightness. Canvases that don't need it simply ignore it. */
|
|
188
|
-
readonly level: number;
|
|
189
|
-
/**
|
|
190
|
-
* Whether the canvas is fit for NUMERIC platform comparison. A lightness profile needs a
|
|
191
|
-
* backdrop that's uniform along the row; on a periodic grid of pixel-wide lines, the average
|
|
192
|
-
* is determined by how the platform rasterizes that line, not by the material. Such a canvas
|
|
193
|
-
* stays in the set — distortion of a straight line is visible to the eye at a glance — but it's
|
|
194
|
-
* excluded from the comparison table.
|
|
195
|
-
*/
|
|
196
|
-
readonly measurable?: false;
|
|
197
|
-
};
|
|
198
|
-
declare const REFERENCE_SCENES: readonly VireGlassRefScene[];
|
|
199
|
-
type VireGlassRefSceneName = (typeof REFERENCE_SCENES)[number]['name'];
|
|
200
|
-
declare const referenceScene: (name: string) => VireGlassRefScene;
|
|
201
|
-
/** Lightness to hex gray. One conversion for both platforms — otherwise they'd drift apart. */
|
|
202
|
-
declare const refGray: (level: number) => string;
|
|
203
|
-
/**
|
|
204
|
-
* Checkerboard cells as POSITIONS, not as drawing: the canvas loops over them, the native views
|
|
205
|
-
* lay them out as a list, and both platforms get the exact same arrangement. The generator is
|
|
206
|
-
* its own and deliberately simple — `Math.random` would give two platforms different canvases.
|
|
207
|
-
*/
|
|
208
|
-
declare const refCheckerCells: (layer: Extract<VireGlassRefLayer, {
|
|
209
|
-
kind: "checker";
|
|
210
|
-
}>, widthDp: number, heightDp: number) => readonly {
|
|
211
|
-
readonly xDp: number;
|
|
212
|
-
readonly yDp: number;
|
|
213
|
-
readonly level: number;
|
|
214
|
-
}[];
|
|
215
|
-
/** Gradient steps — also positions: the same list for the canvas and for the native views. */
|
|
216
|
-
declare const refGradientSteps: (layer: Extract<VireGlassRefLayer, {
|
|
217
|
-
kind: "gradient";
|
|
218
|
-
}>) => readonly number[];
|
|
219
|
-
|
|
220
|
-
/** Smooth union with a second shape — bench morphing experiment only. */
|
|
221
|
-
type VireGlassMorph = {
|
|
222
|
-
offsetX: number;
|
|
223
|
-
offsetY: number;
|
|
224
|
-
width: number;
|
|
225
|
-
height: number;
|
|
226
|
-
cornerRadius: number;
|
|
227
|
-
/** Seam smoothing radius in dp; 0 turns the second shape off. */
|
|
228
|
-
smoothing: number;
|
|
229
|
-
};
|
|
230
|
-
/** Surface response to a finger: the field around the touch point deforms, not the shape's
|
|
231
|
-
* bounding box (`vgTouchWarp` in `sdf.ts`). Lengths in dp; `radius` = 0 turns the response off
|
|
232
|
-
* entirely. */
|
|
233
|
-
type VireGlassTouch = {
|
|
234
|
-
x: number;
|
|
235
|
-
y: number;
|
|
236
|
-
pullX: number;
|
|
237
|
-
pullY: number;
|
|
238
|
-
press: number;
|
|
239
|
-
radius: number;
|
|
240
|
-
waveAmp: number;
|
|
241
|
-
wavePhase: number;
|
|
242
|
-
};
|
|
243
|
-
/** Tinted glass for the primary action (M 16:08). Color is RGB 0…1. */
|
|
244
|
-
type VireGlassAccent = {
|
|
245
|
-
color: readonly [number, number, number];
|
|
246
|
-
amount?: number;
|
|
247
|
-
};
|
|
248
|
-
/** Default tint fraction: the color reads, but content beneath it is still visible. */
|
|
249
|
-
declare const ACCENT_AMOUNT = 0.8;
|
|
250
|
-
/** Magnification at the flat center. Kept separate from the uniform channel: it's also used by
|
|
251
|
-
* the fallback below Android 13, where there's no RuntimeShader and only an affine magnifier is
|
|
252
|
-
* left. */
|
|
253
|
-
declare const lensMagnify: (o: VireGlassOptics) => number;
|
|
254
|
-
/** Props for the native view. Besides the uniform channel, only what the view uses itself lives
|
|
255
|
-
* here: the shader source and the visible glass's size (the probe rectangle is taken from it). */
|
|
256
|
-
declare function toLensProps(optics: VireGlassOptics, geometry: VireGlassGeometry, density: number, options?: {
|
|
257
|
-
debug?: VireGlassDebugMode;
|
|
258
|
-
morph?: VireGlassMorph;
|
|
259
|
-
/** Third shape of the fused body; a zero size turns it off. */
|
|
260
|
-
morph2?: VireGlassMorph;
|
|
261
|
-
groupProbe?: number[];
|
|
262
|
-
touch?: VireGlassTouch;
|
|
263
|
-
/** Progress fraction, 0…1: to the left of the boundary the element is active. `undefined` means no progress. */
|
|
264
|
-
progress?: number;
|
|
265
|
-
/** Key light direction in screen space; defaults to the light at rest. */
|
|
266
|
-
light?: readonly [number, number];
|
|
267
|
-
/** 0…1: the lens builds up as the element appears — instead of a plain fade. */
|
|
268
|
-
appear?: number;
|
|
269
|
-
/** Tint for the primary action: the glass color and the fraction it lays over the content. */
|
|
270
|
-
accent?: VireGlassAccent;
|
|
271
|
-
}): {
|
|
272
|
-
uniformNames: string[];
|
|
273
|
-
uniformSizes: number[];
|
|
274
|
-
uniformValues: number[];
|
|
275
|
-
shaderSource: string;
|
|
276
|
-
glassWidth: number;
|
|
277
|
-
glassHeight: number;
|
|
278
|
-
};
|
|
279
|
-
/** Static part of the surface uniforms. Dynamics (gesture, press, light) get mixed in inside the
|
|
280
|
-
* component's worklet — the adapter must stay an ordinary function. */
|
|
281
|
-
declare function toSurfaceUniforms(optics: VireGlassOptics, geometry: VireGlassGeometry, options?: {
|
|
282
|
-
debug?: VireGlassDebugMode;
|
|
283
|
-
morph?: VireGlassMorph;
|
|
284
|
-
/** Third shape of the fused body; a zero size turns it off. */
|
|
285
|
-
morph2?: VireGlassMorph;
|
|
286
|
-
dragLimit?: number;
|
|
287
|
-
shadow?: number;
|
|
288
|
-
/** Average ambient color around the element: light from it bleeds into the shadow (reference 219 @8:22). */
|
|
289
|
-
ambient?: readonly [number, number, number];
|
|
290
|
-
/** The lens draws the glass body — the surface is left with the highlight, shadow and icon. */
|
|
291
|
-
bodyInLens?: boolean;
|
|
292
|
-
touch?: VireGlassTouch;
|
|
293
|
-
/** Progress fraction, 0…1: to the left of the boundary the element is active. `undefined` means no progress. */
|
|
294
|
-
progress?: number;
|
|
295
|
-
/** 0…1: the element is appearing — shadow and ink build up together with the lens. */
|
|
296
|
-
appear?: number;
|
|
297
|
-
/** 0 — the element sinks in under the finger, 1 — it rises into glass (reference §5). */
|
|
298
|
-
lift?: number;
|
|
299
|
-
}): {
|
|
300
|
-
u_center: number[];
|
|
301
|
-
u_halfSize: number[];
|
|
302
|
-
u_corner: number;
|
|
303
|
-
u_bevel: number;
|
|
304
|
-
u_thickness: number;
|
|
305
|
-
u_morphOffset: number[];
|
|
306
|
-
u_morphHalf: number[];
|
|
307
|
-
u_morphCorner: number;
|
|
308
|
-
u_morphK: number;
|
|
309
|
-
u_morph2Offset: number[];
|
|
310
|
-
u_morph2Half: number[];
|
|
311
|
-
u_morph2Corner: number;
|
|
312
|
-
u_edgeDensity: number;
|
|
313
|
-
u_dispersion: number;
|
|
314
|
-
u_refraction: number;
|
|
315
|
-
u_tint: number[];
|
|
316
|
-
u_shadow: number;
|
|
317
|
-
u_ambient: readonly [number, number, number];
|
|
318
|
-
u_shadowReach: number;
|
|
319
|
-
u_touch: number[];
|
|
320
|
-
u_pull: number[];
|
|
321
|
-
u_touchPress: number;
|
|
322
|
-
u_touchRadius: number;
|
|
323
|
-
u_wave: number[];
|
|
324
|
-
u_presence: number;
|
|
325
|
-
u_progress: number;
|
|
326
|
-
u_appear: number;
|
|
327
|
-
u_lift: number;
|
|
328
|
-
u_debug: number;
|
|
329
|
-
};
|
|
330
|
-
/**
|
|
331
|
-
* Surface fields that are LENGTHS: the adapter's contract is specified in dp, and on the web each
|
|
332
|
-
* one of them has to be multiplied by screen density. The list lives here rather than in the
|
|
333
|
-
* renderer, where it used to be a dozen and a half manual multiplications in a row: a missed
|
|
334
|
-
* field there was only caught by eye, and the miss isn't visible everywhere — at density 1,
|
|
335
|
-
* multiplying is indistinguishable from not doing it.
|
|
336
|
-
*/
|
|
337
|
-
type SurfaceUniforms = ReturnType<typeof toSurfaceUniforms>;
|
|
338
|
-
declare const SURFACE_LENGTH_UNIFORMS: readonly ["u_halfSize", "u_corner", "u_bevel", "u_morphOffset", "u_morphHalf", "u_morphCorner", "u_morphK", "u_morph2Offset", "u_morph2Half", "u_morph2Corner", "u_shadowReach", "u_touch", "u_pull", "u_touchRadius"];
|
|
339
|
-
/**
|
|
340
|
-
* Surface uniforms in device pixels. Android draws in dp and calls the adapter as-is; the web
|
|
341
|
-
* needs this conversion. `u_center` isn't part of it: the renderer knows the element's center on
|
|
342
|
-
* its own.
|
|
343
|
-
*/
|
|
344
|
-
declare function toDeviceSurfaceUniforms(raw: SurfaceUniforms, density: number): SurfaceUniforms;
|
|
345
|
-
/** Key light direction in screen coordinates, for when the orientation response is off. */
|
|
346
|
-
declare const REST_LIGHT: readonly [number, number];
|
|
347
|
-
/** Uniforms the component mixes in inside the worklet (press, active, light direction) and via
|
|
348
|
-
* the icon layer. Listed here so a test can check the shader contract's completeness without
|
|
349
|
-
* importing the component itself (it pulls in Skia and doesn't come up in a node environment). */
|
|
350
|
-
declare const DYNAMIC_UNIFORMS: readonly ["u_press", "u_active"];
|
|
351
|
-
declare const ICON_UNIFORMS: readonly ["u_iconOn", "u_iconScale", "u_inkIdle", "u_inkActive"];
|
|
352
|
-
/** App-colored overlay layer on the glass. The `u_overlay` sampler shares its contract with the
|
|
353
|
-
* ink mask and is sampled at the SAME coordinate — otherwise deformation would carry them apart. */
|
|
354
|
-
declare const OVERLAY_UNIFORMS: readonly ["u_overlayOn"];
|
|
355
|
-
declare function morphBetween(a: VireGlassGeometry, b: VireGlassGeometry, offsetX: number, offsetY: number, t: number): VireGlassMorph | undefined;
|
|
356
|
-
|
|
357
|
-
export { ACCENT_AMOUNT as A, refCheckerCells as B, refGradientSteps as C, DYNAMIC_UNIFORMS as D, refGray as E, referenceScene as F, rimDp as G, roundedRectGeometry as H, ICON_UNIFORMS as I, shadowOpacity as J, shadowOpacityFrom as K, shadowReachDp as L, MAX_BEVEL_FRACTION as M, sizeGain as N, OVERLAY_UNIFORMS as O, surfacePadDp as P, thicknessDp as Q, REFERENCE_PIECE_AT as R, SURFACE_LENGTH_UNIFORMS as S, toDeviceSurfaceUniforms as T, toLensProps as U, type VireGlassAccent as V, toSurfaceUniforms as W, MAX_STRETCH as a, REFERENCE_SCENES as b, REFERENCE_SCENE_HEIGHT as c, REFERENCE_SCENE_WIDTH as d, REFERENCE_SHAPES as e, REFERENCE_SURROUND as f, REST_LIGHT as g, RIM_FRACTION as h, type SurfaceUniforms as i, type VireGlassGeometry as j, type VireGlassMorph as k, type VireGlassRefBand as l, type VireGlassRefLayer as m, type VireGlassRefScene as n, type VireGlassRefSceneName as o, type VireGlassRefShapeName as p, type VireGlassTouch as q, bevelDp as r, bevelFraction as s, capsuleGeometry as t, circleGeometry as u, halfMinDp as v, lensMagnify as w, lensPadDp as x, morphBetween as y, morphReachDp as z };
|