JavaScript Frameworks
JavaScript
- React
 - Vue 3
 - Svelte
 - Lit
 - SolidJS
 - Qwik
 
React implementation using hooks (useEffect and useRef) for managing component lifecycle and references:
tip
Full example project can be found here
import { useEffect, useRef } from 'react';
import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
function App() {
  const verifySpeedRef = useRef(null);
  useEffect(() => {
    const element = verifySpeedRef.current;
    if (element) {
      element.addEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification
      );
      element.addEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted
      );
      return () => {
        element.removeEventListener(
          VerifySpeedUIEvent.INIT_VERIFICATION,
          handleInitVerification
        );
        element.removeEventListener(
          VerifySpeedUIEvent.VERIFICATION_COMPLETED,
          handleVerificationCompleted
        );
      };
    }
  }, []);
  return <verify-speed-ui ref={verifySpeedRef} />;
}
Vue 3 implementation using lifecycle hooks:
tip
Full example project can be found here
<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
const verifySpeedRef = ref(null);
onMounted(() => {
  const element = verifySpeedRef.value
  if (element) {
    element.addEventListener(
      VerifySpeedUIEvent.INIT_VERIFICATION,
      handleInitVerification
    )
    element.addEventListener(
      VerifySpeedUIEvent.VERIFICATION_COMPLETED,
      handleVerificationCompleted
    )
  }
})
onUnmounted(() => {
  const element = verifySpeedRef.value
  if (element) {
    element.removeEventListener(
      VerifySpeedUIEvent.INIT_VERIFICATION,
      handleInitVerification
    )
    element.removeEventListener(
      VerifySpeedUIEvent.VERIFICATION_COMPLETED,
      handleVerificationCompleted
    )
  }
})
</script>
<template>
  <verify-speed-ui ref="verifySpeedRef" />
</template>
Svelte implementation using lifecycle functions and bind directive:
tip
Full example project can be found here
<script>
  import { onMount, onDestroy } from 'svelte';
  import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
  let verifySpeedRef;
  onMount(() => {
    if (verifySpeedRef) {
      verifySpeedRef.addEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification,
      );
      verifySpeedRef.addEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted,
      );
    }
  });
  onDestroy(() => {
    if (verifySpeedRef) {
      verifySpeedRef.removeEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification,
      );
      verifySpeedRef.removeEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted,
      );
    }
  });
</script>
<verify-speed-ui bind:this={verifySpeedRef} />
Lit implementation using decorators and lifecycle callbacks:
tip
Full example project can be found here
import { LitElement, html } from 'lit';
import { customElement, query } from 'lit/decorators.js';
import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
@customElement('verify-speed-wrapper')
export class VerifySpeedWrapper extends LitElement {
  connectedCallback() {
    super.connectedCallback();
    this.addEventListener(
      VerifySpeedUIEvent.INIT_VERIFICATION,
      this.handleInitVerification,
    );
    this.addEventListener(
      VerifySpeedUIEvent.VERIFICATION_COMPLETED,
      this.handleVerificationCompleted,
    );
  }
  disconnectedCallback() {
    super.disconnectedCallback();
    this.removeEventListener(
      VerifySpeedUIEvent.INIT_VERIFICATION,
      this.handleInitVerification,
    );
    this.removeEventListener(
      VerifySpeedUIEvent.VERIFICATION_COMPLETED,
      this.handleVerificationCompleted,
    );
  }
  render() {
    return html`<verify-speed-ui></verify-speed-ui>`;
  }
}
Usage in HTML:
<verify-speed-wrapper></verify-speed-wrapper>
SolidJS implementation using lifecycle and refs:
tip
Full example project can be found here
import { createSignal, onMount, onCleanup } from 'solid-js';
import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
function VerifySpeed() {
  const [verifySpeedRef, setVerifySpeedRef] = createSignal();
  onMount(() => {
    const element = verifySpeedRef();
    if (element) {
      element.addEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification,
      );
      element.addEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted,
      );
    }
  });
  onCleanup(() => {
    const element = verifySpeedRef();
    if (element) {
      element.removeEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification,
      );
      element.removeEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted,
      );
    }
  });
  return <verify-speed-ui ref={setVerifySpeedRef} />;
}
// Usage
function App() {
  return (
    <div>
      <VerifySpeed />
    </div>
  );
}
Qwik implementation using lifecycle and refs:
tip
Full example project can be found here
import { component$, useSignal, useVisibleTask$ } from '@builder.io/qwik';
import { VerifySpeedUIEvent } from 'verifyspeed-web-ui';
function VerifySpeed() {
  const verifySpeedRef = useSignal();
  useVisibleTask$(() => {
    const element = verifySpeedRef.value;
    if (element) {
      element.addEventListener(
        VerifySpeedUIEvent.INIT_VERIFICATION,
        handleInitVerification,
      );
      element.addEventListener(
        VerifySpeedUIEvent.VERIFICATION_COMPLETED,
        handleVerificationCompleted,
      );
      return () => {
        element.removeEventListener(
          VerifySpeedUIEvent.INIT_VERIFICATION,
          handleInitVerification,
        );
        element.removeEventListener(
          VerifySpeedUIEvent.VERIFICATION_COMPLETED,
          handleVerificationCompleted,
        );
      };
    }
  });
  return <verify-speed-ui ref={verifySpeedRef} />;
}
// Usage
function App() {
  return (
    <div>
      <VerifySpeed />
    </div>
  );
}