exodeui 6.3.14 → 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;
@@ -180,6 +184,17 @@ export declare class ExodeUIEngine {
180
184
  private applyAbsoluteTransform;
181
185
  private applyObjectTransform;
182
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;
183
198
  private applyPath;
184
199
  private _tracePath;
185
200
  private renderInputBox;
@@ -188,6 +203,11 @@ export declare class ExodeUIEngine {
188
203
  private renderButton;
189
204
  private renderToggleButton;
190
205
  private renderToggle;
206
+ private renderCheckbox;
207
+ private renderRadioGroup;
208
+ private renderBarChart;
209
+ private renderPieChart;
210
+ private getRadioGroupItemIndexAtPointer;
191
211
  private renderLineGraph;
192
212
  private _catmullRom;
193
213
  private normalizeOpacity;
@@ -200,6 +220,9 @@ export declare class ExodeUIEngine {
200
220
  private drawListViewRect;
201
221
  private solveBehaviors;
202
222
  private applyBehaviorSensor;
223
+ private getObjectProperty;
224
+ private setObjectProperty;
225
+ private applyEasing;
203
226
  private lerp;
204
227
  private deepMerge;
205
228
  private renderFittedImage;
@@ -249,6 +249,7 @@ export type Geometry = {
249
249
  textDecoration?: 'none' | 'underline' | 'line-through';
250
250
  textCase?: 'none' | 'uppercase' | 'lowercase' | 'capitalize';
251
251
  paragraphSpacing?: number;
252
+ paragraphIndent?: number;
252
253
  textInputId?: string;
253
254
  segments?: {
254
255
  text: string;
@@ -277,6 +278,38 @@ export type Geometry = {
277
278
  isEnabled: boolean;
278
279
  };
279
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;
280
313
  } | {
281
314
  type: 'Triangle';
282
315
  width: number;
@@ -415,7 +448,13 @@ export declare enum BehaviorType {
415
448
  Lens = "Lens",
416
449
  Gravity = "Gravity",
417
450
  Velocity = "Velocity",
418
- Shear = "Shear"
451
+ Shear = "Shear",
452
+ LayoutAnimation = "LayoutAnimation",
453
+ SpringChain = "SpringChain",
454
+ ParticleEmitter = "ParticleEmitter",
455
+ StateReactive = "StateReactive",
456
+ Fold = "Fold",
457
+ Crumple = "Crumple"
419
458
  }
420
459
  export declare enum BehaviorSensor {
421
460
  Scale = "Scale",
@@ -515,7 +554,7 @@ export interface Constraint {
515
554
  mass?: number;
516
555
  }
517
556
  export interface ShapeObject {
518
- 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';
519
558
  id: string;
520
559
  name: string;
521
560
  transform: Transform;
@@ -718,7 +757,10 @@ export declare enum LogicOp {
718
757
  IS_MOUSE_DOWN = "IS_MOUSE_DOWN",
719
758
  EFFECTOR = "EFFECTOR",
720
759
  MONITOR = "MONITOR",
721
- DELAY = "DELAY"
760
+ DELAY = "DELAY",
761
+ SPRING_PULL = "SPRING_PULL",
762
+ SPRING_SETTLE = "SPRING_SETTLE",
763
+ EMIT = "EMIT"
722
764
  }
723
765
  export interface LogicNode {
724
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.14",
3
+ "version": "6.3.18",
4
4
  "description": "React Runtime for ExodeUI Animation Engine",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",