Skip to main content
Version: Version 1.0

Comments API Reference

The Contextual Comments component embeds a fully customizable commenting experience into your web application, allowing users to interact and collaborate seamlessly within the context of specific elements on the page.

How to use​

To initialize the <Comments> component, you can follow our quickstart guide.

Usage​

  import { useCanvasPin, Comments } from "@superviz/react-sdk";

const canvasId = "canvas-container";

const { pin } = useCanvasPin({ canvasId });

return (
<>
// this implements pins on a canvas.
<canvas id={canvasId} />

// assign the pin to the components
<Comments pin={pin} />
</>
);

Properties​

NameTypeDescription
pinpinRequired Specifies the context where the pins will be located.
positionstringOptional Represents the position where the element with the list of comments will be placed on the page. Values are left and right

Default value: left
buttonLocationstringOptional Represents the position where the button to activate or deactivate the comments functionality will be placed. Values are top-left, top-right, bottom-left, bottom-right, or an HTML element id.

Default value: top-left
stylesstringOptional CSS String that allows you to customize all elements individually.

Hooks​

useComments​

openThreads​

Type: () => void

Opens the superviz-comments section, where you can see the list of comments and reply to them.

function Room() {
const { openThreads } = useComments();

function open() {
openThreads();
}

return <button onClick={open}>Open Threads</button>;
}

closeThreads​

Type: () => void

Closes the superviz-comments section, where you can see the list of comments and reply to them.

useCanvasPin​

Exported​

pin​

Type: CanvasPin | null

A CanvasPin object

function Room() {
const { pin } = useCanvasPin({ canvasId: "mycanvas" });

return <Comments pin={pin} />;
}
destroy​

Type: function

Destroy Pin object

function Room() {
const { pin, destroy } = useCanvasPin({ canvasId: "mycanvas" });

function destroyPin() {
destroy();
}

return (
<>
<Comments pin={pin} />
<button onclick={destroyPin}>Destroy</button>
</>
);
}

Parameters​

canvasId​

Type: Required string

Specifies the ID of the canvas HTML element where comments can be added.

function Room() {
const { pin } = useCanvasPin({ canvasId: "mycanvas" });

return <Comments pin={pin} />;
}
onGoToPin​

Optional (position: { x: number; y: number }) => void

An optional handler function for when a pin is clicked


function Room() {
const { pin } = useCanvasPin({
canvasId: "mycanvas",
onGoToPin: (position) => {
// Do something
},
});

return (
<Comments pin={pin} />
);
}


<div className="space"></div>

### useMatterport

#### `follow`

**Type:** `function` `(participantId?: string) => void`

When called with a participant ID as an argument, this function enables other participants to follow the specified participant in the Matterport 3D space. If no ID is provided, the follow feature is disabled.

```jsx
function Room() {
const { follow } = useMatterport();

function followUser() {
follow("participant-id");
}

function unFollow() {
follow();
}

return (
<>
<button onClick={followUser}>Follow user</button>
<button onClick={unFollow}>Unfollow</button>
</>
);
}
goto​

Type: function (participantId: string) => void

When invoked with a participant ID as an argument, this function allows other participants to instantly navigate to the specified participant's position in the 3D space, enabling easy and quick location of participants.

function Room() {
const { goTo } = useMatterport();

function goToUser() {
goTo("participant-id");
}

return <button onClick={goToUser}>Go to user</button>;
}

useHTMLPin​

Exported​

pin​

Type: HTMLPin | null

An HTMLPin object

function Room() {
const { pin } = useHTMLPin({ elementId: "myContainer" });

return <Comments pin={pin} />;
}
destroy​

Type: function

Destroy Pin object

function Room() {
const { pin, destroy } = useHTMLPin({ elementId: "myContainer" });

function destroyPin() {
destroy();
}

return (
<>
<Comments pin={pin} />
<button onclick={destroyPin}>Destroy</button>
</>
);
}

Parameters​

elementId​

Required. string

Specifies the parent of the HTML elements where comments can be added.

function Room({ participantId }) {
const { pin } = useHTMLPin({ containerId: "myContainer" });

return <Comments pin={pin} />;
}
dataAttributeName​

Optional. string

Use this property to change the data attribute used to locate the elements that can receive a comment pin. The value of this attribute should be unique and persist on the page.

Default: data-superviz-id

function Room({ participantId }) {
const { pin } = useHTMLPin({
containerId: "myContainer",
dataAttributeName: "data-comment-id",
});

return <Comments pin={pin} />;
}
dataAttributeValueFilters​

Optional. RegExp[]

This Regex array is used to filter what elements should not be able to receive a comment pin.

function Room({ participantId }) {
const { pin } = useHTMLPin({
containerId: "myContainer",
dataAttributeValueFilters: [/.*-null-(target|target)$/],
});

return <Comments pin={pin} />;
}

useMatterportPin​

Exported​

pin​

Type: MatterportPin | null

A Matterport Pin object

function Room() {
const { pin } = useMatterportPin({
matterportInstance: mpSdkInstance,
showcaseWindow: iframe.current,
});

return <Comments pin={pin} />;
}
destroy​

function

Destroy Pin object

function Room() {
const { pin, destroy } = useMatterportPin({
matterportInstance: mpSdkInstance,
showcaseWindow: iframe.current,
});

function destroyPin() {
destroy();
}

return <button onclick={destroyPin}>Destroy</button>;
}

Parameters​

matterportInstance​

Type: string

Specifies the Matterport SDK instance where comments can be added.

function Room() {
const { pin } = useMatterportPin({
matterportInstance: mpSdkInstance,
});
}

useAutodeskPin​

Exported​

pin​

Type: AutodeskPin | null

An AutodeskPin object


function Room() {
const { pin } = useAutodeskPin({
autodeskInstance: viewer,
});
return (
<Comments pin={pin} />
<div id="forge-viewer"></div>
);
}
destroy​

Type: function

Destroy Pin object

function Room() {
const { pin, destroy } = useAutodeskPin({
autodeskInstance: viewer,
});

function destroyPin() {
destroy();
}

return (
<>
<Comments pin={pin} />
<div id="forge-viewer"></div>
<button onclick={destroyPin}>Destroy</button>
</>
);
}

Parameters​

autodeskInstance​

Type: string

Specifies the Autodesk viewer instance where comments can be added.


function Room() {
const { pin } = useAutodeskPin({
autodeskInstance: viewer,
});

return (
<Comments pin={pin} />
<div id="forge-viewer"></div>
);
}