// GENERATED by gsap/emit_rust.js from gsap/out/samples.json -- do not edit by hand. // GSAP 3.15.0 under Node v22.22.2; generator golden.js; root time after the frame tick: 0. // Numbers are the golden doubles (shortest round-trip repr, bit-exact). Tolerances are the test's business // (see design/gsap_reconciliation.md D: GSAP rounds written property values to 1e-6, so value columns need 5e-7). // Columnar samples: `t` is the driver time in visiting order, each Series is aligned with it; everything else is in `meta`. #![allow( dead_code, unused_imports, clippy::approx_constant, clippy::excessive_precision, clippy::unreadable_literal )] use super::common::*; pub const GSAP_VERSION: &str = "3.15.0"; pub const NOTES: &[&str] = &["Each case: series are columnar arrays aligned with samples.t. Samples are taken on ONE instance in the listed order (increasing t unless stated). driver says how the playhead was moved.", "tl.seek(t) for numeric t is totalTime(t) with events suppressed; values are identical to totalTime(t).", "Grid: 0..totalDuration step 0.05 (decimal-exact) plus listed boundary times; times beyond the end show clamping."]; #[derive(Clone, Copy, Debug)] pub struct SampleCase { pub id: &'static str, pub description: &'static str, pub gsap_calls: &'static [&'static str], pub driver: &'static str, pub meta: Pairs, pub t: &'static [f64], pub series: &'static [Series], } /// XOR of the bits of every CASES[*].t and CASES[*].series[*].v value. pub const F64_BITS_XOR: u64 = 0x8084180ac4393c6c; pub const CASES: &[SampleCase] = &[ SampleCase { id: "to_power2_inout", description: "to() x:0->100, y:10->-50, 1 s, power2.inOut", gsap_calls: &["o={x:0,y:10}", "tw=gsap.to(o,{x:100,y:-50,duration:1,ease:\"power2.inOut\",paused:true})"], driver: "tw.totalTime(t)", meta: &[("totalDuration", Val::F(1.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.999999995, 1.0, 1.25, ], series: &[ Series { name: "x", v: &[ 0.0, 0.05, 0.4, 1.35, 3.2, 6.25, 10.8, 17.15, 25.6, 36.45, 50.0, 63.55, 74.4, 82.85, 89.2, 93.75, 96.8, 98.65, 99.6, 99.95, 100.0, 100.0, 100.0, ] }, Series { name: "y", v: &[ 10.0, 9.97, 9.76, 9.19, 8.08, 6.25, 3.52, -0.29, -5.36, -11.87, -20.0, -28.13, -34.64, -39.71, -43.52, -46.25, -48.08, -49.19, -49.76, -49.97, -50.0, -50.0, -50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.0, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "from_power2_inout", description: "from() x:100->0 (start value 0), y:60->10; paused; immediateRender defaults to true for from()", gsap_calls: &["o={x:0,y:10}", "tw=gsap.from(o,{x:100,y:60,duration:1,ease:\"power2.inOut\",paused:true})", "immediate = {x:o.x, y:o.y} read right after creation"], driver: "tw.totalTime(t)", meta: &[ ("immediate_after_create.x", Val::F(100.0)), ("immediate_after_create.y", Val::F(60.0)), ("totalDuration", Val::F(1.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.25, ], series: &[ Series { name: "x", v: &[ 100.0, 99.95, 99.6, 98.65, 96.8, 93.75, 89.2, 82.85, 74.4, 63.55, 50.0, 36.45, 25.6, 17.15, 10.8, 6.25, 3.2, 1.35, 0.4, 0.05, 0.0, 0.0, ] }, Series { name: "y", v: &[ 60.0, 59.975, 59.8, 59.325, 58.4, 56.875, 54.6, 51.425, 47.2, 41.775, 35.0, 28.225, 22.8, 18.575, 15.4, 13.125, 11.6, 10.675, 10.2, 10.025, 10.0, 10.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "from_immediate_render_false", description: "from() with immediateRender:false: target untouched until first render", gsap_calls: &["o={x:0,y:10}", "tw=gsap.from(o,{x:100,y:60,duration:1,ease:\"power2.inOut\",paused:true,immediateRender:false})"], driver: "tw.totalTime(t)", meta: &[("immediate_after_create.x", Val::F(0.0)), ("immediate_after_create.y", Val::F(10.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ], series: &[ Series { name: "x", v: &[ 100.0, 99.95, 99.6, 98.65, 96.8, 93.75, 89.2, 82.85, 74.4, 63.55, 50.0, 36.45, 25.6, 17.15, 10.8, 6.25, 3.2, 1.35, 0.4, 0.05, 0.0, ] }, Series { name: "y", v: &[ 60.0, 59.975, 59.8, 59.325, 58.4, 56.875, 54.6, 51.425, 47.2, 41.775, 35.0, 28.225, 22.8, 18.575, 15.4, 13.125, 11.6, 10.675, 10.2, 10.025, 10.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "from_unpaused_immediate_only", description: "gsap.from() NOT paused, on the root timeline: value right after creation (no ticker ever runs)", gsap_calls: &["o={x:0,y:10}", "gsap.from(o,{x:100,y:60,duration:1,ease:\"power2.inOut\"})"], driver: "none", meta: &[("immediate_after_create.x", Val::F(100.0)), ("immediate_after_create.y", Val::F(60.0))], t: &[], series: &[] }, SampleCase { id: "fromto_sine_inout", description: "fromTo() x:-20->80, y:5->25, 1.5 s, sine.inOut", gsap_calls: &["o={x:0,y:0}", "tw=gsap.fromTo(o,{x:-20,y:5},{x:80,y:25,duration:1.5,ease:\"sine.inOut\",paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("immediate_after_create.x", Val::F(-20.0)), ("immediate_after_create.y", Val::F(5.0)), ("totalDuration", Val::F(1.5)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.75, ], series: &[ Series { name: "x", v: &[ -20.0, -19.726095, -18.90738, -17.552826, -15.677273, -13.30127, -10.45085, -7.157241, -3.45653, 0.610737, 5.0, 9.663168, 14.54915, 19.604415, 24.773577, 30.0, 35.226423, 40.395585, 45.45085, 50.336832, 55.0, 59.389263, 63.45653, 67.157241, 70.45085, 73.30127, 75.677273, 77.552826, 78.90738, 79.726095, 80.0, 80.0, ] }, Series { name: "y", v: &[ 5.0, 5.054781, 5.218524, 5.489435, 5.864545, 6.339746, 6.90983, 7.568552, 8.308694, 9.122147, 10.0, 10.932634, 11.90983, 12.920883, 13.954715, 15.0, 16.045285, 17.079117, 18.09017, 19.067366, 20.0, 20.877853, 21.691306, 22.431448, 23.09017, 23.660254, 24.135455, 24.510565, 24.781476, 24.945219, 25.0, 25.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.5, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "repeat2_yoyo_rdelay03", description: "repeat:2, yoyo:true, repeatDelay:0.3, 1 s, power1.in. Iterations: [0,1] fwd, hold [1,1.3], [1.3,2.3] yoyo (backwards), hold [2.3,2.6], [2.6,3.6] fwd", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,repeat:2,yoyo:true,repeatDelay:0.3,ease:\"power1.in\",paused:true})"], driver: "tw.totalTime(t) (increasing t)", meta: &[("totalDuration", Val::F(3.6)), ("duration", Val::F(1.0))], t: &[ 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 0.999999, 1.0, 1.000001, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.2, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.299999, 1.3, 1.300001, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39, 1.4, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5, 1.51, 1.52, 1.53, 1.54, 1.55, 1.56, 1.57, 1.58, 1.59, 1.6, 1.61, 1.62, 1.63, 1.64, 1.65, 1.66, 1.67, 1.68, 1.69, 1.7, 1.71, 1.72, 1.73, 1.74, 1.75, 1.76, 1.77, 1.78, 1.79, 1.8, 1.81, 1.82, 1.83, 1.84, 1.85, 1.86, 1.87, 1.88, 1.89, 1.9, 1.91, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98, 1.99, 2.0, 2.01, 2.02, 2.03, 2.04, 2.05, 2.06, 2.07, 2.08, 2.09, 2.1, 2.11, 2.12, 2.13, 2.14, 2.15, 2.16, 2.17, 2.18, 2.19, 2.2, 2.21, 2.22, 2.23, 2.24, 2.25, 2.26, 2.27, 2.28, 2.29, 2.299999, 2.3, 2.300001, 2.31, 2.32, 2.33, 2.34, 2.35, 2.36, 2.37, 2.38, 2.39, 2.4, 2.41, 2.42, 2.43, 2.44, 2.45, 2.46, 2.47, 2.48, 2.49, 2.5, 2.51, 2.52, 2.53, 2.54, 2.55, 2.56, 2.57, 2.58, 2.59, 2.599999, 2.6, 2.600001, 2.61, 2.62, 2.63, 2.64, 2.65, 2.66, 2.67, 2.68, 2.69, 2.7, 2.71, 2.72, 2.73, 2.74, 2.75, 2.76, 2.77, 2.78, 2.79, 2.8, 2.81, 2.82, 2.83, 2.84, 2.85, 2.86, 2.87, 2.88, 2.89, 2.9, 2.91, 2.92, 2.93, 2.94, 2.95, 2.96, 2.97, 2.98, 2.99, 3.0, 3.01, 3.02, 3.03, 3.04, 3.05, 3.06, 3.07, 3.08, 3.09, 3.1, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19, 3.2, 3.21, 3.22, 3.23, 3.24, 3.25, 3.26, 3.27, 3.28, 3.29, 3.3, 3.31, 3.32, 3.33, 3.34, 3.35, 3.36, 3.37, 3.38, 3.39, 3.4, 3.41, 3.42, 3.43, 3.44, 3.45, 3.46, 3.47, 3.48, 3.49, 3.5, 3.51, 3.52, 3.53, 3.54, 3.55, 3.56, 3.57, 3.58, 3.59, 3.599999, 3.6, 3.600001, 3.8, ], series: &[ Series { name: "x", v: &[ 0.0, 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1.0, 1.21, 1.44, 1.69, 1.96, 2.25, 2.56, 2.89, 3.24, 3.61, 4.0, 4.41, 4.84, 5.29, 5.76, 6.25, 6.76, 7.29, 7.84, 8.41, 9.0, 9.61, 10.24, 10.89, 11.56, 12.25, 12.96, 13.69, 14.44, 15.21, 16.0, 16.81, 17.64, 18.49, 19.36, 20.25, 21.16, 22.09, 23.04, 24.01, 25.0, 26.01, 27.04, 28.09, 29.16, 30.25, 31.36, 32.49, 33.64, 34.81, 36.0, 37.21, 38.44, 39.69, 40.96, 42.25, 43.56, 44.89, 46.24, 47.61, 49.0, 50.41, 51.84, 53.29, 54.76, 56.25, 57.76, 59.29, 60.84, 62.41, 64.0, 65.61, 67.24, 68.89, 70.56, 72.25, 73.96, 75.69, 77.44, 79.21, 81.0, 82.81, 84.64, 86.49, 88.36, 90.25, 92.16, 94.09, 96.04, 98.01, 99.9998, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 99.9998, 98.01, 96.04, 94.09, 92.16, 90.25, 88.36, 86.49, 84.64, 82.81, 81.0, 79.21, 77.44, 75.69, 73.96, 72.25, 70.56, 68.89, 67.24, 65.61, 64.0, 62.41, 60.84, 59.29, 57.76, 56.25, 54.76, 53.29, 51.84, 50.41, 49.0, 47.61, 46.24, 44.89, 43.56, 42.25, 40.96, 39.69, 38.44, 37.21, 36.0, 34.81, 33.64, 32.49, 31.36, 30.25, 29.16, 28.09, 27.04, 26.01, 25.0, 24.01, 23.04, 22.09, 21.16, 20.25, 19.36, 18.49, 17.64, 16.81, 16.0, 15.21, 14.44, 13.69, 12.96, 12.25, 11.56, 10.89, 10.24, 9.61, 9.0, 8.41, 7.84, 7.29, 6.76, 6.25, 5.76, 5.29, 4.84, 4.41, 4.0, 3.61, 3.24, 2.89, 2.56, 2.25, 1.96, 1.69, 1.44, 1.21, 1.0, 0.81, 0.64, 0.49, 0.36, 0.25, 0.16, 0.09, 0.04, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1.0, 1.21, 1.44, 1.69, 1.96, 2.25, 2.56, 2.89, 3.24, 3.61, 4.0, 4.41, 4.84, 5.29, 5.76, 6.25, 6.76, 7.29, 7.84, 8.41, 9.0, 9.61, 10.24, 10.89, 11.56, 12.25, 12.96, 13.69, 14.44, 15.21, 16.0, 16.81, 17.64, 18.49, 19.36, 20.25, 21.16, 22.09, 23.04, 24.01, 25.0, 26.01, 27.04, 28.09, 29.16, 30.25, 31.36, 32.49, 33.64, 34.81, 36.0, 37.21, 38.44, 39.69, 40.96, 42.25, 43.56, 44.89, 46.24, 47.61, 49.0, 50.41, 51.84, 53.29, 54.76, 56.25, 57.76, 59.29, 60.84, 62.41, 64.0, 65.61, 67.24, 68.89, 70.56, 72.25, 73.96, 75.69, 77.44, 79.21, 81.0, 82.81, 84.64, 86.49, 88.36, 90.25, 92.16, 94.09, 96.04, 98.01, 99.9998, 100.0, 100.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.005, 0.02, 0.045, 0.08, 0.125, 0.18, 0.245, 0.32, 0.405, 0.5, 0.605, 0.72, 0.845, 0.98, 1.125, 1.28, 1.445, 1.62, 1.805, 2.0, 2.205, 2.42, 2.645, 2.88, 3.125, 3.38, 3.645, 3.92, 4.205, 4.5, 4.805, 5.12, 5.445, 5.78, 6.125, 6.48, 6.845, 7.22, 7.605, 8.0, 8.405, 8.82, 9.245, 9.68, 10.125, 10.58, 11.045, 11.52, 12.005, 12.5, 13.005, 13.52, 14.045, 14.58, 15.125, 15.68, 16.245, 16.82, 17.405, 18.0, 18.605, 19.22, 19.845, 20.48, 21.125, 21.78, 22.445, 23.12, 23.805, 24.5, 25.205, 25.92, 26.645, 27.38, 28.125, 28.88, 29.645, 30.42, 31.205, 32.0, 32.805, 33.62, 34.445, 35.28, 36.125, 36.98, 37.845, 38.72, 39.605, 40.5, 41.405, 42.32, 43.245, 44.18, 45.125, 46.08, 47.045, 48.02, 49.005, 49.9999, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 49.9999, 49.005, 48.02, 47.045, 46.08, 45.125, 44.18, 43.245, 42.32, 41.405, 40.5, 39.605, 38.72, 37.845, 36.98, 36.125, 35.28, 34.445, 33.62, 32.805, 32.0, 31.205, 30.42, 29.645, 28.88, 28.125, 27.38, 26.645, 25.92, 25.205, 24.5, 23.805, 23.12, 22.445, 21.78, 21.125, 20.48, 19.845, 19.22, 18.605, 18.0, 17.405, 16.82, 16.245, 15.68, 15.125, 14.58, 14.045, 13.52, 13.005, 12.5, 12.005, 11.52, 11.045, 10.58, 10.125, 9.68, 9.245, 8.82, 8.405, 8.0, 7.605, 7.22, 6.845, 6.48, 6.125, 5.78, 5.445, 5.12, 4.805, 4.5, 4.205, 3.92, 3.645, 3.38, 3.125, 2.88, 2.645, 2.42, 2.205, 2.0, 1.805, 1.62, 1.445, 1.28, 1.125, 0.98, 0.845, 0.72, 0.605, 0.5, 0.405, 0.32, 0.245, 0.18, 0.125, 0.08, 0.045, 0.02, 0.005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.005, 0.02, 0.045, 0.08, 0.125, 0.18, 0.245, 0.32, 0.405, 0.5, 0.605, 0.72, 0.845, 0.98, 1.125, 1.28, 1.445, 1.62, 1.805, 2.0, 2.205, 2.42, 2.645, 2.88, 3.125, 3.38, 3.645, 3.92, 4.205, 4.5, 4.805, 5.12, 5.445, 5.78, 6.125, 6.48, 6.845, 7.22, 7.605, 8.0, 8.405, 8.82, 9.245, 9.68, 10.125, 10.58, 11.045, 11.52, 12.005, 12.5, 13.005, 13.52, 14.045, 14.58, 15.125, 15.68, 16.245, 16.82, 17.405, 18.0, 18.605, 19.22, 19.845, 20.48, 21.125, 21.78, 22.445, 23.12, 23.805, 24.5, 25.205, 25.92, 26.645, 27.38, 28.125, 28.88, 29.645, 30.42, 31.205, 32.0, 32.805, 33.62, 34.445, 35.28, 36.125, 36.98, 37.845, 38.72, 39.605, 40.5, 41.405, 42.32, 43.245, 44.18, 45.125, 46.08, 47.045, 48.02, 49.005, 49.9999, 50.0, 50.0, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 0.999999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999, 0.99, 0.98, 0.97, 0.96, 0.95, 0.94, 0.9299999999999999, 0.92, 0.91, 0.9, 0.89, 0.88, 0.87, 0.86, 0.85, 0.84, 0.83, 0.8200000000000001, 0.81, 0.8, 0.79, 0.78, 0.77, 0.76, 0.75, 0.74, 0.73, 0.72, 0.71, 0.7, 0.69, 0.6799999999999999, 0.6699999999999999, 0.6599999999999999, 0.65, 0.64, 0.63, 0.62, 0.61, 0.6, 0.5900000000000001, 0.5800000000000001, 0.5700000000000001, 0.56, 0.55, 0.54, 0.53, 0.52, 0.51, 0.5, 0.49, 0.48, 0.47, 0.45999999999999996, 0.44999999999999996, 0.43999999999999995, 0.43000000000000005, 0.42000000000000004, 0.41000000000000003, 0.4, 0.39, 0.38, 0.37, 0.36, 0.35, 0.33999999999999997, 0.32999999999999996, 0.31999999999999995, 0.31000000000000005, 0.30000000000000004, 0.29000000000000004, 0.28, 0.27, 0.26, 0.25, 0.24, 0.22999999999999998, 0.21999999999999997, 0.20999999999999996, 0.19999999999999996, 0.18999999999999995, 0.18000000000000005, 0.17000000000000004, 0.16000000000000003, 0.15000000000000002, 0.14, 0.13, 0.12, 0.10999999999999999, 0.09999999999999998, 0.08999999999999997, 0.07999999999999996, 0.06999999999999995, 0.06000000000000005, 0.050000000000000044, 0.040000000000000036, 0.030000000000000027, 0.020000000000000018, 0.010000000000000009, 0.0000010000000000287557, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.000001, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 0.999999, 1.0, 1.0, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, ] }, ] }, SampleCase { id: "repeat_infinite", description: "repeat:-1, 1 s, power1.inOut sampled on 0..5", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,repeat:-1,ease:\"power1.inOut\",paused:true})"], driver: "tw.totalTime(t)", meta: &[("totalDuration", Val::F(10000000000.0)), ("repeat", Val::F(-1.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.999, 1.0, 1.001, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 1.999999999, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, 2.85, 2.9, 2.95, 3.0, 3.05, 3.1, 3.15, 3.2, 3.25, 3.3, 3.35, 3.4, 3.45, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9, 3.95, 4.0, 4.05, 4.1, 4.15, 4.2, 4.25, 4.3, 4.35, 4.4, 4.45, 4.5, 4.55, 4.6, 4.65, 4.7, 4.75, 4.8, 4.85, 4.9, 4.95, 5.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5, 50.0, 59.5, 68.0, 75.5, 82.0, 87.5, 92.0, 95.5, 98.0, 99.5, 99.9998, 100.0, 0.0002, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5, 50.0, 59.5, 68.0, 75.5, 82.0, 87.5, 92.0, 95.5, 98.0, 99.5, 100.0, 100.0, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5, 50.0, 59.5, 68.0, 75.5, 82.0, 87.5, 92.0, 95.5, 98.0, 99.5, 100.0, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5, 50.0, 59.5, 68.0, 75.5, 82.0, 87.5, 92.0, 95.5, 98.0, 99.5, 100.0, 0.5, 2.0, 4.5, 8.0, 12.5, 18.0, 24.5, 32.0, 40.5, 50.0, 59.5, 68.0, 75.5, 82.0, 87.5, 92.0, 95.5, 98.0, 99.5, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 29.75, 34.0, 37.75, 41.0, 43.75, 46.0, 47.75, 49.0, 49.75, 49.9999, 50.0, 0.0001, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 29.75, 34.0, 37.75, 41.0, 43.75, 46.0, 47.75, 49.0, 49.75, 50.0, 50.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 29.75, 34.0, 37.75, 41.0, 43.75, 46.0, 47.75, 49.0, 49.75, 50.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 29.75, 34.0, 37.75, 41.0, 43.75, 46.0, 47.75, 49.0, 49.75, 50.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 29.75, 34.0, 37.75, 41.0, 43.75, 46.0, 47.75, 49.0, 49.75, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.999, 1.0, 0.001, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, ] }, ] }, SampleCase { id: "delay05_standalone", description: "standalone tween with delay:0.5: totalTime() is measured from the tween start, the delay is NOT part of it", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,delay:0.5,ease:\"none\",paused:true})"], driver: "tw.totalTime(t)", meta: &[("totalDuration", Val::F(1.0)), ("delay", Val::F(0.5)), ("startTime_on_root", Val::F(0.5))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, ], series: &[ Series { name: "x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "delay05_in_timeline", description: "same tween inside a timeline: delay shifts the startTime", gsap_calls: &["tl=gsap.timeline({paused:true})", "tl.to(o,{x:100,y:50,duration:1,delay:0.5,ease:\"none\"})"], driver: "tl.seek(t)", meta: &[("child_startTime", Val::F(0.5)), ("timeline_duration", Val::F(1.5))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, ], series: &[ Series { name: "x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "tl.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, ] }, ] }, SampleCase { id: "keyframes_array", description: "array keyframes; keyframes without ease default to \"none\"", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{keyframes:[{x:50,duration:0.5},{x:20,duration:1,ease:\"power1.in\"}],paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("initial_target.x", Val::F(0.0)), ("initial_target.y", Val::F(0.0)), ("immediate_after_create.x", Val::F(0.0)), ("immediate_after_create.y", Val::F(0.0)), ("duration", Val::F(1.5)), ("totalDuration", Val::F(1.5)), ("internal_timeline_children.len", Val::F(2.0)), ("internal_timeline_children.0.startTime", Val::F(0.0)), ("internal_timeline_children.0.duration", Val::F(0.5)), ("internal_timeline_children.0.vars.x", Val::F(50.0)), ("internal_timeline_children.0.vars.duration", Val::F(0.5)), ("internal_timeline_children.0.vars.ease", Val::S("none")), ("internal_timeline_children.0.vars.overwrite", Val::B(false)), ("internal_timeline_children.0.vars.delay", Val::F(0.0)), ("internal_timeline_children.1.startTime", Val::F(0.5)), ("internal_timeline_children.1.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.x", Val::F(20.0)), ("internal_timeline_children.1.vars.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.ease", Val::S("power1.in")), ("internal_timeline_children.1.vars.overwrite", Val::B(false)), ("internal_timeline_children.1.vars.delay", Val::F(0.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, ], series: &[ Series { name: "x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 49.925, 49.7, 49.325, 48.8, 48.125, 47.3, 46.325, 45.2, 43.925, 42.5, 40.925, 39.2, 37.325, 35.3, 33.125, 30.8, 28.325, 25.7, 22.925, 20.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "keyframes_array_outer_ease", description: "array keyframes + an ease on the tween itself (warps the whole keyframe timeline)", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{keyframes:[{x:50,duration:0.5},{x:20,duration:1,ease:\"power1.in\"}],ease:\"power2.inOut\",paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("initial_target.x", Val::F(0.0)), ("initial_target.y", Val::F(0.0)), ("immediate_after_create.x", Val::F(0.0)), ("immediate_after_create.y", Val::F(0.0)), ("duration", Val::F(1.5)), ("totalDuration", Val::F(1.5)), ("internal_timeline_children.len", Val::F(2.0)), ("internal_timeline_children.0.startTime", Val::F(0.0)), ("internal_timeline_children.0.duration", Val::F(0.5)), ("internal_timeline_children.0.vars.x", Val::F(50.0)), ("internal_timeline_children.0.vars.duration", Val::F(0.5)), ("internal_timeline_children.0.vars.ease", Val::S("none")), ("internal_timeline_children.0.vars.overwrite", Val::B(false)), ("internal_timeline_children.0.vars.delay", Val::F(0.0)), ("internal_timeline_children.1.startTime", Val::F(0.5)), ("internal_timeline_children.1.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.x", Val::F(20.0)), ("internal_timeline_children.1.vars.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.ease", Val::S("power1.in")), ("internal_timeline_children.1.vars.overwrite", Val::B(false)), ("internal_timeline_children.1.vars.delay", Val::F(0.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, ], series: &[ Series { name: "x", v: &[ 0.0, 0.02222, 0.17778, 0.6, 1.42222, 2.77778, 4.8, 7.62222, 11.37778, 16.2, 22.22222, 29.57778, 38.4, 48.82222, 49.638465, 48.125, 45.431799, 42.142505, 38.61632, 35.122133, 31.851851, 28.93268, 26.438306, 24.399037, 22.81088, 21.64352, 20.847264, 20.35892, 20.106573, 20.013331, 20.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "keyframes_percent_easeEach_none", description: "percent keyframes, easeEach:\"none\", duration 2; target starts at x=5 so the 0% keyframe is visible", gsap_calls: &["o={x:5,y:0}", "tw=gsap.to(o,{keyframes:{\"0%\":{x:0},\"50%\":{x:80},\"100%\":{x:100},easeEach:\"none\"},duration:2,paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("initial_target.x", Val::F(5.0)), ("initial_target.y", Val::F(0.0)), ("immediate_after_create.x", Val::F(5.0)), ("immediate_after_create.y", Val::F(0.0)), ("duration", Val::F(2.0)), ("totalDuration", Val::F(2.0)), ("internal_timeline_children.len", Val::F(3.0)), ("internal_timeline_children.0.startTime", Val::F(0.0)), ("internal_timeline_children.0.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.ease", Val::S("none")), ("internal_timeline_children.0.vars.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.x", Val::F(0.0)), ("internal_timeline_children.0.vars.overwrite", Val::B(false)), ("internal_timeline_children.0.vars.delay", Val::F(0.0)), ("internal_timeline_children.1.startTime", Val::F(0.0)), ("internal_timeline_children.1.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.ease", Val::S("none")), ("internal_timeline_children.1.vars.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.x", Val::F(80.0)), ("internal_timeline_children.1.vars.overwrite", Val::B(false)), ("internal_timeline_children.1.vars.delay", Val::F(0.0)), ("internal_timeline_children.2.startTime", Val::F(1.0)), ("internal_timeline_children.2.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.ease", Val::S("none")), ("internal_timeline_children.2.vars.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.x", Val::F(100.0)), ("internal_timeline_children.2.vars.overwrite", Val::B(false)), ("internal_timeline_children.2.vars.delay", Val::F(0.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 4.0, 8.0, 12.0, 16.0, 20.0, 24.0, 28.0, 32.0, 36.0, 40.0, 44.0, 48.0, 52.0, 56.0, 60.0, 64.0, 68.0, 72.0, 76.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "keyframes_percent_default_easeEach", description: "percent keyframes WITHOUT easeEach (default per-segment ease is power1.inOut)", gsap_calls: &["o={x:5,y:0}", "tw=gsap.to(o,{keyframes:{\"0%\":{x:0},\"50%\":{x:80},\"100%\":{x:100}},duration:2,paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("initial_target.x", Val::F(5.0)), ("initial_target.y", Val::F(0.0)), ("immediate_after_create.x", Val::F(5.0)), ("immediate_after_create.y", Val::F(0.0)), ("duration", Val::F(2.0)), ("totalDuration", Val::F(2.0)), ("internal_timeline_children.len", Val::F(3.0)), ("internal_timeline_children.0.startTime", Val::F(0.0)), ("internal_timeline_children.0.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.ease", Val::S("power1.inOut")), ("internal_timeline_children.0.vars.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.x", Val::F(0.0)), ("internal_timeline_children.0.vars.overwrite", Val::B(false)), ("internal_timeline_children.0.vars.delay", Val::F(0.0)), ("internal_timeline_children.1.startTime", Val::F(0.0)), ("internal_timeline_children.1.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.ease", Val::S("power1.inOut")), ("internal_timeline_children.1.vars.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.x", Val::F(80.0)), ("internal_timeline_children.1.vars.overwrite", Val::B(false)), ("internal_timeline_children.1.vars.delay", Val::F(0.0)), ("internal_timeline_children.2.startTime", Val::F(1.0)), ("internal_timeline_children.2.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.ease", Val::S("power1.inOut")), ("internal_timeline_children.2.vars.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.x", Val::F(100.0)), ("internal_timeline_children.2.vars.overwrite", Val::B(false)), ("internal_timeline_children.2.vars.delay", Val::F(0.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.4, 1.6, 3.6, 6.4, 10.0, 14.4, 19.6, 25.6, 32.4, 40.0, 47.6, 54.4, 60.4, 65.6, 70.0, 73.6, 76.4, 78.4, 79.6, 80.0, 80.1, 80.4, 80.9, 81.6, 82.5, 83.6, 84.9, 86.4, 88.1, 90.0, 91.9, 93.6, 95.1, 96.4, 97.5, 98.4, 99.1, 99.6, 99.9, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "keyframes_percent_outer_ease", description: "percent keyframes, easeEach:\"none\" + tween ease \"power2.in\"", gsap_calls: &["o={x:5,y:0}", "tw=gsap.to(o,{keyframes:{\"0%\":{x:0},\"50%\":{x:80},\"100%\":{x:100},easeEach:\"none\"},ease:\"power2.in\",duration:2,paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("initial_target.x", Val::F(5.0)), ("initial_target.y", Val::F(0.0)), ("immediate_after_create.x", Val::F(5.0)), ("immediate_after_create.y", Val::F(0.0)), ("duration", Val::F(2.0)), ("totalDuration", Val::F(2.0)), ("internal_timeline_children.len", Val::F(3.0)), ("internal_timeline_children.0.startTime", Val::F(0.0)), ("internal_timeline_children.0.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.ease", Val::S("none")), ("internal_timeline_children.0.vars.duration", Val::F(0.0)), ("internal_timeline_children.0.vars.x", Val::F(0.0)), ("internal_timeline_children.0.vars.overwrite", Val::B(false)), ("internal_timeline_children.0.vars.delay", Val::F(0.0)), ("internal_timeline_children.1.startTime", Val::F(0.0)), ("internal_timeline_children.1.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.ease", Val::S("none")), ("internal_timeline_children.1.vars.duration", Val::F(1.0)), ("internal_timeline_children.1.vars.x", Val::F(80.0)), ("internal_timeline_children.1.vars.overwrite", Val::B(false)), ("internal_timeline_children.1.vars.delay", Val::F(0.0)), ("internal_timeline_children.2.startTime", Val::F(1.0)), ("internal_timeline_children.2.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.ease", Val::S("none")), ("internal_timeline_children.2.vars.duration", Val::F(1.0)), ("internal_timeline_children.2.vars.x", Val::F(100.0)), ("internal_timeline_children.2.vars.overwrite", Val::B(false)), ("internal_timeline_children.2.vars.delay", Val::F(0.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.002504, 0.02, 0.067496, 0.16, 0.312504, 0.54, 0.857496, 1.28, 1.822504, 2.5, 3.327504, 4.32, 5.492504, 6.86, 8.437504, 10.24, 12.282496, 14.58, 17.147496, 20.0, 23.152504, 26.62, 30.417496, 34.56, 39.062504, 43.94, 49.207504, 54.88, 60.972496, 67.5, 74.477504, 80.48, 82.460626, 84.565, 86.796876, 89.16, 91.658126, 94.295, 97.074376, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "stagger_5_each02_none", description: "5 targets, stagger:0.2, 1 s each, ease none (x 0->100, y 0->50)", gsap_calls: &["objs=5 x {x:0,y:0}", "tw=gsap.to(objs,{x:100,y:50,duration:1,stagger:0.2,ease:\"none\",paused:true})", "sub-tweens: tw.timeline.getChildren()"], driver: "tw.totalTime(t)", meta: &[ ("duration", Val::F(1.8)), ("totalDuration", Val::F(1.8)), ("tween_has_getChildren", Val::B(false)), ("internal_timeline_child_startTimes_by_target_index.len", Val::F(5.0)), ("internal_timeline_child_startTimes_by_target_index.0", Val::F(0.0)), ("internal_timeline_child_startTimes_by_target_index.1", Val::F(0.2)), ("internal_timeline_child_startTimes_by_target_index.2", Val::F(0.4)), ("internal_timeline_child_startTimes_by_target_index.3", Val::F(0.6)), ("internal_timeline_child_startTimes_by_target_index.4", Val::F(0.8)), ("internal_timeline_child_durations_by_target_index.len", Val::F(5.0)), ("internal_timeline_child_durations_by_target_index.0", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.1", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.2", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.3", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.4", Val::F(1.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 2.0, ], series: &[ Series { name: "o0.x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o1.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o2.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o3.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o4.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, ] }, Series { name: "o0.y", v: &[ 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o1.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o2.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o3.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o4.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 50.0, ] }, ] }, SampleCase { id: "stagger_5_each02_power2in", description: "same with ease power2.in: the ease applies to each sub-tween, not to the whole stagger", gsap_calls: &["objs=5 x {x:0,y:0}", "tw=gsap.to(objs,{x:100,y:50,duration:1,stagger:0.2,ease:\"power2.in\",paused:true})"], driver: "tw.totalTime(t)", meta: &[ ("duration", Val::F(1.8)), ("totalDuration", Val::F(1.8)), ("tween_has_getChildren", Val::B(false)), ("internal_timeline_child_startTimes_by_target_index.len", Val::F(5.0)), ("internal_timeline_child_startTimes_by_target_index.0", Val::F(0.0)), ("internal_timeline_child_startTimes_by_target_index.1", Val::F(0.2)), ("internal_timeline_child_startTimes_by_target_index.2", Val::F(0.4)), ("internal_timeline_child_startTimes_by_target_index.3", Val::F(0.6)), ("internal_timeline_child_startTimes_by_target_index.4", Val::F(0.8)), ("internal_timeline_child_durations_by_target_index.len", Val::F(5.0)), ("internal_timeline_child_durations_by_target_index.0", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.1", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.2", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.3", Val::F(1.0)), ("internal_timeline_child_durations_by_target_index.4", Val::F(1.0)), ], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 2.0, ], series: &[ Series { name: "o0.x", v: &[ 0.0, 0.0125, 0.1, 0.3375, 0.8, 1.5625, 2.7, 4.2875, 6.4, 9.1125, 12.5, 16.6375, 21.6, 27.4625, 34.3, 42.1875, 51.2, 61.4125, 72.9, 85.7375, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o1.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0125, 0.1, 0.3375, 0.8, 1.5625, 2.7, 4.2875, 6.4, 9.1125, 12.5, 16.6375, 21.6, 27.4625, 34.3, 42.1875, 51.2, 61.4125, 72.9, 85.7375, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o2.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0125, 0.1, 0.3375, 0.8, 1.5625, 2.7, 4.2875, 6.4, 9.1125, 12.5, 16.6375, 21.6, 27.4625, 34.3, 42.1875, 51.2, 61.4125, 72.9, 85.7375, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o3.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0125, 0.1, 0.3375, 0.8, 1.5625, 2.7, 4.2875, 6.4, 9.1125, 12.5, 16.6375, 21.6, 27.4625, 34.3, 42.1875, 51.2, 61.4125, 72.9, 85.7375, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "o4.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0125, 0.1, 0.3375, 0.8, 1.5625, 2.7, 4.2875, 6.4, 9.1125, 12.5, 16.6375, 21.6, 27.4625, 34.3, 42.1875, 51.2, 61.4125, 72.9, 85.7375, 100.0, 100.0, ] }, Series { name: "o0.y", v: &[ 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o1.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o2.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o3.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, ] }, Series { name: "o4.y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 50.0, ] }, ] }, SampleCase { id: "yoyoEase_power1_out_step_0_05", description: "yoyoEase:\"power1.out\"; ONE instance sampled in increasing t with step 0.05 (result is PATH DEPENDENT in 3.15: the reverse ease is re-anchored where the direction flips)", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,repeat:1,yoyo:true,ease:\"none\",yoyoEase:\"power1.out\",paused:true})"], driver: "tw.totalTime(t), same instance, increasing t", meta: &[("totalDuration", Val::F(2.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, ] }, Series { name: "y", v: &[ 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 45.125, 40.5, 36.125, 32.0, 28.125, 24.5, 21.125, 18.0, 15.125, 12.5, 10.125, 8.0, 6.125, 4.5, 3.125, 2.0, 1.125, 0.5, 0.125, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "yoyoEase_power1_out_step_0_03", description: "yoyoEase:\"power1.out\"; ONE instance sampled in increasing t with step 0.03 (result is PATH DEPENDENT in 3.15: the reverse ease is re-anchored where the direction flips)", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,repeat:1,yoyo:true,ease:\"none\",yoyoEase:\"power1.out\",paused:true})"], driver: "tw.totalTime(t), same instance, increasing t", meta: &[("totalDuration", Val::F(2.0))], t: &[ 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3, 0.33, 0.36, 0.39, 0.42, 0.45, 0.48, 0.51, 0.54, 0.57, 0.6, 0.63, 0.66, 0.69, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87, 0.9, 0.93, 0.96, 0.99, 1.02, 1.05, 1.08, 1.11, 1.14, 1.17, 1.2, 1.23, 1.26, 1.29, 1.32, 1.35, 1.38, 1.41, 1.44, 1.47, 1.5, 1.53, 1.56, 1.59, 1.62, 1.65, 1.68, 1.71, 1.74, 1.77, 1.8, 1.83, 1.86, 1.89, 1.92, 1.95, 1.98, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 42.0, 45.0, 48.0, 51.0, 54.0, 57.0, 60.0, 63.0, 66.0, 69.0, 72.0, 75.0, 78.0, 81.0, 84.0, 87.0, 90.0, 93.0, 96.0, 99.0, 97.010101, 91.161616, 85.494949, 80.010101, 74.707071, 69.585859, 64.646465, 59.888889, 55.313131, 50.919192, 46.707071, 42.676768, 38.828283, 35.161616, 31.676768, 28.373737, 25.252525, 22.313131, 19.555556, 16.979798, 14.585859, 12.373737, 10.343434, 8.494949, 6.828283, 5.343434, 4.040404, 2.919192, 1.979798, 1.222222, 0.646465, 0.252525, 0.040404, 0.0, ] }, Series { name: "y", v: &[ 0.0, 1.5, 3.0, 4.5, 6.0, 7.5, 9.0, 10.5, 12.0, 13.5, 15.0, 16.5, 18.0, 19.5, 21.0, 22.5, 24.0, 25.5, 27.0, 28.5, 30.0, 31.5, 33.0, 34.5, 36.0, 37.5, 39.0, 40.5, 42.0, 43.5, 45.0, 46.5, 48.0, 49.5, 48.505051, 45.580808, 42.747475, 40.005051, 37.353535, 34.792929, 32.323232, 29.944444, 27.656566, 25.459596, 23.353535, 21.338384, 19.414141, 17.580808, 15.838384, 14.186869, 12.626263, 11.156566, 9.777778, 8.489899, 7.292929, 6.186869, 5.171717, 4.247475, 3.414141, 2.671717, 2.020202, 1.459596, 0.989899, 0.611111, 0.323232, 0.126263, 0.020202, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18, 0.21, 0.24, 0.27, 0.3, 0.33, 0.36, 0.39, 0.42, 0.45, 0.48, 0.51, 0.54, 0.57, 0.6, 0.63, 0.66, 0.69, 0.72, 0.75, 0.78, 0.81, 0.84, 0.87, 0.9, 0.93, 0.96, 0.99, 0.98, 0.95, 0.92, 0.89, 0.86, 0.83, 0.8, 0.77, 0.74, 0.71, 0.6799999999999999, 0.65, 0.62, 0.5900000000000001, 0.56, 0.53, 0.5, 0.47, 0.43999999999999995, 0.41000000000000003, 0.38, 0.35, 0.31999999999999995, 0.29000000000000004, 0.26, 0.22999999999999998, 0.19999999999999996, 0.17000000000000004, 0.14, 0.10999999999999999, 0.07999999999999996, 0.050000000000000044, 0.020000000000000018, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "yoyoEase_power1_out_fresh_instance", description: "yoyoEase:\"power1.out\", but a FRESH tween per sample (single jump from 0 to t): the reverse ease never engages", gsap_calls: &["o={x:0,y:0}", "tw=gsap.to(o,{x:100,y:50,duration:1,repeat:1,yoyo:true,ease:\"none\",yoyoEase:\"power1.out\",paused:true})"], driver: "fresh tw per t; tw.totalTime(t)", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 95.0, 90.0, 85.0, 80.0, 75.0, 70.0, 65.0, 60.0, 55.0, 50.0, 45.0, 40.0, 35.0, 30.0, 25.0, 20.0, 15.0, 10.0, 5.0, 0.0, ] }, Series { name: "y", v: &[ 0.0, 2.5, 5.0, 7.5, 10.0, 12.5, 15.0, 17.5, 20.0, 22.5, 25.0, 27.5, 30.0, 32.5, 35.0, 37.5, 40.0, 42.5, 45.0, 47.5, 50.0, 47.5, 45.0, 42.5, 40.0, 37.5, 35.0, 32.5, 30.0, 27.5, 25.0, 22.5, 20.0, 17.5, 15.0, 12.5, 10.0, 7.5, 5.0, 2.5, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, ] }, SampleCase { id: "yoyoEase_true", description: "yoyoEase:true (reverse ease = the forward ease, applied re-anchored) step 0.05", gsap_calls: &["tw=gsap.to(o,{x:100,y:50,duration:1,repeat:1,yoyo:true,ease:\"power1.in\",yoyoEase:true,paused:true})"], driver: "tw.totalTime(t), increasing", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 30.25, 36.0, 42.25, 49.0, 56.25, 64.0, 72.25, 81.0, 90.25, 100.0, 99.75, 99.0, 97.75, 96.0, 93.75, 91.0, 87.75, 84.0, 79.75, 75.0, 69.75, 64.0, 57.75, 51.0, 43.75, 36.0, 27.75, 19.0, 9.75, 0.0, ] }, Series { name: "y", v: &[ 0.0, 0.125, 0.5, 1.125, 2.0, 3.125, 4.5, 6.125, 8.0, 10.125, 12.5, 15.125, 18.0, 21.125, 24.5, 28.125, 32.0, 36.125, 40.5, 45.125, 50.0, 49.875, 49.5, 48.875, 48.0, 46.875, 45.5, 43.875, 42.0, 39.875, 37.5, 34.875, 32.0, 28.875, 25.5, 21.875, 18.0, 13.875, 9.5, 4.875, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "yoyo_plain_power1_in", description: "reference: same yoyo tween without yoyoEase, step 0.05", gsap_calls: &["tw=gsap.to(o,{x:100,y:50,duration:1,repeat:1,yoyo:true,ease:\"power1.in\",paused:true})"], driver: "tw.totalTime(t), increasing", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.25, 1.0, 2.25, 4.0, 6.25, 9.0, 12.25, 16.0, 20.25, 25.0, 30.25, 36.0, 42.25, 49.0, 56.25, 64.0, 72.25, 81.0, 90.25, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, ] }, Series { name: "y", v: &[ 0.0, 0.125, 0.5, 1.125, 2.0, 3.125, 4.5, 6.125, 8.0, 10.125, 12.5, 15.125, 18.0, 21.125, 24.5, 28.125, 32.0, 36.125, 40.5, 45.125, 50.0, 45.125, 40.5, 36.125, 32.0, 28.125, 24.5, 21.125, 18.0, 15.125, 12.5, 10.125, 8.0, 6.125, 4.5, 3.125, 2.0, 1.125, 0.5, 0.125, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "easeReverse_scrub_back", description: "easeReverse:\"power1.out\" (3.15 option; yoyoEase is an alias) on a non-repeating linear tween: forward 0..0.6, BACK 0.5..0, forward again 0.1..1 (t column is the visiting order, not sorted)", gsap_calls: &["tw=gsap.to(o,{x:100,y:50,duration:1,ease:\"none\",easeReverse:\"power1.out\",paused:true})"], driver: "tw.totalTime(t) in the listed order", meta: &[], t: &[ 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, ], series: &[ Series { name: "x", v: &[ 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 41.666667, 26.666667, 15.0, 6.666667, 1.666667, 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 20.833333, 13.333333, 7.5, 3.333333, 0.833333, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, ] }, ] }, SampleCase { id: "timeline_defaults_ease", description: "timeline defaults {ease:\"power2.inOut\",duration:1}; child 2 overrides ease:\"none\"", gsap_calls: &["tl=gsap.timeline({paused:true,defaults:{ease:\"power2.inOut\",duration:1}})", "tl.to(o,{x:100}).to(o,{y:100,ease:\"none\"})"], driver: "tl.seek(t)", meta: &[("timeline_duration", Val::F(2.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.05, 0.4, 1.35, 3.2, 6.25, 10.8, 17.15, 25.6, 36.45, 50.0, 63.55, 74.4, 82.85, 89.2, 93.75, 96.8, 98.65, 99.6, 99.95, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, ] }, ] }, SampleCase { id: "timeline_eased_by_tweenFromTo", description: "a linear child; the TIMELINE is eased by tl.tweenFromTo(0,2,{ease:\"power2.inOut\"})", gsap_calls: &["tl=gsap.timeline({paused:true}); tl.to(o,{x:100,y:50,duration:2,ease:\"none\"})", "tw=tl.tweenFromTo(0,2,{ease:\"power2.inOut\",paused:true})"], driver: "tw.totalTime(t)", meta: &[("tween_duration", Val::F(2.0))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 0.00625, 0.05, 0.16875, 0.4, 0.78125, 1.35, 2.14375, 3.2, 4.55625, 6.25, 8.31875, 10.8, 13.73125, 17.15, 21.09375, 25.6, 30.70625, 36.45, 42.86875, 50.0, 57.13125, 63.55, 69.29375, 74.4, 78.90625, 82.85, 86.26875, 89.2, 91.68125, 93.75, 95.44375, 96.8, 97.85625, 98.65, 99.21875, 99.6, 99.83125, 99.95, 99.99375, 100.0, ] }, Series { name: "y", v: &[ 0.0, 0.003125, 0.025, 0.084375, 0.2, 0.390625, 0.675, 1.071875, 1.6, 2.278125, 3.125, 4.159375, 5.4, 6.865625, 8.575, 10.546875, 12.8, 15.353125, 18.225, 21.434375, 25.0, 28.565625, 31.775, 34.646875, 37.2, 39.453125, 41.425, 43.134375, 44.6, 45.840625, 46.875, 47.721875, 48.4, 48.928125, 49.325, 49.609375, 49.8, 49.915625, 49.975, 49.996875, 50.0, ] }, Series { name: "tl.time", v: &[ 0.0, 0.000125, 0.001, 0.003375, 0.008, 0.015625, 0.027, 0.042875, 0.064, 0.091125, 0.125, 0.166375, 0.216, 0.274625, 0.343, 0.421875, 0.512, 0.614125, 0.729, 0.857375, 1.0, 1.142625, 1.271, 1.385875, 1.488, 1.578125, 1.657, 1.725375, 1.784, 1.833625, 1.875, 1.908875, 1.936, 1.957125, 1.973, 1.984375, 1.992, 1.996625, 1.999, 1.999875, 2.0, ] }, ] }, SampleCase { id: "timeline_progress_tweened", description: "child ease power1.in, and the timeline progress tweened 0->1 with power2.out (eases compose: x = 100*power1.in(power2.out(t)))", gsap_calls: &["tl=gsap.timeline({paused:true}); tl.to(o,{x:100,y:50,duration:2,ease:\"power1.in\"})", "tw=gsap.to(tl,{progress:1,duration:1,ease:\"power2.out\",paused:true})"], driver: "tw.totalTime(t)", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ], series: &[ Series { name: "x", v: &[ 0.0, 2.034189, 7.3441, 14.889952, 23.8144, 33.422852, 43.1649, 52.616889, 61.4656, 69.493064, 76.5625, 82.605377, 87.6096, 91.608827, 94.6729, 96.899414, 98.4064, 99.326139, 99.8001, 99.975002, 100.0, ] }, Series { name: "y", v: &[ 0.0, 1.017095, 3.67205, 7.444976, 11.9072, 16.711426, 21.58245, 26.308445, 30.7328, 34.746532, 38.28125, 41.302688, 43.8048, 45.804413, 47.33645, 48.449707, 49.2032, 49.66307, 49.90005, 49.987501, 50.0, ] }, Series { name: "tl.progress", v: &[ 0.0, 0.142625, 0.271, 0.385875, 0.488, 0.578125, 0.657, 0.725375, 0.784, 0.833625, 0.875, 0.908875, 0.936, 0.957125, 0.973, 0.984375, 0.992, 0.996625, 0.999, 0.999875, 1.0, ] }, ] }, SampleCase { id: "default_ease_power1_out", description: "no ease given -> default ease (power1.out)", gsap_calls: &["tw=gsap.to(o,{x:100,y:50,duration:1,paused:true})"], driver: "tw.totalTime(t)", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ], series: &[ Series { name: "x", v: &[ 0.0, 9.75, 19.0, 27.75, 36.0, 43.75, 51.0, 57.75, 64.0, 69.75, 75.0, 79.75, 84.0, 87.75, 91.0, 93.75, 96.0, 97.75, 99.0, 99.75, 100.0, ] }, Series { name: "y", v: &[ 0.0, 4.875, 9.5, 13.875, 18.0, 21.875, 25.5, 28.875, 32.0, 34.875, 37.5, 39.875, 42.0, 43.875, 45.5, 46.875, 48.0, 48.875, 49.5, 49.875, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "default_duration", description: "no duration given -> default duration 0.5 s (and default ease power1.out)", gsap_calls: &["tw=gsap.to(o,{x:100,y:50,paused:true})"], driver: "tw.totalTime(t)", meta: &[("duration", Val::F(0.5))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, ], series: &[ Series { name: "x", v: &[ 0.0, 19.0, 36.0, 51.0, 64.0, 75.0, 84.0, 91.0, 96.0, 99.0, 100.0, ] }, Series { name: "y", v: &[ 0.0, 9.5, 18.0, 25.5, 32.0, 37.5, 42.0, 45.5, 48.0, 49.5, 50.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ] }, ] }, SampleCase { id: "rounding_probes", description: "evidence for GSAP time snapping/rounding", gsap_calls: &[], driver: "", meta: &[ ("probes.len", Val::F(10.0)), ("probes.0.probe", Val::S("plain_tween")), ("probes.0.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true}).totalTime(0.123456789)")), ("probes.0.t_in", Val::F(0.123456789)), ("probes.0.x", Val::F(12.345679)), ("probes.0.time", Val::F(0.123456789)), ("probes.0.totalTime", Val::F(0.123456789)), ("probes.1.probe", Val::S("plain_tween")), ("probes.1.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true}).totalTime(0.999999995)")), ("probes.1.t_in", Val::F(0.999999995)), ("probes.1.x", Val::F(100.0)), ("probes.1.time", Val::F(1.0)), ("probes.1.totalTime", Val::F(1.0)), ("probes.2.probe", Val::S("plain_tween")), ("probes.2.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true}).totalTime(0.99999998)")), ("probes.2.t_in", Val::F(0.99999998)), ("probes.2.x", Val::F(99.999998)), ("probes.2.time", Val::F(0.99999998)), ("probes.2.totalTime", Val::F(0.99999998)), ("probes.3.probe", Val::S("plain_tween")), ("probes.3.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true}).totalTime(5e-9)")), ("probes.3.t_in", Val::F(5e-9)), ("probes.3.x", Val::F(0.0)), ("probes.3.time", Val::F(0.0)), ("probes.3.totalTime", Val::F(0.0)), ("probes.4.probe", Val::S("plain_tween")), ("probes.4.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true}).totalTime(2e-8)")), ("probes.4.t_in", Val::F(2e-8)), ("probes.4.x", Val::F(0.000002)), ("probes.4.time", Val::F(2e-8)), ("probes.4.totalTime", Val::F(2e-8)), ("probes.5.probe", Val::S("repeating_tween")), ("probes.5.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",repeat:1,paused:true}).totalTime(0.123456789)")), ("probes.5.t_in", Val::F(0.123456789)), ("probes.5.x", Val::F(12.34568)), ("probes.5.time", Val::F(0.1234568)), ("probes.5.totalTime", Val::F(0.123456789)), ("probes.6.probe", Val::S("repeating_tween")), ("probes.6.call", Val::S("gsap.to(o,{x:100,duration:1,ease:\"none\",repeat:1,paused:true}).totalTime(1.123456789)")), ("probes.6.t_in", Val::F(1.123456789)), ("probes.6.x", Val::F(12.34568)), ("probes.6.time", Val::F(0.1234568)), ("probes.6.totalTime", Val::F(1.123456789)), ("probes.7.probe", Val::S("tween_in_timeline")), ("probes.7.call", Val::S("tl=gsap.timeline({paused:true}); tl.to(o,{x:100,duration:1,ease:\"none\"}); tl.totalTime(0.123456789)")), ("probes.7.t_in", Val::F(0.123456789)), ("probes.7.x", Val::F(12.34568)), ("probes.7.time", Val::F(0.1234568)), ("probes.7.totalTime", Val::F(0.1234568)), ("probes.8.probe", Val::S("tween_in_timeline")), ("probes.8.call", Val::S("tl=gsap.timeline({paused:true}); tl.to(o,{x:100,duration:1,ease:\"none\"}); tl.totalTime(0.99999995)")), ("probes.8.t_in", Val::F(0.99999995)), ("probes.8.x", Val::F(100.0)), ("probes.8.time", Val::F(1.0)), ("probes.8.totalTime", Val::F(1.0)), ("probes.9.probe", Val::S("tween_in_timeline")), ("probes.9.call", Val::S("tl=gsap.timeline({paused:true}); tl.to(o,{x:100,duration:1,ease:\"none\"}); tl.totalTime(0.9999996)")), ("probes.9.t_in", Val::F(0.9999996)), ("probes.9.x", Val::F(99.99996)), ("probes.9.time", Val::F(0.9999996)), ("probes.9.totalTime", Val::F(0.9999996)), ], t: &[], series: &[] }, SampleCase { id: "design_t4_yoyo_repeat_delay_table", description: "design 12.3 T4: linear 0->100, d1, repeat 2, yoyo, repeatDelay .5 (tdur 4)", gsap_calls: &["o={x:0}", "tw=gsap.to(o,{x:100,duration:1,repeat:2,yoyo:true,repeatDelay:0.5,ease:\"none\",paused:true})"], driver: "tw.totalTime(t) (increasing t)", meta: &[("totalDuration", Val::F(4.0))], t: &[0.25, 1.0, 1.25, 1.5, 1.75, 2.5, 2.75, 3.0, 3.25, 4.0], series: &[ Series { name: "x", v: &[25.0, 100.0, 100.0, 100.0, 75.0, 0.0, 0.0, 0.0, 25.0, 100.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.25, 1.0, 1.0, 1.0, 0.75, 0.0, 0.0, 0.0, 0.25, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0] }, Series { name: "anim.progress", v: &[0.25, 1.0, 1.0, 1.0, 0.75, 0.0, 0.0, 0.0, 0.25, 1.0] }, Series { name: "anim.totalProgress", v: &[0.0625, 0.25, 0.3125, 0.375, 0.4375, 0.625, 0.6875, 0.75, 0.8125, 1.0] }, Series { name: "anim.totalTime", v: &[0.25, 1.0, 1.25, 1.5, 1.75, 2.5, 2.75, 3.0, 3.25, 4.0] }, ] }, SampleCase { id: "design_t4b_exact_cycle_boundary", description: "design 12.3 T4b: repeat 2, no yoyo, repeatDelay 0: an exact boundary belongs to the iteration that ends there", gsap_calls: &["tw=gsap.to(o,{x:100,duration:1,repeat:2,ease:\"none\",paused:true})"], driver: "tw.totalTime(t) (increasing t)", meta: &[], t: &[0.5, 1.0, 1.5, 2.0, 2.5, 3.0], series: &[ Series { name: "x", v: &[50.0, 100.0, 50.0, 100.0, 50.0, 100.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.5, 1.0, 0.5, 1.0, 0.5, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 2.0, 2.0, 3.0, 3.0] }, Series { name: "anim.progress", v: &[0.5, 1.0, 0.5, 1.0, 0.5, 1.0] }, Series { name: "anim.totalProgress", v: &[0.16666666666666666, 0.3333333333333333, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0] }, Series { name: "anim.totalTime", v: &[0.5, 1.0, 1.5, 2.0, 2.5, 3.0] }, ] }, SampleCase { id: "design_yoyo_ease_true_power1_out_step_0_05", description: "design 12.3 yoyo_ease Invert: power1.out (OutQuad), repeat 1, yoyo, yoyoEase:true, one instance stepped by 0.05 (the flip lands exactly on 1, so GSAP 3.15 re-anchors at (1, 1) and equals the pure rule 1 - ease(1 - p))", gsap_calls: &["tw=gsap.to(o,{x:100,duration:1,repeat:1,yoyo:true,ease:\"power1.out\",yoyoEase:true,paused:true})"], driver: "tw.totalTime(t), same instance, increasing t", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 9.75, 19.0, 27.75, 36.0, 43.75, 51.0, 57.75, 64.0, 69.75, 75.0, 79.75, 84.0, 87.75, 91.0, 93.75, 96.0, 97.75, 99.0, 99.75, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "design_yoyo_plain_power1_out", description: "reference: the same tween without yoyoEase", gsap_calls: &["tw=gsap.to(o,{x:100,duration:1,repeat:1,yoyo:true,ease:\"power1.out\",paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 9.75, 19.0, 27.75, 36.0, 43.75, 51.0, 57.75, 64.0, 69.75, 75.0, 79.75, 84.0, 87.75, 91.0, 93.75, 96.0, 97.75, 99.0, 99.75, 100.0, 99.75, 99.0, 97.75, 96.0, 93.75, 91.0, 87.75, 84.0, 79.75, 75.0, 69.75, 64.0, 57.75, 51.0, 43.75, 36.0, 27.75, 19.0, 9.75, 0.0, ] }, Series { name: "y", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, Series { name: "anim.iteration", v: &[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, ] }, ] }, SampleCase { id: "design_yoyo_ease_true_power1_out_fresh", description: "yoyoEase:true, a FRESH tween per sample (one jump 0 -> t): 3.15 never sees a direction change and renders the forward ease (path dependence; the design deviates)", gsap_calls: &["fresh tw per t: gsap.to(o,{x:100,duration:1,repeat:1,yoyo:true,ease:\"power1.out\",yoyoEase:true,paused:true}).totalTime(t)"], driver: "fresh tw per t", meta: &[], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, ], series: &[ Series { name: "x", v: &[ 0.0, 9.75, 19.0, 27.75, 36.0, 43.75, 51.0, 57.75, 64.0, 69.75, 75.0, 79.75, 84.0, 87.75, 91.0, 93.75, 96.0, 97.75, 99.0, 99.75, 100.0, 99.75, 99.0, 97.75, 96.0, 93.75, 91.0, 87.75, 84.0, 79.75, 75.0, 69.75, 64.0, 57.75, 51.0, 43.75, 36.0, 27.75, 19.0, 9.75, 0.0, ] }, Series { name: "anim.time", v: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.44999999999999996, 0.4, 0.35, 0.30000000000000004, 0.25, 0.19999999999999996, 0.15000000000000002, 0.09999999999999998, 0.050000000000000044, 0.0, ] }, ] }, SampleCase { id: "design_yoyo_ease_implies_yoyo", description: "yoyoEase without yoyo still yoyos (_yoyo = !!yoyo || !!yoyoEase)", gsap_calls: &["tw=gsap.to(o,{x:100,duration:1,repeat:1,ease:\"none\",yoyoEase:true,paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[("yoyo_getter", Val::B(true))], t: &[0.5, 1.0, 1.25, 1.5, 2.0], series: &[ Series { name: "x", v: &[50.0, 100.0, 75.0, 50.0, 0.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.5, 1.0, 0.75, 0.5, 0.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 2.0, 2.0, 2.0] }, ] }, SampleCase { id: "design_repeat_refresh_relative_step", description: "repeatRefresh with x:\"+=100\": GSAP renders the boundary of the ended iteration (suppressed) and THEN invalidates, so each iteration starts from the exact previous end", gsap_calls: &["tw=gsap.to(o,{x:\"+=100\",duration:1,repeat:2,repeatRefresh:true,ease:\"none\",paused:true})"], driver: "tw.totalTime(t) in the listed order", meta: &[], t: &[0.5, 1.5, 2.5, 3.0], series: &[ Series { name: "x", v: &[50.0, 150.0, 250.0, 300.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.5, 0.5, 0.5, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 2.0, 3.0, 3.0] }, ] }, SampleCase { id: "design_repeat_refresh_relative_jump", description: "same, but jumping 0.5 -> 2.5: the boundary render lands the end of iteration 2 with iteration 2 values never refreshed (x 100), so iteration 3 runs 100 -> 200", gsap_calls: &["tw=gsap.to(o,{x:\"+=100\",duration:1,repeat:2,repeatRefresh:true,ease:\"none\",paused:true})"], driver: "tw.totalTime(t) in the listed order", meta: &[], t: &[0.5, 2.5, 3.0], series: &[ Series { name: "x", v: &[50.0, 150.0, 200.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.5, 0.5, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 3.0, 3.0] }, ] }, SampleCase { id: "design_kf_percent_0_50_fresh", description: "percent keyframes {0%:0, 50%:100}, duration 1 (keys end before 100% -> GSAP pads with a filler tween). FIRST render uses a stale inner duration (0.5 instead of 1): GSAP cache bug", gsap_calls: &["tw=gsap.to(o,{keyframes:{\"0%\":{x:0},\"50%\":{x:100}},duration:1,paused:true})"], driver: "tw.totalTime(t) in the listed order (first sample is the first render)", meta: &[("duration", Val::F(1.0))], t: &[0.125, 0.25, 0.75], series: &[ Series { name: "x", v: &[3.125, 50.0, 100.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.125, 0.25, 0.75] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_percent_0_50_warm", description: "same keyframes after one warm-up render (totalTime(1) then 0): the inner duration is 1 and the design values hold", gsap_calls: &["tw=gsap.to(o,{keyframes:{\"0%\":{x:0},\"50%\":{x:100}},duration:1,paused:true})", "tw.totalTime(1); tw.totalTime(0)"], driver: "tw.totalTime(t) in the listed order", meta: &[("duration", Val::F(1.0))], t: &[0.125, 0.25, 0.75], series: &[ Series { name: "x", v: &[12.5, 50.0, 100.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.125, 0.25, 0.75] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_values_0_100_50", description: "value keyframes {x:[0,100,50]}, duration 1 (keys at 0/50/100%, easeEach power1.inOut)", gsap_calls: &["tw=gsap.to(o,{keyframes:{x:[0,100,50]},duration:1,paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[("duration", Val::F(1.0))], t: &[0.25, 0.5, 0.75, 1.0], series: &[ Series { name: "x", v: &[50.0, 100.0, 75.0, 50.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.25, 0.5, 0.75, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_steps_x_then_y", description: "array keyframes [{x:100,duration:1},{y:50,duration:0.5}] (default ease \"none\" per step)", gsap_calls: &["tw=gsap.to(o,{keyframes:[{x:100,duration:1},{y:50,duration:0.5}],paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[("duration", Val::F(1.5))], t: &[0.5, 1.0, 1.25, 1.5], series: &[ Series { name: "x", v: &[50.0, 100.0, 100.0, 100.0] }, Series { name: "y", v: &[0.0, 0.0, 25.0, 50.0] }, Series { name: "anim.time", v: &[0.5, 1.0, 1.25, 1.5] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_array_default_durations", description: "array keyframes without durations: each step takes the default duration 0.5 (and ease \"none\")", gsap_calls: &["tw=gsap.to(o,{keyframes:[{x:100},{x:0}],paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[("duration", Val::F(1.0))], t: &[0.25, 0.5, 0.75, 1.0], series: &[ Series { name: "x", v: &[50.0, 100.0, 50.0, 0.0] }, Series { name: "y", v: &[0.0, 0.0, 0.0, 0.0] }, Series { name: "anim.time", v: &[0.25, 0.5, 0.75, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_ordinary_prop", description: "a plain prop (y:50) next to percent keyframes: it is tweened by the TWEEN itself with the tween's ease (none, since a keyframe tween defaults its own ease to \"none\"), not as a keyframe track", gsap_calls: &["tw=gsap.to(o,{keyframes:{\"50%\":{x:100},\"100%\":{x:100}},y:50,duration:1,paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[], t: &[0.25, 0.5, 0.75, 1.0], series: &[ Series { name: "x", v: &[50.0, 100.0, 100.0, 100.0] }, Series { name: "y", v: &[12.5, 25.0, 37.5, 50.0] }, Series { name: "anim.time", v: &[0.25, 0.5, 0.75, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_kf_ordinary_prop_outer_ease", description: "a plain prop (y:50) next to percent keyframes: it is tweened by the TWEEN itself with the tween's ease (power2.in, since a keyframe tween defaults its own ease to \"none\"), not as a keyframe track", gsap_calls: &["tw=gsap.to(o,{keyframes:{\"50%\":{x:100},\"100%\":{x:100}},y:50,duration:1,ease:\"power2.in\",paused:true})"], driver: "tw.totalTime(t), increasing t", meta: &[], t: &[0.25, 0.5, 0.75, 1.0], series: &[ Series { name: "x", v: &[0.195313, 12.5, 95.117188, 100.0] }, Series { name: "y", v: &[0.78125, 6.25, 21.09375, 50.0] }, Series { name: "anim.time", v: &[0.25, 0.5, 0.75, 1.0] }, Series { name: "anim.iteration", v: &[1.0, 1.0, 1.0, 1.0] }, ] }, SampleCase { id: "design_t5_backward_scrub", description: "design 12.5 T5: two chained to() on one prop; seek(2) then seek(0.5) restores the earlier sibling", gsap_calls: &["tl.to(o,{a:100,duration:1,ease:\"none\"}).to(o,{a:200,duration:1,ease:\"none\"})"], driver: "tl.seek(t) in the listed order", meta: &[], t: &[2.0, 0.5], series: &[ Series { name: "a", v: &[200.0, 50.0] }, Series { name: "tl.time", v: &[2.0, 0.5] }, ] }, SampleCase { id: "design_t6_forward_seek_chained", description: "design 12.5 T6: fresh timeline, one forward seek(1.5): the second tween captures 100 (the first was rendered before it in the walk)", gsap_calls: &["same build as design_t5_backward_scrub"], driver: "tl.seek(t)", meta: &[], t: &[1.5], series: &[ Series { name: "a", v: &[150.0] }, ] }, SampleCase { id: "design_t7_no_early_capture", description: "design 12.5 T7: stepped by 0.1 (tl.totalTime(k*0.1)): the second tween captures only when it starts, so a(1.5) = 150", gsap_calls: &["same build as design_t5_backward_scrub"], driver: "tl.totalTime(t), increasing t", meta: &[], t: &[ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, ], series: &[ Series { name: "a", v: &[ 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0, 190.0, 200.0, ] }, ] }, SampleCase { id: "design_t13_stacked_from", description: "design 12.5 T13: tl.from(a:50).from(a:80) on a=0: each from() renders immediately; the second captures 50 as its end", gsap_calls: &["o={a:0}", "tl.from(o,{a:50,duration:1,ease:\"none\"}).from(o,{a:80,duration:1,ease:\"none\"})"], driver: "tl.seek(t) in the listed order", meta: &[("a_after_first_from", Val::F(50.0)), ("a_after_build", Val::F(80.0))], t: &[2.0, 0.5, 1.5, 0.0], series: &[ Series { name: "a", v: &[50.0, 25.0, 65.0, 50.0] }, ] }, SampleCase { id: "design_t14_zero_duration_direction", description: "design 12.5 T14: tl.set(o,{a:5},1) beside a 2 s filler; seek (suppressed) .99, 1.0, 0.5", gsap_calls: &["tl.to(f,{x:1,duration:2},0)", "tl.set(o,{a:5},1)"], driver: "tl.seek(t) in the listed order", meta: &[("a_after_create", Val::F(0.0))], t: &[0.99, 1.0, 0.5, 1.5, 1.0], series: &[ Series { name: "a", v: &[0.0, 5.0, 0.0, 5.0, 5.0] }, ] }, SampleCase { id: "design_stagger_yoyo_ease", description: "stagger 0.2 over 3 targets, repeat 1, yoyo, ease none, yoyoEase power1.out on the TWEEN: the yoyo ease reaches the sub-tweens in the group's yoyo pass (3.15 copies easeReverse into each child; 3.12 swapped it in via _propagateYoyoEase). Stepped by 0.05", gsap_calls: &["objs=3 x {x:0}", "tw=gsap.to(objs,{x:100,duration:1,stagger:0.2,repeat:1,yoyo:true,ease:\"none\",yoyoEase:\"power1.out\",paused:true})"], driver: "tw.totalTime(t), same instance, increasing t", meta: &[("duration", Val::F(1.4)), ("totalDuration", Val::F(2.8))], t: &[ 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3, 2.35, 2.4, 2.45, 2.5, 2.55, 2.6, 2.65, 2.7, 2.75, 2.8, ], series: &[ Series { name: "o0.x", v: &[ 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, ] }, Series { name: "o1.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, Series { name: "o2.x", v: &[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 90.25, 81.0, 72.25, 64.0, 56.25, 49.0, 42.25, 36.0, 30.25, 25.0, 20.25, 16.0, 12.25, 9.0, 6.25, 4.0, 2.25, 1.0, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ] }, ] }, SampleCase { id: "design_value_rounding", description: "GSAP rounds a plain numeric property to 1e-6 when it writes it (PropTween _renderPlain); the design does not (DEVIATE); tests compare with 5e-7 abs", gsap_calls: &["tw=gsap.to(o,{x:100,duration:1,ease:\"none\",paused:true})"], driver: "tw.totalTime(t)", meta: &[], t: &[0.001234567891, 0.123456789123, 0.3333333333333333], series: &[ Series { name: "x", v: &[0.123457, 12.345679, 33.333333] }, Series { name: "anim.time", v: &[0.001234567891, 0.123456789123, 0.3333333333333333] }, ] }, ];