exodeui 6.3.13 → 6.3.18

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.
@@ -17,6 +17,7 @@ export declare class ExodeUIEngine {
17
17
  private maskCtx;
18
18
  private lumaBuffer;
19
19
  private lumaCtx;
20
+ private _noiseTileCanvas;
20
21
  private layout;
21
22
  private onTrigger?;
22
23
  private onInputUpdate?;
@@ -47,6 +48,9 @@ export declare class ExodeUIEngine {
47
48
  private _totalScroll;
48
49
  private draggingBehaviors;
49
50
  private isMouseDown;
51
+ private _layoutAnimCache;
52
+ private _springChainState;
53
+ private _emitterPools;
50
54
  private objectVelocities;
51
55
  private currentTime;
52
56
  private frameCount;
@@ -151,6 +155,7 @@ export declare class ExodeUIEngine {
151
155
  private handlePointerEvent;
152
156
  handleKeyDown(e: KeyboardEvent): void;
153
157
  private fireEventForObject;
158
+ private fireAnalyticsEvent;
154
159
  private initGlobalAnimationTriggers;
155
160
  private triggerGlobalAnimation;
156
161
  private handleAnimationFinished;
@@ -179,6 +184,17 @@ export declare class ExodeUIEngine {
179
184
  private applyAbsoluteTransform;
180
185
  private applyObjectTransform;
181
186
  private applyArtEffectOverlay;
187
+ /** Helper: shift the hue of a hex/hsl color by degrees, return as hsla */
188
+ private _shiftHue;
189
+ /**
190
+ * Simulate CSS `backdrop-filter: blur()` + glass overlay on Canvas2D.
191
+ * Since real backdrop-filter is not available in canvas, we:
192
+ * 1. Sample the canvas pixels behind this object's bounding box
193
+ * 2. Draw them into an offscreen canvas and apply a blur filter
194
+ * 3. Clip to the object shape and paint the blurred backdrop
195
+ * 4. Apply the overlay color tint, sheen highlight, noise grain, and glass border
196
+ */
197
+ private applyBackgroundBlurGlass;
182
198
  private applyPath;
183
199
  private _tracePath;
184
200
  private renderInputBox;
@@ -187,6 +203,11 @@ export declare class ExodeUIEngine {
187
203
  private renderButton;
188
204
  private renderToggleButton;
189
205
  private renderToggle;
206
+ private renderCheckbox;
207
+ private renderRadioGroup;
208
+ private renderBarChart;
209
+ private renderPieChart;
210
+ private getRadioGroupItemIndexAtPointer;
190
211
  private renderLineGraph;
191
212
  private _catmullRom;
192
213
  private normalizeOpacity;
@@ -199,6 +220,9 @@ export declare class ExodeUIEngine {
199
220
  private drawListViewRect;
200
221
  private solveBehaviors;
201
222
  private applyBehaviorSensor;
223
+ private getObjectProperty;
224
+ private setObjectProperty;
225
+ private applyEasing;
202
226
  private lerp;
203
227
  private deepMerge;
204
228
  private renderFittedImage;
@@ -166,6 +166,22 @@ export interface Adjustments {
166
166
  shadows?: number;
167
167
  blur?: number;
168
168
  }
169
+ export interface AnalyticsParameter {
170
+ key: string;
171
+ value: string;
172
+ type: 'literal' | 'variable';
173
+ }
174
+ export interface AnalyticsConfig {
175
+ isEnabled: boolean;
176
+ eventName: string;
177
+ triggerType: 'click' | 'hover' | 'visible';
178
+ platforms: {
179
+ ga4: boolean;
180
+ meta: boolean;
181
+ mixpanel: boolean;
182
+ };
183
+ parameters: AnalyticsParameter[];
184
+ }
169
185
  export interface Style {
170
186
  fill?: Fill;
171
187
  stroke?: {
@@ -191,6 +207,7 @@ export interface Style {
191
207
  liquidFill?: LiquidFillConfig;
192
208
  artEffect?: ArtEffectConfig;
193
209
  palette?: string[];
210
+ analytics?: AnalyticsConfig;
194
211
  }
195
212
  export type Geometry = {
196
213
  type: 'Rectangle';
@@ -232,6 +249,7 @@ export type Geometry = {
232
249
  textDecoration?: 'none' | 'underline' | 'line-through';
233
250
  textCase?: 'none' | 'uppercase' | 'lowercase' | 'capitalize';
234
251
  paragraphSpacing?: number;
252
+ paragraphIndent?: number;
235
253
  textInputId?: string;
236
254
  segments?: {
237
255
  text: string;
@@ -260,6 +278,38 @@ export type Geometry = {
260
278
  isEnabled: boolean;
261
279
  };
262
280
  fontStyle?: 'normal' | 'italic';
281
+ isPointText?: boolean;
282
+ autoHeight?: boolean;
283
+ padding?: {
284
+ top?: number;
285
+ right?: number;
286
+ bottom?: number;
287
+ left?: number;
288
+ };
289
+ smallCaps?: boolean;
290
+ baselineShift?: number;
291
+ hyphenation?: boolean;
292
+ composer?: 'single-line' | 'every-line';
293
+ balanceRaggedLines?: boolean;
294
+ kerning?: 'auto' | 'optical' | 'manual' | 'none';
295
+ kerningValue?: number;
296
+ justifyMinWordSpacing?: number;
297
+ justifyMaxWordSpacing?: number;
298
+ justifyMinLetterSpacing?: number;
299
+ justifyMaxLetterSpacing?: number;
300
+ paragraphRule?: {
301
+ top?: {
302
+ width: number;
303
+ color: string;
304
+ offset: number;
305
+ };
306
+ bottom?: {
307
+ width: number;
308
+ color: string;
309
+ offset: number;
310
+ };
311
+ };
312
+ pathFlip?: boolean;
263
313
  } | {
264
314
  type: 'Triangle';
265
315
  width: number;
@@ -398,7 +448,13 @@ export declare enum BehaviorType {
398
448
  Lens = "Lens",
399
449
  Gravity = "Gravity",
400
450
  Velocity = "Velocity",
401
- Shear = "Shear"
451
+ Shear = "Shear",
452
+ LayoutAnimation = "LayoutAnimation",
453
+ SpringChain = "SpringChain",
454
+ ParticleEmitter = "ParticleEmitter",
455
+ StateReactive = "StateReactive",
456
+ Fold = "Fold",
457
+ Crumple = "Crumple"
402
458
  }
403
459
  export declare enum BehaviorSensor {
404
460
  Scale = "Scale",
@@ -498,7 +554,7 @@ export interface Constraint {
498
554
  mass?: number;
499
555
  }
500
556
  export interface ShapeObject {
501
- type: 'Shape' | 'Group' | 'Component' | 'Frame' | 'Button' | 'Bone' | 'Toggle' | 'Slider' | 'Dropdown' | 'ListView';
557
+ type: 'Shape' | 'Group' | 'Component' | 'Frame' | 'Button' | 'Bone' | 'Toggle' | 'Slider' | 'Dropdown' | 'ListView' | 'Checkbox' | 'RadioGroup' | 'BarChart' | 'PieChart';
502
558
  id: string;
503
559
  name: string;
504
560
  transform: Transform;
@@ -701,7 +757,10 @@ export declare enum LogicOp {
701
757
  IS_MOUSE_DOWN = "IS_MOUSE_DOWN",
702
758
  EFFECTOR = "EFFECTOR",
703
759
  MONITOR = "MONITOR",
704
- DELAY = "DELAY"
760
+ DELAY = "DELAY",
761
+ SPRING_PULL = "SPRING_PULL",
762
+ SPRING_SETTLE = "SPRING_SETTLE",
763
+ EMIT = "EMIT"
705
764
  }
706
765
  export interface LogicNode {
707
766
  id: string;
@@ -12,6 +12,9 @@ export interface TextMeasurementOptions {
12
12
  textCase?: 'uppercase' | 'lowercase' | 'capitalize' | 'none';
13
13
  segments?: any[];
14
14
  enableSegments?: boolean;
15
+ hyphenation?: boolean;
16
+ composer?: 'single-line' | 'every-line';
17
+ balanceRaggedLines?: boolean;
15
18
  }
16
19
  export declare function measureText(options: TextMeasurementOptions): {
17
20
  width: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exodeui",
3
- "version": "6.3.13",
3
+ "version": "6.3.18",
4
4
  "description": "React Runtime for ExodeUI Animation Engine",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",