applyEffect function

Last updated: 2026-03-05T10:53:28.861Z

Metrics

LOC: 38 Complexity: 9 Params: 3

Signature

applyEffect( effect: StepEffect, selector: string | undefined, ): : Promise<void>

Summary

Applies a single effect, resolving after it completes. Never throws — logs warnings on failure.

Source Code

async function applyEffect(
  effect: StepEffect,
  selector: string | undefined,
): Promise<void> {
  const target = resolveTarget(selector);

  try {
    switch (effect.kind) {
      case "label":
        await applyLabelEffect(target, effect);
        break;
      case "grow":
        await applyGrowEffect(target, effect);
        break;
      case "zoom":
        await applyZoomEffect(target, effect);
        break;
      case "pin":
        await applyPinEffect(target, effect);
        break;
      case "shake":
        await applyShakeEffect(target, effect);
        break;
      case "confetti":
        await applyConfettiEffect(target, effect);
        break;
      case "spotlight":
        await applySpotlightEffect(target, effect);
        break;
      default: {
        const _exhaust: never = effect;
        log.warn("Unknown effect kind:", (_exhaust as StepEffect).kind);
      }
    }
  } catch (err) {
    log.warn(`Effect "${effect.kind}" failed:`, err);
  }
}

Dependencies (Outgoing)

graph LR applyEffect["applyEffect"] resolveTarget["resolveTarget"] applyLabelEffect["applyLabelEffect"] applyGrowEffect["applyGrowEffect"] applyZoomEffect["applyZoomEffect"] applyPinEffect["applyPinEffect"] applyShakeEffect["applyShakeEffect"] applyConfettiEffect["applyConfettiEffect"] applySpotlightEffect["applySpotlightEffect"] applyEffect -->|calls| resolveTarget applyEffect -->|calls| applyLabelEffect applyEffect -->|calls| applyGrowEffect applyEffect -->|calls| applyZoomEffect applyEffect -->|calls| applyPinEffect applyEffect -->|calls| applyShakeEffect applyEffect -->|calls| applyConfettiEffect applyEffect -->|calls| applySpotlightEffect style applyEffect fill:#dbeafe,stroke:#2563eb,stroke-width:2px click applyEffect "baf0d9f2a6803bb4.html" click resolveTarget "cefe589bdbdd3b3b.html" click applyLabelEffect "cb3df1e3c180daee.html" click applyGrowEffect "03333ac13d2a3f3b.html" click applyZoomEffect "252fd536336c2277.html" click applyPinEffect "fad09edaf87b170e.html" click applyShakeEffect "72ddf7c2c41fe8d9.html" click applyConfettiEffect "896aefbf261176e9.html" click applySpotlightEffect "ed098e44a2649922.html"

Impact (Incoming)

graph LR applyEffect["applyEffect"] applyStepEffects["applyStepEffects"] applyStepEffects -->|calls| applyEffect style applyEffect fill:#dbeafe,stroke:#2563eb,stroke-width:2px click applyEffect "baf0d9f2a6803bb4.html" click applyStepEffects "aed47434603419d0.html"
SourceType
applyStepEffects calls