@sebastianwessel/isostate 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/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # @sebastianwessel/isostate
2
+
3
+ Scroll-driven animated isometric scenes for product storytelling, technical
4
+ docs, and visual explainers.
5
+
6
+ Isostate renders compiled scene bundles as lightweight SVG. YAML parsing,
7
+ validation, and compilation happen at build time; browsers only receive the
8
+ runtime, compiled scene data, and referenced assets.
9
+
10
+ ## Links
11
+
12
+ - Website: https://sebastianwessel.github.io/isostate
13
+ - Repository: https://github.com/sebastianwessel/isostate
14
+ - Issues: https://github.com/sebastianwessel/isostate/issues
15
+ - Documentation: https://sebastianwessel.github.io/isostate/docs/getting-started.md/
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npm install @sebastianwessel/isostate
21
+ ```
22
+
23
+ The browser runtime has no production dependencies. The optional `yaml` peer is
24
+ only needed when you use the dev-time DSL APIs from `@sebastianwessel/isostate/dsl`.
25
+
26
+ ## Runtime Usage
27
+
28
+ ```ts
29
+ import { mountScene, type RuntimeBundle } from '@sebastianwessel/isostate';
30
+ import sceneBundle from './scene.isostate.js';
31
+
32
+ const target = document.querySelector<HTMLElement>('#scene');
33
+ if (!target) throw new Error('Missing #scene');
34
+
35
+ const mounted = mountScene(target, sceneBundle as RuntimeBundle, {
36
+ label: 'Product story',
37
+ controller: false
38
+ });
39
+
40
+ mounted.engine.setProgress(0.5);
41
+ ```
42
+
43
+ ## Dev-Time DSL Usage
44
+
45
+ ```ts
46
+ import {
47
+ compileScene,
48
+ parseScene,
49
+ toJs,
50
+ validateScene
51
+ } from '@sebastianwessel/isostate/dsl';
52
+
53
+ const document = parseScene(yamlText);
54
+ const report = validateScene(document);
55
+ if (!report.isValid) throw new Error(report.errors[0]?.message);
56
+
57
+ const bundle = compileScene(document);
58
+ const jsModule = toJs(bundle);
59
+ ```
60
+
61
+ For CLI validation, compilation, and static bundles, use
62
+ `@sebastianwessel/isostate-cli`.
@@ -1,8 +1,11 @@
1
+ import { type ViewBoxRect } from "../rendering/rendering-engine.ts";
2
+ import type { CameraGridArea, CameraZoomOptions, RuntimeCameraTarget } from "../types/node.ts";
1
3
  import type { RuntimeBundle } from "../types/runtime-bundle.ts";
2
4
  import { AnimationEngine } from "./animation-engine.ts";
3
5
  export interface ControllerEvents {
4
6
  "progress-change": (progress: number) => void;
5
7
  "scene-change": (index: number) => void;
8
+ "camera-change": (state: CameraState) => void;
6
9
  paused: () => void;
7
10
  resumed: () => void;
8
11
  }
@@ -27,6 +30,12 @@ export interface ControllerConfig {
27
30
  transitionDuration?: number;
28
31
  transitionEasing?: "linear" | "ease-in-out" | "ease-out";
29
32
  }
33
+ export type { CameraGridArea, CameraZoomOptions };
34
+ export interface CameraState {
35
+ viewBox: ViewBoxRect;
36
+ target?: RuntimeCameraTarget;
37
+ isZoomed: boolean;
38
+ }
30
39
  interface ControllerRuntime {
31
40
  engine?: AnimationEngine;
32
41
  sceneElement?: SVGSVGElement;
@@ -49,6 +58,8 @@ export declare class AnimationController {
49
58
  private _pendingProgress;
50
59
  private _destroyed;
51
60
  private _listeners;
61
+ private _cameraAnim;
62
+ private _cameraState;
52
63
  private _minScroll;
53
64
  private _maxScroll;
54
65
  private _touchStartY;
@@ -95,6 +106,10 @@ export declare class AnimationController {
95
106
  * Check if controller is paused.
96
107
  */
97
108
  isPaused(): boolean;
109
+ zoomToElement(id: string, options?: CameraZoomOptions): void;
110
+ zoomToArea(area: CameraGridArea, options?: CameraZoomOptions): void;
111
+ resetZoom(options?: CameraZoomOptions): void;
112
+ getCameraState(): CameraState;
98
113
  /**
99
114
  * Destroy controller and clean up all listeners and resources.
100
115
  */
@@ -105,6 +120,15 @@ export declare class AnimationController {
105
120
  private _scheduleProgressForward;
106
121
  private _cancelFrame;
107
122
  private _applyFrameUpdate;
123
+ private _applyCameraForProgress;
124
+ private _effectiveCameraAt;
125
+ private _resolveCameraViewBox;
126
+ private _applyCameraDestination;
127
+ private _setCameraViewBox;
128
+ private _getSceneSvg;
129
+ private _resolveCameraPadding;
130
+ private _resolveCameraDuration;
131
+ private _assertValidCameraArea;
108
132
  private _applyLifecycleChanges;
109
133
  private _applyConnectorLifecycleChanges;
110
134
  private _applyEntryAnimation;
@@ -114,6 +138,7 @@ export declare class AnimationController {
114
138
  private _transitionToScene;
115
139
  private _animateProgress;
116
140
  private _cancelTransition;
141
+ private _cancelCameraAnimation;
117
142
  private _bindScroll;
118
143
  private _unbindScroll;
119
144
  private _calculateScrollBounds;
@@ -126,5 +151,4 @@ export declare class AnimationController {
126
151
  private _applyPauseState;
127
152
  private _assertNotDestroyed;
128
153
  }
129
- export {};
130
154
  //# sourceMappingURL=controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/animation/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/animation/controller.ts"],"names":[],"mappings":"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"}