tensum 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +54 -21
- package/dist/css-linear.d.ts +7 -0
- package/dist/css-linear.d.ts.map +1 -1
- package/dist/css-linear.js +88 -35
- package/dist/css-linear.js.map +1 -1
- package/dist/gsap/plugin.d.ts +8 -5
- package/dist/gsap/plugin.d.ts.map +1 -1
- package/dist/gsap/plugin.js +31 -31
- package/dist/gsap/plugin.js.map +1 -1
- package/dist/gsap/spring-to.d.ts +1 -0
- package/dist/gsap/spring-to.d.ts.map +1 -1
- package/dist/gsap/spring-to.js +4 -4
- package/dist/gsap/spring-to.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/support/additive-spring-value.d.ts +2 -3
- package/dist/support/additive-spring-value.d.ts.map +1 -1
- package/dist/support/additive-spring-value.js +11 -6
- package/dist/support/additive-spring-value.js.map +1 -1
- package/dist/support/spring-value.d.ts.map +1 -1
- package/dist/support/spring-value.js +1 -2
- package/dist/support/spring-value.js.map +1 -1
- package/package.json +2 -2
- package/src/css-linear.ts +130 -39
- package/src/gsap/plugin.ts +33 -39
- package/src/gsap/spring-to.ts +11 -3
- package/src/index.ts +1 -4
- package/src/support/additive-spring-value.ts +18 -10
- package/src/support/spring-value.ts +1 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additive-spring-value.js","sourceRoot":"","sources":["../../src/support/additive-spring-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"additive-spring-value.js","sourceRoot":"","sources":["../../src/support/additive-spring-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-value.d.ts","sourceRoot":"","sources":["../../src/support/spring-value.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,GAAG,IAAI,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,iBAAiB,GACjB,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,GAAG,IAAI,MAAM,CAAC;IACd,WAAW,IAAI,MAAM,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,aAAa,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC5C,WAAW,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACtE,aAAa,CACX,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAC1D,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;IACb,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC;CACjB;AAyBD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,
|
|
1
|
+
{"version":3,"file":"spring-value.d.ts","sourceRoot":"","sources":["../../src/support/spring-value.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAGjB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,GAAG,IAAI,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,iBAAiB,GACjB,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,GAAG,IAAI,MAAM,CAAC;IACd,WAAW,IAAI,MAAM,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,aAAa,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC5C,WAAW,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACtE,aAAa,CACX,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAC1D,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;IACb,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC;CACjB;AAyBD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAmTb"}
|
|
@@ -81,8 +81,7 @@ export function createSpringValue(initialValue, parameters, driver, options = {}
|
|
|
81
81
|
write(solution.initialState.target, 0);
|
|
82
82
|
if (revision !== sampledRevision)
|
|
83
83
|
return;
|
|
84
|
-
if (!sampled.logicalComplete
|
|
85
|
-
elapsed >= sampled.logicalDuration) {
|
|
84
|
+
if (!sampled.logicalComplete) {
|
|
86
85
|
sampled.logicalComplete = true;
|
|
87
86
|
emit('logicalComplete');
|
|
88
87
|
if (revision !== sampledRevision)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-value.js","sourceRoot":"","sources":["../../src/support/spring-value.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spring-value.js","sourceRoot":"","sources":["../../src/support/spring-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AA2EtE,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,UAA4B,EAC5B,MAAmB,EACnB,UAA8B,EAAE;IAEhC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,WAAW,GAAsB;QACrC,QAAQ,EAAE,QAAQ,CAAC,eAAe;QAClC,QAAQ,EAAE,QAAQ,CAAC,eAAe;QAClC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;KACpD,CAAC;IACF,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAuD;QACpE,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,SAAS,EAAE,IAAI,GAAG,EAAE;KACrB,CAAC;IAEF,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,OAAyC,CAAC;IAC9C,IAAI,MAAgC,CAAC;IACrC,IAAI,WAAqC,CAAC;IAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,QAAQ,GAAG,GAAkC,EAAE,CACnD,MAAM,CAAC,MAAM,CAAC;QACZ,KAAK;QACL,QAAQ;QACR,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,MAAM;QACjC,SAAS,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;KACzD,CAAC,CAAC;IAEL,MAAM,IAAI,GAAG,CAAC,KAAuB,EAAQ,EAAE;QAC7C,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACrD,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,YAAoB,EAAQ,EAAE;QAC9D,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnF,KAAK,GAAG,SAAS,CAAC;QAClB,QAAQ,GAAG,YAAY,CAAC;QACxB,IAAI,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,OAAqB,EAAE,OAAe,EAAe,EAAE;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAExE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QACxD,MAAM,cAAc,GAClB,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;QAC1D,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;YAC1E,QAAQ,EACN,QAAQ,CAAC,QAAQ;gBACjB,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;gBAC5C,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,cAAc;SACvD,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC;QACvB,MAAM,eAAe,GAAG,QAAQ,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE7B,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnE,MAAM,GAAG,SAAS,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,KAAK,eAAe;gBAAE,OAAO;YACzC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACxB,IAAI,QAAQ,KAAK,eAAe;oBAAE,OAAO;YAC3C,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,eAAe,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO;QAE/D,IACE,CAAC,OAAO,CAAC,eAAe;YACxB,OAAO,IAAI,OAAO,CAAC,eAAe,EAClC,CAAC;YACD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxB,IAAI,QAAQ,KAAK,eAAe,IAAI,MAAM,KAAK,OAAO;gBAAE,OAAO;QACjE,CAAC;QACD,IACE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;YACxB,CAAC,OAAO,CAAC,iBAAiB;YAC1B,OAAO,IAAI,OAAO,CAAC,gBAAgB,EACnC,CAAC;YACD,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CACzB,IAAY,EACZ,OAA6B,EAC7B,kBAA8C,EACxC,EAAE;QACR,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACxB,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;QACvC,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,SAAS,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC;YAC5B,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,MAAM;YACV,QAAQ;YACR,GAAG,iBAAiB;YACpB,MAAM,EAAE,WAAW;YACnB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,iBAAiB,GACrB,kBAAkB,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI;YAClD,kBAAkB,CAAC,SAAS,KAAK,iBAAiB,CAAC,SAAS;YAC5D,kBAAkB,CAAC,OAAO,KAAK,iBAAiB,CAAC,OAAO,CAAC;QAC3D,MAAM,SAAS,GACb,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,iBAAiB;YAC5C,CAAC,CAAC,YAAY,CAAC;gBACX,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,MAAM;gBACV,QAAQ;gBACR,GAAG,kBAAkB;gBACrB,MAAM,EAAE,WAAW;gBACnB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aAC9D,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,GAAG;YACP,QAAQ;YACR,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACjD,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACpD,eAAe,EAAE,IAAI,CAAC,GAAG,CACvB,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAClC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACtC;YACD,gBAAgB,EAAE,IAAI,CAAC,GAAG,CACxB,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAChC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACtC;YACD,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,KAAK;YACtB,iBAAiB,EAAE,KAAK;SACzB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC/C,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;QACvD,CAAC;QACD,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC;IAEF,IAAI,YAAwB,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,WAAW,GAAG,SAAS,CAAC;QACxB,IAAI,SAAS;YAAE,OAAO;QACtB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,sEAAsE;YACtE,6EAA6E;YAC7E,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,OAAO,CAAC;YACxB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;YAC7C,OAAO,GAAG,SAAS,CAAC;YACpB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,MAAM,IAAI,OAAO,KAAK,SAAS;YAAE,YAAY,EAAE,CAAC;IACtD,CAAC,CAAC;IAEF,YAAY,GAAG,GAAS,EAAE;QACxB,IAAI,SAAS,IAAI,WAAW;YAAE,OAAO;QACrC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAQ,EAAE;QACpC,QAAQ,IAAI,CAAC,CAAC;QACd,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,GAAG,SAAS,CAAC;QACnB,OAAO,GAAG,SAAS,CAAC;QACpB,WAAW,EAAE,EAAE,CAAC;QAChB,WAAW,GAAG,SAAS,CAAC;QACxB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChB,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAClB,UAAkB,EAClB,kBAA8C,EAAE,EAC1C,EAAE;QACR,IAAI,SAAS;YAAE,OAAO;QACtB,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,cAAc,GAClB,eAAe,CAAC,UAAU,KAAK,SAAS;YACtC,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,iBAAiB;YAC1C,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,aAAa,GACjB,eAAe,CAAC,aAAa,KAAK,SAAS;YACzC,CAAC,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC;YAC7B,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC;QACpC,YAAY,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAC7C,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,oBAAoB,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;QACvD,MAAM,wBAAwB,GAAG,OAAO,EAAE,UAAU,IAAI,iBAAiB,CAAC;QAC1E,MAAM,cAAc,GAClB,wBAAwB,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;YACrD,wBAAwB,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS;YAC/D,wBAAwB,CAAC,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC;QAC9D,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC,IAAI,cAAc;YAAE,OAAO;QAC1E,QAAQ,IAAI,CAAC,CAAC;QACd,OAAO,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;QAC5E,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,WAAW;YACT,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,SAAS;YACP,OAAO,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;QACnC,CAAC;QACD,aAAa;YACX,OAAO,OAAO,EAAE,UAAU,IAAI,iBAAiB,CAAC;QAClD,CAAC;QACD,WAAW;YACT,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC;QACD,SAAS,CACP,UAAkB,EAClB,kBAA8C,EAAE;YAEhD,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3C,CAAC;QACD,aAAa,CACX,cAAgC,EAChC,kBAAqE,EAAE;YAEvE,IAAI,SAAS;gBAAE,OAAO;YACtB,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE;gBACrC,UAAU,EAAE,cAAc;gBAC1B,GAAG,CAAC,eAAe,CAAC,aAAa,KAAK,SAAS;oBAC7C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,SAAiB;YACpB,IAAI,SAAS;gBAAE,OAAO;YACtB,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjC,QAAQ,IAAI,CAAC,CAAC;YACd,MAAM,GAAG,SAAS,CAAC;YACnB,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM,GAAG,SAAS,CAAC;YACnB,WAAW,EAAE,EAAE,CAAC;YAChB,WAAW,GAAG,SAAS,CAAC;YACxB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,IAAI;YACF,IAAI,SAAS;gBAAE,OAAO;YACtB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,EAAE,CAAC,KAAuB,EAAE,QAA6B;YACvD,IAAI,SAAS;gBAAE,OAAO,GAAS,EAAE,GAAE,CAAC,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,OAAO,GAAS,EAAE;gBAChB,IAAI,CAAC,UAAU;oBAAE,OAAO;gBACxB,UAAU,GAAG,KAAK,CAAC;gBACnB,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACrB,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,cAAc,CAAC,KAAK,EAAE,CAAC;QAChF,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tensum",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Analytical spring physics for JavaScript and GSAP",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Motion Core",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"engines": {
|
|
39
|
-
"node": "^20.19.0 ||
|
|
39
|
+
"node": "^20.19.0 || ^22.12.0 || ^24.0.0"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
|
42
42
|
"access": "public",
|
package/src/css-linear.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { createAnalyticalSolver } from './solver.js';
|
|
1
2
|
import type { SpringSolution } from './types.js';
|
|
2
3
|
|
|
3
4
|
export interface CSSLinearSpringOptions {
|
|
5
|
+
/** Export duration in seconds. Its terminal move to progress 1 must fit maxError. */
|
|
4
6
|
duration?: number;
|
|
7
|
+
/** Hard approximation bound in normalized progress units. */
|
|
5
8
|
maxError?: number;
|
|
9
|
+
/** Maximum adaptive subdivision depth; exhaustion throws a RangeError. */
|
|
6
10
|
maxDepth?: number;
|
|
11
|
+
/** Maximum serialized samples; exhaustion throws a RangeError. */
|
|
7
12
|
maxSamples?: number;
|
|
13
|
+
/** Decimal precision for both progress values and percentage stops. */
|
|
8
14
|
precision?: number;
|
|
9
15
|
}
|
|
10
16
|
|
|
@@ -16,7 +22,9 @@ export interface CSSLinearSample {
|
|
|
16
22
|
export interface CSSLinearSpring {
|
|
17
23
|
easing: string;
|
|
18
24
|
duration: number;
|
|
25
|
+
/** Certified bound for the serialized easing in normalized progress units. */
|
|
19
26
|
maxError: number;
|
|
27
|
+
/** Rounded samples exactly represented by the serialized easing. */
|
|
20
28
|
samples: readonly Readonly<CSSLinearSample>[];
|
|
21
29
|
}
|
|
22
30
|
|
|
@@ -33,10 +41,26 @@ function assertPositiveInteger(name: string, value: number): void {
|
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
function rounded(value: number, precision: number): string {
|
|
36
|
-
const result =
|
|
44
|
+
const result = roundedNumber(value, precision);
|
|
37
45
|
return Object.is(result, -0) ? '0' : String(result);
|
|
38
46
|
}
|
|
39
47
|
|
|
48
|
+
function roundedNumber(value: number, precision: number): number {
|
|
49
|
+
const result = Number(value.toFixed(precision));
|
|
50
|
+
return Object.is(result, -0) ? 0 : result;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function logAdd(first: number, second: number): number {
|
|
54
|
+
if (first === Number.NEGATIVE_INFINITY) return second;
|
|
55
|
+
if (second === Number.NEGATIVE_INFINITY) return first;
|
|
56
|
+
const maximum = Math.max(first, second);
|
|
57
|
+
return maximum + Math.log(Math.exp(first - maximum) + Math.exp(second - maximum));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function logMagnitude(value: number): number {
|
|
61
|
+
return value === 0 ? Number.NEGATIVE_INFINITY : Math.log(Math.abs(value));
|
|
62
|
+
}
|
|
63
|
+
|
|
40
64
|
export function springToCSSLinear(
|
|
41
65
|
spring: SpringSolution,
|
|
42
66
|
options: CSSLinearSpringOptions = {},
|
|
@@ -67,7 +91,6 @@ export function springToCSSLinear(
|
|
|
67
91
|
}
|
|
68
92
|
|
|
69
93
|
const progressAt = (time: number): number => {
|
|
70
|
-
if (spring.timing.settled && time >= duration) return 1;
|
|
71
94
|
const progress =
|
|
72
95
|
(spring.positionAt(time) - spring.initialState.position) / distance;
|
|
73
96
|
if (!Number.isFinite(progress)) {
|
|
@@ -75,9 +98,82 @@ export function springToCSSLinear(
|
|
|
75
98
|
}
|
|
76
99
|
return progress;
|
|
77
100
|
};
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
101
|
+
const solver = createAnalyticalSolver(
|
|
102
|
+
spring.parameters,
|
|
103
|
+
spring.initialState,
|
|
104
|
+
);
|
|
105
|
+
const terminalSnapError = Math.abs(progressAt(duration) - 1);
|
|
106
|
+
if (terminalSnapError >= maxError) {
|
|
107
|
+
throw new RangeError(
|
|
108
|
+
`CSS linear export duration requires a terminal snap error (${terminalSnapError}) that cannot satisfy maxError (${maxError})`,
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const accelerationErrorBound = (start: number, end: number): number => {
|
|
113
|
+
const bounds = solver.tailBoundsAt(start);
|
|
114
|
+
let logPositionBound = logMagnitude(bounds.position);
|
|
115
|
+
let logVelocityBound = logMagnitude(bounds.velocity);
|
|
116
|
+
if (start < solver.tailBoundsMonotonicAfter) {
|
|
117
|
+
const peakBounds = solver.tailBoundsAt(
|
|
118
|
+
solver.tailBoundsMonotonicAfter,
|
|
119
|
+
);
|
|
120
|
+
// Critical springs contain t*exp(-omega*t) terms. Adding the bounds at
|
|
121
|
+
// the interval start and their monotonic boundary conservatively covers
|
|
122
|
+
// the separate constant and polynomial maxima before that boundary.
|
|
123
|
+
logPositionBound = logAdd(
|
|
124
|
+
logPositionBound,
|
|
125
|
+
logMagnitude(peakBounds.position),
|
|
126
|
+
);
|
|
127
|
+
logVelocityBound = logAdd(
|
|
128
|
+
logVelocityBound,
|
|
129
|
+
logMagnitude(peakBounds.velocity),
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const logDistance = Math.log(Math.abs(distance));
|
|
134
|
+
const logStiffnessAcceleration =
|
|
135
|
+
2 * Math.log(spring.angularFrequency) +
|
|
136
|
+
logPositionBound -
|
|
137
|
+
logDistance;
|
|
138
|
+
const logDampingAcceleration =
|
|
139
|
+
spring.parameters.damping === 0 ||
|
|
140
|
+
logVelocityBound === Number.NEGATIVE_INFINITY
|
|
141
|
+
? Number.NEGATIVE_INFINITY
|
|
142
|
+
: Math.log(spring.parameters.damping) -
|
|
143
|
+
Math.log(spring.parameters.mass) +
|
|
144
|
+
logVelocityBound -
|
|
145
|
+
logDistance;
|
|
146
|
+
const logAcceleration = logAdd(
|
|
147
|
+
logStiffnessAcceleration,
|
|
148
|
+
logDampingAcceleration,
|
|
149
|
+
);
|
|
150
|
+
const span = end - start;
|
|
151
|
+
if (span === 0 || logAcceleration === Number.NEGATIVE_INFINITY) return 0;
|
|
152
|
+
const logError = logAcceleration + 2 * Math.log(span) - Math.log(8);
|
|
153
|
+
return logError > Math.log(Number.MAX_VALUE)
|
|
154
|
+
? Number.POSITIVE_INFINITY
|
|
155
|
+
: Math.exp(logError);
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const serializedTime = (time: number): number => {
|
|
159
|
+
if (time <= 0) return 0;
|
|
160
|
+
if (time >= duration) return duration;
|
|
161
|
+
const percentage = roundedNumber((time / duration) * 100, precision);
|
|
162
|
+
return (percentage / 100) * duration;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const serializedSample = (
|
|
166
|
+
time: number,
|
|
167
|
+
terminal = false,
|
|
168
|
+
): CSSLinearSample => {
|
|
169
|
+
const serialized = serializedTime(time);
|
|
170
|
+
return {
|
|
171
|
+
time: serialized,
|
|
172
|
+
progress: terminal ? 1 : roundedNumber(progressAt(serialized), precision),
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const samples: CSSLinearSample[] = [serializedSample(0)];
|
|
81
177
|
|
|
82
178
|
const append = (sample: CSSLinearSample): void => {
|
|
83
179
|
if (samples.length >= maxSamples) {
|
|
@@ -91,45 +187,40 @@ export function springToCSSLinear(
|
|
|
91
187
|
end: CSSLinearSample,
|
|
92
188
|
depth: number,
|
|
93
189
|
): void => {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const progress = progressAt(time);
|
|
98
|
-
const linear = start.progress + (end.progress - start.progress) * fraction;
|
|
99
|
-
return { deviation: Math.abs(progress - linear), time, progress };
|
|
100
|
-
});
|
|
101
|
-
const needsRefinement = checkpoints.some(
|
|
102
|
-
({ deviation }) => deviation > maxError,
|
|
190
|
+
const endpointError = Math.max(
|
|
191
|
+
Math.abs(progressAt(start.time) - start.progress),
|
|
192
|
+
Math.abs(progressAt(end.time) - end.progress),
|
|
103
193
|
);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
append(end);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const middle = { time: midpoint.time, progress: midpoint.progress };
|
|
112
|
-
refine(start, middle, depth + 1);
|
|
113
|
-
refine(middle, end, depth + 1);
|
|
194
|
+
const certifiedError =
|
|
195
|
+
endpointError + accelerationErrorBound(start.time, end.time);
|
|
196
|
+
if (certifiedError <= maxError) {
|
|
197
|
+
append(end);
|
|
114
198
|
return;
|
|
115
199
|
}
|
|
116
|
-
|
|
200
|
+
|
|
201
|
+
if (depth >= maxDepth) {
|
|
202
|
+
throw new RangeError(
|
|
203
|
+
`CSS linear export cannot guarantee maxError (${maxError}) within maxDepth (${maxDepth})`,
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const midpointTime = serializedTime(
|
|
208
|
+
start.time + (end.time - start.time) / 2,
|
|
209
|
+
);
|
|
210
|
+
if (midpointTime === start.time || midpointTime === end.time) {
|
|
211
|
+
throw new RangeError(
|
|
212
|
+
`CSS linear export precision (${precision}) is insufficient to guarantee maxError (${maxError})`,
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
const middle = serializedSample(midpointTime);
|
|
216
|
+
refine(start, middle, depth + 1);
|
|
217
|
+
refine(middle, end, depth + 1);
|
|
117
218
|
};
|
|
118
219
|
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Math.ceil((duration * spring.angularFrequency) / (Math.PI / 2)),
|
|
124
|
-
);
|
|
125
|
-
if (seedCount + 1 > maxSamples) {
|
|
126
|
-
throw new RangeError(`CSS linear export requires more than maxSamples (${maxSamples})`);
|
|
127
|
-
}
|
|
128
|
-
for (let index = 0; index < seedCount; index += 1) {
|
|
129
|
-
const start = samples.at(-1)!;
|
|
130
|
-
const time = ((index + 1) / seedCount) * duration;
|
|
131
|
-
refine(start, { time, progress: progressAt(time) }, 0);
|
|
132
|
-
}
|
|
220
|
+
// A linear interpolation error is bounded by h^2/8 times the maximum
|
|
221
|
+
// normalized acceleration. Analytical tail envelopes provide that maximum
|
|
222
|
+
// without relying on checkpoints that can alias an oscillation.
|
|
223
|
+
refine(samples[0]!, serializedSample(duration, true), 0);
|
|
133
224
|
|
|
134
225
|
const frozenSamples = Object.freeze(
|
|
135
226
|
samples.map((sample) => Object.freeze({ ...sample })),
|
package/src/gsap/plugin.ts
CHANGED
|
@@ -203,7 +203,7 @@ function normalizeTargets(
|
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
function normalizeProperties(value: unknown): MotionSpringVars['properties'] {
|
|
206
|
-
const record = normalizeOptionalRecord(value, '
|
|
206
|
+
const record = normalizeOptionalRecord(value, 'spring properties');
|
|
207
207
|
if (!record) return undefined;
|
|
208
208
|
const properties = Object.create(null) as Record<
|
|
209
209
|
string,
|
|
@@ -243,7 +243,7 @@ function normalizeProperties(value: unknown): MotionSpringVars['properties'] {
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
function normalizeAdapters(value: unknown): MotionSpringVars['adapters'] {
|
|
246
|
-
const record = normalizeOptionalRecord(value, '
|
|
246
|
+
const record = normalizeOptionalRecord(value, 'spring adapters');
|
|
247
247
|
if (!record) return undefined;
|
|
248
248
|
const adapters = Object.create(null) as Record<string, SpringPropertyAdapter>;
|
|
249
249
|
for (const [property, adapter] of Object.entries(record)) {
|
|
@@ -268,7 +268,7 @@ function normalizeAdapters(value: unknown): MotionSpringVars['adapters'] {
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
function normalizeUnits(value: unknown): MotionSpringVars['units'] {
|
|
271
|
-
const record = normalizeOptionalRecord(value, '
|
|
271
|
+
const record = normalizeOptionalRecord(value, 'spring units');
|
|
272
272
|
if (!record) return undefined;
|
|
273
273
|
const units = Object.create(null) as Record<string, string>;
|
|
274
274
|
for (const [property, unit] of Object.entries(record)) {
|
|
@@ -285,11 +285,11 @@ function normalizeVelocity(value: unknown): MotionSpringVars['velocity'] {
|
|
|
285
285
|
if (value === undefined) return undefined;
|
|
286
286
|
if (typeof value === 'number') {
|
|
287
287
|
if (!Number.isFinite(value)) {
|
|
288
|
-
throw new TypeError('
|
|
288
|
+
throw new TypeError('spring velocity must be a finite number');
|
|
289
289
|
}
|
|
290
290
|
return value;
|
|
291
291
|
}
|
|
292
|
-
const record = normalizeOptionalRecord(value, '
|
|
292
|
+
const record = normalizeOptionalRecord(value, 'spring velocity')!;
|
|
293
293
|
const velocities = Object.create(null) as Record<string, number>;
|
|
294
294
|
for (const [property, velocity] of Object.entries(record)) {
|
|
295
295
|
validateMapProperty(property);
|
|
@@ -303,7 +303,7 @@ function normalizeVelocity(value: unknown): MotionSpringVars['velocity'] {
|
|
|
303
303
|
|
|
304
304
|
function normalizeMotionSpringVars(
|
|
305
305
|
value: unknown,
|
|
306
|
-
context = '
|
|
306
|
+
context = 'spring',
|
|
307
307
|
): MotionSpringVars {
|
|
308
308
|
if (!isRecord(value)) {
|
|
309
309
|
throw new TypeError(`${context} requires a configuration object`);
|
|
@@ -387,9 +387,7 @@ function preflightTarget(
|
|
|
387
387
|
): PreparedTarget {
|
|
388
388
|
const requested = pluginTargetsFrom(vars);
|
|
389
389
|
if (Object.keys(requested).length === 0) {
|
|
390
|
-
throw new TypeError(
|
|
391
|
-
'motionSpring requires at least one numeric target property',
|
|
392
|
-
);
|
|
390
|
+
throw new TypeError('spring requires at least one numeric target property');
|
|
393
391
|
}
|
|
394
392
|
|
|
395
393
|
const config = trackConfigFrom(vars);
|
|
@@ -448,7 +446,7 @@ function preflightTarget(
|
|
|
448
446
|
|
|
449
447
|
/**
|
|
450
448
|
* Creates a preflighted GSAP tween whose duration is final before it is added
|
|
451
|
-
* to a timeline. Prefer the registered `timeline.
|
|
449
|
+
* to a timeline. Prefer the registered `timeline.spring()` effect for
|
|
452
450
|
* sequential, staggered, or nested composition. Calling `invalidate()` reuses
|
|
453
451
|
* the prepared snapshot; create a new effect tween to preflight changed
|
|
454
452
|
* starting values, destinations, or parameters.
|
|
@@ -459,22 +457,22 @@ export function createMotionSpringTween(
|
|
|
459
457
|
instance: typeof gsap = gsap,
|
|
460
458
|
): gsap.core.Tween {
|
|
461
459
|
if (!isRecord(rawVars)) {
|
|
462
|
-
throw new TypeError('
|
|
460
|
+
throw new TypeError('spring effect requires a configuration object');
|
|
463
461
|
}
|
|
464
462
|
const resolvedTargets = instance.utils.toArray<object>(targets);
|
|
465
463
|
if (resolvedTargets.length === 0) {
|
|
466
|
-
throw new TypeError('
|
|
464
|
+
throw new TypeError('spring effect requires at least one target');
|
|
467
465
|
}
|
|
468
466
|
|
|
469
467
|
const ownVars = { ...rawVars } as Record<string, unknown>;
|
|
470
|
-
const from = normalizeTargets(ownVars['from'], '
|
|
468
|
+
const from = normalizeTargets(ownVars['from'], 'spring effect from');
|
|
471
469
|
const tweenOptions = normalizeOptionalRecord(
|
|
472
470
|
ownVars['tween'],
|
|
473
|
-
'
|
|
471
|
+
'spring effect tween',
|
|
474
472
|
) as MotionSpringEffectTweenVars | undefined;
|
|
475
473
|
delete ownVars['from'];
|
|
476
474
|
delete ownVars['tween'];
|
|
477
|
-
const pluginVars = normalizeMotionSpringVars(ownVars, '
|
|
475
|
+
const pluginVars = normalizeMotionSpringVars(ownVars, 'spring effect');
|
|
478
476
|
const preparedTargets = new WeakMap<object, PreparedTarget>();
|
|
479
477
|
let finiteDuration = 0;
|
|
480
478
|
let hasUnsettled = false;
|
|
@@ -489,11 +487,11 @@ export function createMotionSpringTween(
|
|
|
489
487
|
|
|
490
488
|
const policy = validateUnsettledPolicy(
|
|
491
489
|
pluginVars.unsettled ?? 'stop',
|
|
492
|
-
'
|
|
490
|
+
'spring unsettled',
|
|
493
491
|
);
|
|
494
492
|
if (policy === 'error' && hasUnsettled) {
|
|
495
493
|
throw new RangeError(
|
|
496
|
-
'
|
|
494
|
+
'spring cannot start an unsettled spring in error mode',
|
|
497
495
|
);
|
|
498
496
|
}
|
|
499
497
|
const infinite = policy === 'continue' && hasUnsettled;
|
|
@@ -635,9 +633,9 @@ function renderAt(scope: MotionSpringDriverScope, time: number): void {
|
|
|
635
633
|
}
|
|
636
634
|
}
|
|
637
635
|
|
|
638
|
-
function
|
|
636
|
+
function registerSpringEffect(instance: typeof gsap): void {
|
|
639
637
|
instance.registerEffect({
|
|
640
|
-
name: '
|
|
638
|
+
name: 'spring',
|
|
641
639
|
extendTimeline: true,
|
|
642
640
|
effect(targets: object[], vars: MotionSpringEffectVars): gsap.core.Tween {
|
|
643
641
|
return createMotionSpringTween(targets, vars, instance);
|
|
@@ -646,12 +644,12 @@ function registerMotionSpringEffect(instance: typeof gsap): void {
|
|
|
646
644
|
}
|
|
647
645
|
|
|
648
646
|
const pluginDefinition = {
|
|
649
|
-
version: '0.
|
|
647
|
+
version: '0.2.0',
|
|
650
648
|
name: INTERNAL_DRIVER_PROPERTY,
|
|
651
649
|
headless: true,
|
|
652
650
|
rawVars: 1,
|
|
653
651
|
register(instance: typeof gsap): void {
|
|
654
|
-
|
|
652
|
+
registerSpringEffect(instance);
|
|
655
653
|
},
|
|
656
654
|
init(
|
|
657
655
|
this: MotionSpringDriverScope,
|
|
@@ -665,14 +663,14 @@ const pluginDefinition = {
|
|
|
665
663
|
: undefined;
|
|
666
664
|
if (!prepared) {
|
|
667
665
|
throw new TypeError(
|
|
668
|
-
'The Tensum GSAP driver is internal; use timeline.
|
|
666
|
+
'The Tensum GSAP driver is internal; use timeline.spring() or createMotionSpringTween()',
|
|
669
667
|
);
|
|
670
668
|
}
|
|
671
669
|
const value = rawValue;
|
|
672
670
|
const requested = pluginTargetsFrom(value);
|
|
673
671
|
if (Object.keys(requested).length === 0) {
|
|
674
672
|
throw new TypeError(
|
|
675
|
-
'
|
|
673
|
+
'spring requires at least one numeric target property',
|
|
676
674
|
);
|
|
677
675
|
}
|
|
678
676
|
const coordinator = beginPluginTweenInit(tween, target, {
|
|
@@ -682,7 +680,7 @@ const pluginDefinition = {
|
|
|
682
680
|
const preparedTarget = prepared.targets.get(target);
|
|
683
681
|
if (!preparedTarget) {
|
|
684
682
|
throw new TypeError(
|
|
685
|
-
'The preflighted
|
|
683
|
+
'The preflighted spring target is unavailable; create a new effect tween',
|
|
686
684
|
);
|
|
687
685
|
}
|
|
688
686
|
if (
|
|
@@ -693,7 +691,7 @@ const pluginDefinition = {
|
|
|
693
691
|
)
|
|
694
692
|
) {
|
|
695
693
|
throw new TypeError(
|
|
696
|
-
'A preflighted
|
|
694
|
+
'A preflighted spring configuration cannot change before init; create a new effect tween instead',
|
|
697
695
|
);
|
|
698
696
|
}
|
|
699
697
|
const tracks: PluginTrack[] = [];
|
|
@@ -705,7 +703,7 @@ const pluginDefinition = {
|
|
|
705
703
|
destination.unit !== preparedTrack.unit)
|
|
706
704
|
) {
|
|
707
705
|
throw new TypeError(
|
|
708
|
-
'A preflighted
|
|
706
|
+
'A preflighted spring configuration cannot change before init; create a new effect tween instead',
|
|
709
707
|
);
|
|
710
708
|
}
|
|
711
709
|
tracks.push({
|
|
@@ -725,12 +723,12 @@ const pluginDefinition = {
|
|
|
725
723
|
|
|
726
724
|
const policy = validateUnsettledPolicy(
|
|
727
725
|
value.unsettled ?? 'stop',
|
|
728
|
-
'
|
|
726
|
+
'spring unsettled',
|
|
729
727
|
);
|
|
730
728
|
const timing = timingFor(tracks, policy);
|
|
731
729
|
if (policy === 'error' && timing.hasUnsettled) {
|
|
732
730
|
throw new RangeError(
|
|
733
|
-
'
|
|
731
|
+
'spring cannot start an unsettled spring in error mode',
|
|
734
732
|
);
|
|
735
733
|
}
|
|
736
734
|
const infinite = policy === 'continue' && timing.hasUnsettled;
|
|
@@ -832,25 +830,21 @@ const pluginDefinition = {
|
|
|
832
830
|
},
|
|
833
831
|
};
|
|
834
832
|
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
}
|
|
833
|
+
/**
|
|
834
|
+
* Tensum's GSAP plugin. Register it with `gsap.registerPlugin(TensumPlugin)`
|
|
835
|
+
* before using the preflighted `timeline.spring()` effect.
|
|
836
|
+
*/
|
|
837
|
+
export const TensumPlugin = pluginDefinition as unknown as gsap.Plugin;
|
|
841
838
|
|
|
842
839
|
declare global {
|
|
843
840
|
namespace gsap {
|
|
844
841
|
interface EffectsMap {
|
|
845
|
-
|
|
846
|
-
targets: TweenTarget,
|
|
847
|
-
vars: MotionSpringEffectVars,
|
|
848
|
-
): core.Tween;
|
|
842
|
+
spring(targets: TweenTarget, vars: MotionSpringEffectVars): core.Tween;
|
|
849
843
|
}
|
|
850
844
|
|
|
851
845
|
namespace core {
|
|
852
846
|
interface Timeline {
|
|
853
|
-
|
|
847
|
+
spring(
|
|
854
848
|
targets: TweenTarget,
|
|
855
849
|
vars: MotionSpringEffectVars,
|
|
856
850
|
position?: Position,
|
package/src/gsap/spring-to.ts
CHANGED
|
@@ -63,6 +63,7 @@ export interface SpringTrackConfig {
|
|
|
63
63
|
velocity?: number | SpringVelocities;
|
|
64
64
|
properties?: Readonly<Partial<Record<SpringProperty, SpringPropertyOptions>>>;
|
|
65
65
|
adapters?: Readonly<Partial<Record<SpringProperty, SpringPropertyAdapter>>>;
|
|
66
|
+
/** Explicit units per property. An empty string disables a DOM default. */
|
|
66
67
|
units?: Readonly<Partial<Record<SpringProperty, string>>>;
|
|
67
68
|
}
|
|
68
69
|
|
|
@@ -337,6 +338,7 @@ function resolvedUnit(
|
|
|
337
338
|
requested: RequestedTarget,
|
|
338
339
|
readUnit: string | undefined,
|
|
339
340
|
vars: SpringTrackConfig,
|
|
341
|
+
defaultUnit: string | undefined,
|
|
340
342
|
): string | undefined {
|
|
341
343
|
const adapterUnit = vars.adapters?.[property]?.unit;
|
|
342
344
|
const hasConfiguredUnit = Object.hasOwn(vars.units ?? {}, property);
|
|
@@ -347,7 +349,7 @@ function resolvedUnit(
|
|
|
347
349
|
requested.unit ??
|
|
348
350
|
adapterUnit ??
|
|
349
351
|
configuredUnit ??
|
|
350
|
-
(hasConfiguredUnit ? undefined :
|
|
352
|
+
(hasConfiguredUnit ? undefined : defaultUnit) ??
|
|
351
353
|
readUnit;
|
|
352
354
|
|
|
353
355
|
for (const candidate of [
|
|
@@ -391,7 +393,7 @@ export function accessFor(
|
|
|
391
393
|
`Adapter for ${property} returned a non-finite value`,
|
|
392
394
|
);
|
|
393
395
|
}
|
|
394
|
-
const unit = resolvedUnit(property, requested, undefined, vars);
|
|
396
|
+
const unit = resolvedUnit(property, requested, undefined, vars, undefined);
|
|
395
397
|
return {
|
|
396
398
|
from,
|
|
397
399
|
...(unit === undefined ? {} : { unit }),
|
|
@@ -405,7 +407,13 @@ export function accessFor(
|
|
|
405
407
|
gsap.getProperty(target, property, 'native'),
|
|
406
408
|
property,
|
|
407
409
|
);
|
|
408
|
-
const unit = resolvedUnit(
|
|
410
|
+
const unit = resolvedUnit(
|
|
411
|
+
property,
|
|
412
|
+
requested,
|
|
413
|
+
raw.unit,
|
|
414
|
+
vars,
|
|
415
|
+
isElementTarget(target) ? defaultUnitFor(property) : undefined,
|
|
416
|
+
);
|
|
409
417
|
const setters =
|
|
410
418
|
property === 'scale' && isElementTarget(target)
|
|
411
419
|
? [
|
package/src/index.ts
CHANGED
|
@@ -60,10 +60,7 @@ export type {
|
|
|
60
60
|
VectorSpringSolution,
|
|
61
61
|
VectorSpringState,
|
|
62
62
|
} from './vector.js';
|
|
63
|
-
export {
|
|
64
|
-
createMotionSpringTween,
|
|
65
|
-
registerSpringPlugin,
|
|
66
|
-
} from './gsap/plugin.js';
|
|
63
|
+
export { TensumPlugin, createMotionSpringTween } from './gsap/plugin.js';
|
|
67
64
|
export type {
|
|
68
65
|
MotionSpringEffectTweenVars,
|
|
69
66
|
MotionSpringEffectVars,
|