@elucim/dsl 0.1.3 → 0.2.1

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 CHANGED
@@ -126,6 +126,8 @@ Every document has this structure:
126
126
  | `rect` | `x`, `y`, `width`, `height` | Rectangle |
127
127
  | `polygon` | `points` (array of [x,y]) | Polygon/polyline |
128
128
  | `text` | `x`, `y`, `content` | Text element |
129
+ | `image` | `src`, `x`, `y`, `width`, `height` | Embed external images (PNG, SVG, etc.) |
130
+ | `barChart` | `bars` | Animated bar chart with labels and colors |
129
131
 
130
132
  #### Math Visualizations
131
133
  | Type | Required Props | Description |
@@ -154,7 +156,7 @@ Every document has this structure:
154
156
  | Type | Key Props | Description |
155
157
  |------|----------|-------------|
156
158
  | `sequence` | `from`, `durationInFrames` | Time-offset wrapper |
157
- | `group` | `children` | Logical grouping |
159
+ | `group` | `children` | Logical grouping with shared transforms (rotation, scale, translate) and zIndex sorting of children |
158
160
 
159
161
  ### Inline Animation Props
160
162
 
@@ -164,6 +166,15 @@ All primitives support these optional animation props directly:
164
166
  - `draw?: number` — Progressive stroke draw over N frames
165
167
  - `easing?: string | { type, ... }` — Easing function
166
168
 
169
+ ### Spatial Transform Props
170
+
171
+ All primitives and groups support these optional spatial transform props:
172
+ - `rotation?: number` — Rotate element in degrees
173
+ - `rotationOrigin?: [number, number]` — Center of rotation [cx, cy]
174
+ - `scale?: number` — Uniform scale factor
175
+ - `translate?: [number, number]` — Offset [dx, dy]
176
+ - `zIndex?: number` — Stacking order (higher renders on top)
177
+
167
178
  ### Easing
168
179
 
169
180
  **Named easings:** `linear`, `easeInQuad`, `easeOutQuad`, `easeInOutQuad`, `easeInCubic`, `easeOutCubic`, `easeInOutCubic`, `easeInQuart`, `easeOutQuart`, `easeInOutQuart`, `easeInSine`, `easeOutSine`, `easeInOutSine`, `easeInExpo`, `easeOutExpo`, `easeInOutExpo`, `easeInBack`, `easeOutBack`, `easeOutElastic`, `easeOutBounce`
package/dist/index.d.ts CHANGED
@@ -17,6 +17,11 @@ export declare interface ArrowNode {
17
17
  fadeOut?: number;
18
18
  draw?: number;
19
19
  easing?: EasingSpec;
20
+ rotation?: number;
21
+ rotationOrigin?: [number, number];
22
+ scale?: number | [number, number];
23
+ translate?: [number, number];
24
+ zIndex?: number;
20
25
  }
21
26
 
22
27
  export declare interface AxesNode {
@@ -38,6 +43,10 @@ export declare interface AxesNode {
38
43
  fadeOut?: number;
39
44
  draw?: number;
40
45
  easing?: EasingSpec;
46
+ rotation?: number;
47
+ rotationOrigin?: [number, number];
48
+ translate?: [number, number];
49
+ zIndex?: number;
41
50
  }
42
51
 
43
52
  export declare interface BarChartBarDef {
@@ -64,6 +73,11 @@ export declare interface BarChartNode {
64
73
  fadeIn?: number;
65
74
  fadeOut?: number;
66
75
  easing?: EasingSpec;
76
+ rotation?: number;
77
+ rotationOrigin?: [number, number];
78
+ scale?: number | [number, number];
79
+ translate?: [number, number];
80
+ zIndex?: number;
67
81
  }
68
82
 
69
83
  export declare interface CircleNode {
@@ -80,6 +94,11 @@ export declare interface CircleNode {
80
94
  fadeOut?: number;
81
95
  draw?: number;
82
96
  easing?: EasingSpec;
97
+ rotation?: number;
98
+ rotationOrigin?: [number, number];
99
+ scale?: number | [number, number];
100
+ translate?: [number, number];
101
+ zIndex?: number;
83
102
  }
84
103
 
85
104
  /**
@@ -135,7 +154,7 @@ declare type EasingName = 'linear' | 'easeInQuad' | 'easeOutQuad' | 'easeInOutQu
135
154
 
136
155
  export declare type EasingSpec = EasingName | SpringEasing | CubicBezierEasing;
137
156
 
138
- export declare type ElementNode = SequenceNode | GroupNode | CircleNode | LineNode | ArrowNode | RectNode | PolygonNode | TextNode | AxesNode | FunctionPlotNode | VectorNode | VectorFieldNode | MatrixNode | GraphNode | LaTeXNode | BarChartNode | FadeInNode | FadeOutNode | DrawNode | WriteNode | TransformNode | MorphNode | StaggerNode | ParallelNode | PlayerNode | SceneNode;
157
+ export declare type ElementNode = SequenceNode | GroupNode | CircleNode | LineNode | ArrowNode | RectNode | PolygonNode | TextNode | ImageNode | AxesNode | FunctionPlotNode | VectorNode | VectorFieldNode | MatrixNode | GraphNode | LaTeXNode | BarChartNode | FadeInNode | FadeOutNode | DrawNode | WriteNode | TransformNode | MorphNode | StaggerNode | ParallelNode | PlayerNode | SceneNode;
139
158
 
140
159
  export declare interface ElucimDocument {
141
160
  /** JSON Schema URL for editor autocomplete */
@@ -175,6 +194,10 @@ export declare interface FunctionPlotNode {
175
194
  draw?: number;
176
195
  easing?: EasingSpec;
177
196
  opacity?: number;
197
+ rotation?: number;
198
+ rotationOrigin?: [number, number];
199
+ translate?: [number, number];
200
+ zIndex?: number;
178
201
  }
179
202
 
180
203
  export declare interface GraphEdgeDef {
@@ -199,6 +222,11 @@ export declare interface GraphNode {
199
222
  fadeIn?: number;
200
223
  fadeOut?: number;
201
224
  easing?: EasingSpec;
225
+ rotation?: number;
226
+ rotationOrigin?: [number, number];
227
+ scale?: number | [number, number];
228
+ translate?: [number, number];
229
+ zIndex?: number;
202
230
  }
203
231
 
204
232
  export declare interface GraphNodeDef {
@@ -212,7 +240,38 @@ export declare interface GraphNodeDef {
212
240
 
213
241
  export declare interface GroupNode {
214
242
  type: 'group';
243
+ id?: string;
215
244
  children: ElementNode[];
245
+ fadeIn?: number;
246
+ fadeOut?: number;
247
+ easing?: EasingSpec;
248
+ rotation?: number;
249
+ rotationOrigin?: [number, number];
250
+ scale?: number | [number, number];
251
+ translate?: [number, number];
252
+ zIndex?: number;
253
+ }
254
+
255
+ export declare interface ImageNode {
256
+ type: 'image';
257
+ id?: string;
258
+ src: string;
259
+ x: number;
260
+ y: number;
261
+ width: number;
262
+ height: number;
263
+ preserveAspectRatio?: string;
264
+ borderRadius?: number;
265
+ clipShape?: 'none' | 'circle' | 'ellipse';
266
+ opacity?: number;
267
+ fadeIn?: number;
268
+ fadeOut?: number;
269
+ easing?: EasingSpec;
270
+ rotation?: number;
271
+ rotationOrigin?: [number, number];
272
+ scale?: number | [number, number];
273
+ translate?: [number, number];
274
+ zIndex?: number;
216
275
  }
217
276
 
218
277
  export declare interface LaTeXNode {
@@ -228,6 +287,11 @@ export declare interface LaTeXNode {
228
287
  fadeIn?: number;
229
288
  fadeOut?: number;
230
289
  easing?: EasingSpec;
290
+ rotation?: number;
291
+ rotationOrigin?: [number, number];
292
+ scale?: number | [number, number];
293
+ translate?: [number, number];
294
+ zIndex?: number;
231
295
  }
232
296
 
233
297
  export declare const lightTheme: Theme;
@@ -247,6 +311,11 @@ export declare interface LineNode {
247
311
  fadeOut?: number;
248
312
  draw?: number;
249
313
  easing?: EasingSpec;
314
+ rotation?: number;
315
+ rotationOrigin?: [number, number];
316
+ scale?: number | [number, number];
317
+ translate?: [number, number];
318
+ zIndex?: number;
250
319
  }
251
320
 
252
321
  export declare interface MatrixNode {
@@ -262,6 +331,11 @@ export declare interface MatrixNode {
262
331
  fadeIn?: number;
263
332
  fadeOut?: number;
264
333
  easing?: EasingSpec;
334
+ rotation?: number;
335
+ rotationOrigin?: [number, number];
336
+ scale?: number | [number, number];
337
+ translate?: [number, number];
338
+ zIndex?: number;
265
339
  }
266
340
 
267
341
  export declare interface MorphNode {
@@ -308,6 +382,11 @@ export declare interface PolygonNode {
308
382
  fadeOut?: number;
309
383
  draw?: number;
310
384
  easing?: EasingSpec;
385
+ rotation?: number;
386
+ rotationOrigin?: [number, number];
387
+ scale?: number | [number, number];
388
+ translate?: [number, number];
389
+ zIndex?: number;
311
390
  }
312
391
 
313
392
  /**
@@ -395,6 +474,11 @@ export declare interface RectNode {
395
474
  fadeOut?: number;
396
475
  draw?: number;
397
476
  easing?: EasingSpec;
477
+ rotation?: number;
478
+ rotationOrigin?: [number, number];
479
+ scale?: number | [number, number];
480
+ translate?: [number, number];
481
+ zIndex?: number;
398
482
  }
399
483
 
400
484
  /**
@@ -690,6 +774,11 @@ export declare interface TextNode {
690
774
  fadeIn?: number;
691
775
  fadeOut?: number;
692
776
  easing?: EasingSpec;
777
+ rotation?: number;
778
+ rotationOrigin?: [number, number];
779
+ scale?: number | [number, number];
780
+ translate?: [number, number];
781
+ zIndex?: number;
693
782
  }
694
783
 
695
784
  /**
@@ -788,6 +877,10 @@ export declare interface VectorFieldNode {
788
877
  fadeIn?: number;
789
878
  fadeOut?: number;
790
879
  easing?: EasingSpec;
880
+ rotation?: number;
881
+ rotationOrigin?: [number, number];
882
+ translate?: [number, number];
883
+ zIndex?: number;
791
884
  }
792
885
 
793
886
  export declare interface VectorNode {
@@ -808,6 +901,10 @@ export declare interface VectorNode {
808
901
  fadeOut?: number;
809
902
  draw?: number;
810
903
  easing?: EasingSpec;
904
+ rotation?: number;
905
+ rotationOrigin?: [number, number];
906
+ translate?: [number, number];
907
+ zIndex?: number;
811
908
  }
812
909
 
813
910
  export declare interface WriteNode {