LIVE · AUDIT-KEDJA · EU-VÄRD
SYSTEM · 99,99 % DRIFTSTID
v 1.0 ↗ TILLVERKAT I EU

@nexbasira/embed

En browser-widget som renderar NexBasiras fältsida-upplevelse inuti din egen app. Släpp in en <div>, peka den mot en genererad session-URL, lyssna efter livscykelhändelser. Ingen iframe-boilerplate som du själv måste skriva.

Installera

npm install @nexbasira/embed

Eller via <script>-tagg för icke-buntad användning — se Script-tagg nedan.

Grundläggande användning

import { embed } from "@nexbasira/embed";

const widget = embed({
  container: "#nb-host",          // selector or HTMLElement
  sessionUrl: invite.url,          // minted by your backend via the Node/Python SDK
  width: "100%",
  height: "720px",
  onReady: () => console.log("iframe loaded"),
  onSessionJoined: (id) => console.log("field user joined", id),
  onEvidenceAdded: (ev) => console.log("evidence", ev),
  onSessionComplete: (id) => router.push(`/inspections/${id}`),
});

sessionUrl är den engångssignerade URL som din backend får tillbaka från sessions.invite(). Bädda aldrig in en API-hemlighet i URL:en — bara fält-session-token, som är engångsbruk och bunden till IP/UA.

Imperativa metoder

Det returnerade widget-handtaget låter värdsidan styra fältsidans upplevelse programmatiskt — används vanligtvis av en verktygsrad utanför iframen:

widget.requestSnapshot();    // operator-side trigger; field captures a frame
widget.openWhiteboard();
widget.closeWhiteboard();
widget.switchCamera();        // toggle front / rear on supported devices
widget.mute();
widget.unmute();
widget.endSession();
widget.destroy();             // tear down the iframe + remove listeners

Varje metod postar ett meddelande till iframens fönster via postMessage med den konfigurerade expectedOrigin; iframens interna dispatcher dirigerar dem till rätt kontroll.

Livscykelhändelser

Varje callback du skickar till embed({ on... }) anropas när det matchande postMessage från iframen anländer. Origin-kontrollen framtvingas — meddelanden från andra origins ignoreras, så du kan lita på payloadens form.

CallbackUtlöses närPayload
onReadyiframe färdigladdad + handskakning klar
onSessionJoinedFältanvändaren anslöt till rummetsessionId
onSessionCompleteSession stängd (operatören avslutade, eller auto-utgången)sessionId
onEvidenceAddedNy skärmdump / anteckning / whiteboard / klipp{ id, kind }
onWhiteboardOpenedWhiteboard-panelen öppnad
onWhiteboardSavedWhiteboard exporterad till Evidence{ id }
onParticipantJoined / onParticipantLeftDeltagarens tillståndsändring{ id, role }
onErrorValfritt fel på iframe-sidan{ message, code }

Script-tagg

För konsumenter utan en bundler:

<script src="https://unpkg.com/@nexbasira/embed@latest/dist/index.umd.js"></script>
<div id="nb-host" style="width: 100%; height: 720px"></div>
<script>
  const widget = NexBasira.embed({
    container: "#nb-host",
    sessionUrl: "<minted-by-your-backend>",
    onSessionComplete: (id) => alert("done: " + id),
  });
</script>

Bundlen fäster NexBasira.embedwindow för det här mönstret.

Origin-pinning

Som standard härleder widgeten den förväntade iframe-originen från URL:en du skickade (sessionUrl) och avvisar meddelanden från andra origins. Om du hostar fältsidans upplevelse på en egen domän (Pro-nivå), skicka expectedOrigin explicit:

embed({
  container: "#nb-host",
  sessionUrl: "https://inspect.yourco.com/r/abc",
  expectedOrigin: "https://inspect.yourco.com",
  // ...
});

React-app?

Använd @nexbasira/react istället — samma widget under huven, idiomatiskt React-API (<NexBasiraSession>-komponent + useNexBasiraSession()-hook), färska closure-callbacks över omrenderingar.

Vad händer nu