@ng-native/fabric 0.4.0 → 0.6.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.
@@ -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\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 done: boolean;\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/**\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] : null;\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 the pairs anybody\n // actually writes - `0deg` to `1turn`, `0%` to `10px` - the answer would be a guess.\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 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 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 = hasOperations(from) ? from : atRest(shape);\n const end = hasOperations(to) ? to : atRest(shape);\n if (start.length !== end.length) return null;\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 value = tween(\n (start[i] as Record<string, unknown>)[name],\n (end[i] as Record<string, unknown>)[name],\n t,\n );\n if (value === null) return null;\n out.push({ [name]: value });\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) {\n const mix = (i: number): number => Math.round(a[i]! + (b[i]! - a[i]!) * t);\n const alpha = Math.round((a[3] + (b[3] - a[3]) * t) * 1000) / 1000;\n return `rgba(${mix(0)}, ${mix(1)}, ${mix(2)}, ${alpha})`;\n }\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/** `50%` -> `75%`. Both sides have to be percentages; a percentage and a length are not a scale. */\nconst PERCENTAGE = /^(-?[\\d.]+)%$/;\n\nfunction interpolatePercentage(from: unknown, to: unknown, t: number): string | null {\n if (typeof from !== 'string' || typeof to !== 'string') return null;\n const a = PERCENTAGE.exec(from);\n const b = PERCENTAGE.exec(to);\n if (!a || !b) return null;\n const value = Number(a[1]) + (Number(b[1]) - Number(a[1])) * t;\n return `${Math.round(value * 1000) / 1000}%`;\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 || rule.duration <= 0) {\n // No longer transitioning: forget it, so re-adding the rule later starts fresh.\n state.delete(key);\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(props[key], 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 there is no value halfway between a number and \"whatever\n // this works out to be\". CSS refuses the same transition. Interpolating anyway held the old\n // value for the whole duration, which is how a section that opened to a height nothing had\n // measured stayed shut - and clearing a height is also what stops the layout that would have\n // corrected it, so it stayed shut rather than 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 = !Object.is(seen.to, props[key]);\n if (started && !interpolable(seen.current, props[key])) {\n state.set(key, settled(props[key], rule));\n return false;\n }\n if (started) redirect(seen, props[key], 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 };\n}\n\n/** Aim an existing transition at a new value, starting from wherever it had got to. */\nexport function redirect(\n transition: Transition,\n target: unknown,\n rule: TransitionSpec,\n now: number,\n): void {\n transition.from = transition.current;\n transition.to = target;\n transition.start = now + rule.delay;\n transition.duration = rule.duration;\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\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 * Only the properties that appear in an animation and have a meaningful resting value. A length\n * defaulting to zero is the same as absent for anything here, and a colour has no initial worth\n * animating from.\n */\nconst INITIAL: Record<string, unknown> = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\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\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\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 done: boolean;\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) {\n const mix = (i: number): number => Math.round(a[i]! + (b[i]! - a[i]!) * t);\n const alpha = Math.round((a[3] + (b[3] - a[3]) * t) * 1000) / 1000;\n return `rgba(${mix(0)}, ${mix(1)}, ${mix(2)}, ${alpha})`;\n }\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/** `50%` -> `75%`. Both sides have to be percentages; a percentage and a length are not a scale. */\nconst PERCENTAGE = /^(-?[\\d.]+)%$/;\n\nfunction interpolatePercentage(from: unknown, to: unknown, t: number): string | null {\n if (typeof from !== 'string' || typeof to !== 'string') return null;\n const a = PERCENTAGE.exec(from);\n const b = PERCENTAGE.exec(to);\n if (!a || !b) return null;\n const value = Number(a[1]) + (Number(b[1]) - Number(a[1])) * t;\n return `${Math.round(value * 1000) / 1000}%`;\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 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(props[key], 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(props[key], 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 there is no value halfway between a number and \"whatever\n // this works out to be\". CSS refuses the same transition. Interpolating anyway held the old\n // value for the whole duration, which is how a section that opened to a height nothing had\n // measured stayed shut - and clearing a height is also what stops the layout that would have\n // corrected it, so it stayed shut rather than 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 = !Object.is(seen.to, props[key]);\n if (started && !interpolable(seen.current, props[key])) {\n state.set(key, settled(props[key], rule));\n return false;\n }\n if (started) redirect(seen, props[key], 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 };\n}\n\n/** Aim an existing transition at a new value, starting from wherever it had got to. */\nexport function redirect(\n transition: Transition,\n target: unknown,\n rule: TransitionSpec,\n now: number,\n): void {\n transition.from = transition.current;\n transition.to = target;\n transition.start = now + rule.delay;\n transition.duration = rule.duration;\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}\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 * Only the properties that appear in an animation and have a meaningful resting value. A length\n * defaulting to zero is the same as absent for anything here, and a colour has no initial worth\n * animating from.\n */\nconst INITIAL: Record<string, unknown> = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-native/fabric",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Angular Native's engine: a retained view tree committed to React Native's Fabric, with events, the responder system and a CSS cascade.",
5
5
  "keywords": [
6
6
  "angular",