juxscript 1.1.109 → 1.1.111
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/dom-structure-map.json +1 -1
- package/lib/components/base/LayoutExtensions.d.ts +8 -0
- package/lib/components/base/LayoutExtensions.d.ts.map +1 -1
- package/lib/components/base/LayoutExtensions.js +12 -0
- package/lib/components/base/LayoutExtensions.ts +24 -0
- package/lib/components/stack/BaseStack.d.ts +1 -0
- package/lib/components/stack/BaseStack.d.ts.map +1 -1
- package/lib/components/stack/BaseStack.js +21 -12
- package/lib/components/stack/BaseStack.ts +32 -22
- package/lib/styles/animations.css +2 -0
- package/package.json +1 -1
package/dom-structure-map.json
CHANGED
|
@@ -60,10 +60,18 @@ export interface LayoutExtensions {
|
|
|
60
60
|
transform(value: string): this;
|
|
61
61
|
transformOrigin(value: string): this;
|
|
62
62
|
rotate(degrees: number): this;
|
|
63
|
+
rotateX(degrees: number): this;
|
|
64
|
+
rotateY(degrees: number): this;
|
|
65
|
+
rotateZ(degrees: number): this;
|
|
63
66
|
scale(value: number): this;
|
|
67
|
+
scaleX(value: number): this;
|
|
68
|
+
scaleY(value: number): this;
|
|
64
69
|
translateX(value: string): this;
|
|
65
70
|
translateY(value: string): this;
|
|
66
71
|
translate(x: string, y: string): this;
|
|
72
|
+
flipX(): this;
|
|
73
|
+
flipY(): this;
|
|
74
|
+
flipBoth(): this;
|
|
67
75
|
transition(value: string): this;
|
|
68
76
|
transitionDuration(value: string): this;
|
|
69
77
|
transitionDelay(value: string): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutExtensions.d.ts","sourceRoot":"","sources":["LayoutExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAE7B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAG5E,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAGtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/E,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAGrC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAChE,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAGjE,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAGrF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAG/F,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"LayoutExtensions.d.ts","sourceRoot":"","sources":["LayoutExtensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,11 +101,23 @@ export function applyLayoutExtensions(component) {
|
|
|
101
101
|
// Transform
|
|
102
102
|
ext.transform = (v) => { addInlineStyle(component, 'transform', v); return ext; };
|
|
103
103
|
ext.transformOrigin = (v) => { addInlineStyle(component, 'transform-origin', v); return ext; };
|
|
104
|
+
// ✅ Rotation (all axes)
|
|
104
105
|
ext.rotate = (deg) => { addInlineStyle(component, 'transform', `rotate(${deg}deg)`); return ext; };
|
|
106
|
+
ext.rotateX = (deg) => { addInlineStyle(component, 'transform', `rotateX(${deg}deg)`); return ext; };
|
|
107
|
+
ext.rotateY = (deg) => { addInlineStyle(component, 'transform', `rotateY(${deg}deg)`); return ext; };
|
|
108
|
+
ext.rotateZ = (deg) => { addInlineStyle(component, 'transform', `rotateZ(${deg}deg)`); return ext; };
|
|
109
|
+
// ✅ Scale (all axes)
|
|
105
110
|
ext.scale = (v) => { addInlineStyle(component, 'transform', `scale(${v})`); return ext; };
|
|
111
|
+
ext.scaleX = (v) => { addInlineStyle(component, 'transform', `scaleX(${v})`); return ext; };
|
|
112
|
+
ext.scaleY = (v) => { addInlineStyle(component, 'transform', `scaleY(${v})`); return ext; };
|
|
113
|
+
// ✅ Translate
|
|
106
114
|
ext.translateX = (v) => { addInlineStyle(component, 'transform', `translateX(${v})`); return ext; };
|
|
107
115
|
ext.translateY = (v) => { addInlineStyle(component, 'transform', `translateY(${v})`); return ext; };
|
|
108
116
|
ext.translate = (x, y) => { addInlineStyle(component, 'transform', `translate(${x}, ${y})`); return ext; };
|
|
117
|
+
// ✅ Flip (mirror) transforms
|
|
118
|
+
ext.flipX = () => { addInlineStyle(component, 'transform', 'scaleX(-1)'); return ext; };
|
|
119
|
+
ext.flipY = () => { addInlineStyle(component, 'transform', 'scaleY(-1)'); return ext; };
|
|
120
|
+
ext.flipBoth = () => { addInlineStyle(component, 'transform', 'scale(-1, -1)'); return ext; };
|
|
109
121
|
// Transition & Animation
|
|
110
122
|
ext.transition = (v) => { addInlineStyle(component, 'transition', v); return ext; };
|
|
111
123
|
ext.transitionDuration = (v) => { addInlineStyle(component, 'transition-duration', v); return ext; };
|
|
@@ -81,10 +81,18 @@ export interface LayoutExtensions {
|
|
|
81
81
|
transform(value: string): this;
|
|
82
82
|
transformOrigin(value: string): this;
|
|
83
83
|
rotate(degrees: number): this;
|
|
84
|
+
rotateX(degrees: number): this; // ✅ NEW
|
|
85
|
+
rotateY(degrees: number): this; // ✅ NEW
|
|
86
|
+
rotateZ(degrees: number): this; // ✅ NEW
|
|
84
87
|
scale(value: number): this;
|
|
88
|
+
scaleX(value: number): this; // ✅ NEW
|
|
89
|
+
scaleY(value: number): this; // ✅ NEW
|
|
85
90
|
translateX(value: string): this;
|
|
86
91
|
translateY(value: string): this;
|
|
87
92
|
translate(x: string, y: string): this;
|
|
93
|
+
flipX(): this; // ✅ NEW - Flip horizontally (scaleX(-1))
|
|
94
|
+
flipY(): this; // ✅ NEW - Flip vertically (scaleY(-1))
|
|
95
|
+
flipBoth(): this; // ✅ NEW - Flip both axes
|
|
88
96
|
|
|
89
97
|
// Transition & Animation (inline styles)
|
|
90
98
|
transition(value: string): this;
|
|
@@ -219,12 +227,28 @@ export function applyLayoutExtensions<T extends BaseComponent<any>>(component: T
|
|
|
219
227
|
// Transform
|
|
220
228
|
ext.transform = (v) => { addInlineStyle(component, 'transform', v); return ext; };
|
|
221
229
|
ext.transformOrigin = (v) => { addInlineStyle(component, 'transform-origin', v); return ext; };
|
|
230
|
+
|
|
231
|
+
// ✅ Rotation (all axes)
|
|
222
232
|
ext.rotate = (deg) => { addInlineStyle(component, 'transform', `rotate(${deg}deg)`); return ext; };
|
|
233
|
+
ext.rotateX = (deg) => { addInlineStyle(component, 'transform', `rotateX(${deg}deg)`); return ext; };
|
|
234
|
+
ext.rotateY = (deg) => { addInlineStyle(component, 'transform', `rotateY(${deg}deg)`); return ext; };
|
|
235
|
+
ext.rotateZ = (deg) => { addInlineStyle(component, 'transform', `rotateZ(${deg}deg)`); return ext; };
|
|
236
|
+
|
|
237
|
+
// ✅ Scale (all axes)
|
|
223
238
|
ext.scale = (v) => { addInlineStyle(component, 'transform', `scale(${v})`); return ext; };
|
|
239
|
+
ext.scaleX = (v) => { addInlineStyle(component, 'transform', `scaleX(${v})`); return ext; };
|
|
240
|
+
ext.scaleY = (v) => { addInlineStyle(component, 'transform', `scaleY(${v})`); return ext; };
|
|
241
|
+
|
|
242
|
+
// ✅ Translate
|
|
224
243
|
ext.translateX = (v) => { addInlineStyle(component, 'transform', `translateX(${v})`); return ext; };
|
|
225
244
|
ext.translateY = (v) => { addInlineStyle(component, 'transform', `translateY(${v})`); return ext; };
|
|
226
245
|
ext.translate = (x, y) => { addInlineStyle(component, 'transform', `translate(${x}, ${y})`); return ext; };
|
|
227
246
|
|
|
247
|
+
// ✅ Flip (mirror) transforms
|
|
248
|
+
ext.flipX = () => { addInlineStyle(component, 'transform', 'scaleX(-1)'); return ext; };
|
|
249
|
+
ext.flipY = () => { addInlineStyle(component, 'transform', 'scaleY(-1)'); return ext; };
|
|
250
|
+
ext.flipBoth = () => { addInlineStyle(component, 'transform', 'scale(-1, -1)'); return ext; };
|
|
251
|
+
|
|
228
252
|
// Transition & Animation
|
|
229
253
|
ext.transition = (v) => { addInlineStyle(component, 'transition', v); return ext; };
|
|
230
254
|
ext.transitionDuration = (v) => { addInlineStyle(component, 'transition-duration', v); return ext; };
|
|
@@ -66,6 +66,7 @@ export declare abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
66
66
|
elasticTiming(): this;
|
|
67
67
|
delay(ms: 100 | 200 | 300 | 500 | 1000): this;
|
|
68
68
|
staggered(): this;
|
|
69
|
+
stagger(delayMs?: number): this;
|
|
69
70
|
interactive(): this;
|
|
70
71
|
smooth(): this;
|
|
71
72
|
smoothItems(): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseStack.d.ts","sourceRoot":"","sources":["BaseStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"BaseStack.d.ts","sourceRoot":"","sources":["BaseStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAM/D,MAAM,WAAW,YAAY;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,8BAAsB,SAAU,SAAQ,aAAa,CAAC,UAAU,CAAC;IAKrC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE;IAJvE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC,SAAS,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAQ;IAChD,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAAQ;gBAE7D,EAAE,EAAE,MAAM,EAAY,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,OAAO,GAAE,YAAiB;IAmBnG,SAAS,CAAC,gBAAgB,IAAI,SAAS,MAAM,EAAE;IAI/C,SAAS,CAAC,iBAAiB,IAAI,SAAS,MAAM,EAAE;IAQhD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI;IAQ3D,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI;IAQ1D,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAQlF,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ7B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAYhC,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAK/C,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQ9C,IAAI,CAAC,UAAU,GAAE,MAAU,EAAE,IAAI,GAAE,MAAY,GAAG,IAAI;IAKtD,OAAO,CAAC,MAAM,GAAE,MAAW,EAAE,SAAS,GAAE,YAAY,GAAG,UAAU,GAAG,MAAe,GAAG,IAAI;IAa1F,gBAAgB,CAAC,QAAQ,GAAE,MAAU,EAAE,IAAI,GAAE,MAAY,GAAG,IAAI;IAUhE,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,SAAS,GAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAc,GAAG,IAAI;IAIjE,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,IAAI;IAIhB,MAAM,CAAC,IAAI,GAAE,GAAG,GAAG,GAAS,GAAG,IAAI;IAInC,QAAQ,IAAI,IAAI;IAIhB,SAAS,IAAI,IAAI;IAIjB,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI;IAKZ,WAAW,IAAI,IAAI;IAInB,YAAY,CAAC,SAAS,GAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAc,GAAG,IAAI;IAItE,YAAY,IAAI,IAAI;IAIpB,WAAW,IAAI,IAAI;IAInB,aAAa,IAAI,IAAI;IAIrB,WAAW,CAAC,IAAI,GAAE,GAAG,GAAG,GAAS,GAAG,IAAI;IAIxC,aAAa,IAAI,IAAI;IAIrB,cAAc,IAAI,IAAI;IAItB,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAKd,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;IAIf,SAAS,IAAI,IAAI;IAIjB,YAAY,IAAI,IAAI;IAIpB,aAAa,IAAI,IAAI;IAKrB,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI;IAK7C,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,OAAO,GAAE,MAAY,GAAG,IAAI;IAsBpC,WAAW,IAAI,IAAI;IAInB,MAAM,IAAI,IAAI;IAId,WAAW,IAAI,IAAI;IAKnB,cAAc,CAAC,SAAS,GAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAiB,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAiB7H,SAAS,CAAC,YAAY,IAAI,MAAM;IAgChC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAsC7D,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IA4BlE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAGzC;AAGD,MAAM,WAAW,SAAU,SAAQ,gBAAgB;CAAI"}
|
|
@@ -21,6 +21,7 @@ export class BaseStack extends BaseComponent {
|
|
|
21
21
|
this._container = null;
|
|
22
22
|
this._childStyleFunction = null;
|
|
23
23
|
// ✅ Layout extensions are automatically applied in BaseComponent constructor
|
|
24
|
+
// No need to call applyLayoutExtensions() here
|
|
24
25
|
}
|
|
25
26
|
getTriggerEvents() {
|
|
26
27
|
return TRIGGER_EVENTS;
|
|
@@ -29,7 +30,7 @@ export class BaseStack extends BaseComponent {
|
|
|
29
30
|
return CALLBACK_EVENTS;
|
|
30
31
|
}
|
|
31
32
|
/* ═════════════════════════════════════════════════════════════════
|
|
32
|
-
*
|
|
33
|
+
* STACK-SPECIFIC LAYOUT API (NOT in LayoutExtensions)
|
|
33
34
|
* ═════════════════════════════════════════════════════════════════ */
|
|
34
35
|
spacing(value) {
|
|
35
36
|
this.state.spacing = value;
|
|
@@ -67,7 +68,7 @@ export class BaseStack extends BaseComponent {
|
|
|
67
68
|
return this;
|
|
68
69
|
}
|
|
69
70
|
/* ═════════════════════════════════════════════════════════════════
|
|
70
|
-
* CHILD STYLING
|
|
71
|
+
* CHILD STYLING (Stack-specific)
|
|
71
72
|
* ═════════════════════════════════════════════════════════════════ */
|
|
72
73
|
childStyle(fn) {
|
|
73
74
|
this._childStyleFunction = fn;
|
|
@@ -102,7 +103,7 @@ export class BaseStack extends BaseComponent {
|
|
|
102
103
|
return this;
|
|
103
104
|
}
|
|
104
105
|
/* ═════════════════════════════════════════════════════════════════
|
|
105
|
-
* ANIMATION API (
|
|
106
|
+
* ANIMATION API (Stack-specific)
|
|
106
107
|
* ═════════════════════════════════════════════════════════════════ */
|
|
107
108
|
/* Stack-Level Animations */
|
|
108
109
|
fadeIn() {
|
|
@@ -212,6 +213,23 @@ export class BaseStack extends BaseComponent {
|
|
|
212
213
|
staggered() {
|
|
213
214
|
return this.addClass('jux-stack-stagger');
|
|
214
215
|
}
|
|
216
|
+
stagger(delayMs = 100) {
|
|
217
|
+
this.addClass('jux-stack-stagger');
|
|
218
|
+
if (delayMs !== 100 && this._container) {
|
|
219
|
+
const children = this._container.children;
|
|
220
|
+
for (let i = 0; i < Math.min(children.length, 10); i++) {
|
|
221
|
+
const child = children[i];
|
|
222
|
+
const currentStyle = child.getAttribute('style') || '';
|
|
223
|
+
const delay = i * delayMs;
|
|
224
|
+
const cleanedStyle = currentStyle
|
|
225
|
+
.split(';')
|
|
226
|
+
.filter(s => !s.trim().startsWith('animation-delay'))
|
|
227
|
+
.join(';');
|
|
228
|
+
child.setAttribute('style', `${cleanedStyle}; animation-delay: ${delay}ms`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return this;
|
|
232
|
+
}
|
|
215
233
|
interactive() {
|
|
216
234
|
return this.addClass('jux-stack-interactive');
|
|
217
235
|
}
|
|
@@ -265,18 +283,13 @@ export class BaseStack extends BaseComponent {
|
|
|
265
283
|
}
|
|
266
284
|
renderChild(child, index) {
|
|
267
285
|
let childElement;
|
|
268
|
-
// ✅ Priority 1: Check if it's a Stack (has _container property)
|
|
269
286
|
if (child && typeof child === 'object' && '_container' in child && child._container instanceof HTMLElement) {
|
|
270
287
|
childElement = child._container;
|
|
271
288
|
}
|
|
272
|
-
// ✅ Priority 2: Check if it's a JUX Component (has render method)
|
|
273
289
|
else if (child && typeof child === 'object' && typeof child.render === 'function') {
|
|
274
|
-
// Create temporary container to render into
|
|
275
290
|
const tempContainer = document.createElement('div');
|
|
276
291
|
tempContainer.style.display = 'contents';
|
|
277
|
-
// Render the component
|
|
278
292
|
child.render(tempContainer);
|
|
279
|
-
// Extract the rendered element
|
|
280
293
|
if (child.container && child.container.firstElementChild) {
|
|
281
294
|
childElement = child.container.firstElementChild;
|
|
282
295
|
}
|
|
@@ -287,16 +300,13 @@ export class BaseStack extends BaseComponent {
|
|
|
287
300
|
childElement = tempContainer;
|
|
288
301
|
}
|
|
289
302
|
}
|
|
290
|
-
// ✅ Priority 3: Already a DOM element
|
|
291
303
|
else if (child instanceof HTMLElement) {
|
|
292
304
|
childElement = child;
|
|
293
305
|
}
|
|
294
|
-
// ✅ Priority 4: String - wrap in div
|
|
295
306
|
else if (typeof child === 'string') {
|
|
296
307
|
childElement = document.createElement('div');
|
|
297
308
|
childElement.innerHTML = child;
|
|
298
309
|
}
|
|
299
|
-
// ✅ Fallback - stringify
|
|
300
310
|
else {
|
|
301
311
|
childElement = document.createElement('div');
|
|
302
312
|
childElement.textContent = String(child);
|
|
@@ -317,7 +327,6 @@ export class BaseStack extends BaseComponent {
|
|
|
317
327
|
if (this.state.style) {
|
|
318
328
|
stackDiv.setAttribute('style', this.state.style);
|
|
319
329
|
}
|
|
320
|
-
// Handle both array and object children
|
|
321
330
|
const childArray = Array.isArray(this.children)
|
|
322
331
|
? this.children
|
|
323
332
|
: Object.values(this.children);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseComponent, BaseState } from '../base/BaseComponent.js';
|
|
2
|
-
import {
|
|
2
|
+
import { LayoutExtensions } from '../base/LayoutExtensions.js';
|
|
3
3
|
|
|
4
4
|
// Event definitions
|
|
5
5
|
const TRIGGER_EVENTS = [] as const;
|
|
@@ -42,6 +42,7 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
// ✅ Layout extensions are automatically applied in BaseComponent constructor
|
|
45
|
+
// No need to call applyLayoutExtensions() here
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
protected getTriggerEvents(): readonly string[] {
|
|
@@ -53,7 +54,7 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
/* ═════════════════════════════════════════════════════════════════
|
|
56
|
-
*
|
|
57
|
+
* STACK-SPECIFIC LAYOUT API (NOT in LayoutExtensions)
|
|
57
58
|
* ═════════════════════════════════════════════════════════════════ */
|
|
58
59
|
|
|
59
60
|
spacing(value: 'none' | 'tight' | 'normal' | 'loose'): this {
|
|
@@ -97,7 +98,7 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
/* ═════════════════════════════════════════════════════════════════
|
|
100
|
-
* CHILD STYLING
|
|
101
|
+
* CHILD STYLING (Stack-specific)
|
|
101
102
|
* ═════════════════════════════════════════════════════════════════ */
|
|
102
103
|
|
|
103
104
|
childStyle(fn: (index: number) => string): this {
|
|
@@ -137,7 +138,7 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
/* ═════════════════════════════════════════════════════════════════
|
|
140
|
-
* ANIMATION API (
|
|
141
|
+
* ANIMATION API (Stack-specific)
|
|
141
142
|
* ═════════════════════════════════════════════════════════════════ */
|
|
142
143
|
|
|
143
144
|
/* Stack-Level Animations */
|
|
@@ -282,6 +283,28 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
282
283
|
return this.addClass('jux-stack-stagger');
|
|
283
284
|
}
|
|
284
285
|
|
|
286
|
+
stagger(delayMs: number = 100): this {
|
|
287
|
+
this.addClass('jux-stack-stagger');
|
|
288
|
+
|
|
289
|
+
if (delayMs !== 100 && this._container) {
|
|
290
|
+
const children = this._container.children;
|
|
291
|
+
for (let i = 0; i < Math.min(children.length, 10); i++) {
|
|
292
|
+
const child = children[i] as HTMLElement;
|
|
293
|
+
const currentStyle = child.getAttribute('style') || '';
|
|
294
|
+
const delay = i * delayMs;
|
|
295
|
+
|
|
296
|
+
const cleanedStyle = currentStyle
|
|
297
|
+
.split(';')
|
|
298
|
+
.filter(s => !s.trim().startsWith('animation-delay'))
|
|
299
|
+
.join(';');
|
|
300
|
+
|
|
301
|
+
child.setAttribute('style', `${cleanedStyle}; animation-delay: ${delay}ms`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return this;
|
|
306
|
+
}
|
|
307
|
+
|
|
285
308
|
interactive(): this {
|
|
286
309
|
return this.addClass('jux-stack-interactive');
|
|
287
310
|
}
|
|
@@ -347,20 +370,14 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
347
370
|
protected renderChild(child: any, index: number): HTMLElement {
|
|
348
371
|
let childElement: HTMLElement;
|
|
349
372
|
|
|
350
|
-
// ✅ Priority 1: Check if it's a Stack (has _container property)
|
|
351
373
|
if (child && typeof child === 'object' && '_container' in child && child._container instanceof HTMLElement) {
|
|
352
374
|
childElement = child._container;
|
|
353
|
-
}
|
|
354
|
-
// ✅ Priority 2: Check if it's a JUX Component (has render method)
|
|
355
|
-
else if (child && typeof child === 'object' && typeof child.render === 'function') {
|
|
356
|
-
// Create temporary container to render into
|
|
375
|
+
} else if (child && typeof child === 'object' && typeof child.render === 'function') {
|
|
357
376
|
const tempContainer = document.createElement('div');
|
|
358
377
|
tempContainer.style.display = 'contents';
|
|
359
378
|
|
|
360
|
-
// Render the component
|
|
361
379
|
child.render(tempContainer);
|
|
362
380
|
|
|
363
|
-
// Extract the rendered element
|
|
364
381
|
if (child.container && child.container.firstElementChild) {
|
|
365
382
|
childElement = child.container.firstElementChild as HTMLElement;
|
|
366
383
|
} else if (tempContainer.firstElementChild) {
|
|
@@ -368,18 +385,12 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
368
385
|
} else {
|
|
369
386
|
childElement = tempContainer;
|
|
370
387
|
}
|
|
371
|
-
}
|
|
372
|
-
// ✅ Priority 3: Already a DOM element
|
|
373
|
-
else if (child instanceof HTMLElement) {
|
|
388
|
+
} else if (child instanceof HTMLElement) {
|
|
374
389
|
childElement = child;
|
|
375
|
-
}
|
|
376
|
-
// ✅ Priority 4: String - wrap in div
|
|
377
|
-
else if (typeof child === 'string') {
|
|
390
|
+
} else if (typeof child === 'string') {
|
|
378
391
|
childElement = document.createElement('div');
|
|
379
392
|
childElement.innerHTML = child;
|
|
380
|
-
}
|
|
381
|
-
// ✅ Fallback - stringify
|
|
382
|
-
else {
|
|
393
|
+
} else {
|
|
383
394
|
childElement = document.createElement('div');
|
|
384
395
|
childElement.textContent = String(child);
|
|
385
396
|
}
|
|
@@ -405,7 +416,6 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
405
416
|
stackDiv.setAttribute('style', this.state.style);
|
|
406
417
|
}
|
|
407
418
|
|
|
408
|
-
// Handle both array and object children
|
|
409
419
|
const childArray = Array.isArray(this.children)
|
|
410
420
|
? this.children
|
|
411
421
|
: Object.values(this.children);
|
|
@@ -428,5 +438,5 @@ export abstract class BaseStack extends BaseComponent<StackState> {
|
|
|
428
438
|
}
|
|
429
439
|
}
|
|
430
440
|
|
|
431
|
-
// ✅ Type assertion for LayoutExtensions
|
|
441
|
+
// ✅ Type assertion for LayoutExtensions (inherited from BaseComponent)
|
|
432
442
|
export interface BaseStack extends LayoutExtensions { }
|
|
@@ -176,6 +176,8 @@
|
|
|
176
176
|
|
|
177
177
|
/* ═════════════════════════════════════════════════════════════════
|
|
178
178
|
* STAGGER DELAYS (Sequential item delays)
|
|
179
|
+
* DEFAULT: 100ms between items
|
|
180
|
+
* Use .stagger(customMs) to override with inline styles
|
|
179
181
|
* ═════════════════════════════════════════════════════════════════ */
|
|
180
182
|
|
|
181
183
|
.jux-stack-stagger > *:nth-child(1) { animation-delay: 0ms; }
|