Skip to main content

API

Methods#

setup#

Type signature
type SetupFunction = (a: {    apiKey: string;    config?: Partial<SDKConfig>;    environment?: string;}) => Promise<SDKResult>;

Description:#

Enables the execution of the recordSDK.

Arguments:#

KeyDescription
apiKeyThe key that provides access to an SDK workspace for the domain from which the record button is served
configA Partial of an SDKConfig
environmentLoom environment to be run against—used for internal testing purposes, don’t worry about setting this arg

Response:#

An SDKResult object wrapped in a Promise.


isSupported#

Type signature
isSupported(): Promise<{    supported: boolean;    error: SDKUnsupportedReasons | undefined;}>

Description:#

Identifies if the browser that is trying to run the recordSDK has the necessary web APIs required to perform a recording.

Arguments:#

None

Response:#

An object with the following properties:

KeyDescription
supportedRepresents if recordSDK is supported by the browser
errorSee SDKUnsupportedReasons—will be undefined if supported is true

Types#

ButtonFn#

Type signature
type ButtonFn = (a?: {    element?: HTMLElement;    hooks?: Hooks;}) => SDKButtonInterface;

Description:#

A function used to connect a specified DOM element to the recordSDK.

Arguments:#

KeyDescription
elementDOM element to attach SDK
hooksDEPRECATED Use ButtonEmitterEvents in place of hooks

Response:#

An SDKButtonInterface object.


ButtonEmitterEvents#

Type signature
interface ButtonEmitterEvents {    'insert-click': (video?: LoomVideo) => void;    start: () => void;    'recording-start': () => void;    cancel: () => void;    complete: () => void;    'lifecycle-update': (state: SDKState) => void;    'bubble-move': (pos: Position) => void;    'bubble-drag-start': (pos: Position) => void;    'bubble-drag-end': (pos: Position) => void;}

Description:#

Events that can be listened to when registered on an SDKButtonInterface instance. See Adding event listeners to see example of usage.

Properties:#

KeyDescription
insert-clickEvent emitted when insert CTA has been selected—video arg is LoomVideo available after recording
startEvent emitted when user has selected start recording
recording-startEvent emitted when video capture has begun (after 3..2..1 countdown)
cancelEvent emitted when recording is cancelled
completeEvent emitted when recording process has completed
lifecycle-updateEvent emitted when lifecycle state change with SDKState as arg
bubble-moveEvent emitted when camera bubble is moved
bubble-drag-startEvent emitted when camera bubble dragging has begun—pos arg is initial Position of bubble
bubble-drag-endEvent emitted when camera bubble dragging has ended—pos arg is initial Position of bubble

LoomVideo#

Type signature
interface LoomVideo {    id: string;    title: string;    height: number;    width: number;    sharedUrl: string;    embedUrl: string;    thumbnailHeight?: number;    thumbnailWidth?: number;    thumbnailUrl?: string;    duration?: number;    providerUrl: string;}

Description:#

Object representing a loom video which becomes available after recording.

Properties:#

KeyDescription
idVideo id
titleVideo title
heightVideo height in pixels
widthVideo width in pixels
sharedUrlURL for sharing video
embedUrlURL for embedding video
thumbnailHeightHeight of video thumbnail
thumbnailWidthWidth of video thumbnail
thumbnailUrlURL of video thumbnail
durationVideo duration
providerUrlURL of video provider

Position#

Type signature
interface Position {    x: number;    y: number;}

Description:#

Position of an element on the screen—specifically used for the camera bubble.

Properties:#

KeyDescription
xx coordinate in pixels—0 is bottom of the screen
yy coordinate in pixels—0 is left-most side of the screen

SDKButtonInterface#

Type signature
interface SDKButtonInterface extends EventEmitter<ButtonEmitterEvents> {    openPreRecordPanel: () => void;    closePreRecordPanel: () => void;    moveBubble: (p: Position) => void;}

Description:#

Object containing methods for the SDK to be programmatically interacted with. Fulfills the NodeJS EventEmitter definition and contains methods such as .on which listens to registered ButtonEmitterEvents.

Properties:#

KeyDescription
openPreRecordPanelProgrammatically opens the pre-record panel
closePreRecordPanelProgrammatically closes the pre-record panel
moveBubbleProgrammatically moves the camera bubble—p arg is target Position of camera bubble

Also contains properties of EventEmitter class.


SDKConfig#

Type signature
interface SDKConfig {    bubbleResizable: boolean;    insertButtonText: string;}

Description:#

Properties a user can set to customize the recordSDK experience.

Properties:#

KeyDescription
bubbleResizableWhether a user can update the video bubble size
insertButtonTextOverwrites the default "Insert recording" text that appears in the preview modal

SDKState#

Type signature
enum SDKState {    Closed = "closed",    PreRecording = "pre-recording",    ActiveRecording = "active-recording",    PostRecording = "post-recording"}

Description:#

An enum of the lifecycle state of the recordSDK.

Properties:#

MemberDescription
closedSDK has loaded but is not being used
pre-recordingPre-recording panel is open
active-recordingRecording is in progress (pausing recordings is a part of this state)
post-recordingRecording has finished and preview modal is open

SDKResult#

Type signature
type SDKResult = {    configureButton: ButtonFn;    status: () => {        state: SDKState | undefined;        success: boolean;    };    teardown: () => void;};

Description:#

An object returned from the setup function to configure the recordSDK.

Properties:#

KeyDescription
configureButtonSee ButtonFn
statusFunction returning an object with a success property—a boolean of whether the SDK successfully loaded—and a state property—either anSDKState member or undefined if success is false
teardownIMPLEMENTATION IN PROGRESS Cleans up the instantiated SDK in the background and should be called when the button that triggers the SDK is removed from the DOM

SDKUnsupportedReasons#

Type signature
enum SDKUnsupportedReasons {    IncompatibleBrowser = "incompatible-browser",    ThirdPartyCookiesDisabled = "third-party-cookies-disabled",    NoMediaStreamsSupport = "no-media-streams-support"}

Description:#

An enum containing reasons why the recordSDK is not supported on the user’s browser.

Properties:#

MemberDescription
incompatible-browserBrowser is not supported
third-party-cookies-disabledUser’s third party cookies are disabled
no-media-streams-supportMediaStream functionality is not available