@uimaxbai/am-lyrics 1.2.6 → 1.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AmLyrics.d.ts","sourceRoot":"","sources":["../../src/AmLyrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AmLyrics.d.ts","sourceRoot":"","sources":["../../src/AmLyrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAO,MAAM,KAAK,CAAC;AAuHjD,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,MAAM,0BA2qCX;IAGF,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,OAAO,CAAC,cAAc,CAAmC;IAGzD,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,cAAc,SAAa;IAG3B,oBAAoB,SAA+B;IAGnD,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,eAAe,CAAS;YAElB,kBAAkB;YAKlB,iBAAiB;YAsBjB,iBAAiB;YAKjB,gBAAgB;IAyC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,YAAY,CAAK;IAEzB,IACI,WAAW,CAAC,KAAK,EAAE,MAAM,EAM5B;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,MAAM,CAAC,CAAe;IAE9B,OAAO,CAAC,iBAAiB,CAAgB;IAEzC,OAAO,CAAC,qBAAqB,CAAkC;IAE/D,OAAO,CAAC,2BAA2B,CAAkC;IAErE,OAAO,CAAC,gBAAgB,CAAkC;IAE1D,OAAO,CAAC,sBAAsB,CAAkC;IAGhE,OAAO,CAAC,YAAY,CAAuB;IAG3C,OAAO,CAAC,gBAAgB,CAAiD;IAGzE,OAAO,CAAC,kBAAkB,CAAK;IAG/B,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,OAAO,CAAC,kBAAkB,CAGZ;IAEd,OAAO,CAAC,wBAAwB,CAGlB;IAGd,OAAO,CAAC,eAAe,CAAC,CAAc;IAEtC,OAAO,CAAC,qBAAqB,CAAuB;IAEpD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAGrC,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,oBAAoB,CAAS;IAErC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IAGzD,OAAO,CAAC,iBAAiB,CAAqB;IAG9C,OAAO,CAAC,aAAa,CAA0B;IAE/C,OAAO,CAAC,wBAAwB,CAA4B;IAE5D,OAAO,CAAC,qBAAqB,CAA4B;IAGzD,OAAO,CAAC,oBAAoB,CAGZ;IAEhB,OAAO,CAAC,mBAAmB,CAAK;IAEhC,OAAO,CAAC,cAAc,CAAqB;IAE3C,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAE5D,OAAO,CAAC,sBAAsB,CAAC,CAAgC;IAG/D,OAAO,CAAC,oBAAoB,CAAC,CAAkB;IAG/C,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,cAAc,CAA0B;IAGhD,OAAO,CAAC,sBAAsB,CAAoC;IAElE,OAAO,CAAC,qBAAqB,CAAmC;IAEhE,iBAAiB;IAKjB,oBAAoB;YAsCN,WAAW;YA8GX,cAAc;YAoBd,iBAAiB;IAS/B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwClC,OAAO,CAAC,MAAM,CAAC,mBAAmB;YA8BpB,YAAY;YA+EZ,mBAAmB;IAiGjC,OAAO,CAAC,MAAM,CAAC,kBAAkB;mBAkCZ,uBAAuB;mBA6CvB,wBAAwB;IAqP7C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4DhC;;;OAGG;mBACkB,oBAAoB;IA0FzC;;;OAGG;mBACkB,qBAAqB;mBAyErB,qBAAqB;IAoD1C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkEtC,OAAO,CAAC,MAAM,CAAC,SAAS;IA+RxB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqJhC,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,YAAY;IAkBZ;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA8LtB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAuEjE;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,gBAAgB,CAAgC;IAExD,OAAO,CAAC,aAAa,CAA8C;IAEnE,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,qBAAqB;IAsE7B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAQtC,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,qBAAqB;IAiC7B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgC/B,OAAO,CAAC,sBAAsB;IAgE9B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,eAAe;IA4CvB,OAAO,CAAC,eAAe;IA6EvB,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAkBzC,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4J1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+C7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmD/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAyKtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAwC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAuErC,OAAO,CAAC,eAAe;IA0HvB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,YAAY;IA2DpB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAUjC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC,OAAO,CAAC,cAAc;IAuCtB,MAAM;CAyoBP"}
@@ -319,17 +319,17 @@ class GoogleService {
319
319
  }
320
320
  }
321
321
 
322
- const VERSION = '1.2.6';
322
+ const VERSION = '1.2.7';
323
323
  const INSTRUMENTAL_THRESHOLD_MS = 7000; // Show dots for gaps >= 7s
324
324
  const FETCH_TIMEOUT_MS = 8000; // Timeout for all lyrics fetch requests
325
325
  const SEEK_THRESHOLD_MS = 500;
326
326
  const PRE_SCROLL_LEAD_MS = 500;
327
- const PRE_SCROLL_LEAD_SHORT_MS = 150;
327
+ const PRE_SCROLL_LEAD_SHORT_MS = 350;
328
328
  const SCROLL_ANIMATION_DURATION_MS = 280;
329
329
  const SCROLL_DELAY_INCREMENT_MS = 24;
330
330
  const GAP_PULSE_DURATION_MS = 4000;
331
331
  const GAP_PULSE_CYCLE_MS = GAP_PULSE_DURATION_MS * 2;
332
- const GAP_EXIT_LEAD_MS = 360;
332
+ const GAP_EXIT_LEAD_MS = 600;
333
333
  const GAP_MIN_SCALE = 0.85;
334
334
  /**
335
335
  * Fetch with an automatic timeout via AbortSignal.
@@ -1917,7 +1917,7 @@ class AmLyrics extends i {
1917
1917
  }
1918
1918
  this.clearPreActiveClasses(i);
1919
1919
  const slowScrollDuration = Math.max(SCROLL_ANIMATION_DURATION_MS, timeUntilStart);
1920
- this.focusLine(nextLineEl, false, slowScrollDuration, !!currentGap);
1920
+ this.focusLine(nextLineEl, false, isBackToBack ? 500 : slowScrollDuration);
1921
1921
  }
1922
1922
  break;
1923
1923
  }
@@ -2723,42 +2723,19 @@ class AmLyrics extends i {
2723
2723
  // Use a Map to collect animations like YouLyPlus
2724
2724
  const charAnimationsMap = new Map();
2725
2725
  const styleUpdates = [];
2726
- // Step 1 & 2: Apply animations
2726
+ // Step 1: Grow Pass
2727
2727
  if (isGrowable && isFirstSyllable && allWordCharSpans.length > 0) {
2728
- // Glow AND wipe applied to ALL characters simultaneously from the first syllable
2729
- // This prevents CSS animation restarts because the `animation` property is set once.
2730
- const firstSyllableStartTime = parseFloat(syllable.getAttribute('data-start-time') || '0');
2731
- allWordCharSpans.forEach((span, charIndexInWord) => {
2728
+ const finalDuration = wordDurationMs;
2729
+ const baseDelayPerChar = finalDuration * 0.09;
2730
+ const growDurationMs = finalDuration * 1.5;
2731
+ allWordCharSpans.forEach(span => {
2732
2732
  const horizontalOffset = parseFloat(span.dataset.horizontalOffset || '0');
2733
2733
  const maxScale = span.dataset.maxScale || '1.1';
2734
2734
  const shadowIntensity = span.dataset.shadowIntensity || '0.6';
2735
2735
  const translateYPeak = span.dataset.translateYPeak || '-2';
2736
- const animationParts = [];
2737
- const parentSyllable = span.closest('.lyrics-syllable');
2738
- if (parentSyllable) {
2739
- const parentDuration = parseFloat(parentSyllable.getAttribute('data-duration') || '0');
2740
- const parentStartTime = parseFloat(parentSyllable.getAttribute('data-start-time') || '0');
2741
- const startPct = parseFloat(span.dataset.wipeStart || '0');
2742
- const durationPct = parseFloat(span.dataset.wipeDuration || '0');
2743
- const relativeStartOffset = Math.max(0, parentStartTime - firstSyllableStartTime);
2744
- const wipeDelay = relativeStartOffset + parentDuration * startPct;
2745
- const wipeDuration = parentDuration * durationPct;
2746
- const useStartAnimation = isFirstInContainer && charIndexInWord === 0;
2747
- let charWipeAnimation = 'wipe';
2748
- if (useStartAnimation)
2749
- charWipeAnimation = isRTL ? 'start-wipe-rtl' : 'start-wipe';
2750
- else
2751
- charWipeAnimation = isRTL ? 'wipe-rtl' : 'wipe';
2752
- // Blend word and syllable durations to let the gradient flow smoothly
2753
- // while still responding to syllable pacing (no strict exactness, just natural flow)
2754
- const growDelay = wipeDelay;
2755
- const growDurationMs = Math.max(600, wordDurationMs * 0.8 + parentDuration * 1.5);
2756
- animationParts.push(`grow-dynamic ${growDurationMs}ms ease-in-out ${growDelay}ms forwards`);
2757
- if (wipeDuration > 0) {
2758
- animationParts.push(`${charWipeAnimation} ${wipeDuration}ms linear ${wipeDelay}ms forwards`);
2759
- }
2760
- }
2761
- charAnimationsMap.set(span, animationParts.join(', '));
2736
+ const syllableCharIndex = parseFloat(span.dataset.syllableCharIndex || '0');
2737
+ const growDelay = baseDelayPerChar * syllableCharIndex;
2738
+ charAnimationsMap.set(span, `grow-dynamic ${growDurationMs}ms ease-in-out ${growDelay}ms forwards`);
2762
2739
  styleUpdates.push({
2763
2740
  element: span,
2764
2741
  property: '--char-offset-x',
@@ -2781,26 +2758,8 @@ class AmLyrics extends i {
2781
2758
  });
2782
2759
  });
2783
2760
  }
2784
- else if (isGrowable && !isFirstSyllable && charSpans.length > 0) {
2785
- // For subsequent syllables of a growable word:
2786
- // If they already have `grow-dynamic`, it means the first syllable correctly took care of BOTH grow and wipe!
2787
- // Otherwise, they scrubbed directly into this syllable, so let's at least do the wipe.
2788
- charSpans.forEach(span => {
2789
- const existingAnimation = charAnimationsMap.get(span) || span.style.animation || '';
2790
- if (existingAnimation.includes('grow-dynamic'))
2791
- return;
2792
- const startPct = parseFloat(span.dataset.wipeStart || '0');
2793
- const durationPct = parseFloat(span.dataset.wipeDuration || '0');
2794
- const wipeDelay = syllableDurationMs * startPct;
2795
- const wipeDuration = syllableDurationMs * durationPct;
2796
- const charWipeAnimation = isRTL ? 'wipe-rtl' : 'wipe';
2797
- if (wipeDuration > 0) {
2798
- charAnimationsMap.set(span, `${charWipeAnimation} ${wipeDuration}ms linear ${wipeDelay}ms forwards`);
2799
- }
2800
- });
2801
- }
2802
- else if (charSpans.length > 0) {
2803
- // Per-character wipe for non-growable words (matching YouLyPlus)
2761
+ // Step 2: Wipe Pass
2762
+ if (charSpans.length > 0) {
2804
2763
  charSpans.forEach((span, charIndex) => {
2805
2764
  const startPct = parseFloat(span.dataset.wipeStart || '0');
2806
2765
  const durationPct = parseFloat(span.dataset.wipeDuration || '0');
@@ -2814,8 +2773,26 @@ class AmLyrics extends i {
2814
2773
  else {
2815
2774
  charWipeAnimation = isRTL ? 'wipe-rtl' : 'wipe';
2816
2775
  }
2776
+ const existingAnimation = charAnimationsMap.get(span) || span.style.animation || '';
2777
+ const animationParts = [];
2778
+ if (existingAnimation && existingAnimation.includes('grow-dynamic')) {
2779
+ animationParts.push(existingAnimation.split(',')[0].trim());
2780
+ }
2781
+ if (charIndex > 0) {
2782
+ const arrivalTime = span.dataset.preWipeArrival
2783
+ ? parseFloat(span.dataset.preWipeArrival)
2784
+ : wipeDelay;
2785
+ const constantDuration = parseFloat(span.dataset.preWipeDuration || '100');
2786
+ const animDelay = arrivalTime - constantDuration;
2787
+ if (constantDuration > 0) {
2788
+ animationParts.push(`pre-wipe-char ${constantDuration}ms linear ${animDelay}ms forwards`);
2789
+ }
2790
+ }
2817
2791
  if (wipeDuration > 0) {
2818
- charAnimationsMap.set(span, `${charWipeAnimation} ${wipeDuration}ms linear ${wipeDelay}ms forwards`);
2792
+ animationParts.push(`${charWipeAnimation} ${wipeDuration}ms linear ${wipeDelay}ms forwards`);
2793
+ }
2794
+ if (animationParts.length > 0) {
2795
+ charAnimationsMap.set(span, animationParts.join(', '));
2819
2796
  }
2820
2797
  });
2821
2798
  }
@@ -4651,8 +4628,8 @@ AmLyrics.styles = i$3 `
4651
4628
  0.75em 100%,
4652
4629
  0% 100%;
4653
4630
  background-position:
4654
- -0.375em 0%,
4655
- left;
4631
+ -0.75em 0%,
4632
+ -0.375em 0%;
4656
4633
  }
4657
4634
  100% {
4658
4635
  background-size:
@@ -4746,7 +4723,7 @@ AmLyrics.styles = i$3 `
4746
4723
  0.75em 100%,
4747
4724
  0% 100%;
4748
4725
  background-position:
4749
- -0.85em 0%,
4726
+ -0.75em 0%,
4750
4727
  left;
4751
4728
  }
4752
4729
  to {
@@ -4754,7 +4731,7 @@ AmLyrics.styles = i$3 `
4754
4731
  0.75em 100%,
4755
4732
  0% 100%;
4756
4733
  background-position:
4757
- -0.85em 0%,
4734
+ -0.375em 0%,
4758
4735
  left;
4759
4736
  }
4760
4737
  }