applyLabelEffect function exported

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

Metrics

LOC: 37 Complexity: 5 Params: 3

Signature

applyLabelEffect( target: Element | null, config: LabelEffect, ): : Promise<void>

Summary

Applies the label effect on target and resolves after it's done.

Source Code

export function applyLabelEffect(
  target: Element | null,
  config: LabelEffect,
): Promise<void> {
  return new Promise((resolve) => {
    if (!target || !config.text?.trim()) {
      resolve();
      return;
    }

    injectStyles();

    const duration = config.duration ?? 2000;
    const pos = config.position ?? "above";
    const rect = target.getBoundingClientRect();

    const label = document.createElement("div");
    label.className = LABEL_CLASS;
    label.setAttribute("data-pos", pos);
    label.textContent = config.text;
    document.body.appendChild(label);

    // Position after paint so getBoundingClientRect works
    requestAnimationFrame(() => {
      position(label, rect, pos);
      requestAnimationFrame(() => label.classList.add("visible"));
    });

    setTimeout(() => {
      label.classList.remove("visible");
      setTimeout(() => {
        label.remove();
        resolve();
      }, 240);
    }, duration);
  });
}

Dependencies (Outgoing)

graph LR applyLabelEffect["applyLabelEffect"] injectStyles["injectStyles"] position["position"] applyLabelEffect -->|calls| injectStyles applyLabelEffect -->|calls| position style applyLabelEffect fill:#dbeafe,stroke:#2563eb,stroke-width:2px click applyLabelEffect "cb3df1e3c180daee.html" click injectStyles "e97e8d96c98fbc38.html" click position "3d3f1333e7b896b2.html"
TargetType
injectStyles calls
position calls

Impact (Incoming)

graph LR applyLabelEffect["applyLabelEffect"] resolveTarget["resolveTarget"] applyEffect["applyEffect"] resolveTarget -->|uses| applyLabelEffect applyEffect -->|calls| applyLabelEffect style applyLabelEffect fill:#dbeafe,stroke:#2563eb,stroke-width:2px click applyLabelEffect "cb3df1e3c180daee.html" click resolveTarget "cefe589bdbdd3b3b.html" click applyEffect "baf0d9f2a6803bb4.html"
SourceType
resolveTarget uses
applyEffect calls