@obinexusltd/obix-sdk-motion 0.0.9

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.
@@ -0,0 +1,72 @@
1
+ /**
2
+ * OBIX Motion - Accessible animation engine with motion preference detection,
3
+ * spring physics, variant presets, orchestration, and policy enforcement.
4
+ */
5
+ export type Easing = "linear" | "easeIn" | "easeOut" | "easeInOut" | "cubic" | ((progress: number) => number);
6
+ export interface Keyframe {
7
+ offset: number;
8
+ properties: Record<string, string | number>;
9
+ easing?: Easing;
10
+ }
11
+ export interface Timeline {
12
+ name: string;
13
+ duration: number;
14
+ delay?: number;
15
+ iterations?: number;
16
+ direction?: "normal" | "reverse" | "alternate";
17
+ keyframes: Keyframe[];
18
+ }
19
+ export interface ReducedMotionStrategy {
20
+ skipAnimations: boolean;
21
+ skipTransitions: boolean;
22
+ instantDuration?: number;
23
+ }
24
+ export interface MotionConfig {
25
+ respectPrefersReducedMotion: boolean;
26
+ reducedMotionStrategy?: ReducedMotionStrategy;
27
+ defaultEasing?: Easing;
28
+ }
29
+ export declare enum MotionVariant {
30
+ FadeIn = "FadeIn",
31
+ FadeOut = "FadeOut",
32
+ SlideUp = "SlideUp",
33
+ SlideDown = "SlideDown",
34
+ SlideLeft = "SlideLeft",
35
+ SlideRight = "SlideRight",
36
+ ScaleIn = "ScaleIn",
37
+ ScaleOut = "ScaleOut"
38
+ }
39
+ export interface SpringConfig {
40
+ stiffness?: number;
41
+ damping?: number;
42
+ mass?: number;
43
+ initialVelocity?: number;
44
+ }
45
+ export interface MotionPolicy {
46
+ name: string;
47
+ validate(timeline: Timeline): string | null;
48
+ }
49
+ export interface MotionEngine {
50
+ animate(element: HTMLElement, timeline: Timeline): Promise<void>;
51
+ sequence(animations: Array<{
52
+ element: HTMLElement;
53
+ timeline: Timeline;
54
+ }>): Promise<void>;
55
+ parallel(animations: Array<{
56
+ element: HTMLElement;
57
+ timeline: Timeline;
58
+ }>): Promise<void>;
59
+ stagger(animations: Array<{
60
+ element: HTMLElement;
61
+ timeline: Timeline;
62
+ }>, delayMs?: number): Promise<void>;
63
+ applyVariant(element: HTMLElement, variant: MotionVariant, duration?: number): Promise<void>;
64
+ spring(element: HTMLElement, targetProperties: Record<string, string | number>, config?: SpringConfig): Promise<void>;
65
+ registerTimeline(timeline: Timeline): void;
66
+ getTimeline(name: string): Timeline | undefined;
67
+ registerPolicy(policy: MotionPolicy): void;
68
+ validatePolicies(timeline: Timeline): string[];
69
+ respectReducedMotion(): boolean;
70
+ }
71
+ export declare function createMotionEngine(config: MotionConfig): MotionEngine;
72
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,284 @@
1
+ /**
2
+ * OBIX Motion - Accessible animation engine with motion preference detection,
3
+ * spring physics, variant presets, orchestration, and policy enforcement.
4
+ */
5
+ // ---------------------------------------------------------------------------
6
+ // Motion variants
7
+ // ---------------------------------------------------------------------------
8
+ export var MotionVariant;
9
+ (function (MotionVariant) {
10
+ MotionVariant["FadeIn"] = "FadeIn";
11
+ MotionVariant["FadeOut"] = "FadeOut";
12
+ MotionVariant["SlideUp"] = "SlideUp";
13
+ MotionVariant["SlideDown"] = "SlideDown";
14
+ MotionVariant["SlideLeft"] = "SlideLeft";
15
+ MotionVariant["SlideRight"] = "SlideRight";
16
+ MotionVariant["ScaleIn"] = "ScaleIn";
17
+ MotionVariant["ScaleOut"] = "ScaleOut";
18
+ })(MotionVariant || (MotionVariant = {}));
19
+ // ---------------------------------------------------------------------------
20
+ // Helpers
21
+ // ---------------------------------------------------------------------------
22
+ const applyProperties = (element, frame) => {
23
+ if (!frame)
24
+ return;
25
+ Object.entries(frame.properties).forEach(([key, value]) => {
26
+ element.style.setProperty(key, String(value));
27
+ });
28
+ };
29
+ const VARIANT_TIMELINES = {
30
+ [MotionVariant.FadeIn]: (d) => ({
31
+ name: "fade-in",
32
+ duration: d,
33
+ keyframes: [
34
+ { offset: 0, properties: { opacity: 0 } },
35
+ { offset: 1, properties: { opacity: 1 } },
36
+ ],
37
+ }),
38
+ [MotionVariant.FadeOut]: (d) => ({
39
+ name: "fade-out",
40
+ duration: d,
41
+ keyframes: [
42
+ { offset: 0, properties: { opacity: 1 } },
43
+ { offset: 1, properties: { opacity: 0 } },
44
+ ],
45
+ }),
46
+ [MotionVariant.SlideUp]: (d) => ({
47
+ name: "slide-up",
48
+ duration: d,
49
+ keyframes: [
50
+ { offset: 0, properties: { transform: "translateY(24px)" } },
51
+ { offset: 1, properties: { transform: "translateY(0px)" } },
52
+ ],
53
+ }),
54
+ [MotionVariant.SlideDown]: (d) => ({
55
+ name: "slide-down",
56
+ duration: d,
57
+ keyframes: [
58
+ { offset: 0, properties: { transform: "translateY(-24px)" } },
59
+ { offset: 1, properties: { transform: "translateY(0px)" } },
60
+ ],
61
+ }),
62
+ [MotionVariant.SlideLeft]: (d) => ({
63
+ name: "slide-left",
64
+ duration: d,
65
+ keyframes: [
66
+ { offset: 0, properties: { transform: "translateX(24px)" } },
67
+ { offset: 1, properties: { transform: "translateX(0px)" } },
68
+ ],
69
+ }),
70
+ [MotionVariant.SlideRight]: (d) => ({
71
+ name: "slide-right",
72
+ duration: d,
73
+ keyframes: [
74
+ { offset: 0, properties: { transform: "translateX(-24px)" } },
75
+ { offset: 1, properties: { transform: "translateX(0px)" } },
76
+ ],
77
+ }),
78
+ [MotionVariant.ScaleIn]: (d) => ({
79
+ name: "scale-in",
80
+ duration: d,
81
+ keyframes: [
82
+ { offset: 0, properties: { transform: "scale(0.85)" } },
83
+ { offset: 1, properties: { transform: "scale(1)" } },
84
+ ],
85
+ }),
86
+ [MotionVariant.ScaleOut]: (d) => ({
87
+ name: "scale-out",
88
+ duration: d,
89
+ keyframes: [
90
+ { offset: 0, properties: { transform: "scale(1)" } },
91
+ { offset: 1, properties: { transform: "scale(0.85)" } },
92
+ ],
93
+ }),
94
+ };
95
+ // Critically-damped spring simulation using simple Euler integration.
96
+ // Returns a promise that resolves once the spring has settled.
97
+ function simulateSpring(element, targetProperties, config, instant, instantDuration) {
98
+ return new Promise((resolve) => {
99
+ if (instant) {
100
+ element.style.transitionDuration = `${instantDuration}ms`;
101
+ Object.entries(targetProperties).forEach(([key, value]) => {
102
+ element.style.setProperty(key, String(value));
103
+ });
104
+ resolve();
105
+ return;
106
+ }
107
+ const { stiffness, damping, mass, initialVelocity } = config;
108
+ const dt = 1 / 60; // 60fps step in seconds
109
+ const maxFrames = 600; // safety cap: ~10s
110
+ const threshold = 0.01;
111
+ // We only animate numeric values; string values are applied at the end.
112
+ const numericTargets = {};
113
+ const stringTargets = {};
114
+ for (const [key, value] of Object.entries(targetProperties)) {
115
+ const num = parseFloat(String(value));
116
+ if (!isNaN(num)) {
117
+ numericTargets[key] = num;
118
+ }
119
+ else {
120
+ stringTargets[key] = String(value);
121
+ }
122
+ }
123
+ // Per-property spring state
124
+ const state = {};
125
+ for (const [key, target] of Object.entries(numericTargets)) {
126
+ const current = parseFloat(element.style.getPropertyValue(key) ?? "0") || 0;
127
+ state[key] = { pos: current - target, vel: initialVelocity };
128
+ }
129
+ let frame = 0;
130
+ let animFrameId;
131
+ function tick() {
132
+ let allSettled = true;
133
+ frame++;
134
+ for (const [key, s] of Object.entries(state)) {
135
+ const target = numericTargets[key];
136
+ const force = -stiffness * s.pos - damping * s.vel;
137
+ const acceleration = force / mass;
138
+ s.vel += acceleration * dt;
139
+ s.pos += s.vel * dt;
140
+ const current = target + s.pos;
141
+ element.style.setProperty(key, String(current));
142
+ if (Math.abs(s.pos) > threshold || Math.abs(s.vel) > threshold) {
143
+ allSettled = false;
144
+ }
145
+ }
146
+ if (allSettled || frame >= maxFrames) {
147
+ // Snap to final values
148
+ for (const [key, target] of Object.entries(numericTargets)) {
149
+ element.style.setProperty(key, String(target));
150
+ }
151
+ for (const [key, value] of Object.entries(stringTargets)) {
152
+ element.style.setProperty(key, value);
153
+ }
154
+ resolve();
155
+ }
156
+ else {
157
+ animFrameId = setTimeout(tick, dt * 1000);
158
+ }
159
+ }
160
+ animFrameId = setTimeout(tick, 0);
161
+ void animFrameId; // suppress unused warning
162
+ });
163
+ }
164
+ // ---------------------------------------------------------------------------
165
+ // Factory
166
+ // ---------------------------------------------------------------------------
167
+ export function createMotionEngine(config) {
168
+ const timelines = new Map();
169
+ const policies = [];
170
+ const strategy = {
171
+ skipAnimations: true,
172
+ skipTransitions: true,
173
+ instantDuration: 0,
174
+ ...(config.reducedMotionStrategy ?? {}),
175
+ };
176
+ const shouldReduceMotion = () => {
177
+ if (!config.respectPrefersReducedMotion ||
178
+ typeof window === "undefined" ||
179
+ typeof window.matchMedia !== "function") {
180
+ return false;
181
+ }
182
+ return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
183
+ };
184
+ const engine = {
185
+ // -----------------------------------------------------------------------
186
+ // animate
187
+ // -----------------------------------------------------------------------
188
+ async animate(element, timeline) {
189
+ timelines.set(timeline.name, timeline);
190
+ const first = timeline.keyframes[0];
191
+ const last = timeline.keyframes[timeline.keyframes.length - 1];
192
+ applyProperties(element, first);
193
+ if (shouldReduceMotion() && strategy.skipAnimations) {
194
+ element.style.transitionDuration = `${strategy.instantDuration ?? 0}ms`;
195
+ applyProperties(element, last);
196
+ return;
197
+ }
198
+ await new Promise((resolve) => {
199
+ const totalDuration = Math.max(0, timeline.duration + (timeline.delay ?? 0));
200
+ setTimeout(() => {
201
+ applyProperties(element, last);
202
+ resolve();
203
+ }, totalDuration);
204
+ });
205
+ },
206
+ // -----------------------------------------------------------------------
207
+ // sequence — run animations one after another
208
+ // -----------------------------------------------------------------------
209
+ async sequence(animations) {
210
+ for (const anim of animations) {
211
+ await engine.animate(anim.element, anim.timeline);
212
+ }
213
+ },
214
+ // -----------------------------------------------------------------------
215
+ // parallel — run all animations concurrently
216
+ // -----------------------------------------------------------------------
217
+ async parallel(animations) {
218
+ await Promise.all(animations.map((anim) => engine.animate(anim.element, anim.timeline)));
219
+ },
220
+ // -----------------------------------------------------------------------
221
+ // stagger — run animations with incrementing delay offset
222
+ // -----------------------------------------------------------------------
223
+ async stagger(animations, delayMs = 50) {
224
+ await Promise.all(animations.map((anim, index) => {
225
+ const staggered = {
226
+ ...anim.timeline,
227
+ delay: (anim.timeline.delay ?? 0) + index * delayMs,
228
+ };
229
+ return engine.animate(anim.element, staggered);
230
+ }));
231
+ },
232
+ // -----------------------------------------------------------------------
233
+ // applyVariant — apply a predefined motion preset
234
+ // -----------------------------------------------------------------------
235
+ async applyVariant(element, variant, duration = 300) {
236
+ const buildTimeline = VARIANT_TIMELINES[variant];
237
+ const timeline = buildTimeline(duration);
238
+ await engine.animate(element, timeline);
239
+ },
240
+ // -----------------------------------------------------------------------
241
+ // spring — physics-based animation
242
+ // -----------------------------------------------------------------------
243
+ async spring(element, targetProperties, config = {}) {
244
+ const resolved = {
245
+ stiffness: config.stiffness ?? 170,
246
+ damping: config.damping ?? 26,
247
+ mass: config.mass ?? 1,
248
+ initialVelocity: config.initialVelocity ?? 0,
249
+ };
250
+ const instant = shouldReduceMotion() && strategy.skipAnimations;
251
+ await simulateSpring(element, targetProperties, resolved, instant, strategy.instantDuration ?? 0);
252
+ },
253
+ // -----------------------------------------------------------------------
254
+ // Registry
255
+ // -----------------------------------------------------------------------
256
+ registerTimeline(timeline) {
257
+ timelines.set(timeline.name, timeline);
258
+ },
259
+ getTimeline(name) {
260
+ return timelines.get(name);
261
+ },
262
+ registerPolicy(policy) {
263
+ policies.push(policy);
264
+ },
265
+ validatePolicies(timeline) {
266
+ const violations = [];
267
+ for (const policy of policies) {
268
+ const result = policy.validate(timeline);
269
+ if (result !== null) {
270
+ violations.push(`[${policy.name}] ${result}`);
271
+ }
272
+ }
273
+ return violations;
274
+ },
275
+ // -----------------------------------------------------------------------
276
+ // Introspection
277
+ // -----------------------------------------------------------------------
278
+ respectReducedMotion() {
279
+ return shouldReduceMotion();
280
+ },
281
+ };
282
+ return engine;
283
+ }
284
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@obinexusltd/obix-sdk-motion",
3
+ "version": "0.0.9",
4
+ "description": "OBIX Motion - Animation system respecting prefers-reduced-motion",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "test": "vitest run",
11
+ "test:watch": "vitest"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ }
21
+ },
22
+ "license": "MIT",
23
+ "author": "OBINexus <okpalan@protonmail.com>",
24
+ "peerDependencies": {
25
+ "@obinexusltd/obix-sdk-core": "^0.1.0"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ }
30
+ }