exodeui 6.3.14 → 6.3.19
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/dist/index.js +32 -30
- package/dist/index.mjs +3331 -2310
- package/dist/src/engine.d.ts +23 -0
- package/dist/src/types.d.ts +93 -3
- package/dist/src/utils/skinningUtils.d.ts +27 -0
- package/dist/src/utils/text.d.ts +3 -0
- package/package.json +1 -1
package/dist/src/engine.d.ts
CHANGED
|
@@ -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;
|
package/dist/src/types.d.ts
CHANGED
|
@@ -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",
|
|
@@ -514,8 +553,47 @@ export interface Constraint {
|
|
|
514
553
|
damping?: number;
|
|
515
554
|
mass?: number;
|
|
516
555
|
}
|
|
556
|
+
export interface BoneIKConfig {
|
|
557
|
+
boneCount: number;
|
|
558
|
+
solver: 'analytic-2bone' | 'ccd';
|
|
559
|
+
}
|
|
560
|
+
export interface BoneSplineConfig {
|
|
561
|
+
points: {
|
|
562
|
+
x: number;
|
|
563
|
+
y: number;
|
|
564
|
+
}[];
|
|
565
|
+
tension: number;
|
|
566
|
+
}
|
|
567
|
+
export type BoneMode = 'fk' | 'ik' | 'spline';
|
|
568
|
+
export interface BoneObject {
|
|
569
|
+
type: 'Bone';
|
|
570
|
+
id: string;
|
|
571
|
+
name: string;
|
|
572
|
+
transform: Transform;
|
|
573
|
+
geometry: {
|
|
574
|
+
type: 'Bone';
|
|
575
|
+
length: number;
|
|
576
|
+
isTip?: boolean;
|
|
577
|
+
};
|
|
578
|
+
style: Style;
|
|
579
|
+
mode?: BoneMode;
|
|
580
|
+
ikConfig?: BoneIKConfig;
|
|
581
|
+
splineConfig?: BoneSplineConfig;
|
|
582
|
+
opacity?: number;
|
|
583
|
+
visible?: boolean;
|
|
584
|
+
isVisible?: boolean;
|
|
585
|
+
parentId?: string;
|
|
586
|
+
children?: string[];
|
|
587
|
+
options?: any;
|
|
588
|
+
triggers?: Trigger[];
|
|
589
|
+
interactions?: Interaction[];
|
|
590
|
+
constraints?: Constraint[];
|
|
591
|
+
physics?: Physics;
|
|
592
|
+
behaviors?: Behavior[];
|
|
593
|
+
masks?: any[];
|
|
594
|
+
}
|
|
517
595
|
export interface ShapeObject {
|
|
518
|
-
type: 'Shape' | 'Group' | 'Component' | 'Frame' | 'Button' | 'Bone' | 'Toggle' | 'Slider' | 'Dropdown' | 'ListView';
|
|
596
|
+
type: 'Shape' | 'Group' | 'Component' | 'Frame' | 'Button' | 'Bone' | 'Toggle' | 'Slider' | 'Dropdown' | 'ListView' | 'Checkbox' | 'RadioGroup' | 'BarChart' | 'PieChart';
|
|
519
597
|
id: string;
|
|
520
598
|
name: string;
|
|
521
599
|
transform: Transform;
|
|
@@ -553,6 +631,15 @@ export interface ShapeObject {
|
|
|
553
631
|
layoutProps?: LayoutProps;
|
|
554
632
|
altText?: string;
|
|
555
633
|
repeaterConfig?: RepeaterConfig;
|
|
634
|
+
weights?: {
|
|
635
|
+
[vertexIndex: number]: {
|
|
636
|
+
boneId: string;
|
|
637
|
+
amount: number;
|
|
638
|
+
}[];
|
|
639
|
+
};
|
|
640
|
+
bindMatrices?: {
|
|
641
|
+
[boneId: string]: number[];
|
|
642
|
+
};
|
|
556
643
|
}
|
|
557
644
|
export interface Keyframe {
|
|
558
645
|
time: number;
|
|
@@ -718,7 +805,10 @@ export declare enum LogicOp {
|
|
|
718
805
|
IS_MOUSE_DOWN = "IS_MOUSE_DOWN",
|
|
719
806
|
EFFECTOR = "EFFECTOR",
|
|
720
807
|
MONITOR = "MONITOR",
|
|
721
|
-
DELAY = "DELAY"
|
|
808
|
+
DELAY = "DELAY",
|
|
809
|
+
SPRING_PULL = "SPRING_PULL",
|
|
810
|
+
SPRING_SETTLE = "SPRING_SETTLE",
|
|
811
|
+
EMIT = "EMIT"
|
|
722
812
|
}
|
|
723
813
|
export interface LogicNode {
|
|
724
814
|
id: string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface Transform {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
rotation: number;
|
|
5
|
+
scale_x?: number;
|
|
6
|
+
scale_y?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface WeightData {
|
|
9
|
+
boneId: string;
|
|
10
|
+
amount: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Deforms an array of points (including bezier handles) based on their vertex weights,
|
|
14
|
+
* the inverse bind matrices of the bones, and the current world transforms of the shape and bones.
|
|
15
|
+
*
|
|
16
|
+
* @param points The original rest-pose points (e.g. from geometry.points).
|
|
17
|
+
* @param weights A map from vertex index to an array of bone weights.
|
|
18
|
+
* @param bindMatrices A map from boneId to its inverse bind matrix [a, b, c, d, tx, ty].
|
|
19
|
+
* @param shapeWorld The current world transform of the shape being deformed.
|
|
20
|
+
* @param getGlobalTransform A callback to fetch the current world transform of a bone by ID.
|
|
21
|
+
* @returns A new array of deformed points.
|
|
22
|
+
*/
|
|
23
|
+
export declare const deformPathPoints: (points: any[], weights: {
|
|
24
|
+
[vertexIndex: number]: WeightData[];
|
|
25
|
+
}, bindMatrices: {
|
|
26
|
+
[boneId: string]: number[];
|
|
27
|
+
}, shapeWorld: Transform, getGlobalTransform: (id: string) => Transform | null) => any[];
|
package/dist/src/utils/text.d.ts
CHANGED
|
@@ -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;
|