Iframe events

If you open Repset inside an <iframe>, Repset posts events to the parent window via postMessage. This can for example be used to close the iframe after a program is saved, refresh a list when a resource changes, and so on.

Message shape

{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_created",
  "payload": { "programId": "5c9d3b1a..." }
}

command identifies the event. payload depends on which command is sent.

Listening for events

listen-for-events-example.js
function isRepsetIframeEvent(data) {
  return (
    typeof data === "object" &&
    data !== null &&
    data.source === "repset" &&
    data.version === 1 &&
    data.type === "event" &&
    typeof data.command === "string"
  );
}

function handleMessage(event) {
  if (!isRepsetIframeEvent(event.data)) return;

  if (event.data.command === "editor_closed") {
    // react to the event
  }
};

window.addEventListener("message", handleMessage);

Events

editor_opened
editor_closed
program_created
program_edited
program_deleted
program_printed
program_emailed
template_*
customer_*
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "editor_opened",
  "payload": {
    "programId": "5c9d3b1a..." | null,
    "templateId": "1a2b3c4d..." | null
  }
}
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "editor_closed",
  "payload": {
    "programId": "5c9d3b1a..." | null,
    "templateId": "1a2b3c4d..." | null
  }
}
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_created",
  "payload": { "programId": "5c9d3b1a..." }
}
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_edited",
  "payload": { "programId": "5c9d3b1a..." }
}
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_deleted",
  "payload": { "programId": "5c9d3b1a..." }
}
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_printed",
  "payload": { "programId": "5c9d3b1a..." }
}

programId is optional — omitted when printing an unsaved program.

{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "program_emailed",
  "payload": { "programId": "5c9d3b1a..." }
}
// command: template_created / template_edited / template_deleted
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "template_created",
  "payload": { "templateId": "1a2b3c4d..." }
}
// command: customer_created / customer_edited / customer_deleted
{
  "source": "repset",
  "version": 1,
  "type": "event",
  "command": "customer_created",
  "payload": { "customerId": "9d3f1a2b..." }
}