@rafaelaugusto/jolt 0.1.0-rc.12 → 0.1.0-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/core/circle-math.d.ts.map +1 -1
- package/dist/core/easing.d.ts +8 -0
- package/dist/core/easing.d.ts.map +1 -1
- package/dist/core/easing.js +12 -4
- package/dist/core/easing.js.map +1 -1
- package/dist/core/gesture-math.d.ts.map +1 -1
- package/dist/core/gradient-text.d.ts +24 -0
- package/dist/core/gradient-text.d.ts.map +1 -0
- package/dist/core/gradient-text.js +30 -0
- package/dist/core/gradient-text.js.map +1 -0
- package/dist/core/inspection-plot.d.ts +11 -0
- package/dist/core/inspection-plot.d.ts.map +1 -0
- package/dist/core/inspection-plot.js +57 -0
- package/dist/core/inspection-plot.js.map +1 -0
- package/dist/core/motion-behaviors.d.ts +68 -0
- package/dist/core/motion-behaviors.d.ts.map +1 -0
- package/dist/core/motion-behaviors.js +276 -0
- package/dist/core/motion-behaviors.js.map +1 -0
- package/dist/core/numeric-map.js.map +1 -1
- package/dist/core/particle-motion.d.ts +8 -0
- package/dist/core/particle-motion.d.ts.map +1 -0
- package/dist/core/particle-motion.js +11 -0
- package/dist/core/particle-motion.js.map +1 -0
- package/dist/core/pointer.d.ts +1 -1
- package/dist/core/preset-recipe.d.ts +20 -0
- package/dist/core/preset-recipe.d.ts.map +1 -0
- package/dist/core/preset-recipe.js +79 -0
- package/dist/core/preset-recipe.js.map +1 -0
- package/dist/core/reorder.d.ts +5 -0
- package/dist/core/reorder.d.ts.map +1 -1
- package/dist/core/reorder.js +17 -0
- package/dist/core/reorder.js.map +1 -1
- package/dist/core/rig.d.ts +73 -0
- package/dist/core/rig.d.ts.map +1 -0
- package/dist/core/rig.js +99 -0
- package/dist/core/rig.js.map +1 -0
- package/dist/core/scroll-header.js.map +1 -1
- package/dist/core/sensor-kinds.d.ts +1 -1
- package/dist/core/sensor-kinds.d.ts.map +1 -1
- package/dist/core/sensor-replay.d.ts +10 -0
- package/dist/core/sensor-replay.d.ts.map +1 -0
- package/dist/core/sensor-replay.js +32 -0
- package/dist/core/sensor-replay.js.map +1 -0
- package/dist/gradient-text/index.d.ts +2 -10
- package/dist/gradient-text/index.d.ts.map +1 -1
- package/dist/gradient-text/index.js +2 -25
- package/dist/gradient-text/index.js.map +1 -1
- package/dist/gradient-text/native.d.ts +2 -8
- package/dist/gradient-text/native.d.ts.map +1 -1
- package/dist/gradient-text/native.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inspector/plot.d.ts +1 -3
- package/dist/inspector/plot.d.ts.map +1 -1
- package/dist/inspector/plot.js +1 -22
- package/dist/inspector/plot.js.map +1 -1
- package/dist/motion-behaviors.d.ts +5 -54
- package/dist/motion-behaviors.d.ts.map +1 -1
- package/dist/motion-behaviors.js +18 -267
- package/dist/motion-behaviors.js.map +1 -1
- package/dist/rig/index.d.ts +2 -27
- package/dist/rig/index.d.ts.map +1 -1
- package/dist/rig/index.js +5 -89
- package/dist/rig/index.js.map +1 -1
- package/dist/testing/sensors.d.ts +2 -9
- package/dist/testing/sensors.d.ts.map +1 -1
- package/dist/testing/sensors.js +3 -21
- package/dist/testing/sensors.js.map +1 -1
- package/dist/web/angular/index.d.ts +62 -0
- package/dist/web/angular/index.d.ts.map +1 -0
- package/dist/web/angular/index.js +190 -0
- package/dist/web/angular/index.js.map +1 -0
- package/dist/web/behaviors.d.ts +5 -0
- package/dist/web/behaviors.d.ts.map +1 -0
- package/dist/web/behaviors.js +2 -0
- package/dist/web/behaviors.js.map +1 -0
- package/dist/web/bottom-sheet.js.map +1 -1
- package/dist/web/compose.js.map +1 -1
- package/dist/web/curve.js.map +1 -1
- package/dist/web/decay.js.map +1 -1
- package/dist/web/diagnostics.d.ts +1 -1
- package/dist/web/diagnostics.d.ts.map +1 -1
- package/dist/web/diagnostics.js.map +1 -1
- package/dist/web/drag.d.ts +11 -11
- package/dist/web/drag.d.ts.map +1 -1
- package/dist/web/effect.d.ts +2 -1
- package/dist/web/effect.d.ts.map +1 -1
- package/dist/web/effect.js +11 -4
- package/dist/web/effect.js.map +1 -1
- package/dist/web/frameworks/binding.d.ts +39 -0
- package/dist/web/frameworks/binding.d.ts.map +1 -0
- package/dist/web/frameworks/binding.js +356 -0
- package/dist/web/frameworks/binding.js.map +1 -0
- package/dist/web/gestures.js.map +1 -1
- package/dist/web/gradient-css.d.ts +2 -0
- package/dist/web/gradient-css.d.ts.map +1 -0
- package/dist/web/gradient-css.js +5 -0
- package/dist/web/gradient-css.js.map +1 -0
- package/dist/web/gradient-text.d.ts +24 -0
- package/dist/web/gradient-text.d.ts.map +1 -0
- package/dist/web/gradient-text.js +179 -0
- package/dist/web/gradient-text.js.map +1 -0
- package/dist/web/gradient.d.ts.map +1 -1
- package/dist/web/gradient.js +2 -1
- package/dist/web/gradient.js.map +1 -1
- package/dist/web/image-surface.d.ts.map +1 -1
- package/dist/web/image-surface.js.map +1 -1
- package/dist/web/inspector.d.ts +24 -0
- package/dist/web/inspector.d.ts.map +1 -1
- package/dist/web/inspector.js +76 -5
- package/dist/web/inspector.js.map +1 -1
- package/dist/web/interaction.d.ts +4 -0
- package/dist/web/interaction.d.ts.map +1 -1
- package/dist/web/interaction.js.map +1 -1
- package/dist/web/keyboard.js.map +1 -1
- package/dist/web/layout.d.ts +75 -75
- package/dist/web/layout.d.ts.map +1 -1
- package/dist/web/layout.js.map +1 -1
- package/dist/web/particles.d.ts.map +1 -1
- package/dist/web/particles.js +5 -6
- package/dist/web/particles.js.map +1 -1
- package/dist/web/plan.d.ts +2 -0
- package/dist/web/plan.d.ts.map +1 -1
- package/dist/web/plan.js.map +1 -1
- package/dist/web/press.js.map +1 -1
- package/dist/web/progress.d.ts.map +1 -1
- package/dist/web/properties.d.ts +4 -4
- package/dist/web/properties.d.ts.map +1 -1
- package/dist/web/property.d.ts.map +1 -1
- package/dist/web/property.js.map +1 -1
- package/dist/web/public.d.ts +19 -3
- package/dist/web/public.d.ts.map +1 -1
- package/dist/web/public.js +9 -0
- package/dist/web/public.js.map +1 -1
- package/dist/web/react/index.d.ts +12 -0
- package/dist/web/react/index.d.ts.map +1 -0
- package/dist/web/react/index.js +119 -0
- package/dist/web/react/index.js.map +1 -0
- package/dist/web/reorder.d.ts.map +1 -1
- package/dist/web/reorder.js +23 -2
- package/dist/web/reorder.js.map +1 -1
- package/dist/web/rig.d.ts +43 -0
- package/dist/web/rig.d.ts.map +1 -0
- package/dist/web/rig.js +307 -0
- package/dist/web/rig.js.map +1 -0
- package/dist/web/runtime.d.ts +37 -25
- package/dist/web/runtime.d.ts.map +1 -1
- package/dist/web/runtime.js +111 -8
- package/dist/web/runtime.js.map +1 -1
- package/dist/web/scheduler.d.ts.map +1 -1
- package/dist/web/scheduler.js.map +1 -1
- package/dist/web/scope.d.ts +7 -1
- package/dist/web/scope.d.ts.map +1 -1
- package/dist/web/scope.js +16 -2
- package/dist/web/scope.js.map +1 -1
- package/dist/web/scroll-header.js.map +1 -1
- package/dist/web/scroll-range.d.ts.map +1 -1
- package/dist/web/scroll-range.js.map +1 -1
- package/dist/web/scroll.d.ts +1 -1
- package/dist/web/scroll.d.ts.map +1 -1
- package/dist/web/scroll.js.map +1 -1
- package/dist/web/sensor-replay-bridge.d.ts +16 -0
- package/dist/web/sensor-replay-bridge.d.ts.map +1 -0
- package/dist/web/sensor-replay-bridge.js +12 -0
- package/dist/web/sensor-replay-bridge.js.map +1 -0
- package/dist/web/sensor-replay.d.ts +22 -0
- package/dist/web/sensor-replay.d.ts.map +1 -0
- package/dist/web/sensor-replay.js +124 -0
- package/dist/web/sensor-replay.js.map +1 -0
- package/dist/web/sensors.d.ts +14 -5
- package/dist/web/sensors.d.ts.map +1 -1
- package/dist/web/sensors.js +159 -41
- package/dist/web/sensors.js.map +1 -1
- package/dist/web/shape.d.ts +2 -0
- package/dist/web/shape.d.ts.map +1 -1
- package/dist/web/shape.js +44 -12
- package/dist/web/shape.js.map +1 -1
- package/dist/web/shared-layout.js.map +1 -1
- package/dist/web/size.d.ts.map +1 -1
- package/dist/web/size.js.map +1 -1
- package/dist/web/solid/index.d.ts +16 -0
- package/dist/web/solid/index.d.ts.map +1 -0
- package/dist/web/solid/index.js +89 -0
- package/dist/web/solid/index.js.map +1 -0
- package/dist/web/spring-value.d.ts.map +1 -1
- package/dist/web/spring-value.js.map +1 -1
- package/dist/web/stroke.d.ts.map +1 -1
- package/dist/web/stroke.js.map +1 -1
- package/dist/web/style.d.ts.map +1 -1
- package/dist/web/style.js.map +1 -1
- package/dist/web/surface-effect.d.ts.map +1 -1
- package/dist/web/surface-effect.js.map +1 -1
- package/dist/web/svelte/index.d.ts +50 -0
- package/dist/web/svelte/index.d.ts.map +1 -0
- package/dist/web/svelte/index.js +68 -0
- package/dist/web/svelte/index.js.map +1 -0
- package/dist/web/testing.d.ts +1 -0
- package/dist/web/testing.d.ts.map +1 -1
- package/dist/web/testing.js +1 -0
- package/dist/web/testing.js.map +1 -1
- package/dist/web/timers.d.ts.map +1 -1
- package/dist/web/timers.js.map +1 -1
- package/dist/web/types.d.ts.map +1 -1
- package/dist/web/value-playback.d.ts +17 -17
- package/dist/web/value-playback.js.map +1 -1
- package/dist/web/value.d.ts.map +1 -1
- package/dist/web/value.js.map +1 -1
- package/dist/web/viewport.js.map +1 -1
- package/dist/web/vue/index.d.ts +12 -3
- package/dist/web/vue/index.d.ts.map +1 -1
- package/dist/web/vue/index.js +115 -35
- package/dist/web/vue/index.js.map +1 -1
- package/package.json +35 -6
- package/src/core/easing.ts +12 -4
- package/src/core/gradient-text.ts +56 -0
- package/src/core/inspection-plot.ts +74 -0
- package/src/core/motion-behaviors.ts +337 -0
- package/src/core/particle-motion.ts +20 -0
- package/src/core/preset-recipe.ts +111 -0
- package/src/core/reorder.ts +23 -0
- package/src/core/rig.ts +149 -0
- package/src/core/sensor-replay.ts +48 -0
- package/src/gradient-text/index.ts +7 -43
- package/src/gradient-text/native.ts +2 -7
- package/src/index.ts +6 -0
- package/src/inspector/plot.ts +1 -27
- package/src/motion-behaviors.ts +34 -316
- package/src/rig/index.ts +25 -124
- package/src/testing/sensors.ts +4 -36
- package/src/web/angular/index.ts +171 -0
- package/src/web/behaviors.ts +12 -0
- package/src/web/effect.ts +10 -5
- package/src/web/frameworks/binding.ts +408 -0
- package/src/web/gradient-css.ts +8 -0
- package/src/web/gradient-text.ts +234 -0
- package/src/web/gradient.ts +2 -1
- package/src/web/inspector.ts +80 -5
- package/src/web/interaction.ts +4 -0
- package/src/web/particles.ts +15 -9
- package/src/web/plan.ts +2 -0
- package/src/web/public.ts +51 -4
- package/src/web/react/index.ts +208 -0
- package/src/web/reorder.ts +21 -3
- package/src/web/rig.ts +377 -0
- package/src/web/runtime.ts +128 -11
- package/src/web/scope.ts +32 -4
- package/src/web/sensor-replay-bridge.ts +23 -0
- package/src/web/sensor-replay.ts +140 -0
- package/src/web/sensors.ts +179 -57
- package/src/web/shape.ts +42 -9
- package/src/web/solid/index.ts +102 -0
- package/src/web/svelte/index.ts +88 -0
- package/src/web/testing.ts +6 -0
- package/src/web/vue/index.ts +122 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric-map.js","sourceRoot":"","sources":["../../src/core/numeric-map.ts"],"names":[],"mappings":"AAIA,oFAAoF;AACpF,MAAM,UAAU,UAAU,CACxB,KAAwB,EACxB,MAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"numeric-map.js","sourceRoot":"","sources":["../../src/core/numeric-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Shared ballistic sampling. Time/lifetime are milliseconds; spin is radians/second. */
|
|
2
|
+
export declare function sampleParticle(x: number, y: number, vx: number, vy: number, gravity: number, spin: number, lifetime: number, milliseconds: number, fadeOut?: boolean): {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
rotation: number;
|
|
6
|
+
opacity: number;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=particle-motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle-motion.d.ts","sourceRoot":"","sources":["../../src/core/particle-motion.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,UAAO;;;;;EASf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Shared ballistic sampling. Time/lifetime are milliseconds; spin is radians/second. */
|
|
2
|
+
export function sampleParticle(x, y, vx, vy, gravity, spin, lifetime, milliseconds, fadeOut = true) {
|
|
3
|
+
const age = Math.max(0, milliseconds) / 1000;
|
|
4
|
+
return {
|
|
5
|
+
x: x + vx * age,
|
|
6
|
+
y: y + vy * age + (gravity * age * age) / 2,
|
|
7
|
+
rotation: spin * age,
|
|
8
|
+
opacity: fadeOut ? Math.max(0, 1 - (age * 1000) / lifetime) : 1,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=particle-motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle-motion.js","sourceRoot":"","sources":["../../src/core/particle-motion.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAC5B,CAAS,EACT,CAAS,EACT,EAAU,EACV,EAAU,EACV,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,YAAoB,EACpB,OAAO,GAAG,IAAI;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,IAAI,CAAA;IAC5C,OAAO;QACL,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QACf,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAC3C,QAAQ,EAAE,IAAI,GAAG,GAAG;QACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAAA;AACH,CAAC"}
|
package/dist/core/pointer.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export interface PointerCoordinatesOptions {
|
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
}
|
|
14
14
|
export declare function resolvePointerOptions(input: PointerCoordinatesOptions): {
|
|
15
|
-
axis: "
|
|
15
|
+
axis: "both" | "x" | "y";
|
|
16
16
|
coordinates: "normalized" | "pixels";
|
|
17
17
|
range: {
|
|
18
18
|
x: number[] | undefined;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Transition } from './transition.js';
|
|
2
|
+
/** The finite two-endpoint recipes supported by all three execution adapters. */
|
|
3
|
+
export type PortablePresetName = 'fadeIn' | 'fadeInUp' | 'fadeInDown' | 'fadeInLeft' | 'fadeInRight' | 'zoomIn' | 'popIn' | 'fadeOut' | 'fadeOutUp' | 'fadeOutDown' | 'fadeOutLeft' | 'fadeOutRight' | 'zoomOut';
|
|
4
|
+
export interface PresetParameters {
|
|
5
|
+
/** Points on Apple, DIP in NativeScript, CSS pixels on Web. */
|
|
6
|
+
distance?: number;
|
|
7
|
+
scale?: number;
|
|
8
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
9
|
+
/** Override all channels with a finite tween in milliseconds (including zero). */
|
|
10
|
+
duration?: number;
|
|
11
|
+
}
|
|
12
|
+
type Channel = 'x' | 'y' | 'scale' | 'opacity';
|
|
13
|
+
export interface PresetRecipe {
|
|
14
|
+
keyframes: Partial<Record<Channel, number | readonly number[]>>;
|
|
15
|
+
transition: Transition & Partial<Record<Channel, Transition>>;
|
|
16
|
+
}
|
|
17
|
+
/** Pure recipe construction; registration and resource ownership stay in the runtime. */
|
|
18
|
+
export declare function createPreset(name: PortablePresetName, parameters?: PresetParameters): PresetRecipe;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=preset-recipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recipe.d.ts","sourceRoot":"","sources":["../../src/core/preset-recipe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,aAAa,GACb,aAAa,GACb,cAAc,GACd,SAAS,CAAA;AACb,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AACD,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,CAAA;AAC9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/D,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;CAC9D;AAiBD,yFAAyF;AACzF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,kBAAkB,EACxB,UAAU,GAAE,gBAAqB,GAChC,YAAY,CA2Dd"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { presets } from './presets.js';
|
|
2
|
+
const names = new Set([
|
|
3
|
+
'fadeIn',
|
|
4
|
+
'fadeInUp',
|
|
5
|
+
'fadeInDown',
|
|
6
|
+
'fadeInLeft',
|
|
7
|
+
'fadeInRight',
|
|
8
|
+
'zoomIn',
|
|
9
|
+
'popIn',
|
|
10
|
+
'fadeOut',
|
|
11
|
+
'fadeOutUp',
|
|
12
|
+
'fadeOutDown',
|
|
13
|
+
'fadeOutLeft',
|
|
14
|
+
'fadeOutRight',
|
|
15
|
+
'zoomOut',
|
|
16
|
+
]);
|
|
17
|
+
/** Pure recipe construction; registration and resource ownership stay in the runtime. */
|
|
18
|
+
export function createPreset(name, parameters = {}) {
|
|
19
|
+
if (!names.has(name))
|
|
20
|
+
throw new TypeError('Expected a portable finite preset name.');
|
|
21
|
+
if (!parameters || typeof parameters !== 'object' || Array.isArray(parameters))
|
|
22
|
+
throw new TypeError('Preset parameters must be an object.');
|
|
23
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
24
|
+
if (!['distance', 'scale', 'direction', 'duration'].includes(key))
|
|
25
|
+
throw new TypeError(`Unknown preset parameter "${key}".`);
|
|
26
|
+
if (value === undefined)
|
|
27
|
+
continue;
|
|
28
|
+
if (key === 'direction') {
|
|
29
|
+
if (!['up', 'down', 'left', 'right'].includes(value))
|
|
30
|
+
throw new TypeError('Invalid preset direction.');
|
|
31
|
+
}
|
|
32
|
+
else if (typeof value !== 'number' ||
|
|
33
|
+
!Number.isFinite(value) ||
|
|
34
|
+
value < 0 ||
|
|
35
|
+
value > (key === 'duration' ? 60_000 : key === 'scale' ? 100 : 1_000_000))
|
|
36
|
+
throw new RangeError(`Invalid preset ${key}.`);
|
|
37
|
+
}
|
|
38
|
+
const original = presets[name];
|
|
39
|
+
const keyframes = Object.fromEntries(Object.entries(original.keyframes).map(([key, value]) => [
|
|
40
|
+
key,
|
|
41
|
+
Array.isArray(value) ? [...value] : value,
|
|
42
|
+
]));
|
|
43
|
+
const transition = { ...original.transition };
|
|
44
|
+
for (const channel of ['x', 'y', 'scale', 'opacity'])
|
|
45
|
+
if (transition[channel])
|
|
46
|
+
transition[channel] = { ...transition[channel] };
|
|
47
|
+
const entering = !name.includes('Out');
|
|
48
|
+
const direction = parameters.direction;
|
|
49
|
+
if (direction) {
|
|
50
|
+
delete keyframes.x;
|
|
51
|
+
delete keyframes.y;
|
|
52
|
+
const horizontal = direction === 'left' || direction === 'right';
|
|
53
|
+
const sign = direction === 'left' || direction === 'up' ? -1 : 1;
|
|
54
|
+
const amount = (parameters.distance ?? 24) * sign * (!horizontal && entering ? -1 : 1);
|
|
55
|
+
keyframes[horizontal ? 'x' : 'y'] = entering ? [amount, 0] : amount;
|
|
56
|
+
}
|
|
57
|
+
else if (parameters.distance !== undefined) {
|
|
58
|
+
for (const channel of ['x', 'y']) {
|
|
59
|
+
const value = keyframes[channel];
|
|
60
|
+
if (typeof value === 'number')
|
|
61
|
+
keyframes[channel] = Math.sign(value) * parameters.distance;
|
|
62
|
+
else if (value)
|
|
63
|
+
keyframes[channel] = value.map((n) => Math.sign(n) * parameters.distance);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (parameters.scale !== undefined)
|
|
67
|
+
keyframes.scale = entering ? [parameters.scale, 1] : parameters.scale;
|
|
68
|
+
if (parameters.duration !== undefined)
|
|
69
|
+
return {
|
|
70
|
+
keyframes,
|
|
71
|
+
transition: {
|
|
72
|
+
type: 'tween',
|
|
73
|
+
duration: parameters.duration,
|
|
74
|
+
ease: entering ? 'easeOut' : 'easeIn',
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
return { keyframes, transition };
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=preset-recipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recipe.js","sourceRoot":"","sources":["../../src/core/preset-recipe.ts"],"names":[],"mappings":"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"}
|
package/dist/core/reorder.d.ts
CHANGED
|
@@ -9,4 +9,9 @@ export declare function itemKeys<T, K extends ReorderKey>(items: readonly T[], k
|
|
|
9
9
|
export declare function sameKeys<K>(a: readonly K[], b: readonly K[]): boolean;
|
|
10
10
|
/** toIndex is the final position, after removing the dragged item. */
|
|
11
11
|
export declare function moveAt<K extends ReorderKey>(keys: readonly K[], fromIndex: number, toIndex: number): ReorderMove<K> | undefined;
|
|
12
|
+
/** Destination in a measured, realized layout. The caller supplies the dragged row's center. */
|
|
13
|
+
export declare function reorderDestination(rows: readonly {
|
|
14
|
+
start: number;
|
|
15
|
+
size: number;
|
|
16
|
+
}[], from: number, center: number): number | undefined;
|
|
12
17
|
//# sourceMappingURL=reorder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AACxC,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,GAAG,EAAE,CAAC,CAAA;IACN,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAC9C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,EAAE,CAaL;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EACzC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAiB5B"}
|
|
1
|
+
{"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AACxC,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,GAAG,EAAE,CAAC,CAAA;IACN,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAC9C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,EAAE,CAaL;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EACzC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAiB5B;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAgBpB"}
|
package/dist/core/reorder.js
CHANGED
|
@@ -27,4 +27,21 @@ export function moveAt(keys, fromIndex, toIndex) {
|
|
|
27
27
|
toIndex,
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
/** Destination in a measured, realized layout. The caller supplies the dragged row's center. */
|
|
31
|
+
export function reorderDestination(rows, from, center) {
|
|
32
|
+
if (!Number.isInteger(from) ||
|
|
33
|
+
from < 0 ||
|
|
34
|
+
from >= rows.length ||
|
|
35
|
+
!Number.isFinite(center))
|
|
36
|
+
return undefined;
|
|
37
|
+
let destination = 0;
|
|
38
|
+
for (let i = 0; i < rows.length; i++) {
|
|
39
|
+
const row = rows[i];
|
|
40
|
+
if (!Number.isFinite(row.start) || !Number.isFinite(row.size) || row.size < 0)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (i !== from && center > row.start + row.size / 2)
|
|
43
|
+
destination++;
|
|
44
|
+
}
|
|
45
|
+
return destination;
|
|
46
|
+
}
|
|
30
47
|
//# sourceMappingURL=reorder.js.map
|
package/dist/core/reorder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.js","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,GAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzD;QAED,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IACxE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACpC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,CAAe,EAAE,CAAe;IAC1D,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,IAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,IAAI,CAAC,MAAM;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM;QACtB,SAAS,KAAK,OAAO;QAErB,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAE;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QACpE,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"reorder.js","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,GAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzD;QAED,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IACxE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACpC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,CAAe,EAAE,CAAe;IAC1D,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,IAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,IAAI,CAAC,MAAM;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM;QACtB,SAAS,KAAK,OAAO;QAErB,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAE;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QACpE,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAChC,IAAgD,EAChD,IAAY,EACZ,MAAc;IAEd,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACvB,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,IAAI,CAAC,MAAM;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAExB,OAAO,SAAS,CAAA;IAClB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;YAC3E,OAAO,SAAS,CAAA;QAClB,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC;YAAE,WAAW,EAAE,CAAA;IACpE,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Track } from './track.js';
|
|
2
|
+
export declare const rigChannels: readonly ["x", "y", "scaleX", "scaleY", "rotate"];
|
|
3
|
+
export type RigChannel = (typeof rigChannels)[number];
|
|
4
|
+
export type RigTransform = Partial<Record<RigChannel, number>>;
|
|
5
|
+
export interface RigPart {
|
|
6
|
+
parent?: string;
|
|
7
|
+
/** Fractions of the part's border-box size. */
|
|
8
|
+
pivot?: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
rest?: RigTransform;
|
|
13
|
+
/** Degrees; the entire sampled rotation, including spring overshoot, is bounded. */
|
|
14
|
+
rotation?: readonly [number, number];
|
|
15
|
+
}
|
|
16
|
+
export interface RigSocket {
|
|
17
|
+
part: string;
|
|
18
|
+
/** Local logical units (native DIPs / CSS pixels), or fractions when relative. */
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
units?: 'dip' | 'relative';
|
|
22
|
+
}
|
|
23
|
+
export interface RigDefinition {
|
|
24
|
+
parts: Record<string, RigPart>;
|
|
25
|
+
poses: Record<string, Record<string, RigTransform>>;
|
|
26
|
+
sockets?: Record<string, RigSocket>;
|
|
27
|
+
}
|
|
28
|
+
export declare const shortestRigAngle: (angle: number) => number;
|
|
29
|
+
export interface RigPoseLayer {
|
|
30
|
+
pose: Record<string, RigTransform>;
|
|
31
|
+
weight: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function resolveRigDefinition(definition: RigDefinition): {
|
|
34
|
+
parts: Map<string, {
|
|
35
|
+
pivot: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
} | undefined;
|
|
39
|
+
rest: {
|
|
40
|
+
x?: number | undefined;
|
|
41
|
+
y?: number | undefined;
|
|
42
|
+
rotate?: number | undefined;
|
|
43
|
+
scaleX?: number | undefined;
|
|
44
|
+
scaleY?: number | undefined;
|
|
45
|
+
};
|
|
46
|
+
rotation: [number, number] | undefined;
|
|
47
|
+
parent?: string;
|
|
48
|
+
}>;
|
|
49
|
+
poses: Map<string, {
|
|
50
|
+
[k: string]: {
|
|
51
|
+
x?: number | undefined;
|
|
52
|
+
y?: number | undefined;
|
|
53
|
+
rotate?: number | undefined;
|
|
54
|
+
scaleX?: number | undefined;
|
|
55
|
+
scaleY?: number | undefined;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
sockets: Map<string, {
|
|
59
|
+
part: string;
|
|
60
|
+
/** Local logical units (native DIPs / CSS pixels), or fractions when relative. */
|
|
61
|
+
x: number;
|
|
62
|
+
y: number;
|
|
63
|
+
units?: "dip" | "relative";
|
|
64
|
+
}>;
|
|
65
|
+
used: Map<string, Set<"x" | "y" | "rotate" | "scaleX" | "scaleY">>;
|
|
66
|
+
select: (layers: readonly {
|
|
67
|
+
pose: string;
|
|
68
|
+
weight: number;
|
|
69
|
+
}[]) => RigPoseLayer[];
|
|
70
|
+
};
|
|
71
|
+
export declare function rigDestination(part: RigPart, name: string, property: RigChannel, rest: number, current: number, selected: readonly RigPoseLayer[]): number;
|
|
72
|
+
export declare function limitRigTrack(original: Track, limits?: readonly [number, number]): Track;
|
|
73
|
+
//# sourceMappingURL=rig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rig.d.ts","sourceRoot":"","sources":["../../src/core/rig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,eAAO,MAAM,WAAW,mDAAoD,CAAA;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAC9D,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAA;CAC3B;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,WACD,CAAA;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AACD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,aAAa;;;eAxB/C,MAAM;eAAK,MAAM;;;;;;;;;;iBAFrB,MAAM;;;;;;;;;;;;cAQT,MAAM;QACZ,kFAAkF;WAC/E,MAAM;WACN,MAAM;gBACD,KAAK,GAAG,UAAU;;;qBAgFhB,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,KAClD,YAAY,EAAE;EAQlB;AACD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,YAAY,EAAE,UAiBlC;AACD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,KAAK,EACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,KAAK,CAcP"}
|
package/dist/core/rig.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export const rigChannels = ['x', 'y', 'scaleX', 'scaleY', 'rotate'];
|
|
2
|
+
const finite = (n) => typeof n === 'number' && Number.isFinite(n);
|
|
3
|
+
export const shortestRigAngle = (angle) => ((((angle + 180) % 360) + 360) % 360) - 180;
|
|
4
|
+
export function resolveRigDefinition(definition) {
|
|
5
|
+
const parts = new Map(Object.entries(definition.parts).map(([name, part]) => [
|
|
6
|
+
name,
|
|
7
|
+
{
|
|
8
|
+
...part,
|
|
9
|
+
pivot: part.pivot && { ...part.pivot },
|
|
10
|
+
rest: { ...part.rest },
|
|
11
|
+
rotation: part.rotation && [...part.rotation],
|
|
12
|
+
},
|
|
13
|
+
]));
|
|
14
|
+
if (!parts.size || parts.size > 64)
|
|
15
|
+
throw new RangeError('A rig supports 1..64 parts.');
|
|
16
|
+
const validateTransform = (values) => {
|
|
17
|
+
for (const [key, value] of Object.entries(values))
|
|
18
|
+
if (!rigChannels.includes(key) || !finite(value))
|
|
19
|
+
throw new TypeError('Invalid rig transform.');
|
|
20
|
+
};
|
|
21
|
+
const used = new Map();
|
|
22
|
+
for (const [name, part] of parts) {
|
|
23
|
+
validateTransform(part.rest);
|
|
24
|
+
used.set(name, new Set(Object.keys(part.rest)));
|
|
25
|
+
if (part.pivot && (!finite(part.pivot.x) || !finite(part.pivot.y)))
|
|
26
|
+
throw new TypeError('Invalid rig pivot.');
|
|
27
|
+
if (part.rotation &&
|
|
28
|
+
(part.rotation.length !== 2 ||
|
|
29
|
+
!part.rotation.every(finite) ||
|
|
30
|
+
part.rotation[0] > part.rotation[1]))
|
|
31
|
+
throw new TypeError('Invalid rotation limits.');
|
|
32
|
+
const visited = new Set([name]);
|
|
33
|
+
let parent = part.parent;
|
|
34
|
+
while (parent !== undefined) {
|
|
35
|
+
if (!parts.has(parent) || visited.has(parent))
|
|
36
|
+
throw new TypeError('Rig hierarchy contains a cycle or missing parent.');
|
|
37
|
+
visited.add(parent);
|
|
38
|
+
parent = parts.get(parent).parent;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const poses = new Map(Object.entries(definition.poses).map(([name, pose]) => [
|
|
42
|
+
name,
|
|
43
|
+
Object.fromEntries(Object.entries(pose).map(([part, values]) => {
|
|
44
|
+
if (!parts.has(part))
|
|
45
|
+
throw new TypeError(`Unknown rig part "${part}".`);
|
|
46
|
+
validateTransform(values);
|
|
47
|
+
Object.keys(values).forEach((key) => used.get(part).add(key));
|
|
48
|
+
return [part, { ...values }];
|
|
49
|
+
})),
|
|
50
|
+
]));
|
|
51
|
+
const sockets = new Map(Object.entries(definition.sockets ?? {}).map(([name, socket]) => {
|
|
52
|
+
if (!parts.has(socket.part) ||
|
|
53
|
+
!finite(socket.x) ||
|
|
54
|
+
!finite(socket.y) ||
|
|
55
|
+
(socket.units !== undefined && !['dip', 'relative'].includes(socket.units)))
|
|
56
|
+
throw new TypeError('Invalid rig socket.');
|
|
57
|
+
return [name, { ...socket }];
|
|
58
|
+
}));
|
|
59
|
+
const select = (layers) => {
|
|
60
|
+
return layers.map((layer) => {
|
|
61
|
+
if (!finite(layer.weight) || layer.weight < 0 || !poses.has(layer.pose))
|
|
62
|
+
throw new TypeError('Unknown pose or invalid blend weight.');
|
|
63
|
+
return { pose: poses.get(layer.pose), weight: layer.weight };
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
return { parts, poses, sockets, used, select };
|
|
67
|
+
}
|
|
68
|
+
export function rigDestination(part, name, property, rest, current, selected) {
|
|
69
|
+
let total = 0, offset = 0;
|
|
70
|
+
for (const layer of selected) {
|
|
71
|
+
const value = layer.pose[name]?.[property];
|
|
72
|
+
if (value === undefined)
|
|
73
|
+
continue;
|
|
74
|
+
total += layer.weight;
|
|
75
|
+
offset +=
|
|
76
|
+
(property === 'rotate' && !part.rotation
|
|
77
|
+
? shortestRigAngle(value - rest)
|
|
78
|
+
: value - rest) * layer.weight;
|
|
79
|
+
}
|
|
80
|
+
const destination = rest + offset / Math.max(1, total);
|
|
81
|
+
return property === 'rotate' && !part.rotation
|
|
82
|
+
? current + shortestRigAngle(destination - current)
|
|
83
|
+
: destination;
|
|
84
|
+
}
|
|
85
|
+
export function limitRigTrack(original, limits) {
|
|
86
|
+
if (!limits)
|
|
87
|
+
return original;
|
|
88
|
+
const [min, max] = limits, clamp = (value) => Math.max(min, Math.min(max, value));
|
|
89
|
+
return {
|
|
90
|
+
...original,
|
|
91
|
+
values: original.values.map(clamp),
|
|
92
|
+
to: clamp(original.to),
|
|
93
|
+
valueAt: (time) => clamp(original.valueAt(time)),
|
|
94
|
+
velocityAt: (time) => original.valueAt(time) <= min || original.valueAt(time) >= max
|
|
95
|
+
? 0
|
|
96
|
+
: original.velocityAt(time),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=rig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rig.js","sourceRoot":"","sources":["../../src/core/rig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-header.js","sourceRoot":"","sources":["../../src/core/scroll-header.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAe,EACf,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,OAAO,GAAG,CAAC,EACX,
|
|
1
|
+
{"version":3,"file":"scroll-header.js","sourceRoot":"","sources":["../../src/core/scroll-header.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Canonical sensor names shared by native drivers and browser adapters. */
|
|
2
|
-
export declare const sensorKinds: readonly [
|
|
2
|
+
export declare const sensorKinds: readonly ["rotation", "gravity", "acceleration", "linearAcceleration", "gyroscope", "magneticField"];
|
|
3
3
|
export type SensorKind = (typeof sensorKinds)[number];
|
|
4
4
|
export type VectorSensorKind = Exclude<SensorKind, 'rotation'>;
|
|
5
5
|
export type SensorUnit = 'rad' | 'm/s²' | 'rad/s' | 'µT';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensor-kinds.d.ts","sourceRoot":"","sources":["../../src/core/sensor-kinds.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"sensor-kinds.d.ts","sourceRoot":"","sources":["../../src/core/sensor-kinds.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,sGAOd,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC9D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACxD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAOhE,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SensorKind } from './sensor-kinds.js';
|
|
2
|
+
/** Canonical, explicitly synthetic input; timestamps are relative milliseconds. */
|
|
3
|
+
export interface SensorSample {
|
|
4
|
+
time: number;
|
|
5
|
+
/** Quaternion xyzw for rotation; canonical device-coordinate xyz for vectors. */
|
|
6
|
+
values: readonly number[];
|
|
7
|
+
orientation?: 0 | 90 | 180 | 270;
|
|
8
|
+
}
|
|
9
|
+
export declare function validateSensorSamples(kind: SensorKind, samples: readonly SensorSample[]): SensorSample[];
|
|
10
|
+
//# sourceMappingURL=sensor-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensor-replay.d.ts","sourceRoot":"","sources":["../../src/core/sensor-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEhE,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,iFAAiF;IACjF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAA;CACjC;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,YAAY,EAAE,CAkChB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { sensorKinds } from './sensor-kinds.js';
|
|
2
|
+
export function validateSensorSamples(kind, samples) {
|
|
3
|
+
if (!sensorKinds.includes(kind))
|
|
4
|
+
throw new TypeError('Unknown sensor kind.');
|
|
5
|
+
if (!Array.isArray(samples) || samples.length < 2 || samples.length > 10000)
|
|
6
|
+
throw new RangeError('Use 2–10000 sensor samples.');
|
|
7
|
+
let previous = -1;
|
|
8
|
+
return samples.map((sample) => {
|
|
9
|
+
if (!sample ||
|
|
10
|
+
!Number.isFinite(sample.time) ||
|
|
11
|
+
sample.time <= previous ||
|
|
12
|
+
sample.time > 60000 ||
|
|
13
|
+
sample.time < 0)
|
|
14
|
+
throw new RangeError('Sensor times must increase within 0–60000 milliseconds.');
|
|
15
|
+
previous = sample.time;
|
|
16
|
+
if (!Array.isArray(sample.values) ||
|
|
17
|
+
sample.values.length !== (kind === 'rotation' ? 4 : 3) ||
|
|
18
|
+
sample.values.some((v) => !Number.isFinite(v)))
|
|
19
|
+
throw new TypeError('Invalid canonical sensor sample.');
|
|
20
|
+
if (kind === 'rotation' && Math.hypot(...sample.values) < 1e-8)
|
|
21
|
+
throw new RangeError('A quaternion cannot be zero.');
|
|
22
|
+
if (sample.orientation !== undefined &&
|
|
23
|
+
![0, 90, 180, 270].includes(sample.orientation))
|
|
24
|
+
throw new RangeError('Invalid interface orientation.');
|
|
25
|
+
return {
|
|
26
|
+
time: sample.time,
|
|
27
|
+
values: [...sample.values],
|
|
28
|
+
...(sample.orientation === undefined ? {} : { orientation: sample.orientation }),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sensor-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sensor-replay.js","sourceRoot":"","sources":["../../src/core/sensor-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAA;AAUhE,MAAM,UAAU,qBAAqB,CACnC,IAAgB,EAChB,OAAgC;IAEhC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAA;IAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;QACzE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAA;IACrD,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,IACE,CAAC,MAAM;YACP,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,MAAM,CAAC,IAAI,IAAI,QAAQ;YACvB,MAAM,CAAC,IAAI,GAAG,KAAK;YACnB,MAAM,CAAC,IAAI,GAAG,CAAC;YAEf,MAAM,IAAI,UAAU,CAAC,yDAAyD,CAAC,CAAA;QACjF,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAA;QACzD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;YAC5D,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAA;QACtD,IACE,MAAM,CAAC,WAAW,KAAK,SAAS;YAChC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;YAE/C,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAA;QACxD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;SACjF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
+
import { type GradientTextDefinition } from '../core/gradient-text.js';
|
|
1
2
|
import { type ColorValue } from '../color.js';
|
|
2
3
|
import { type Transition } from '../transition.js';
|
|
3
4
|
import type { Target } from '../types.js';
|
|
4
5
|
import type { PlaybackAnimation } from '../playback.js';
|
|
5
|
-
export interface GradientTextOptions {
|
|
6
|
-
colors: readonly ColorValue[];
|
|
7
|
-
stops?: readonly number[];
|
|
8
|
-
/** Degrees clockwise from left-to-right; default 0. */
|
|
9
|
-
angle?: number;
|
|
10
|
-
sheen?: {
|
|
11
|
-
color?: ColorValue;
|
|
12
|
-
width?: number;
|
|
13
|
-
direction?: 'left' | 'right';
|
|
14
|
-
};
|
|
6
|
+
export interface GradientTextOptions extends GradientTextDefinition<ColorValue> {
|
|
15
7
|
}
|
|
16
8
|
export interface GradientText {
|
|
17
9
|
readonly disposed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gradient-text/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gradient-text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAIzD,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGvD,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB,CAAC,UAAU,CAAC;CAAG;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,uFAAuF;IACvF,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAA;IAChD,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,IAAI,CAAA;IACd,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;IACf,QAAQ,IAAI;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IACtE,OAAO,IAAI,IAAI,CAAA;CAChB;AAgBD,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAgMvF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveGradientText, } from '../core/gradient-text.js';
|
|
1
2
|
import { Application, Label } from '@nativescript/core';
|
|
2
3
|
import { toView } from '../animate.js';
|
|
3
4
|
import { parseColor } from '../color.js';
|
|
@@ -29,31 +30,7 @@ export function gradientText(target, options) {
|
|
|
29
30
|
throw new TypeError('gradientText does not support formattedText spans.');
|
|
30
31
|
if (owners.has(view))
|
|
31
32
|
throw new Error('This label already owns gradient text.');
|
|
32
|
-
|
|
33
|
-
options.colors.length < 2 ||
|
|
34
|
-
options.colors.length > 8)
|
|
35
|
-
throw new TypeError('Gradient text needs 2..8 colors.');
|
|
36
|
-
const colors = options.colors.map(parseColor), stops = options.stops
|
|
37
|
-
? [...options.stops]
|
|
38
|
-
: colors.map((_, i) => i / (colors.length - 1));
|
|
39
|
-
if (stops.length !== colors.length ||
|
|
40
|
-
stops.some((stop, i) => !Number.isFinite(stop) || stop < 0 || stop > 1 || (i > 0 && stop < stops[i - 1])))
|
|
41
|
-
throw new TypeError('Gradient stops must be ordered in 0..1 and match colors.');
|
|
42
|
-
const paint = {
|
|
43
|
-
colors,
|
|
44
|
-
stops,
|
|
45
|
-
angle: options.angle ?? 0,
|
|
46
|
-
sheen: parseColor(options.sheen?.color ?? '#BFFFFFFF'),
|
|
47
|
-
width: options.sheen?.width ?? 0.3,
|
|
48
|
-
};
|
|
49
|
-
const direction = options.sheen?.direction ?? 'right';
|
|
50
|
-
if (direction !== 'left' && direction !== 'right')
|
|
51
|
-
throw new TypeError('Invalid text sheen direction.');
|
|
52
|
-
if (!Number.isFinite(paint.angle) ||
|
|
53
|
-
!Number.isFinite(paint.width) ||
|
|
54
|
-
paint.width <= 0 ||
|
|
55
|
-
paint.width > 1)
|
|
56
|
-
throw new TypeError('Invalid text gradient angle or sheen width.');
|
|
33
|
+
const { paint, direction } = resolveGradientText(options, parseColor);
|
|
57
34
|
let disposed = false, suspended = false, background = Application.suspended, resumePlayback = false;
|
|
58
35
|
let painter, native, active, pendingTrack;
|
|
59
36
|
let queued = false, started = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gradient-text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAmB,MAAM,kBAAkB,CAAA;AAGrE,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gradient-text/index.ts"],"names":[],"mappings":"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"}
|