@rotomeca/event - v5.0.0
    Preparing search index...

    Function event

    • Décorateur d'accesseur qui transforme une propriété de classe en EventDelegate géré automatiquement.

      Inspiré du mot-clé event de C#, ce décorateur encapsule la création, le cycle de vie et la mise en cache d'un EventDelegate sur l'instance. La propriété décorée devient accessible en lecture seule — toute tentative d'affectation lève une erreur.

      Le cache est partagé sur l'instance via un Symbol non énumérable, garantissant l'isolation entre les différents événements d'une même classe.

      Type Parameters

      • TCallback extends Func

        Type du callback de l'événement. Doit étendre Func.

      • This = any

        Type de la classe parente. Par défaut any.

      Parameters

      Returns (
          _target: ClassAccessorDecoratorTarget<This, EventDelegate<TCallback>>,
          context: ClassAccessorDecoratorContext<This, EventDelegate<TCallback>>,
      ) => ClassAccessorDecoratorResult<This, EventDelegate<TCallback>>

      type ClickCallback = (e: MouseEvent) => void;

      class Button {
      // Lazy par défaut — créé au premier accès
      @event<ClickCallback>()
      accessor onClick: EventDelegate<ClickCallback>;

      // Eager — créé dès l'instanciation de Button
      @event<ClickCallback>(null, { lazy: false })
      accessor onDoubleClick: EventDelegate<ClickCallback>;

      // Avec initialisation — abonné ajouté à la création
      @event<ClickCallback>((ev, instance) => {
      ev.add('default', (e) => instance.handleClick(e));
      })
      accessor onContextMenu: EventDelegate<ClickCallback>;
      }

      const btn = new Button();
      btn.onClick.add('logger', (e) => console.log(e.clientX));
      btn.onClick.invoke(new MouseEvent('click'));