@uibit/effect-trigger 0.1.0

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.
@@ -0,0 +1,65 @@
1
+ import { UIBitElement } from '@uibit/core';
2
+ import type { EffectTriggerType, EffectBehaviorType, BehaviorFn } from './types';
3
+ /**
4
+ * Trigger visual effects like particles or vortex attractions.
5
+ *
6
+ * @fires {{ particle: HTMLElement, index: number, trigger: string }} uibit-particle-create - Fired when a particle is created
7
+ */
8
+ export declare class EffectTrigger extends UIBitElement {
9
+ static styles: import("lit").CSSResult;
10
+ /** Registry of custom behaviors */
11
+ private static _customBehaviors;
12
+ /**
13
+ * Register a custom behavior that content authors can use by setting the behavior attribute.
14
+ */
15
+ static registerBehavior(name: string, fn: BehaviorFn): void;
16
+ /**
17
+ * Get all registered custom behaviors.
18
+ */
19
+ static getRegisteredBehaviors(): Map<string, BehaviorFn>;
20
+ /** The trigger action to listen for */
21
+ trigger: EffectTriggerType;
22
+ /** The movement behavior/vector path to execute */
23
+ behavior: EffectBehaviorType;
24
+ /** Number of dynamic asset clones generated for particle-based behaviors */
25
+ density: number;
26
+ /** Duration/velocity bound of the movement (e.g. "600ms", "2.5s") */
27
+ velocity: string;
28
+ /** Applies real-time visual variations (scale, drift, rotation) to each clone */
29
+ randomize: boolean;
30
+ /** Stagger delay between spawning each particle (e.g., "50ms", "0.1s") */
31
+ stagger: string;
32
+ /** Min,Max range scale bounds for randomization (e.g., "0.5,1.5") */
33
+ scaleRange: string;
34
+ /** Min,Max range rotation degrees for randomization (e.g., "-180,180") */
35
+ rotationRange: string;
36
+ /** Custom keyframe definition in JSON string format to override behavior */
37
+ keyframes?: string;
38
+ /** CSS selector of an external element to bind trigger events to */
39
+ targetSelector?: string;
40
+ /** CSS selector of a destination element to animate particles towards */
41
+ destinationSelector?: string;
42
+ private _viewport?;
43
+ private _hasIntersections;
44
+ private _boundEventsCleanups;
45
+ connectedCallback(): void;
46
+ disconnectedCallback(): void;
47
+ updated(changedProperties: Map<string, unknown>): void;
48
+ private _cleanupObserver;
49
+ private _cleanupBoundEvents;
50
+ private _getTriggerElement;
51
+ private _getAssetTemplate;
52
+ private _setupListeners;
53
+ /**
54
+ * Launch/Ignite the visual effect. Can be called programmatically.
55
+ */
56
+ ignite(event?: Event): void;
57
+ private _spawnParticle;
58
+ private _getRandomFromRange;
59
+ private _parseDuration;
60
+ private _createClone;
61
+ private _executeBakedBehavior;
62
+ render(): import("lit").TemplateResult<1>;
63
+ }
64
+ export default EffectTrigger;
65
+ //# sourceMappingURL=effect-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-trigger.d.ts","sourceRoot":"","sources":["../src/effect-trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,YAAY,EAAsB,MAAM,aAAa,CAAC;AAG9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAgBjF;;;;GAIG;AACH,qBACa,aAAc,SAAQ,YAAY;IAC7C,MAAM,CAAC,MAAM,0BAAU;IAEvB,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAsC;IAErE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,QAEnD;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAEvD;IAED,uCAAuC;IACX,OAAO,EAAE,iBAAiB,CAAW;IAEjE,mDAAmD;IACvB,QAAQ,EAAE,kBAAkB,CAAoB;IAE5E,4EAA4E;IAChD,OAAO,SAAK;IAExC,qEAAqE;IACzC,QAAQ,SAAQ;IAE5C,iFAAiF;IACpD,SAAS,UAAS;IAE/C,0EAA0E;IAC9C,OAAO,SAAS;IAE5C,qEAAqE;IACf,UAAU,SAAa;IAE7E,0EAA0E;IACjB,aAAa,SAAc;IAEpF,4EAA4E;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IAE/C,oEAAoE;IACV,cAAc,CAAC,EAAE,MAAM,CAAC;IAElF,yEAAyE;IACV,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE5F,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAyB;IAErD,iBAAiB,SAGhB;IAED,oBAAoB,SAInB;IAED,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAK9C;IAED,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,QA0BnB;IAED,OAAO,CAAC,cAAc;IAuItB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,qBAAqB;IA0O7B,MAAM,oCAKL;CACF;eAEc,aAAa"}
@@ -0,0 +1,535 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var EffectTrigger_1;
8
+ import { html } from 'lit';
9
+ import { customElement, UIBitElement, ViewportController } from '@uibit/core';
10
+ import { property } from 'lit/decorators.js';
11
+ import { styles } from './styles';
12
+ let globalContainer = null;
13
+ function getGlobalContainer() {
14
+ if (typeof document === 'undefined')
15
+ return {};
16
+ if (!globalContainer) {
17
+ globalContainer = document.createElement('div');
18
+ globalContainer.id = 'uibit-effect-trigger-container';
19
+ globalContainer.style.cssText =
20
+ 'position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 999999; overflow: visible;';
21
+ document.body.appendChild(globalContainer);
22
+ }
23
+ return globalContainer;
24
+ }
25
+ /**
26
+ * Trigger visual effects like particles or vortex attractions.
27
+ *
28
+ * @fires {{ particle: HTMLElement, index: number, trigger: string }} uibit-particle-create - Fired when a particle is created
29
+ */
30
+ let EffectTrigger = class EffectTrigger extends UIBitElement {
31
+ constructor() {
32
+ super(...arguments);
33
+ /** The trigger action to listen for */
34
+ this.trigger = 'click';
35
+ /** The movement behavior/vector path to execute */
36
+ this.behavior = 'float-displace';
37
+ /** Number of dynamic asset clones generated for particle-based behaviors */
38
+ this.density = 1;
39
+ /** Duration/velocity bound of the movement (e.g. "600ms", "2.5s") */
40
+ this.velocity = '1s';
41
+ /** Applies real-time visual variations (scale, drift, rotation) to each clone */
42
+ this.randomize = false;
43
+ /** Stagger delay between spawning each particle (e.g., "50ms", "0.1s") */
44
+ this.stagger = '0ms';
45
+ /** Min,Max range scale bounds for randomization (e.g., "0.5,1.5") */
46
+ this.scaleRange = '0.5,1.5';
47
+ /** Min,Max range rotation degrees for randomization (e.g., "-180,180") */
48
+ this.rotationRange = '-180,180';
49
+ this._hasIntersections = false;
50
+ this._boundEventsCleanups = [];
51
+ }
52
+ static { EffectTrigger_1 = this; }
53
+ static { this.styles = styles; }
54
+ /** Registry of custom behaviors */
55
+ static { this._customBehaviors = new Map(); }
56
+ /**
57
+ * Register a custom behavior that content authors can use by setting the behavior attribute.
58
+ */
59
+ static registerBehavior(name, fn) {
60
+ EffectTrigger_1._customBehaviors.set(name, fn);
61
+ }
62
+ /**
63
+ * Get all registered custom behaviors.
64
+ */
65
+ static getRegisteredBehaviors() {
66
+ return EffectTrigger_1._customBehaviors;
67
+ }
68
+ connectedCallback() {
69
+ super.connectedCallback();
70
+ this._setupListeners();
71
+ }
72
+ disconnectedCallback() {
73
+ super.disconnectedCallback();
74
+ this._cleanupObserver();
75
+ this._cleanupBoundEvents();
76
+ }
77
+ updated(changedProperties) {
78
+ super.updated(changedProperties);
79
+ if (changedProperties.has('trigger') || changedProperties.has('targetSelector')) {
80
+ this._setupListeners();
81
+ }
82
+ }
83
+ _cleanupObserver() {
84
+ if (this._viewport) {
85
+ this.removeController(this._viewport);
86
+ this._viewport.unobserve();
87
+ this._viewport = undefined;
88
+ }
89
+ }
90
+ _cleanupBoundEvents() {
91
+ this._boundEventsCleanups.forEach(cleanup => cleanup());
92
+ this._boundEventsCleanups = [];
93
+ }
94
+ _getTriggerElement() {
95
+ if (this.targetSelector) {
96
+ const el = document.querySelector(this.targetSelector);
97
+ if (el)
98
+ return el;
99
+ }
100
+ const triggerSlot = this.shadowRoot?.querySelector('slot[name="trigger"]');
101
+ const assigned = triggerSlot?.assignedNodes({ flatten: true }) || [];
102
+ const triggerEl = assigned.find((node) => node.nodeType === Node.ELEMENT_NODE);
103
+ return triggerEl || this;
104
+ }
105
+ _getAssetTemplate() {
106
+ const assetSlot = this.shadowRoot?.querySelector('slot[name="asset"]');
107
+ const assigned = assetSlot?.assignedNodes({ flatten: true }) || [];
108
+ const assetEl = assigned.find((node) => node.nodeType === Node.ELEMENT_NODE);
109
+ if (assetEl)
110
+ return assetEl;
111
+ // Fallback: Default Star Icon
112
+ const fallback = document.createElement('span');
113
+ fallback.style.display = 'inline-block';
114
+ fallback.style.color = 'var(--uibit-effect-trigger-fallback-color, #000000)';
115
+ fallback.innerHTML = `
116
+ <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" style="display: block;">
117
+ <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>
118
+ </svg>
119
+ `;
120
+ return fallback;
121
+ }
122
+ _setupListeners() {
123
+ this._cleanupObserver();
124
+ this._cleanupBoundEvents();
125
+ const triggerEl = this._getTriggerElement();
126
+ if (!triggerEl)
127
+ return;
128
+ if (this.trigger === 'click') {
129
+ const cleanup = this.listen(triggerEl, 'click', (e) => this.ignite(e));
130
+ this._boundEventsCleanups.push(cleanup);
131
+ }
132
+ else if (this.trigger === 'hover') {
133
+ const cleanup = this.listen(triggerEl, 'mouseenter', (e) => this.ignite(e));
134
+ this._boundEventsCleanups.push(cleanup);
135
+ }
136
+ else if (this.trigger === 'visible') {
137
+ this._viewport = new ViewportController(this, {
138
+ target: triggerEl,
139
+ threshold: 0.1,
140
+ callback: (entry) => {
141
+ if (entry.isIntersecting) {
142
+ if (!this._hasIntersections) {
143
+ this.ignite();
144
+ this._hasIntersections = true;
145
+ }
146
+ }
147
+ else {
148
+ this._hasIntersections = false;
149
+ }
150
+ }
151
+ });
152
+ }
153
+ }
154
+ /**
155
+ * Launch/Ignite the visual effect. Can be called programmatically.
156
+ */
157
+ ignite(event) {
158
+ const triggerEl = this._getTriggerElement();
159
+ const assetEl = this._getAssetTemplate();
160
+ const container = getGlobalContainer();
161
+ if (!triggerEl || !assetEl || !container)
162
+ return;
163
+ // Emit global ignition event
164
+ this.dispatchCustomEvent('uibit-effect-ignite', {
165
+ trigger: this.trigger,
166
+ behavior: this.behavior,
167
+ event,
168
+ });
169
+ const staggerMs = this._parseDuration(this.stagger);
170
+ const count = this.density || 1;
171
+ for (let i = 0; i < count; i++) {
172
+ if (staggerMs > 0 && i > 0) {
173
+ setTimeout(() => {
174
+ this._spawnParticle(i, triggerEl, assetEl, container, event);
175
+ }, staggerMs * i);
176
+ }
177
+ else {
178
+ this._spawnParticle(i, triggerEl, assetEl, container, event);
179
+ }
180
+ }
181
+ }
182
+ _spawnParticle(index, triggerEl, assetEl, container, event) {
183
+ const clone = this._createClone(assetEl);
184
+ // Lifecycle hook: uibit-particle-create
185
+ const cancelableEvent = new CustomEvent('uibit-particle-create', {
186
+ bubbles: true,
187
+ composed: true,
188
+ cancelable: true,
189
+ detail: {
190
+ particle: clone,
191
+ index,
192
+ trigger: this.trigger,
193
+ behavior: this.behavior,
194
+ },
195
+ });
196
+ this.dispatchEvent(cancelableEvent);
197
+ if (cancelableEvent.defaultPrevented) {
198
+ return;
199
+ }
200
+ const runWithAnimation = (keyframes, options) => {
201
+ container.appendChild(clone);
202
+ const anim = clone.animate(keyframes, options);
203
+ anim.onfinish = () => {
204
+ // Lifecycle hook: uibit-particle-destroy
205
+ this.dispatchCustomEvent('uibit-particle-destroy', {
206
+ particle: clone,
207
+ index,
208
+ });
209
+ clone.remove();
210
+ };
211
+ };
212
+ // If custom inline keyframes are provided
213
+ if (this.keyframes) {
214
+ try {
215
+ const parsedKeyframes = JSON.parse(this.keyframes);
216
+ const duration = this._parseDuration(this.velocity);
217
+ const rect = triggerEl.getBoundingClientRect();
218
+ let startX = rect.left + rect.width / 2;
219
+ let startY = rect.top + rect.height / 2;
220
+ if (event instanceof MouseEvent) {
221
+ startX = event.clientX;
222
+ startY = event.clientY;
223
+ }
224
+ clone.style.left = `${startX}px`;
225
+ clone.style.top = `${startY}px`;
226
+ runWithAnimation(parsedKeyframes, { duration, easing: 'ease-out' });
227
+ return;
228
+ }
229
+ catch (err) {
230
+ console.error('Failed to parse effect-trigger keyframes JSON attribute', err);
231
+ }
232
+ }
233
+ // Check custom behavior registry
234
+ const customBehavior = EffectTrigger_1._customBehaviors.get(this.behavior);
235
+ if (customBehavior) {
236
+ customBehavior({
237
+ triggerEl,
238
+ assetEl: clone,
239
+ containerEl: container,
240
+ density: this.density,
241
+ velocity: this.velocity,
242
+ randomize: this.randomize,
243
+ stagger: this.stagger,
244
+ scaleRange: this.scaleRange,
245
+ rotationRange: this.rotationRange,
246
+ destinationSelector: this.destinationSelector,
247
+ });
248
+ return;
249
+ }
250
+ // Trajectory Destination Animation (Fly-to-Target)
251
+ if (this.destinationSelector) {
252
+ const destEl = document.querySelector(this.destinationSelector);
253
+ if (destEl) {
254
+ const rect = triggerEl.getBoundingClientRect();
255
+ let clickX = rect.left + rect.width / 2;
256
+ let clickY = rect.top + rect.height / 2;
257
+ if (event instanceof MouseEvent) {
258
+ clickX = event.clientX;
259
+ clickY = event.clientY;
260
+ }
261
+ clone.style.left = `${clickX}px`;
262
+ clone.style.top = `${clickY}px`;
263
+ const destRect = destEl.getBoundingClientRect();
264
+ const destX = destRect.left + destRect.width / 2;
265
+ const destY = destRect.top + destRect.height / 2;
266
+ const dx = destX - clickX;
267
+ const dy = destY - clickY;
268
+ const duration = this._parseDuration(this.velocity);
269
+ const keyframes = [];
270
+ const steps = 30;
271
+ for (let s = 0; s <= steps; s++) {
272
+ const pct = s / steps;
273
+ const curX = dx * pct;
274
+ const arcHeight = -120 * Math.sin(pct * Math.PI); // Parabolic peak upward
275
+ const curY = dy * pct + arcHeight;
276
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
277
+ const scale = baseScale * (1 - pct * 0.4);
278
+ keyframes.push({
279
+ transform: `translate(-50%, -50%) translate(${curX}px, ${curY}px) scale(${scale})`,
280
+ opacity: (1 - pct * 0.2).toString(),
281
+ offset: pct,
282
+ });
283
+ }
284
+ runWithAnimation(keyframes, { duration, easing: 'ease-in-out' });
285
+ return;
286
+ }
287
+ }
288
+ // Standard pre-baked behaviors
289
+ this._executeBakedBehavior(triggerEl, clone, container, event);
290
+ }
291
+ _getRandomFromRange(rangeStr) {
292
+ const parts = rangeStr.split(',').map((p) => parseFloat(p.trim()));
293
+ const p0 = parts[0] ?? 1;
294
+ const p1 = parts[1] ?? 1;
295
+ if (parts.length < 2 || isNaN(p0) || isNaN(p1))
296
+ return 1;
297
+ const min = Math.min(p0, p1);
298
+ const max = Math.max(p0, p1);
299
+ return min + Math.random() * (max - min);
300
+ }
301
+ _parseDuration(v) {
302
+ const match = v.trim().match(/^([\d.]+)(ms|s)$/);
303
+ if (!match)
304
+ return 1000;
305
+ const value = parseFloat(match[1] || '0');
306
+ const unit = match[2];
307
+ return unit === 's' ? value * 1000 : value;
308
+ }
309
+ _createClone(template) {
310
+ const clone = template.cloneNode(true);
311
+ clone.style.position = 'fixed';
312
+ clone.style.pointerEvents = 'none';
313
+ clone.style.zIndex = '999999';
314
+ return clone;
315
+ }
316
+ _executeBakedBehavior(triggerEl, clone, container, event) {
317
+ const rect = triggerEl.getBoundingClientRect();
318
+ const centerX = rect.left + rect.width / 2;
319
+ const centerY = rect.top + rect.height / 2;
320
+ const duration = this._parseDuration(this.velocity);
321
+ const runWithAnimation = (keyframes, options) => {
322
+ container.appendChild(clone);
323
+ const anim = clone.animate(keyframes, options);
324
+ anim.onfinish = () => {
325
+ this.dispatchCustomEvent('uibit-particle-destroy', {
326
+ particle: clone,
327
+ });
328
+ clone.remove();
329
+ };
330
+ };
331
+ switch (this.behavior) {
332
+ case 'traverse-x-right':
333
+ case 'traverse-x-left': {
334
+ const isRight = this.behavior === 'traverse-x-right';
335
+ clone.style.top = `${centerY}px`;
336
+ clone.style.transform = 'translate(-50%, -50%)';
337
+ const startX = isRight ? -100 : window.innerWidth + 100;
338
+ const endX = isRight ? window.innerWidth + 100 : -100;
339
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
340
+ const rotVal = this.randomize ? this._getRandomFromRange(this.rotationRange) : 360;
341
+ runWithAnimation([
342
+ { left: `${startX}px`, transform: `translate(-50%, -50%) scale(${baseScale}) rotate(0deg)` },
343
+ { left: `${endX}px`, transform: `translate(-50%, -50%) scale(${baseScale}) rotate(${rotVal}deg)` },
344
+ ], { duration, easing: 'linear' });
345
+ break;
346
+ }
347
+ case 'traverse-y-up':
348
+ case 'traverse-y-down': {
349
+ const isUp = this.behavior === 'traverse-y-up';
350
+ clone.style.left = `${centerX}px`;
351
+ clone.style.transform = 'translate(-50%, -50%)';
352
+ const startY = isUp ? window.innerHeight + 100 : -100;
353
+ const endY = isUp ? -100 : window.innerHeight + 100;
354
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
355
+ const rotVal = this.randomize ? this._getRandomFromRange(this.rotationRange) : 360;
356
+ runWithAnimation([
357
+ { top: `${startY}px`, transform: `translate(-50%, -50%) scale(${baseScale}) rotate(0deg)` },
358
+ { top: `${endY}px`, transform: `translate(-50%, -50%) scale(${baseScale}) rotate(${rotVal}deg)` },
359
+ ], { duration, easing: 'linear' });
360
+ break;
361
+ }
362
+ case 'fountain-burst': {
363
+ clone.style.left = `${centerX}px`;
364
+ clone.style.top = `${centerY}px`;
365
+ const angle = (Math.PI * 1.25) + (Math.random() * Math.PI * 0.5);
366
+ const speed = (this.randomize ? 8 + Math.random() * 8 : 12) * (duration / 1000);
367
+ const vx = Math.cos(angle) * speed * 25;
368
+ const vy = Math.sin(angle) * speed * 25;
369
+ const keyframes = [];
370
+ const steps = 20;
371
+ const g = 0.8;
372
+ const rotVal = this.randomize ? this._getRandomFromRange(this.rotationRange) : 360;
373
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
374
+ for (let step = 0; step <= steps; step++) {
375
+ const pct = step / steps;
376
+ const x = vx * pct;
377
+ const y = vy * pct + 0.5 * g * (pct * 30) * (pct * 30);
378
+ const opacity = pct > 0.8 ? 1 - (pct - 0.8) / 0.2 : 1;
379
+ const scale = baseScale * (1 - pct * 0.4);
380
+ keyframes.push({
381
+ transform: `translate(-50%, -50%) translate(${x}px, ${y}px) scale(${scale}) rotate(${rotVal * pct}deg)`,
382
+ opacity: opacity.toString(),
383
+ offset: pct,
384
+ });
385
+ }
386
+ runWithAnimation(keyframes, { duration, easing: 'ease-out' });
387
+ break;
388
+ }
389
+ case 'vortex-attractor': {
390
+ clone.style.left = `${centerX}px`;
391
+ clone.style.top = `${centerY}px`;
392
+ const startRadius = 150 + Math.random() * 200;
393
+ const startAngle = Math.random() * Math.PI * 2;
394
+ const spins = 1 + (this.randomize ? Math.random() * 2 : 1.5);
395
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
396
+ const rotVal = this.randomize ? this._getRandomFromRange(this.rotationRange) : 720;
397
+ const keyframes = [];
398
+ const steps = 30;
399
+ for (let step = 0; step <= steps; step++) {
400
+ const pct = step / steps;
401
+ const radius = startRadius * (1 - pct);
402
+ const angle = startAngle + pct * spins * Math.PI * 2;
403
+ const x = Math.cos(angle) * radius;
404
+ const y = Math.sin(angle) * radius;
405
+ const opacity = 1 - pct;
406
+ const scale = baseScale * (1 - pct);
407
+ keyframes.push({
408
+ transform: `translate(-50%, -50%) translate(${x}px, ${y}px) scale(${scale}) rotate(${pct * rotVal}deg)`,
409
+ opacity: opacity.toString(),
410
+ offset: pct,
411
+ });
412
+ }
413
+ runWithAnimation(keyframes, { duration, easing: 'ease-in-out' });
414
+ break;
415
+ }
416
+ case 'ambient-drift': {
417
+ const offsetRange = 60;
418
+ const spawnX = rect.left + (Math.random() * rect.width) + (Math.random() - 0.5) * offsetRange;
419
+ const spawnY = rect.bottom;
420
+ clone.style.left = `${spawnX}px`;
421
+ clone.style.top = `${spawnY}px`;
422
+ const sway = 15 + Math.random() * 25;
423
+ const riseDistance = 100 + Math.random() * 100;
424
+ const scale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 0.8;
425
+ runWithAnimation([
426
+ { transform: `translate(-50%, 0) translateX(0px) scale(${scale})`, opacity: '0' },
427
+ { transform: `translate(-50%, -20px) translateX(${sway / 2}px) scale(${scale})`, opacity: '1', offset: 0.2 },
428
+ { transform: `translate(-50%, -60px) translateX(-${sway}px) scale(${scale})`, offset: 0.6 },
429
+ { transform: `translate(-50%, -${riseDistance}px) translateX(${sway / 3}px) scale(${scale * 0.5})`, opacity: '0' },
430
+ ], { duration: duration * (this.randomize ? 0.8 + Math.random() * 0.5 : 1), easing: 'ease-out' });
431
+ break;
432
+ }
433
+ case 'focal-pop': {
434
+ clone.style.left = '50%';
435
+ clone.style.top = '50%';
436
+ const baseScale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1.2;
437
+ runWithAnimation([
438
+ { transform: 'translate(-50%, -50%) scale(0) rotate(-15deg)', opacity: '0' },
439
+ { transform: `translate(-50%, -50%) scale(${baseScale}) rotate(5deg)`, opacity: '1', offset: 0.2 },
440
+ { transform: 'translate(-50%, -50%) scale(1) rotate(0deg)', opacity: '1', offset: 0.3 },
441
+ { transform: 'translate(-50%, -50%) scale(1) rotate(0deg)', opacity: '1', offset: 0.8 },
442
+ { transform: 'translate(-50%, -50%) scale(0) rotate(15deg)', opacity: '0' },
443
+ ], { duration, easing: 'ease-in-out' });
444
+ break;
445
+ }
446
+ case 'orbit-halo': {
447
+ const radius = Math.max(rect.width, rect.height) / 2 + 15;
448
+ clone.style.left = `${centerX}px`;
449
+ clone.style.top = `${centerY}px`;
450
+ const startAngle = Math.random() * Math.PI * 2;
451
+ const keyframes = [];
452
+ const steps = 30;
453
+ for (let step = 0; step <= steps; step++) {
454
+ const pct = step / steps;
455
+ const angle = startAngle + pct * Math.PI * 2;
456
+ const x = Math.cos(angle) * radius;
457
+ const y = Math.sin(angle) * radius;
458
+ const opacity = pct > 0.7 ? 1 - (pct - 0.7) / 0.3 : 1;
459
+ keyframes.push({
460
+ transform: `translate(-50%, -50%) translate(${x}px, ${y}px) rotate(${pct * 360}deg)`,
461
+ opacity: opacity.toString(),
462
+ offset: pct,
463
+ });
464
+ }
465
+ runWithAnimation(keyframes, { duration, easing: 'ease-in-out' });
466
+ break;
467
+ }
468
+ case 'float-displace':
469
+ default: {
470
+ let clickX = centerX;
471
+ let clickY = centerY;
472
+ if (event instanceof MouseEvent) {
473
+ clickX = event.clientX;
474
+ clickY = event.clientY;
475
+ }
476
+ clone.style.left = `${clickX}px`;
477
+ clone.style.top = `${clickY}px`;
478
+ const distance = 120 + (this.randomize ? Math.random() * 60 : 30);
479
+ const sway = this.randomize ? this._getRandomFromRange(this.rotationRange) * 0.15 : 0;
480
+ const scale = this.randomize ? this._getRandomFromRange(this.scaleRange) : 1;
481
+ runWithAnimation([
482
+ { transform: `translate(-50%, -50%) translateY(0px) translateX(0px) scale(${scale})`, opacity: '0' },
483
+ { transform: `translate(-50%, -50%) translateY(-20px) translateX(${sway * 0.1}px) scale(${scale})`, opacity: '1', offset: 0.15 },
484
+ { transform: `translate(-50%, -50%) translateY(-${distance}px) translateX(${sway}px) scale(${scale * 0.5})`, opacity: '0' },
485
+ ], { duration, easing: 'ease-out' });
486
+ break;
487
+ }
488
+ }
489
+ }
490
+ render() {
491
+ return html `
492
+ <slot name="trigger"></slot>
493
+ <slot name="asset"></slot>
494
+ `;
495
+ }
496
+ };
497
+ __decorate([
498
+ property({ type: String })
499
+ ], EffectTrigger.prototype, "trigger", void 0);
500
+ __decorate([
501
+ property({ type: String })
502
+ ], EffectTrigger.prototype, "behavior", void 0);
503
+ __decorate([
504
+ property({ type: Number })
505
+ ], EffectTrigger.prototype, "density", void 0);
506
+ __decorate([
507
+ property({ type: String })
508
+ ], EffectTrigger.prototype, "velocity", void 0);
509
+ __decorate([
510
+ property({ type: Boolean })
511
+ ], EffectTrigger.prototype, "randomize", void 0);
512
+ __decorate([
513
+ property({ type: String })
514
+ ], EffectTrigger.prototype, "stagger", void 0);
515
+ __decorate([
516
+ property({ type: String, attribute: 'scale-range' })
517
+ ], EffectTrigger.prototype, "scaleRange", void 0);
518
+ __decorate([
519
+ property({ type: String, attribute: 'rotation-range' })
520
+ ], EffectTrigger.prototype, "rotationRange", void 0);
521
+ __decorate([
522
+ property({ type: String })
523
+ ], EffectTrigger.prototype, "keyframes", void 0);
524
+ __decorate([
525
+ property({ type: String, attribute: 'target-selector' })
526
+ ], EffectTrigger.prototype, "targetSelector", void 0);
527
+ __decorate([
528
+ property({ type: String, attribute: 'destination-selector' })
529
+ ], EffectTrigger.prototype, "destinationSelector", void 0);
530
+ EffectTrigger = EffectTrigger_1 = __decorate([
531
+ customElement('uibit-effect-trigger')
532
+ ], EffectTrigger);
533
+ export { EffectTrigger };
534
+ export default EffectTrigger;
535
+ //# sourceMappingURL=effect-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-trigger.js","sourceRoot":"","sources":["../src/effect-trigger.ts"],"names":[],"mappings":"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"}