@ng-native/fabric 0.8.0 → 0.9.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/dist/css.d.ts +51 -3
- package/dist/css.js +194 -40
- package/dist/css.js.map +1 -1
- package/dist/engine.d.ts +61 -9
- package/dist/engine.js +238 -50
- package/dist/engine.js.map +1 -1
- package/dist/transition.d.ts +11 -0
- package/dist/transition.js.map +1 -1
- package/package.json +1 -1
package/dist/transition.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* knows a value changed at all. The cost is a commit per frame, which is the same cost a
|
|
11
11
|
* JavaScript-driven `Animated` value has.
|
|
12
12
|
*/
|
|
13
|
+
import type { DeferredDeclaration } from './css.ts';
|
|
13
14
|
/** What the CSS compiler emits per transitioning property. Durations are in milliseconds. */
|
|
14
15
|
export interface TransitionSpec {
|
|
15
16
|
readonly duration: number;
|
|
@@ -130,6 +131,11 @@ export interface Keyframe {
|
|
|
130
131
|
readonly declarations: Record<string, unknown>;
|
|
131
132
|
/** The `animation-timing-function` written in this keyframe, easing it to the next. */
|
|
132
133
|
readonly easing?: readonly number[];
|
|
134
|
+
/**
|
|
135
|
+
* The declarations that wait for the element playing the frame, a `var()` it sets: settled by
|
|
136
|
+
* the engine as it plays.
|
|
137
|
+
*/
|
|
138
|
+
readonly deferred?: readonly DeferredDeclaration[];
|
|
133
139
|
}
|
|
134
140
|
export interface RunningAnimation {
|
|
135
141
|
spec: AnimationSpec;
|
|
@@ -155,6 +161,11 @@ export interface RunningAnimation {
|
|
|
155
161
|
};
|
|
156
162
|
/** The properties left out of what native plays, as a rule declared them `!important`. */
|
|
157
163
|
pinned?: readonly string[];
|
|
164
|
+
/**
|
|
165
|
+
* Set while native moves the view to its last frame by a layout animation, with no frame of it
|
|
166
|
+
* in JavaScript. `values` is then that last frame, which is what the view is committed with.
|
|
167
|
+
*/
|
|
168
|
+
laid?: true;
|
|
158
169
|
}
|
|
159
170
|
/**
|
|
160
171
|
* Build one track per property the frames touch.
|
package/dist/transition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * CSS transitions, the runtime half.\n *\n * React Native has no CSS animation of any kind, so a `transition` in a stylesheet is compiled to\n * a spec and driven here: the engine notices a transitioning property change between commits,\n * holds the old value, and interpolates towards the new one as the clock advances.\n *\n * This runs in JavaScript, unlike `AnimatedStyle`, which can hand a whole animation to the native\n * driver. It has to: a transition is a reaction to the cascade recomputing, and only this side\n * knows a value changed at all. The cost is a commit per frame, which is the same cost a\n * JavaScript-driven `Animated` value has.\n */\n\n/** What the CSS compiler emits per transitioning property. Durations are in milliseconds. */\nexport interface TransitionSpec {\n readonly duration: number;\n readonly delay: number;\n /** The four control points of the timing curve; a keyword is resolved at build time. */\n readonly easing: readonly number[];\n}\n\n/** Transitions of one element native plays on one clock: what stops it, and which they are. */\nexport interface EasedNatively {\n stop(): void;\n readonly keys: readonly string[];\n}\n\nexport interface Transition {\n from: unknown;\n to: unknown;\n /** When the interpolation starts, delay already added. */\n start: number;\n duration: number;\n easing: readonly number[];\n /** What the node paints right now. Also the value a redirected transition starts from. */\n current: unknown;\n /**\n * The clock native plays it on, with the others started beside it, while it does. Nothing of\n * it runs in JavaScript then, and `current` is where it started from.\n */\n native?: EasedNatively;\n /**\n * Committed where it ends, with native moving the view there by a layout animation: see\n * `layEased` in the engine. `current` is where it started from.\n */\n laid?: true;\n done: boolean;\n /**\n * The value a change back is a reversal to, and the share of the full duration this one takes:\n * CSS's reversing-adjusted start value and reversing shortening factor. See `redirect`.\n */\n reversingFrom: unknown;\n shortening: number;\n}\n\n/**\n * A cubic bezier's y at a given x, by bisection.\n *\n * Newton-Raphson converges faster and is what browsers use, but it needs a derivative and a\n * fallback for the flat regions of a curve like `ease-in`. Twenty bisection steps land within\n * 1e-6 on any curve, which is finer than a pixel, and the whole thing is eight lines.\n */\nconst curve = (t: number, a: number, b: number): number => {\n const u = 1 - t;\n return 3 * u * u * t * a + 3 * u * t * t * b + t * t * t;\n};\n\n/** A linear curve is both the default and by far the most common, so it skips the search. */\nconst isLinear = (p: readonly number[]): boolean =>\n p[0] === 0 && p[1] === 0 && p[2] === 1 && p[3] === 1;\n\nexport function bezier(points: readonly number[], x: number): number {\n if (x <= 0) return 0;\n if (x >= 1) return 1;\n if (isLinear(points)) return x;\n\n const [x1 = 0, y1 = 0, x2 = 1, y2 = 1] = points;\n let low = 0;\n let high = 1;\n let t = x;\n for (let i = 0; i < 20; i++) {\n t = (low + high) / 2;\n if (curve(t, x1, x2) < x) low = t;\n else high = t;\n }\n return curve(t, y1, y2);\n}\n\nconst HEX = /^#([0-9a-f]{3,8})$/i;\nconst RGB = /^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)(?:[\\s,/]+([\\d.]+))?\\s*\\)$/i;\n\n/** `hsl()` and `hwb()`, with commas or without: a hue, two percentages, and an alpha if any. */\nconst HUED =\n /^(hsla?|hwb)\\(\\s*(-?[\\d.]+)(deg|grad|rad|turn)?[\\s,]+([\\d.]+)%[\\s,]+([\\d.]+)%(?:[\\s,/]+([\\d.]+)(%)?)?\\s*\\)$/i;\n/** How many degrees one of each hue unit is. */\nexport const HUE_DEGREES: Record<string, number> = {\n deg: 1,\n grad: 0.9,\n rad: 180 / Math.PI,\n turn: 360,\n};\n\ntype Channels = [number, number, number];\n\n/** `hsl()`'s hue in degrees and its saturation and lightness as fractions, as sRGB from 0 to 1. */\nexport function hslToSrgb([h, s, l]: Channels): Channels {\n const hue = Number.isFinite(h) ? ((h % 360) + 360) % 360 : 0;\n const f = (n: number) => {\n const k = (n + hue / 30) % 12;\n return l - s * Math.min(l, 1 - l) * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n };\n return [f(0), f(8), f(4)];\n}\n\n/** `hwb()`'s hue in degrees and its whiteness and blackness as fractions, as sRGB from 0 to 1. */\nexport function hwbToSrgb([h, w, b]: Channels): Channels {\n if (w + b >= 1) {\n const grey = w / (w + b);\n return [grey, grey, grey];\n }\n return hslToSrgb([h, 1, 0.5]).map((c) => c * (1 - w - b) + w) as Channels;\n}\n\n/** A colour written as `hsl()` or `hwb()`, as `[r, g, b, a]`. */\nfunction parseHued(value: string): [number, number, number, number] | null {\n const parts = HUED.exec(value);\n if (!parts) return null;\n const [, name, hue, unit = 'deg', first, second, alpha, percent] = parts;\n const convert = name!.toLowerCase() === 'hwb' ? hwbToSrgb : hslToSrgb;\n const [r, g, b] = convert([\n Number(hue) * HUE_DEGREES[unit.toLowerCase()]!,\n Math.min(1, Number(first) / 100),\n Math.min(1, Number(second) / 100),\n ]).map((channel) => Math.round(channel * 255));\n const opacity = alpha === undefined ? 1 : Number(alpha) / (percent ? 100 : 1);\n return [r!, g!, b!, Math.min(1, opacity)];\n}\n\n/**\n * Every CSS named colour, as the `[r, g, b, a]` the compiler's own `namedColor()` in\n * `packages/metro/css/values.cjs` resolves it to - generated from that table rather than typed\n * out by hand, so there is one authority for what a colour name means and this cannot drift from\n * it. The compiler folds a named colour in a stylesheet into `rgb()` at build time, which is why\n * this table matters only for the rarer case: a value that reaches here without ever having been\n * through the compiler, such as a template binding a keyword straight into a style.\n */\nconst NAMED_COLORS: Record<string, [number, number, number, number]> = {\n aliceblue: [240, 248, 255, 1],\n antiquewhite: [250, 235, 215, 1],\n aqua: [0, 255, 255, 1],\n aquamarine: [127, 255, 212, 1],\n azure: [240, 255, 255, 1],\n beige: [245, 245, 220, 1],\n bisque: [255, 228, 196, 1],\n black: [0, 0, 0, 1],\n blanchedalmond: [255, 235, 205, 1],\n blue: [0, 0, 255, 1],\n blueviolet: [138, 43, 226, 1],\n brown: [165, 42, 42, 1],\n burlywood: [222, 184, 135, 1],\n cadetblue: [95, 158, 160, 1],\n chartreuse: [127, 255, 0, 1],\n chocolate: [210, 105, 30, 1],\n coral: [255, 127, 80, 1],\n cornflowerblue: [100, 149, 237, 1],\n cornsilk: [255, 248, 220, 1],\n crimson: [220, 20, 60, 1],\n cyan: [0, 255, 255, 1],\n darkblue: [0, 0, 139, 1],\n darkcyan: [0, 139, 139, 1],\n darkgoldenrod: [184, 134, 11, 1],\n darkgray: [169, 169, 169, 1],\n darkgreen: [0, 100, 0, 1],\n darkgrey: [169, 169, 169, 1],\n darkkhaki: [189, 183, 107, 1],\n darkmagenta: [139, 0, 139, 1],\n darkolivegreen: [85, 107, 47, 1],\n darkorange: [255, 140, 0, 1],\n darkorchid: [153, 50, 204, 1],\n darkred: [139, 0, 0, 1],\n darksalmon: [233, 150, 122, 1],\n darkseagreen: [143, 188, 143, 1],\n darkslateblue: [72, 61, 139, 1],\n darkslategray: [47, 79, 79, 1],\n darkslategrey: [47, 79, 79, 1],\n darkturquoise: [0, 206, 209, 1],\n darkviolet: [148, 0, 211, 1],\n deeppink: [255, 20, 147, 1],\n deepskyblue: [0, 191, 255, 1],\n dimgray: [105, 105, 105, 1],\n dimgrey: [105, 105, 105, 1],\n dodgerblue: [30, 144, 255, 1],\n firebrick: [178, 34, 34, 1],\n floralwhite: [255, 250, 240, 1],\n forestgreen: [34, 139, 34, 1],\n fuchsia: [255, 0, 255, 1],\n gainsboro: [220, 220, 220, 1],\n ghostwhite: [248, 248, 255, 1],\n gold: [255, 215, 0, 1],\n goldenrod: [218, 165, 32, 1],\n gray: [128, 128, 128, 1],\n green: [0, 128, 0, 1],\n greenyellow: [173, 255, 47, 1],\n grey: [128, 128, 128, 1],\n honeydew: [240, 255, 240, 1],\n hotpink: [255, 105, 180, 1],\n indianred: [205, 92, 92, 1],\n indigo: [75, 0, 130, 1],\n ivory: [255, 255, 240, 1],\n khaki: [240, 230, 140, 1],\n lavender: [230, 230, 250, 1],\n lavenderblush: [255, 240, 245, 1],\n lawngreen: [124, 252, 0, 1],\n lemonchiffon: [255, 250, 205, 1],\n lightblue: [173, 216, 230, 1],\n lightcoral: [240, 128, 128, 1],\n lightcyan: [224, 255, 255, 1],\n lightgoldenrodyellow: [250, 250, 210, 1],\n lightgray: [211, 211, 211, 1],\n lightgreen: [144, 238, 144, 1],\n lightgrey: [211, 211, 211, 1],\n lightpink: [255, 182, 193, 1],\n lightsalmon: [255, 160, 122, 1],\n lightseagreen: [32, 178, 170, 1],\n lightskyblue: [135, 206, 250, 1],\n lightslategray: [119, 136, 153, 1],\n lightslategrey: [119, 136, 153, 1],\n lightsteelblue: [176, 196, 222, 1],\n lightyellow: [255, 255, 224, 1],\n lime: [0, 255, 0, 1],\n limegreen: [50, 205, 50, 1],\n linen: [250, 240, 230, 1],\n magenta: [255, 0, 255, 1],\n maroon: [128, 0, 0, 1],\n mediumaquamarine: [102, 205, 170, 1],\n mediumblue: [0, 0, 205, 1],\n mediumorchid: [186, 85, 211, 1],\n mediumpurple: [147, 112, 219, 1],\n mediumseagreen: [60, 179, 113, 1],\n mediumslateblue: [123, 104, 238, 1],\n mediumspringgreen: [0, 250, 154, 1],\n mediumturquoise: [72, 209, 204, 1],\n mediumvioletred: [199, 21, 133, 1],\n midnightblue: [25, 25, 112, 1],\n mintcream: [245, 255, 250, 1],\n mistyrose: [255, 228, 225, 1],\n moccasin: [255, 228, 181, 1],\n navajowhite: [255, 222, 173, 1],\n navy: [0, 0, 128, 1],\n oldlace: [253, 245, 230, 1],\n olive: [128, 128, 0, 1],\n olivedrab: [107, 142, 35, 1],\n orange: [255, 165, 0, 1],\n orangered: [255, 69, 0, 1],\n orchid: [218, 112, 214, 1],\n palegoldenrod: [238, 232, 170, 1],\n palegreen: [152, 251, 152, 1],\n paleturquoise: [175, 238, 238, 1],\n palevioletred: [219, 112, 147, 1],\n papayawhip: [255, 239, 213, 1],\n peachpuff: [255, 218, 185, 1],\n peru: [205, 133, 63, 1],\n pink: [255, 192, 203, 1],\n plum: [221, 160, 221, 1],\n powderblue: [176, 224, 230, 1],\n purple: [128, 0, 128, 1],\n rebeccapurple: [102, 51, 153, 1],\n red: [255, 0, 0, 1],\n rosybrown: [188, 143, 143, 1],\n royalblue: [65, 105, 225, 1],\n saddlebrown: [139, 69, 19, 1],\n salmon: [250, 128, 114, 1],\n sandybrown: [244, 164, 96, 1],\n seagreen: [46, 139, 87, 1],\n seashell: [255, 245, 238, 1],\n sienna: [160, 82, 45, 1],\n silver: [192, 192, 192, 1],\n skyblue: [135, 206, 235, 1],\n slateblue: [106, 90, 205, 1],\n slategray: [112, 128, 144, 1],\n slategrey: [112, 128, 144, 1],\n snow: [255, 250, 250, 1],\n springgreen: [0, 255, 127, 1],\n steelblue: [70, 130, 180, 1],\n tan: [210, 180, 140, 1],\n teal: [0, 128, 128, 1],\n thistle: [216, 191, 216, 1],\n tomato: [255, 99, 71, 1],\n transparent: [0, 0, 0, 0],\n turquoise: [64, 224, 208, 1],\n violet: [238, 130, 238, 1],\n wheat: [245, 222, 179, 1],\n white: [255, 255, 255, 1],\n whitesmoke: [245, 245, 245, 1],\n yellow: [255, 255, 0, 1],\n yellowgreen: [154, 205, 50, 1],\n};\n\n/** A colour as `[r, g, b, a]`, or null for a form not worth parsing. */\nexport function parseColor(value: unknown): [number, number, number, number] | null {\n if (typeof value !== 'string') return null;\n\n const rgb = RGB.exec(value);\n if (rgb) {\n return [\n Number(rgb[1]),\n Number(rgb[2]),\n Number(rgb[3]),\n rgb[4] === undefined ? 1 : Number(rgb[4]),\n ];\n }\n\n const hex = HEX.exec(value);\n if (hex) {\n const digits = hex[1]!;\n const short = digits.length <= 4;\n const part = (i: number): number => {\n const at = short ? digits.slice(i, i + 1).repeat(2) : digits.slice(i * 2, i * 2 + 2);\n return parseInt(at, 16);\n };\n const alpha = digits.length === 4 || digits.length === 8 ? part(3) / 255 : 1;\n return [part(0), part(1), part(2), alpha];\n }\n\n const named = NAMED_COLORS[value.toLowerCase()];\n return named ? [...named] : parseHued(value);\n}\n\n/** Whether a word is a CSS colour name, such as `red` or `transparent`. */\nexport function isNamedColor(value: string): boolean {\n return Object.hasOwn(NAMED_COLORS, value.toLowerCase());\n}\n\n/** A transform operation at rest, so a missing transform can be animated from rather than jumped. */\nconst IDENTITY: Record<string, number | string> = {\n translateX: 0,\n translateY: 0,\n scale: 1,\n scaleX: 1,\n scaleY: 1,\n rotate: '0deg',\n rotateX: '0deg',\n rotateY: '0deg',\n rotateZ: '0deg',\n skewX: '0deg',\n skewY: '0deg',\n};\n\n/**\n * A number with a unit on it, inside a transform operation.\n *\n * Angles were the only unit this matched, which quietly made every other one step instead of\n * move: a sheet sliding in with `translateY(100%)` sat at 100% for its whole duration and then\n * arrived, which on a phone reads as an animation that does not run at all. Percentages are the\n * ones that matter - they are how a transform says \"my own size\" without knowing what that is -\n * and lengths cost nothing extra now the shape is the same.\n */\nconst UNIT = /^(-?\\d*\\.?\\d+)(deg|rad|grad|turn|%|px|pt|em|rem)$/;\n\n/** One operation's value: a number, or a number keeping whatever unit it was written in. */\nexport function tween(from: unknown, to: unknown, t: number): unknown {\n if (typeof from === 'number' && typeof to === 'number') return from + (to - from) * t;\n if (typeof from !== 'string' || typeof to !== 'string') return null;\n\n const a = UNIT.exec(from);\n const b = UNIT.exec(to);\n // Matching units only. Converting between them needs a table, and for a pair anybody actually\n // writes, `0deg` to `1turn`, the answer would be a guess. A translate by a percentage and by a\n // length is the pair with an answer, and `interpolateTransform` gives it: see `summed`.\n if (!a || !b || a[2] !== b[2]) return null;\n\n const value = Number(a[1]) + (Number(b[1]) - Number(a[1])) * t;\n return `${Math.round(value * 1000) / 1000}${a[2]}`;\n}\n\n/** The same operations, each at rest: what CSS's `none` means beside a list that has values. */\nfunction atRest(shape: readonly unknown[]): unknown[] {\n return shape.map((entry) => {\n const name = operation(entry);\n if (name === null || !(name in IDENTITY)) return entry;\n // At rest in the unit it is written in, so it can be eased toward: `-25%` from `0%`, and\n // `1turn` from `0turn`. A bare 0 beside a percentage is a pair `tween` cannot blend.\n const written = (entry as Record<string, unknown>)[name];\n const unit = typeof written === 'string' ? UNIT.exec(written)?.[2] : undefined;\n return { [name]: unit ? `0${unit}` : IDENTITY[name] };\n });\n}\n\n/** A transform list with something in it; `none` is an empty one, and means the same as none. */\nconst hasOperations = (value: unknown): value is readonly unknown[] =>\n Array.isArray(value) && value.length > 0;\n\n/** The name of a single-key transform operation, or null for anything else. */\nfunction operation(entry: unknown): string | null {\n if (typeof entry !== 'object' || entry === null) return null;\n const keys = Object.keys(entry);\n return keys.length === 1 ? keys[0]! : null;\n}\n\n/**\n * Two lists as lists of one length: the shorter with the operations the longer goes on to, each\n * at rest, which is how CSS blends `translateY(4px)` into `translateY(8px) scale(0.5)`. Where the\n * two start differently the caller finds nothing between them.\n */\nfunction sameLength(\n a: readonly unknown[],\n b: readonly unknown[],\n): [readonly unknown[], readonly unknown[]] {\n if (a.length === b.length) return [a, b];\n const [short, long] = a.length < b.length ? [a, b] : [b, a];\n const padded = [...short, ...atRest(long.slice(short.length))];\n return a.length < b.length ? [padded, b] : [a, padded];\n}\n\n/** The translates: the operations whose amount may be a share of the box, a length, or both. */\nconst TRANSLATES = new Set(['translateX', 'translateY']);\n\n/** A translate's amount as a share of the box and a number of points, added together. */\ntype Sum = readonly [percent: number, points: number];\n\nfunction sumOf(value: unknown): Sum | null {\n if (Array.isArray(value)) return value as unknown as Sum;\n if (typeof value === 'number') return [0, value];\n const percent = typeof value === 'string' ? PERCENTAGE.exec(value) : null;\n return percent ? [Number(percent[1]), 0] : null;\n}\n\n/** Whether a translate by a percentage is followed at once by one by points along the same axis. */\nfunction isSum(before: unknown, entry: unknown): boolean {\n const name = operation(entry);\n if (name === null || !TRANSLATES.has(name) || operation(before) !== name) return false;\n const percent = (before as Record<string, unknown>)[name];\n const points = (entry as Record<string, unknown>)[name];\n return typeof points === 'number' && typeof percent === 'string' && PERCENTAGE.test(percent);\n}\n\n/**\n * A list with each such pair read as the one translate it comes to, its amount a `Sum`.\n *\n * `translateY(-25%) translateY(-17px)` is how a frame between `translateY(-50%)` and\n * `translateY(-34px)` is written: CSS eases the two as `calc(-25% - 17px)`, and two translates\n * along one axis add up to that whatever size the box is, which nothing here knows. A transition\n * turned round part way starts from such a frame, so the pair has to pair with one translate.\n */\nfunction summed(list: readonly unknown[]): readonly unknown[] {\n if (!list.some((entry, i) => i > 0 && isSum(list[i - 1], entry))) return list;\n const out: unknown[] = [];\n for (const entry of list) {\n const before = out.at(-1);\n if (!isSum(before, entry)) {\n out.push(entry);\n continue;\n }\n const name = operation(entry)!;\n const percent = (before as Record<string, string>)[name]!;\n out[out.length - 1] = {\n [name]: [parseFloat(percent), (entry as Record<string, number>)[name]],\n };\n }\n return out;\n}\n\n/** A translate part way between two amounts `tween` cannot blend, as its pair; null if not one. */\nfunction tweenSum(name: string, from: unknown, to: unknown, t: number): unknown[] | null {\n const a = TRANSLATES.has(name) ? sumOf(from) : null;\n const b = a && sumOf(to);\n if (!a || !b) return null;\n const percent = Math.round((a[0] + (b[0] - a[0]) * t) * 1000) / 1000;\n const points = a[1] + (b[1] - a[1]) * t;\n // At an end one of the two is nothing, and the frame is the one translate that was written.\n if (percent === 0) return [{ [name]: points }];\n return points === 0\n ? [{ [name]: `${percent}%` }]\n : [{ [name]: `${percent}%` }, { [name]: points }];\n}\n\n/**\n * Two transform lists blended operation by operation.\n *\n * Matched by position *and* name: blending a translate into a scale would mean decomposing a\n * matrix, which is a great deal of arithmetic for a case an author can always write out. Anything\n * that does not line up returns null and steps instead, which is what CSS falls back to.\n *\n * A translate by a share of the box and one by a length do line up, and the frame between them is\n * two translates: see `summed`.\n *\n * A missing side is the ordinary case rather than the exception - `.slider` to\n * `.slider-end { transform: translateX(180px) }`, and the same again when the class comes off -\n * so whichever side is absent is read as each operation at rest, which is CSS's `none`.\n */\nfunction interpolateTransform(from: unknown, to: unknown, t: number): unknown[] | null {\n const shape = hasOperations(to) ? to : hasOperations(from) ? from : null;\n if (!shape) return null;\n\n const [start, end] = sameLength(\n summed(hasOperations(from) ? from : atRest(shape)),\n summed(hasOperations(to) ? to : atRest(shape)),\n );\n\n const out: unknown[] = [];\n for (let i = 0; i < end.length; i++) {\n const name = operation(end[i]);\n if (name === null || name !== operation(start[i])) return null;\n const a = (start[i] as Record<string, unknown>)[name];\n const b = (end[i] as Record<string, unknown>)[name];\n const value = tween(a, b, t);\n const entries = value === null ? tweenSum(name, a, b, t) : [{ [name]: value }];\n if (entries === null) return null;\n out.push(...entries);\n }\n return out;\n}\n\n/**\n * One step between two values.\n *\n * Numbers, colours and transforms interpolate. Everything else steps to the new value at the end,\n * which is what CSS does for a property it calls discrete, and is right for the keywords and\n * strings that make up most of the rest.\n */\nexport function interpolate(from: unknown, to: unknown, t: number): unknown {\n if (typeof from === 'number' && typeof to === 'number') return from + (to - from) * t;\n\n const a = parseColor(from);\n const b = parseColor(to);\n if (a && b) return mixColours(a, b, t);\n\n const percent = interpolatePercentage(from, to, t);\n if (percent !== null) return percent;\n\n const transform = interpolateTransform(from, to, t);\n if (transform) return transform;\n\n return t >= 1 ? to : from;\n}\n\n/**\n * Two colours part way, in premultiplied alpha as CSS mixes them: each channel weighted by its\n * own alpha, so a colour at no opacity adds no colour at all. Halfway from `transparent`, which\n * is black at no opacity, to red is red at half opacity rather than a dark red, and a colour at\n * part opacity pulls the mix less than an opaque one does.\n */\nfunction mixColours(a: readonly number[], b: readonly number[], t: number): string {\n const alpha = a[3]! + (b[3]! - a[3]!) * t;\n if (alpha <= 0) return 'rgba(0, 0, 0, 0)';\n const mix = (i: number): number =>\n Math.round((a[i]! * a[3]! + (b[i]! * b[3]! - a[i]! * a[3]!) * t) / alpha);\n return `rgba(${mix(0)}, ${mix(1)}, ${mix(2)}, ${Math.round(alpha * 1000) / 1000})`;\n}\n\n/**\n * `50%` -> `75%`. Both sides have to be percentages; a percentage and a length are not a scale.\n * Except 0, which is 0% too: a padding nothing sets eases from it to `50%`, as in a browser.\n */\nconst PERCENTAGE = /^(-?[\\d.]+)%$/;\n\nfunction interpolatePercentage(from: unknown, to: unknown, t: number): string | null {\n const a = percentageOf(from);\n const b = percentageOf(to);\n if (a === null || b === null) return null;\n const value = a + (b - a) * t;\n return `${Math.round(value * 1000) / 1000}%`;\n}\n\nfunction percentageOf(value: unknown): number | null {\n if (value === 0) return 0;\n const percent = typeof value === 'string' ? PERCENTAGE.exec(value) : null;\n return percent ? Number(percent[1]) : null;\n}\n\n/**\n * Bring one property up to date, and say whether that started a transition.\n *\n * Mutates `props[key]` to what should be painted now, which for a transition in flight is the\n * value it has reached rather than the one it is heading for.\n */\nexport function step(\n state: Map<string, Transition>,\n key: string,\n props: Record<string, unknown>,\n rule: TransitionSpec | undefined,\n now: number,\n): boolean {\n if (!rule) {\n // No longer transitioning: forget it, so re-adding the rule later starts fresh.\n state.delete(key);\n return false;\n }\n // A property nothing sets still has a value to ease from or to: `opacity` is 1. Only the\n // painted value is read this way, so one the element never writes is still not sent.\n const target = props[key] ?? INITIAL[key];\n if (rule.duration <= 0) {\n // Named, with no time to take: it arrives at once, and where it is stays known. A change\n // that comes with a duration, as a ripple's style sets both in one go, starts from here.\n state.set(key, settled(target, rule));\n return false;\n }\n\n const seen = state.get(key);\n if (seen === undefined) {\n // First sight of the property. CSS does not animate one of these either; without the rule\n // every element would animate in from whatever the previous value happened to be.\n state.set(key, settled(target, rule));\n return false;\n }\n\n // Nothing to interpolate when one end is missing: `null` here is `auto`, or a property the\n // element no longer sets at all and that has no initial value worth easing to, and there is no\n // value halfway between a number and \"whatever this works out to be\". CSS refuses the same\n // transition. Interpolating anyway held the old value for the whole duration, which is how a\n // section that opened to a height nothing had measured stayed shut - and clearing a height is\n // also what stops the layout that would have corrected it, so it stayed shut rather than\n // catching up a frame later.\n //\n // The same goes for a pair with nothing between them at all, a keyword such as `display` or\n // `flex-direction`: CSS changes it at once rather than transitioning it, and `transition: all`\n // covers it. Holding the old one for the duration kept a `display: none` on screen until the\n // end and then made it vanish.\n const started = !sameValue(seen.to, target);\n if (started && !interpolable(seen.current, target)) {\n state.set(key, settled(target, rule));\n return false;\n }\n if (started) redirect(seen, target, rule, now);\n if (!seen.done) props[key] = seen.current;\n return started;\n}\n\n/**\n * Whether there is a pair here to interpolate at all: two numbers, two colours, two percentages,\n * or two transform lists of the same shape.\n *\n * A transform is the one thing that animates from nothing, because \"no transform\" has a value -\n * the identity - and `interpolateTransform` starts there. Everything else needs both ends.\n */\nfunction interpolable(from: unknown, to: unknown): boolean {\n if (typeof from === 'number' && typeof to === 'number') return true;\n if (parseColor(from) !== null && parseColor(to) !== null) return true;\n if (interpolatePercentage(from, to, 0) !== null) return true;\n return interpolateTransform(from, to, 0) !== null;\n}\n\n/** A property seen for the first time: recorded so the next change has something to aim from. */\nexport function settled(value: unknown, rule: TransitionSpec): Transition {\n return {\n from: value,\n to: value,\n start: 0,\n duration: 0,\n easing: rule.easing,\n current: value,\n done: true,\n reversingFrom: value,\n shortening: 1,\n };\n}\n\n/**\n * Whether a transition is no longer going where a commit's props say: by the value a property\n * has when nothing sets one, and by what two values are and not which objects, as `step` reads\n * them. What native plays is taken back only for a target that is another.\n */\nexport function aimsElsewhere(\n transition: Transition,\n key: string,\n props: Record<string, unknown>,\n): boolean {\n return !sameValue(transition.to, props[key] ?? INITIAL[key]);\n}\n\n/** Whether two values are the same, a transform list by what is in it rather than by identity. */\nfunction sameValue(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\n/**\n * Aim an existing transition at a new value, starting from wherever it had got to.\n *\n * One turned back to where it came from before it got there takes as long as it had been going,\n * as CSS has it: half way out, the way back is half the distance and half the duration. The\n * factor is how far the old one had eased, of the share it was itself, plus the share it left\n * out, so a transition turned round twice comes back by the same rule. A negative delay is\n * shortened with it; a positive one is waited out in full.\n */\nexport function redirect(\n transition: Transition,\n target: unknown,\n rule: TransitionSpec,\n now: number,\n): void {\n const reversing = !transition.done && sameValue(target, transition.reversingFrom);\n let shortening = 1;\n if (reversing) {\n const elapsed = transition.duration <= 0 ? 1 : (now - transition.start) / transition.duration;\n const eased = bezier(transition.easing, elapsed);\n const factor = eased * transition.shortening + 1 - transition.shortening;\n shortening = Math.min(1, Math.abs(factor));\n }\n transition.reversingFrom = reversing ? transition.to : transition.current;\n transition.shortening = shortening;\n transition.from = transition.current;\n transition.to = target;\n transition.start = now + (rule.delay < 0 ? rule.delay * shortening : rule.delay);\n transition.duration = rule.duration * shortening;\n transition.easing = rule.easing;\n transition.done = false;\n}\n\n/** What the CSS compiler emits for `animation:`. Times are milliseconds. */\nexport interface AnimationSpec {\n readonly name: string;\n readonly duration: number;\n readonly delay: number;\n readonly easing: readonly number[];\n /** `Infinity` for `infinite`. */\n /** `null` is `infinite`, which is what survives being written into the bundle as JSON. */\n readonly iterations: number | null;\n readonly fill: 'none' | 'forwards' | 'backwards' | 'both';\n /** Which way each iteration plays; absent is `normal`, forwards every time. */\n readonly direction?: 'reverse' | 'alternate' | 'alternate-reverse';\n /**\n * `animation-timeline: scroll()`: played by the nearest scroll view's offset along this axis\n * rather than by the clock. See `scroll-animation.ts`.\n */\n readonly timeline?: 'x' | 'y';\n /** `animation-play-state: paused`: held at the frame it has reached, until it runs again. */\n readonly paused?: boolean;\n /**\n * Where along the scroll it plays, in points or as a percentage of how far the view scrolls.\n * An end left out is the scroll's own: 0, or all the way.\n */\n readonly range?: { readonly start?: number | string; readonly end?: number | string };\n}\n\n/** One `@keyframes` frame: where it sits, and what it sets there. */\nexport interface Keyframe {\n readonly offset: number;\n readonly declarations: Record<string, unknown>;\n /** The `animation-timing-function` written in this keyframe, easing it to the next. */\n readonly easing?: readonly number[];\n}\n\nexport interface RunningAnimation {\n spec: AnimationSpec;\n /** When it was paused, while it is; the clock it is sampled at stands still there. */\n pausedAt?: number;\n /**\n * Per property, the offsets that mention it, in order. Built when the animation starts, and again\n * when the colour a frame's `color: currentColor` stands for changes.\n */\n tracks: Map<string, TrackPoint[]>;\n /** The colour the node inherits, which the tracks were built with, for frames that read it. */\n inherited?: unknown;\n start: number;\n /** What the properties read right now. Empty once a finished animation stops filling. */\n values: Record<string, unknown>;\n done: boolean;\n /**\n * Set while native plays it, with no frame of it in JavaScript: what stops it there. `values`\n * is then the frame it started at, which is what the view is committed with.\n */\n native?: { stop(): void };\n /** The properties left out of what native plays, as a rule declared them `!important`. */\n pinned?: readonly string[];\n}\n\n/**\n * Build one track per property the frames touch.\n *\n * A property that no frame sets at 0% or 100% is anchored to the value the element would\n * otherwise have, which is what CSS means by an implicit keyframe: `to { opacity: 1 }` alone\n * animates from wherever the element already was. A frame's `color: currentColor` is `inherited`,\n * the colour the element inherits.\n */\nexport function tracksOf(\n frames: readonly Keyframe[],\n resting: Record<string, unknown>,\n inherited?: unknown,\n): Map<string, TrackPoint[]> {\n const tracks = new Map<string, TrackPoint[]>();\n\n for (const frame of frames) {\n for (const property of Object.keys(frame.declarations)) {\n const track = tracks.get(property) ?? [];\n const written = frame.declarations[property];\n const value = isCurrentColour(written) ? inherited : written;\n const point = { offset: frame.offset, value };\n track.push(frame.easing ? { ...point, easing: frame.easing } : point);\n tracks.set(property, track);\n }\n }\n\n for (const [property, track] of tracks) {\n const anchor = resting[property] ?? INITIAL[property];\n if (track[0]!.offset > 0) track.unshift({ offset: 0, value: anchor });\n if (track[track.length - 1]!.offset < 1) {\n track.push({ offset: 1, value: anchor });\n }\n }\n return tracks;\n}\n\n/**\n * Whether any frame sets `color: currentColor`, which is the colour the element inherits and so\n * differs from one element to the next. Kept per set of frames, as it is asked on every frame.\n */\nexport function readsInheritedColour(frames: readonly Keyframe[]): boolean {\n let answer = READS_INHERITED.get(frames);\n if (answer === undefined) {\n answer = frames.some((frame) => isCurrentColour(frame.declarations['color']));\n READS_INHERITED.set(frames, answer);\n }\n return answer;\n}\nconst READS_INHERITED = new WeakMap<readonly Keyframe[], boolean>();\n\n/** The marker the compiler writes for `currentColor`. */\nconst isCurrentColour = (value: unknown): boolean =>\n (value as { __colour?: { color?: unknown } } | null)?.__colour?.color === 'currentcolor';\n\n/**\n * What a property is worth when the element has not said.\n *\n * CSS anchors an implicit keyframe to the element's *computed* value, and a property nobody wrote\n * still has one - `opacity` is 1, not nothing. Anchoring to nothing instead leaves a frame with no\n * value to interpolate towards, so the animation holds its first value and jumps at the end.\n *\n * That is what `animate-pulse` was doing. It is a single frame, `50% { opacity: 0.5 }`, on a\n * skeleton that declares no opacity of its own - so both of its implicit frames were empty and the\n * pulse did not fade, in every skeleton in the library.\n *\n * A transition reads it too, for an end the element does not set: `.closed { opacity: 0 }`\n * fades out from 1 and back in to it, and a background colour nothing set eases from\n * `transparent`, as in a browser.\n *\n * A padding, a margin and a corner radius start at 0, so `.open { padding: 20px }` eases in from\n * no padding. Each edge and corner is here under both the physical name and the logical one, as\n * the compiler writes either. A border width is not: one nothing sets is 0 on a native view and\n * `medium`, 3px, in CSS, which a browser eases from. Nor is anything that starts at `auto` or\n * `normal`, which has no number to ease from.\n */\nconst INITIAL: Record<string, unknown> = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n backgroundColor: 'transparent',\n ...Object.fromEntries(\n ['padding', 'margin'].flatMap((box) =>\n ['Top', 'Right', 'Bottom', 'Left', 'Start', 'End'].map((edge) => [`${box}${edge}`, 0]),\n ),\n ),\n ...Object.fromEntries(\n [\n ...['Top', 'Bottom'].flatMap((side) => [`${side}Left`, `${side}Right`]),\n ...['Start', 'End'].flatMap((side) => [`${side}Start`, `${side}End`]),\n ].map((corner) => [`border${corner}Radius`, 0]),\n ),\n};\n\n/**\n * The properties to step for an element: the ones it has, and the ones its transition *names*,\n * even where the element has none yet. A property is only transitioned once it has been seen\n * settling, and one that does not exist is never seen - so `transition: transform` with no\n * transform until a class adds one would arrive instantly, which is the commonest way to write\n * one. `all` names none of them, but it does cover the ones with an initial value to ease from:\n * an opacity nothing set is still 1. And the ones already in `state`, so one whose rule and value\n * both went away is forgotten rather than left running.\n */\nexport function steppedKeys(\n props: Record<string, unknown>,\n spec: Record<string, TransitionSpec> | undefined,\n state: ReadonlyMap<string, Transition>,\n): Set<string> {\n const keys = new Set([...Object.keys(props), ...state.keys()]);\n if (!spec) return keys;\n for (const key of Object.keys(spec)) if (key !== 'all') keys.add(key);\n if (spec['all']) for (const key of Object.keys(INITIAL)) keys.add(key);\n return keys;\n}\n\n/**\n * Where an animation has got to, as the properties to paint.\n *\n * The easing runs per segment rather than across the whole pass, which is what CSS does with a\n * single timing function: each pair of frames is eased on its own.\n */\nexport function sample(\n running: RunningAnimation,\n now: number,\n): { values: Record<string, unknown>; finished: boolean } {\n const { spec } = running;\n const elapsed = now - running.start - spec.delay;\n // A null count is `infinite`. Multiplying by it would give 0, which reads as an animation that\n // finished before its first frame - so an infinite animation would paint its last frame once\n // and stop, which is exactly what it did.\n const total = spec.duration * (spec.iterations ?? Infinity);\n const finished = spec.duration <= 0 || (elapsed >= total && total !== Infinity);\n\n // Before the delay is up, an animation shows its first frame only if it fills backwards.\n const waiting = !finished && elapsed < 0;\n if (waiting && spec.fill !== 'backwards' && spec.fill !== 'both') return { values: {}, finished };\n const local = directedProgress(spec, finished, elapsed);\n\n const values: Record<string, unknown> = {};\n for (const [property, track] of running.tracks) {\n values[property] = at(track, local, spec.easing);\n }\n return { values, finished };\n}\n\n/**\n * How far through its frames the animation is, 0 to 1, in the direction its current iteration\n * runs. A finished animation is at the end of its last iteration, not the start of one after it,\n * and a fractional count ends part of the way through that iteration.\n */\nfunction directedProgress(spec: AnimationSpec, finished: boolean, elapsed: number): number {\n const position = finished ? (spec.iterations ?? 1) : Math.max(0, elapsed) / spec.duration;\n const iteration = finished ? Math.max(0, Math.ceil(position) - 1) : Math.floor(position);\n const through = Math.min(1, Math.max(0, position - iteration));\n return backwards(spec.direction, iteration) ? 1 - through : through;\n}\n\n/** Whether this iteration runs from the last frame to the first. */\nfunction backwards(direction: AnimationSpec['direction'], iteration: number): boolean {\n switch (direction) {\n case 'reverse':\n return true;\n case 'alternate':\n return iteration % 2 === 1;\n case 'alternate-reverse':\n return iteration % 2 === 0;\n default:\n return false;\n }\n}\n\n/**\n * One property's value at one keyframe, and the curve a keyframe of its own eases it on to the\n * next one by, where it has one.\n */\nexport interface TrackPoint {\n readonly offset: number;\n readonly value: unknown;\n readonly easing?: readonly number[];\n}\n\nexport function at(\n track: readonly TrackPoint[],\n local: number,\n easing: readonly number[],\n): unknown {\n let index = 0;\n while (index < track.length - 2 && track[index + 1]!.offset <= local) index++;\n\n const from = track[index]!;\n const to = track[index + 1] ?? from;\n const span = to.offset - from.offset;\n const t = span <= 0 ? 1 : (local - from.offset) / span;\n // A keyframe's own timing function eases the stretch it starts, over the animation's.\n return interpolate(\n from.value,\n to.value,\n bezier(from.easing ?? easing, Math.min(1, Math.max(0, t))),\n );\n}\n\n/**\n * The event object Angular reads.\n *\n * A keyframe animation is built with the global `AnimationEvent` when the host has defined one,\n * because Angular tells an animation from a transition with `event instanceof AnimationEvent` and\n * picks which end event to wait for from the answer. A transition is a plain object for the same\n * reason: it must not be one.\n */\nexport function animationEvent(topLevelType: string, target: unknown, name: string): unknown {\n const kind = topLevelType.slice(3).toLowerCase();\n const base = { type: kind, target, stopPropagation: () => {} };\n\n if (!kind.startsWith('animation')) return { ...base, propertyName: name };\n\n const Ctor = (globalThis as { AnimationEvent?: new (type: string) => object }).AnimationEvent;\n const event = Ctor ? new Ctor(kind) : {};\n return Object.assign(event, base, { animationName: name });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transition.js","sourceRoot":"","sources":["../src/transition.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * CSS transitions, the runtime half.\n *\n * React Native has no CSS animation of any kind, so a `transition` in a stylesheet is compiled to\n * a spec and driven here: the engine notices a transitioning property change between commits,\n * holds the old value, and interpolates towards the new one as the clock advances.\n *\n * This runs in JavaScript, unlike `AnimatedStyle`, which can hand a whole animation to the native\n * driver. It has to: a transition is a reaction to the cascade recomputing, and only this side\n * knows a value changed at all. The cost is a commit per frame, which is the same cost a\n * JavaScript-driven `Animated` value has.\n */\n\nimport type { DeferredDeclaration } from './css.ts';\n\n/** What the CSS compiler emits per transitioning property. Durations are in milliseconds. */\nexport interface TransitionSpec {\n readonly duration: number;\n readonly delay: number;\n /** The four control points of the timing curve; a keyword is resolved at build time. */\n readonly easing: readonly number[];\n}\n\n/** Transitions of one element native plays on one clock: what stops it, and which they are. */\nexport interface EasedNatively {\n stop(): void;\n readonly keys: readonly string[];\n}\n\nexport interface Transition {\n from: unknown;\n to: unknown;\n /** When the interpolation starts, delay already added. */\n start: number;\n duration: number;\n easing: readonly number[];\n /** What the node paints right now. Also the value a redirected transition starts from. */\n current: unknown;\n /**\n * The clock native plays it on, with the others started beside it, while it does. Nothing of\n * it runs in JavaScript then, and `current` is where it started from.\n */\n native?: EasedNatively;\n /**\n * Committed where it ends, with native moving the view there by a layout animation: see\n * `layEased` in the engine. `current` is where it started from.\n */\n laid?: true;\n done: boolean;\n /**\n * The value a change back is a reversal to, and the share of the full duration this one takes:\n * CSS's reversing-adjusted start value and reversing shortening factor. See `redirect`.\n */\n reversingFrom: unknown;\n shortening: number;\n}\n\n/**\n * A cubic bezier's y at a given x, by bisection.\n *\n * Newton-Raphson converges faster and is what browsers use, but it needs a derivative and a\n * fallback for the flat regions of a curve like `ease-in`. Twenty bisection steps land within\n * 1e-6 on any curve, which is finer than a pixel, and the whole thing is eight lines.\n */\nconst curve = (t: number, a: number, b: number): number => {\n const u = 1 - t;\n return 3 * u * u * t * a + 3 * u * t * t * b + t * t * t;\n};\n\n/** A linear curve is both the default and by far the most common, so it skips the search. */\nconst isLinear = (p: readonly number[]): boolean =>\n p[0] === 0 && p[1] === 0 && p[2] === 1 && p[3] === 1;\n\nexport function bezier(points: readonly number[], x: number): number {\n if (x <= 0) return 0;\n if (x >= 1) return 1;\n if (isLinear(points)) return x;\n\n const [x1 = 0, y1 = 0, x2 = 1, y2 = 1] = points;\n let low = 0;\n let high = 1;\n let t = x;\n for (let i = 0; i < 20; i++) {\n t = (low + high) / 2;\n if (curve(t, x1, x2) < x) low = t;\n else high = t;\n }\n return curve(t, y1, y2);\n}\n\nconst HEX = /^#([0-9a-f]{3,8})$/i;\nconst RGB = /^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)(?:[\\s,/]+([\\d.]+))?\\s*\\)$/i;\n\n/** `hsl()` and `hwb()`, with commas or without: a hue, two percentages, and an alpha if any. */\nconst HUED =\n /^(hsla?|hwb)\\(\\s*(-?[\\d.]+)(deg|grad|rad|turn)?[\\s,]+([\\d.]+)%[\\s,]+([\\d.]+)%(?:[\\s,/]+([\\d.]+)(%)?)?\\s*\\)$/i;\n/** How many degrees one of each hue unit is. */\nexport const HUE_DEGREES: Record<string, number> = {\n deg: 1,\n grad: 0.9,\n rad: 180 / Math.PI,\n turn: 360,\n};\n\ntype Channels = [number, number, number];\n\n/** `hsl()`'s hue in degrees and its saturation and lightness as fractions, as sRGB from 0 to 1. */\nexport function hslToSrgb([h, s, l]: Channels): Channels {\n const hue = Number.isFinite(h) ? ((h % 360) + 360) % 360 : 0;\n const f = (n: number) => {\n const k = (n + hue / 30) % 12;\n return l - s * Math.min(l, 1 - l) * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n };\n return [f(0), f(8), f(4)];\n}\n\n/** `hwb()`'s hue in degrees and its whiteness and blackness as fractions, as sRGB from 0 to 1. */\nexport function hwbToSrgb([h, w, b]: Channels): Channels {\n if (w + b >= 1) {\n const grey = w / (w + b);\n return [grey, grey, grey];\n }\n return hslToSrgb([h, 1, 0.5]).map((c) => c * (1 - w - b) + w) as Channels;\n}\n\n/** A colour written as `hsl()` or `hwb()`, as `[r, g, b, a]`. */\nfunction parseHued(value: string): [number, number, number, number] | null {\n const parts = HUED.exec(value);\n if (!parts) return null;\n const [, name, hue, unit = 'deg', first, second, alpha, percent] = parts;\n const convert = name!.toLowerCase() === 'hwb' ? hwbToSrgb : hslToSrgb;\n const [r, g, b] = convert([\n Number(hue) * HUE_DEGREES[unit.toLowerCase()]!,\n Math.min(1, Number(first) / 100),\n Math.min(1, Number(second) / 100),\n ]).map((channel) => Math.round(channel * 255));\n const opacity = alpha === undefined ? 1 : Number(alpha) / (percent ? 100 : 1);\n return [r!, g!, b!, Math.min(1, opacity)];\n}\n\n/**\n * Every CSS named colour, as the `[r, g, b, a]` the compiler's own `namedColor()` in\n * `packages/metro/css/values.cjs` resolves it to - generated from that table rather than typed\n * out by hand, so there is one authority for what a colour name means and this cannot drift from\n * it. The compiler folds a named colour in a stylesheet into `rgb()` at build time, which is why\n * this table matters only for the rarer case: a value that reaches here without ever having been\n * through the compiler, such as a template binding a keyword straight into a style.\n */\nconst NAMED_COLORS: Record<string, [number, number, number, number]> = {\n aliceblue: [240, 248, 255, 1],\n antiquewhite: [250, 235, 215, 1],\n aqua: [0, 255, 255, 1],\n aquamarine: [127, 255, 212, 1],\n azure: [240, 255, 255, 1],\n beige: [245, 245, 220, 1],\n bisque: [255, 228, 196, 1],\n black: [0, 0, 0, 1],\n blanchedalmond: [255, 235, 205, 1],\n blue: [0, 0, 255, 1],\n blueviolet: [138, 43, 226, 1],\n brown: [165, 42, 42, 1],\n burlywood: [222, 184, 135, 1],\n cadetblue: [95, 158, 160, 1],\n chartreuse: [127, 255, 0, 1],\n chocolate: [210, 105, 30, 1],\n coral: [255, 127, 80, 1],\n cornflowerblue: [100, 149, 237, 1],\n cornsilk: [255, 248, 220, 1],\n crimson: [220, 20, 60, 1],\n cyan: [0, 255, 255, 1],\n darkblue: [0, 0, 139, 1],\n darkcyan: [0, 139, 139, 1],\n darkgoldenrod: [184, 134, 11, 1],\n darkgray: [169, 169, 169, 1],\n darkgreen: [0, 100, 0, 1],\n darkgrey: [169, 169, 169, 1],\n darkkhaki: [189, 183, 107, 1],\n darkmagenta: [139, 0, 139, 1],\n darkolivegreen: [85, 107, 47, 1],\n darkorange: [255, 140, 0, 1],\n darkorchid: [153, 50, 204, 1],\n darkred: [139, 0, 0, 1],\n darksalmon: [233, 150, 122, 1],\n darkseagreen: [143, 188, 143, 1],\n darkslateblue: [72, 61, 139, 1],\n darkslategray: [47, 79, 79, 1],\n darkslategrey: [47, 79, 79, 1],\n darkturquoise: [0, 206, 209, 1],\n darkviolet: [148, 0, 211, 1],\n deeppink: [255, 20, 147, 1],\n deepskyblue: [0, 191, 255, 1],\n dimgray: [105, 105, 105, 1],\n dimgrey: [105, 105, 105, 1],\n dodgerblue: [30, 144, 255, 1],\n firebrick: [178, 34, 34, 1],\n floralwhite: [255, 250, 240, 1],\n forestgreen: [34, 139, 34, 1],\n fuchsia: [255, 0, 255, 1],\n gainsboro: [220, 220, 220, 1],\n ghostwhite: [248, 248, 255, 1],\n gold: [255, 215, 0, 1],\n goldenrod: [218, 165, 32, 1],\n gray: [128, 128, 128, 1],\n green: [0, 128, 0, 1],\n greenyellow: [173, 255, 47, 1],\n grey: [128, 128, 128, 1],\n honeydew: [240, 255, 240, 1],\n hotpink: [255, 105, 180, 1],\n indianred: [205, 92, 92, 1],\n indigo: [75, 0, 130, 1],\n ivory: [255, 255, 240, 1],\n khaki: [240, 230, 140, 1],\n lavender: [230, 230, 250, 1],\n lavenderblush: [255, 240, 245, 1],\n lawngreen: [124, 252, 0, 1],\n lemonchiffon: [255, 250, 205, 1],\n lightblue: [173, 216, 230, 1],\n lightcoral: [240, 128, 128, 1],\n lightcyan: [224, 255, 255, 1],\n lightgoldenrodyellow: [250, 250, 210, 1],\n lightgray: [211, 211, 211, 1],\n lightgreen: [144, 238, 144, 1],\n lightgrey: [211, 211, 211, 1],\n lightpink: [255, 182, 193, 1],\n lightsalmon: [255, 160, 122, 1],\n lightseagreen: [32, 178, 170, 1],\n lightskyblue: [135, 206, 250, 1],\n lightslategray: [119, 136, 153, 1],\n lightslategrey: [119, 136, 153, 1],\n lightsteelblue: [176, 196, 222, 1],\n lightyellow: [255, 255, 224, 1],\n lime: [0, 255, 0, 1],\n limegreen: [50, 205, 50, 1],\n linen: [250, 240, 230, 1],\n magenta: [255, 0, 255, 1],\n maroon: [128, 0, 0, 1],\n mediumaquamarine: [102, 205, 170, 1],\n mediumblue: [0, 0, 205, 1],\n mediumorchid: [186, 85, 211, 1],\n mediumpurple: [147, 112, 219, 1],\n mediumseagreen: [60, 179, 113, 1],\n mediumslateblue: [123, 104, 238, 1],\n mediumspringgreen: [0, 250, 154, 1],\n mediumturquoise: [72, 209, 204, 1],\n mediumvioletred: [199, 21, 133, 1],\n midnightblue: [25, 25, 112, 1],\n mintcream: [245, 255, 250, 1],\n mistyrose: [255, 228, 225, 1],\n moccasin: [255, 228, 181, 1],\n navajowhite: [255, 222, 173, 1],\n navy: [0, 0, 128, 1],\n oldlace: [253, 245, 230, 1],\n olive: [128, 128, 0, 1],\n olivedrab: [107, 142, 35, 1],\n orange: [255, 165, 0, 1],\n orangered: [255, 69, 0, 1],\n orchid: [218, 112, 214, 1],\n palegoldenrod: [238, 232, 170, 1],\n palegreen: [152, 251, 152, 1],\n paleturquoise: [175, 238, 238, 1],\n palevioletred: [219, 112, 147, 1],\n papayawhip: [255, 239, 213, 1],\n peachpuff: [255, 218, 185, 1],\n peru: [205, 133, 63, 1],\n pink: [255, 192, 203, 1],\n plum: [221, 160, 221, 1],\n powderblue: [176, 224, 230, 1],\n purple: [128, 0, 128, 1],\n rebeccapurple: [102, 51, 153, 1],\n red: [255, 0, 0, 1],\n rosybrown: [188, 143, 143, 1],\n royalblue: [65, 105, 225, 1],\n saddlebrown: [139, 69, 19, 1],\n salmon: [250, 128, 114, 1],\n sandybrown: [244, 164, 96, 1],\n seagreen: [46, 139, 87, 1],\n seashell: [255, 245, 238, 1],\n sienna: [160, 82, 45, 1],\n silver: [192, 192, 192, 1],\n skyblue: [135, 206, 235, 1],\n slateblue: [106, 90, 205, 1],\n slategray: [112, 128, 144, 1],\n slategrey: [112, 128, 144, 1],\n snow: [255, 250, 250, 1],\n springgreen: [0, 255, 127, 1],\n steelblue: [70, 130, 180, 1],\n tan: [210, 180, 140, 1],\n teal: [0, 128, 128, 1],\n thistle: [216, 191, 216, 1],\n tomato: [255, 99, 71, 1],\n transparent: [0, 0, 0, 0],\n turquoise: [64, 224, 208, 1],\n violet: [238, 130, 238, 1],\n wheat: [245, 222, 179, 1],\n white: [255, 255, 255, 1],\n whitesmoke: [245, 245, 245, 1],\n yellow: [255, 255, 0, 1],\n yellowgreen: [154, 205, 50, 1],\n};\n\n/** A colour as `[r, g, b, a]`, or null for a form not worth parsing. */\nexport function parseColor(value: unknown): [number, number, number, number] | null {\n if (typeof value !== 'string') return null;\n\n const rgb = RGB.exec(value);\n if (rgb) {\n return [\n Number(rgb[1]),\n Number(rgb[2]),\n Number(rgb[3]),\n rgb[4] === undefined ? 1 : Number(rgb[4]),\n ];\n }\n\n const hex = HEX.exec(value);\n if (hex) {\n const digits = hex[1]!;\n const short = digits.length <= 4;\n const part = (i: number): number => {\n const at = short ? digits.slice(i, i + 1).repeat(2) : digits.slice(i * 2, i * 2 + 2);\n return parseInt(at, 16);\n };\n const alpha = digits.length === 4 || digits.length === 8 ? part(3) / 255 : 1;\n return [part(0), part(1), part(2), alpha];\n }\n\n const named = NAMED_COLORS[value.toLowerCase()];\n return named ? [...named] : parseHued(value);\n}\n\n/** Whether a word is a CSS colour name, such as `red` or `transparent`. */\nexport function isNamedColor(value: string): boolean {\n return Object.hasOwn(NAMED_COLORS, value.toLowerCase());\n}\n\n/** A transform operation at rest, so a missing transform can be animated from rather than jumped. */\nconst IDENTITY: Record<string, number | string> = {\n translateX: 0,\n translateY: 0,\n scale: 1,\n scaleX: 1,\n scaleY: 1,\n rotate: '0deg',\n rotateX: '0deg',\n rotateY: '0deg',\n rotateZ: '0deg',\n skewX: '0deg',\n skewY: '0deg',\n};\n\n/**\n * A number with a unit on it, inside a transform operation.\n *\n * Angles were the only unit this matched, which quietly made every other one step instead of\n * move: a sheet sliding in with `translateY(100%)` sat at 100% for its whole duration and then\n * arrived, which on a phone reads as an animation that does not run at all. Percentages are the\n * ones that matter - they are how a transform says \"my own size\" without knowing what that is -\n * and lengths cost nothing extra now the shape is the same.\n */\nconst UNIT = /^(-?\\d*\\.?\\d+)(deg|rad|grad|turn|%|px|pt|em|rem)$/;\n\n/** One operation's value: a number, or a number keeping whatever unit it was written in. */\nexport function tween(from: unknown, to: unknown, t: number): unknown {\n if (typeof from === 'number' && typeof to === 'number') return from + (to - from) * t;\n if (typeof from !== 'string' || typeof to !== 'string') return null;\n\n const a = UNIT.exec(from);\n const b = UNIT.exec(to);\n // Matching units only. Converting between them needs a table, and for a pair anybody actually\n // writes, `0deg` to `1turn`, the answer would be a guess. A translate by a percentage and by a\n // length is the pair with an answer, and `interpolateTransform` gives it: see `summed`.\n if (!a || !b || a[2] !== b[2]) return null;\n\n const value = Number(a[1]) + (Number(b[1]) - Number(a[1])) * t;\n return `${Math.round(value * 1000) / 1000}${a[2]}`;\n}\n\n/** The same operations, each at rest: what CSS's `none` means beside a list that has values. */\nfunction atRest(shape: readonly unknown[]): unknown[] {\n return shape.map((entry) => {\n const name = operation(entry);\n if (name === null || !(name in IDENTITY)) return entry;\n // At rest in the unit it is written in, so it can be eased toward: `-25%` from `0%`, and\n // `1turn` from `0turn`. A bare 0 beside a percentage is a pair `tween` cannot blend.\n const written = (entry as Record<string, unknown>)[name];\n const unit = typeof written === 'string' ? UNIT.exec(written)?.[2] : undefined;\n return { [name]: unit ? `0${unit}` : IDENTITY[name] };\n });\n}\n\n/** A transform list with something in it; `none` is an empty one, and means the same as none. */\nconst hasOperations = (value: unknown): value is readonly unknown[] =>\n Array.isArray(value) && value.length > 0;\n\n/** The name of a single-key transform operation, or null for anything else. */\nfunction operation(entry: unknown): string | null {\n if (typeof entry !== 'object' || entry === null) return null;\n const keys = Object.keys(entry);\n return keys.length === 1 ? keys[0]! : null;\n}\n\n/**\n * Two lists as lists of one length: the shorter with the operations the longer goes on to, each\n * at rest, which is how CSS blends `translateY(4px)` into `translateY(8px) scale(0.5)`. Where the\n * two start differently the caller finds nothing between them.\n */\nfunction sameLength(\n a: readonly unknown[],\n b: readonly unknown[],\n): [readonly unknown[], readonly unknown[]] {\n if (a.length === b.length) return [a, b];\n const [short, long] = a.length < b.length ? [a, b] : [b, a];\n const padded = [...short, ...atRest(long.slice(short.length))];\n return a.length < b.length ? [padded, b] : [a, padded];\n}\n\n/** The translates: the operations whose amount may be a share of the box, a length, or both. */\nconst TRANSLATES = new Set(['translateX', 'translateY']);\n\n/** A translate's amount as a share of the box and a number of points, added together. */\ntype Sum = readonly [percent: number, points: number];\n\nfunction sumOf(value: unknown): Sum | null {\n if (Array.isArray(value)) return value as unknown as Sum;\n if (typeof value === 'number') return [0, value];\n const percent = typeof value === 'string' ? PERCENTAGE.exec(value) : null;\n return percent ? [Number(percent[1]), 0] : null;\n}\n\n/** Whether a translate by a percentage is followed at once by one by points along the same axis. */\nfunction isSum(before: unknown, entry: unknown): boolean {\n const name = operation(entry);\n if (name === null || !TRANSLATES.has(name) || operation(before) !== name) return false;\n const percent = (before as Record<string, unknown>)[name];\n const points = (entry as Record<string, unknown>)[name];\n return typeof points === 'number' && typeof percent === 'string' && PERCENTAGE.test(percent);\n}\n\n/**\n * A list with each such pair read as the one translate it comes to, its amount a `Sum`.\n *\n * `translateY(-25%) translateY(-17px)` is how a frame between `translateY(-50%)` and\n * `translateY(-34px)` is written: CSS eases the two as `calc(-25% - 17px)`, and two translates\n * along one axis add up to that whatever size the box is, which nothing here knows. A transition\n * turned round part way starts from such a frame, so the pair has to pair with one translate.\n */\nfunction summed(list: readonly unknown[]): readonly unknown[] {\n if (!list.some((entry, i) => i > 0 && isSum(list[i - 1], entry))) return list;\n const out: unknown[] = [];\n for (const entry of list) {\n const before = out.at(-1);\n if (!isSum(before, entry)) {\n out.push(entry);\n continue;\n }\n const name = operation(entry)!;\n const percent = (before as Record<string, string>)[name]!;\n out[out.length - 1] = {\n [name]: [parseFloat(percent), (entry as Record<string, number>)[name]],\n };\n }\n return out;\n}\n\n/** A translate part way between two amounts `tween` cannot blend, as its pair; null if not one. */\nfunction tweenSum(name: string, from: unknown, to: unknown, t: number): unknown[] | null {\n const a = TRANSLATES.has(name) ? sumOf(from) : null;\n const b = a && sumOf(to);\n if (!a || !b) return null;\n const percent = Math.round((a[0] + (b[0] - a[0]) * t) * 1000) / 1000;\n const points = a[1] + (b[1] - a[1]) * t;\n // At an end one of the two is nothing, and the frame is the one translate that was written.\n if (percent === 0) return [{ [name]: points }];\n return points === 0\n ? [{ [name]: `${percent}%` }]\n : [{ [name]: `${percent}%` }, { [name]: points }];\n}\n\n/**\n * Two transform lists blended operation by operation.\n *\n * Matched by position *and* name: blending a translate into a scale would mean decomposing a\n * matrix, which is a great deal of arithmetic for a case an author can always write out. Anything\n * that does not line up returns null and steps instead, which is what CSS falls back to.\n *\n * A translate by a share of the box and one by a length do line up, and the frame between them is\n * two translates: see `summed`.\n *\n * A missing side is the ordinary case rather than the exception - `.slider` to\n * `.slider-end { transform: translateX(180px) }`, and the same again when the class comes off -\n * so whichever side is absent is read as each operation at rest, which is CSS's `none`.\n */\nfunction interpolateTransform(from: unknown, to: unknown, t: number): unknown[] | null {\n const shape = hasOperations(to) ? to : hasOperations(from) ? from : null;\n if (!shape) return null;\n\n const [start, end] = sameLength(\n summed(hasOperations(from) ? from : atRest(shape)),\n summed(hasOperations(to) ? to : atRest(shape)),\n );\n\n const out: unknown[] = [];\n for (let i = 0; i < end.length; i++) {\n const name = operation(end[i]);\n if (name === null || name !== operation(start[i])) return null;\n const a = (start[i] as Record<string, unknown>)[name];\n const b = (end[i] as Record<string, unknown>)[name];\n const value = tween(a, b, t);\n const entries = value === null ? tweenSum(name, a, b, t) : [{ [name]: value }];\n if (entries === null) return null;\n out.push(...entries);\n }\n return out;\n}\n\n/**\n * One step between two values.\n *\n * Numbers, colours and transforms interpolate. Everything else steps to the new value at the end,\n * which is what CSS does for a property it calls discrete, and is right for the keywords and\n * strings that make up most of the rest.\n */\nexport function interpolate(from: unknown, to: unknown, t: number): unknown {\n if (typeof from === 'number' && typeof to === 'number') return from + (to - from) * t;\n\n const a = parseColor(from);\n const b = parseColor(to);\n if (a && b) return mixColours(a, b, t);\n\n const percent = interpolatePercentage(from, to, t);\n if (percent !== null) return percent;\n\n const transform = interpolateTransform(from, to, t);\n if (transform) return transform;\n\n return t >= 1 ? to : from;\n}\n\n/**\n * Two colours part way, in premultiplied alpha as CSS mixes them: each channel weighted by its\n * own alpha, so a colour at no opacity adds no colour at all. Halfway from `transparent`, which\n * is black at no opacity, to red is red at half opacity rather than a dark red, and a colour at\n * part opacity pulls the mix less than an opaque one does.\n */\nfunction mixColours(a: readonly number[], b: readonly number[], t: number): string {\n const alpha = a[3]! + (b[3]! - a[3]!) * t;\n if (alpha <= 0) return 'rgba(0, 0, 0, 0)';\n const mix = (i: number): number =>\n Math.round((a[i]! * a[3]! + (b[i]! * b[3]! - a[i]! * a[3]!) * t) / alpha);\n return `rgba(${mix(0)}, ${mix(1)}, ${mix(2)}, ${Math.round(alpha * 1000) / 1000})`;\n}\n\n/**\n * `50%` -> `75%`. Both sides have to be percentages; a percentage and a length are not a scale.\n * Except 0, which is 0% too: a padding nothing sets eases from it to `50%`, as in a browser.\n */\nconst PERCENTAGE = /^(-?[\\d.]+)%$/;\n\nfunction interpolatePercentage(from: unknown, to: unknown, t: number): string | null {\n const a = percentageOf(from);\n const b = percentageOf(to);\n if (a === null || b === null) return null;\n const value = a + (b - a) * t;\n return `${Math.round(value * 1000) / 1000}%`;\n}\n\nfunction percentageOf(value: unknown): number | null {\n if (value === 0) return 0;\n const percent = typeof value === 'string' ? PERCENTAGE.exec(value) : null;\n return percent ? Number(percent[1]) : null;\n}\n\n/**\n * Bring one property up to date, and say whether that started a transition.\n *\n * Mutates `props[key]` to what should be painted now, which for a transition in flight is the\n * value it has reached rather than the one it is heading for.\n */\nexport function step(\n state: Map<string, Transition>,\n key: string,\n props: Record<string, unknown>,\n rule: TransitionSpec | undefined,\n now: number,\n): boolean {\n if (!rule) {\n // No longer transitioning: forget it, so re-adding the rule later starts fresh.\n state.delete(key);\n return false;\n }\n // A property nothing sets still has a value to ease from or to: `opacity` is 1. Only the\n // painted value is read this way, so one the element never writes is still not sent.\n const target = props[key] ?? INITIAL[key];\n if (rule.duration <= 0) {\n // Named, with no time to take: it arrives at once, and where it is stays known. A change\n // that comes with a duration, as a ripple's style sets both in one go, starts from here.\n state.set(key, settled(target, rule));\n return false;\n }\n\n const seen = state.get(key);\n if (seen === undefined) {\n // First sight of the property. CSS does not animate one of these either; without the rule\n // every element would animate in from whatever the previous value happened to be.\n state.set(key, settled(target, rule));\n return false;\n }\n\n // Nothing to interpolate when one end is missing: `null` here is `auto`, or a property the\n // element no longer sets at all and that has no initial value worth easing to, and there is no\n // value halfway between a number and \"whatever this works out to be\". CSS refuses the same\n // transition. Interpolating anyway held the old value for the whole duration, which is how a\n // section that opened to a height nothing had measured stayed shut - and clearing a height is\n // also what stops the layout that would have corrected it, so it stayed shut rather than\n // catching up a frame later.\n //\n // The same goes for a pair with nothing between them at all, a keyword such as `display` or\n // `flex-direction`: CSS changes it at once rather than transitioning it, and `transition: all`\n // covers it. Holding the old one for the duration kept a `display: none` on screen until the\n // end and then made it vanish.\n const started = !sameValue(seen.to, target);\n if (started && !interpolable(seen.current, target)) {\n state.set(key, settled(target, rule));\n return false;\n }\n if (started) redirect(seen, target, rule, now);\n if (!seen.done) props[key] = seen.current;\n return started;\n}\n\n/**\n * Whether there is a pair here to interpolate at all: two numbers, two colours, two percentages,\n * or two transform lists of the same shape.\n *\n * A transform is the one thing that animates from nothing, because \"no transform\" has a value -\n * the identity - and `interpolateTransform` starts there. Everything else needs both ends.\n */\nfunction interpolable(from: unknown, to: unknown): boolean {\n if (typeof from === 'number' && typeof to === 'number') return true;\n if (parseColor(from) !== null && parseColor(to) !== null) return true;\n if (interpolatePercentage(from, to, 0) !== null) return true;\n return interpolateTransform(from, to, 0) !== null;\n}\n\n/** A property seen for the first time: recorded so the next change has something to aim from. */\nexport function settled(value: unknown, rule: TransitionSpec): Transition {\n return {\n from: value,\n to: value,\n start: 0,\n duration: 0,\n easing: rule.easing,\n current: value,\n done: true,\n reversingFrom: value,\n shortening: 1,\n };\n}\n\n/**\n * Whether a transition is no longer going where a commit's props say: by the value a property\n * has when nothing sets one, and by what two values are and not which objects, as `step` reads\n * them. What native plays is taken back only for a target that is another.\n */\nexport function aimsElsewhere(\n transition: Transition,\n key: string,\n props: Record<string, unknown>,\n): boolean {\n return !sameValue(transition.to, props[key] ?? INITIAL[key]);\n}\n\n/** Whether two values are the same, a transform list by what is in it rather than by identity. */\nfunction sameValue(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\n/**\n * Aim an existing transition at a new value, starting from wherever it had got to.\n *\n * One turned back to where it came from before it got there takes as long as it had been going,\n * as CSS has it: half way out, the way back is half the distance and half the duration. The\n * factor is how far the old one had eased, of the share it was itself, plus the share it left\n * out, so a transition turned round twice comes back by the same rule. A negative delay is\n * shortened with it; a positive one is waited out in full.\n */\nexport function redirect(\n transition: Transition,\n target: unknown,\n rule: TransitionSpec,\n now: number,\n): void {\n const reversing = !transition.done && sameValue(target, transition.reversingFrom);\n let shortening = 1;\n if (reversing) {\n const elapsed = transition.duration <= 0 ? 1 : (now - transition.start) / transition.duration;\n const eased = bezier(transition.easing, elapsed);\n const factor = eased * transition.shortening + 1 - transition.shortening;\n shortening = Math.min(1, Math.abs(factor));\n }\n transition.reversingFrom = reversing ? transition.to : transition.current;\n transition.shortening = shortening;\n transition.from = transition.current;\n transition.to = target;\n transition.start = now + (rule.delay < 0 ? rule.delay * shortening : rule.delay);\n transition.duration = rule.duration * shortening;\n transition.easing = rule.easing;\n transition.done = false;\n}\n\n/** What the CSS compiler emits for `animation:`. Times are milliseconds. */\nexport interface AnimationSpec {\n readonly name: string;\n readonly duration: number;\n readonly delay: number;\n readonly easing: readonly number[];\n /** `Infinity` for `infinite`. */\n /** `null` is `infinite`, which is what survives being written into the bundle as JSON. */\n readonly iterations: number | null;\n readonly fill: 'none' | 'forwards' | 'backwards' | 'both';\n /** Which way each iteration plays; absent is `normal`, forwards every time. */\n readonly direction?: 'reverse' | 'alternate' | 'alternate-reverse';\n /**\n * `animation-timeline: scroll()`: played by the nearest scroll view's offset along this axis\n * rather than by the clock. See `scroll-animation.ts`.\n */\n readonly timeline?: 'x' | 'y';\n /** `animation-play-state: paused`: held at the frame it has reached, until it runs again. */\n readonly paused?: boolean;\n /**\n * Where along the scroll it plays, in points or as a percentage of how far the view scrolls.\n * An end left out is the scroll's own: 0, or all the way.\n */\n readonly range?: { readonly start?: number | string; readonly end?: number | string };\n}\n\n/** One `@keyframes` frame: where it sits, and what it sets there. */\nexport interface Keyframe {\n readonly offset: number;\n readonly declarations: Record<string, unknown>;\n /** The `animation-timing-function` written in this keyframe, easing it to the next. */\n readonly easing?: readonly number[];\n /**\n * The declarations that wait for the element playing the frame, a `var()` it sets: settled by\n * the engine as it plays.\n */\n readonly deferred?: readonly DeferredDeclaration[];\n}\n\nexport interface RunningAnimation {\n spec: AnimationSpec;\n /** When it was paused, while it is; the clock it is sampled at stands still there. */\n pausedAt?: number;\n /**\n * Per property, the offsets that mention it, in order. Built when the animation starts, and again\n * when the colour a frame's `color: currentColor` stands for changes.\n */\n tracks: Map<string, TrackPoint[]>;\n /** The colour the node inherits, which the tracks were built with, for frames that read it. */\n inherited?: unknown;\n start: number;\n /** What the properties read right now. Empty once a finished animation stops filling. */\n values: Record<string, unknown>;\n done: boolean;\n /**\n * Set while native plays it, with no frame of it in JavaScript: what stops it there. `values`\n * is then the frame it started at, which is what the view is committed with.\n */\n native?: { stop(): void };\n /** The properties left out of what native plays, as a rule declared them `!important`. */\n pinned?: readonly string[];\n /**\n * Set while native moves the view to its last frame by a layout animation, with no frame of it\n * in JavaScript. `values` is then that last frame, which is what the view is committed with.\n */\n laid?: true;\n}\n\n/**\n * Build one track per property the frames touch.\n *\n * A property that no frame sets at 0% or 100% is anchored to the value the element would\n * otherwise have, which is what CSS means by an implicit keyframe: `to { opacity: 1 }` alone\n * animates from wherever the element already was. A frame's `color: currentColor` is `inherited`,\n * the colour the element inherits.\n */\nexport function tracksOf(\n frames: readonly Keyframe[],\n resting: Record<string, unknown>,\n inherited?: unknown,\n): Map<string, TrackPoint[]> {\n const tracks = new Map<string, TrackPoint[]>();\n\n for (const frame of frames) {\n for (const property of Object.keys(frame.declarations)) {\n const track = tracks.get(property) ?? [];\n const written = frame.declarations[property];\n const value = isCurrentColour(written) ? inherited : written;\n const point = { offset: frame.offset, value };\n track.push(frame.easing ? { ...point, easing: frame.easing } : point);\n tracks.set(property, track);\n }\n }\n\n for (const [property, track] of tracks) {\n const anchor = resting[property] ?? INITIAL[property];\n if (track[0]!.offset > 0) track.unshift({ offset: 0, value: anchor });\n if (track[track.length - 1]!.offset < 1) {\n track.push({ offset: 1, value: anchor });\n }\n }\n return tracks;\n}\n\n/**\n * Whether any frame sets `color: currentColor`, which is the colour the element inherits and so\n * differs from one element to the next. Kept per set of frames, as it is asked on every frame.\n */\nexport function readsInheritedColour(frames: readonly Keyframe[]): boolean {\n let answer = READS_INHERITED.get(frames);\n if (answer === undefined) {\n answer = frames.some((frame) => isCurrentColour(frame.declarations['color']));\n READS_INHERITED.set(frames, answer);\n }\n return answer;\n}\nconst READS_INHERITED = new WeakMap<readonly Keyframe[], boolean>();\n\n/** The marker the compiler writes for `currentColor`. */\nconst isCurrentColour = (value: unknown): boolean =>\n (value as { __colour?: { color?: unknown } } | null)?.__colour?.color === 'currentcolor';\n\n/**\n * What a property is worth when the element has not said.\n *\n * CSS anchors an implicit keyframe to the element's *computed* value, and a property nobody wrote\n * still has one - `opacity` is 1, not nothing. Anchoring to nothing instead leaves a frame with no\n * value to interpolate towards, so the animation holds its first value and jumps at the end.\n *\n * That is what `animate-pulse` was doing. It is a single frame, `50% { opacity: 0.5 }`, on a\n * skeleton that declares no opacity of its own - so both of its implicit frames were empty and the\n * pulse did not fade, in every skeleton in the library.\n *\n * A transition reads it too, for an end the element does not set: `.closed { opacity: 0 }`\n * fades out from 1 and back in to it, and a background colour nothing set eases from\n * `transparent`, as in a browser.\n *\n * A padding, a margin and a corner radius start at 0, so `.open { padding: 20px }` eases in from\n * no padding. Each edge and corner is here under both the physical name and the logical one, as\n * the compiler writes either. A border width is not: one nothing sets is 0 on a native view and\n * `medium`, 3px, in CSS, which a browser eases from. Nor is anything that starts at `auto` or\n * `normal`, which has no number to ease from.\n */\nconst INITIAL: Record<string, unknown> = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n backgroundColor: 'transparent',\n ...Object.fromEntries(\n ['padding', 'margin'].flatMap((box) =>\n ['Top', 'Right', 'Bottom', 'Left', 'Start', 'End'].map((edge) => [`${box}${edge}`, 0]),\n ),\n ),\n ...Object.fromEntries(\n [\n ...['Top', 'Bottom'].flatMap((side) => [`${side}Left`, `${side}Right`]),\n ...['Start', 'End'].flatMap((side) => [`${side}Start`, `${side}End`]),\n ].map((corner) => [`border${corner}Radius`, 0]),\n ),\n};\n\n/**\n * The properties to step for an element: the ones it has, and the ones its transition *names*,\n * even where the element has none yet. A property is only transitioned once it has been seen\n * settling, and one that does not exist is never seen - so `transition: transform` with no\n * transform until a class adds one would arrive instantly, which is the commonest way to write\n * one. `all` names none of them, but it does cover the ones with an initial value to ease from:\n * an opacity nothing set is still 1. And the ones already in `state`, so one whose rule and value\n * both went away is forgotten rather than left running.\n */\nexport function steppedKeys(\n props: Record<string, unknown>,\n spec: Record<string, TransitionSpec> | undefined,\n state: ReadonlyMap<string, Transition>,\n): Set<string> {\n const keys = new Set([...Object.keys(props), ...state.keys()]);\n if (!spec) return keys;\n for (const key of Object.keys(spec)) if (key !== 'all') keys.add(key);\n if (spec['all']) for (const key of Object.keys(INITIAL)) keys.add(key);\n return keys;\n}\n\n/**\n * Where an animation has got to, as the properties to paint.\n *\n * The easing runs per segment rather than across the whole pass, which is what CSS does with a\n * single timing function: each pair of frames is eased on its own.\n */\nexport function sample(\n running: RunningAnimation,\n now: number,\n): { values: Record<string, unknown>; finished: boolean } {\n const { spec } = running;\n const elapsed = now - running.start - spec.delay;\n // A null count is `infinite`. Multiplying by it would give 0, which reads as an animation that\n // finished before its first frame - so an infinite animation would paint its last frame once\n // and stop, which is exactly what it did.\n const total = spec.duration * (spec.iterations ?? Infinity);\n const finished = spec.duration <= 0 || (elapsed >= total && total !== Infinity);\n\n // Before the delay is up, an animation shows its first frame only if it fills backwards.\n const waiting = !finished && elapsed < 0;\n if (waiting && spec.fill !== 'backwards' && spec.fill !== 'both') return { values: {}, finished };\n const local = directedProgress(spec, finished, elapsed);\n\n const values: Record<string, unknown> = {};\n for (const [property, track] of running.tracks) {\n values[property] = at(track, local, spec.easing);\n }\n return { values, finished };\n}\n\n/**\n * How far through its frames the animation is, 0 to 1, in the direction its current iteration\n * runs. A finished animation is at the end of its last iteration, not the start of one after it,\n * and a fractional count ends part of the way through that iteration.\n */\nfunction directedProgress(spec: AnimationSpec, finished: boolean, elapsed: number): number {\n const position = finished ? (spec.iterations ?? 1) : Math.max(0, elapsed) / spec.duration;\n const iteration = finished ? Math.max(0, Math.ceil(position) - 1) : Math.floor(position);\n const through = Math.min(1, Math.max(0, position - iteration));\n return backwards(spec.direction, iteration) ? 1 - through : through;\n}\n\n/** Whether this iteration runs from the last frame to the first. */\nfunction backwards(direction: AnimationSpec['direction'], iteration: number): boolean {\n switch (direction) {\n case 'reverse':\n return true;\n case 'alternate':\n return iteration % 2 === 1;\n case 'alternate-reverse':\n return iteration % 2 === 0;\n default:\n return false;\n }\n}\n\n/**\n * One property's value at one keyframe, and the curve a keyframe of its own eases it on to the\n * next one by, where it has one.\n */\nexport interface TrackPoint {\n readonly offset: number;\n readonly value: unknown;\n readonly easing?: readonly number[];\n}\n\nexport function at(\n track: readonly TrackPoint[],\n local: number,\n easing: readonly number[],\n): unknown {\n let index = 0;\n while (index < track.length - 2 && track[index + 1]!.offset <= local) index++;\n\n const from = track[index]!;\n const to = track[index + 1] ?? from;\n const span = to.offset - from.offset;\n const t = span <= 0 ? 1 : (local - from.offset) / span;\n // A keyframe's own timing function eases the stretch it starts, over the animation's.\n return interpolate(\n from.value,\n to.value,\n bezier(from.easing ?? easing, Math.min(1, Math.max(0, t))),\n );\n}\n\n/**\n * The event object Angular reads.\n *\n * A keyframe animation is built with the global `AnimationEvent` when the host has defined one,\n * because Angular tells an animation from a transition with `event instanceof AnimationEvent` and\n * picks which end event to wait for from the answer. A transition is a plain object for the same\n * reason: it must not be one.\n */\nexport function animationEvent(topLevelType: string, target: unknown, name: string): unknown {\n const kind = topLevelType.slice(3).toLowerCase();\n const base = { type: kind, target, stopPropagation: () => {} };\n\n if (!kind.startsWith('animation')) return { ...base, propertyName: name };\n\n const Ctor = (globalThis as { AnimationEvent?: new (type: string) => object }).AnimationEvent;\n const event = Ctor ? new Ctor(kind) : {};\n return Object.assign(event, base, { animationName: name });\n}\n"]}
|
package/package.json
CHANGED