This Web Component follows the open-wc recommendation and is meant to be used with the OpenTok Video SDK.
A Vonage Video API account will be needed.
A goal is to simplify the code needed to create a chat room quickly. This Web Component will display the user's feed and publish to the session.
npm i @vonage/inputs-select
<script type="module">
import '@vonage/inputs-select/inputs-select.js';
</script>
<script type="module" src="https://unpkg.com/@vonage/inputs-select@latest/inputs-select.js?module"></script>
<inputs-select></inputs-select>
audio-label
: set the text for the audio inputs label. Default is "Audio Source:".video-label
: set the text for the audio inputs label. Default is "Video Source:".button-text
: set the text for the audio inputs label. Default is "Publish".
<inputs-select audio-label="Audio Inputs:" video-label="Video Inputs:" button-text="Preview"></inputs-select>
inputsSelected
: details contains audio and video device IDs that can be passed into the Web Component
example (event.details)
{
audioSource: 'default',
videoSource: 'ab123c4d5ef6g789h0...',
}
The Web Component uses the CSS pseudo-element ::part
for styling. So you can style it the same way you would style a regular button element. Here's an example:
This is the HTML structure of the Web Component:
<form part="form">
<label for="audio-source-select" part="label audio">Audio Source:</label>
<select id="audio-source-select" part="select audio">
<option value="audio.deviceId" part="option audio">audio input 1</option>
...
</select><br/>
<label for="video-source-select" part="label video">Video Source:</label>
<select id="video-source-select" part="select video">
<option value="video.deviceId" part="option video">video input 1</option>
...
</select>
<button id="inputs-btn" type="button" part="button">Publish</button>
</form>
Here is how to apply CSS to a part:
inputs-select::part(button) {
font-size: 20px;
color: white;
background-color: black;
border-radius: 5px;
}
- Get a reference to the Web Component.
- Generate a Session and Token.
- Pass Session and Token into Web Component reference.
Note: This can vary with library / framework (see examples folder)
To scan the project for linting and formatting errors, run
npm run lint
To automatically fix linting and formatting errors, run
npm run format
To execute a single test run:
npm run test
To run the tests in interactive watch mode run:
npm run test:watch
To run a local instance of Storybook for your component, run
npm run storybook
To build a production version of Storybook, run
npm run storybook:build
For most of the tools, the configuration is in the package.json
to minimize the amount of files in your project.
If you customize the configuration a lot, you can consider moving them to individual files.
npm start
To run a local development server that serves the basic demo located in demo/index.html