API
On this page
Use the API for advanced control over the images, spins and videos in Sirv Media Viewer.
Global API
| Method | Parameters | Description |
|---|---|---|
| Sirv.start | (selector or element) | Starts Sirv instance(s) by DOM query selector, or by HTML element |
| Sirv.stop | (selector or element) | Stops Sirv instance(s) by DOM query selector, or by HTML element |
| Sirv.on | (event name) | Attach an event handler for Sirv event |
| Sirv.off | (event name) | Remove an event handler |
| Sirv.getInstance | (selector or element) | Get viewer or lazy image instance by DOM query selector, or by HTML element |
| Sirv.viewer.getInstance | (selector or element) | Get viewer instance by DOM query selector, or by HTML element |
| Sirv.lazyImage.getInstance | (selector or element) | Get lazy image instance by DOM query selector, or by HTML element |
Example code:
<script>
// Start all Sirv instances on the page:
Sirv.start();
// Start Sirv instances that match the provided selector:
Sirv.start('.product-view .Sirv');
// Attach event handler
Sirv.on('viewer:beforeSlideIn', (nextItem) => {
console.log(nextItem);
});
</script>
Viewer API
| Method | Parameters | Description |
|---|---|---|
| isReady | Check if a viewer instance is ready | |
| isFullscreen | Check if a viewer instance is in fullscreen | |
| fullscreen | Switch to full screen mode | |
| next | Switch to next item | |
| prev | Switch to previous item | |
| jump | (index or item id) | Switch to a particular item by index or by id (data-id) |
| play | (delay) | Start viewer autoplay. If the delay argument is passed, it will override the slide.delay setting. |
| pause | Pause viewer autoplay | |
| items | (filters) | Get viewer items. Filters: { enabled: true } - only enabled items; { enabled: false } - only disabled items. |
| itemsCount | (filters) | Get the number of viewer items. Filters: { enabled: true } - only enabled items; { enabled: false } - only disabled items. |
| child | (index or item id) | Get reference to a particular item by index or by id (data-id) |
| enableItem | (index or item id) | Enable a particular item by index or by id (data-id) |
| disableItem | (index or item id) | Disable a particular item by index or by id (data-id) |
| insertItem | (DOM element, index) | Add item to the viewer at specified index. If index omitted, add item to the end. |
| removeItem | (index or item id) | Remove item from the viewer by index or by id (data-id) |
| enableGroup | (name of group or array from names) | Enable a particular group by group name (data-group) |
| disableGroup | (name of group or array from names) | Disable a particular group by group name (data-group) |
| switchGroup | (name of group or array from names) | Disable enabled groups and enable particular group |
| sortItems | (array from component names or empty) | Sort slides by itemsOrder option or array from component names |
Example script to replace one gallery with another:
<script>
// Check if viewer with `id="my-viewer"` is ready:
Sirv.viewer.getInstance('#my-viewer').isReady();
// Switch to the next item:
Sirv.viewer.getInstance('#my-viewer').next();
// Disable (exclude) 4th item in the viewer:
Sirv.viewer.getInstance('#my-viewer').disableItem(3);
</script>
Example script to pause a slide on hover:
<script>
// Pause on entry:
document.querySelector('#slideshow').addEventListener('mouseenter', () => { Sirv.viewer.getInstance('#slideshow').pause(); });
// Play on exit:
document.querySelector('#slideshow').addEventListener('mouseleave', () => { Sirv.viewer.getInstance('#slideshow').play(); });
</script>
Example script to show/hide items in a gallery:
<script>
// Hide items in the "color-navy" group
Sirv.getInstance('#example-viewer-1').disableGroup('color-navy');
// Show items from the "color-brown" and "size-m" groups
Sirv.getInstance('#example-viewer-1').enableGroup(['color-brown', 'size-m']);
// Show items from the "color-yellow" group and hide all other items
Sirv.getInstance('#example-viewer-1').switchGroup('color-yellow');
</script>
Spin API
| Method | Parameters | Description |
|---|---|---|
| isInitialized | Check if Spin instance is initialized | |
| isReady | Check if Spin instance is ready | |
| play | (duration, type) | Start auto-spin rotation |
| pause | Stop autospin | |
| rotate | (columns, [rows]) | Rotate by X number of frames on X-axis and/or Y-axis |
| rotateX | (frames) | Rotate by X number of frames on X-axis |
| rotateY | (frames) | Rotate by X number of frames on Y-axis |
| jumpRows | (row) | Jump to a specific row |
| jumpCols | (column) | Jump to a specific column |
| zoomIn | Zoom in to current frame | |
| zoomOut | Zoom out of current frame | |
| isZoomed | Check if the current frame is zoomed | |
| currentFrame | Get current frame: {rows: XX, cols: XX} |
Example script to rotate the spin:
<script>
// Check if Spin component spin is initialized:
Sirv.getInstance('#my-viewer-id').child(2).spin.isInitialized();
// Check if Spin component is ready:
Sirv.getInstance('.product-view .Sirv').child('spin-item').spin.isReady();
// Start rotate of spin:
Sirv.getInstance('#my-viewer-id').child(2).spin.play(3600, 'row');
</script>
Zoom API
| Method | Parameters | Description |
|---|---|---|
| isReady | Check if Zoom instance ready | |
| isZoomed | Check if image is zoomed in | |
| zoomIn | Zoom in to image. | |
| zoomOut | Zoom out of image |
Example code:
<script>
// Check if component zoom is ready:
Sirv.getInstance('#my-viewer').child(3).zoom.isReady();
// Zoom in to image:
Sirv.getInstance('.product-view .Sirv').child('zoom-item').zoom.zoomIn();
</script>
Video API
| Method | Parameters | Description |
|---|---|---|
| isReady | Check if video instance is ready |
Example code:
<script>
// Check if Video component is ready:
Sirv.viewer.getInstance('#my-viewer').child('video-item').video.isReady();
</script>
Model API
| Method | Parameters | Description |
|---|---|---|
| getMaterial | name or number | Choose a material from your model |
| createTexture | (uri, type) | Apply a new texture from an image URL |
Each material in the model has a number, with the first material being number 0.
Material instance API
| Method | Parameters | Description |
|---|---|---|
| setColor | number 0.00 to 1.00 for r, g, b, opacity | Set color of a particular material in the model e.g. [r(0.54), g(0.17), b(0.63), a(0.26)] |
| setTexture | name or null | Choose a texture name or clear the texture with null |
| setMetallicFactor | number 0.00 to 1.00 | Set metallic factor of a particular material in the model |
| setRoughnessFactor | number 0.00 to 1.00 | Set roughness factor of a particular material in the model |
| setMetallicTexture | name or null | Choose a metallic texture name or clear the texture with null |
Example code:
<script>
// Set color of one material and metallic factor of another material:
const model = Sirv.viewer.getInstance('#my-viewer').child('model-item').model;
model.getMaterial(0).setColor('#abf0c4');
model.getMaterial(2).setMetallicFactor(0.74);
</script>
Image API
| Method | Parameters | Description |
|---|---|---|
| isReady | Check if image instance is ready | |
| resize | Force image resize |
Example code:
<script>
// Check if Image component is ready:
Sirv.viewer.getInstance('#my-viewer').child('image-item').image.isReady();
// Force image resize:
Sirv.viewer.getInstance('#my-viewer').child(4).image.resize();
</script>
Lazy image API
| Method | Parameters | Description |
|---|---|---|
| isReady | Check if lazy image instance is ready | |
| resize | Force image resize |
Example code:
<script>
// Check if Lazy Image is ready:
Sirv.lazyimage.getInstance('#my-lazy-image').isReady();
// Force image resize:
Sirv.lazyimage.getInstance('#my-lazy-image').resize();
</script>
Hotspots API
| Method | Parameters | Description |
|---|---|---|
| .add(hotspotSettings) | hotspotSettings (JSON | Array<JSON>) | Add hotspot(s) and settings |
| .remove(index) | index (number) | Remove one hotspot |
| .removeAll() | Remove all hotspots | |
| .enable(index) | index (number) | Enable a particular hotspot |
| .disable(index) | index (number) | Disable a particular hotspot |
| .list() | List all hotspots | |
| .setVisibility(index) | index (number) | Show/hide message popup or tooltip |
Example code to hide hotspots in fullscreen:
<script>
const disableHotspots = (hotspotsApi) => {
hotspotsApi.list().forEach((node, index) => hotspotsApi.disable(index));
};
const enableHotspots = (hotspotsApi) => {
hotspotsApi.list().forEach((node, index) => hotspotsApi.enable(index));
};
Sirv.on('viewer:fullscreenIn', (e) => {
e.items().forEach(item => {
const componentApi = item[item.component];
if (componentApi.hotspots && componentApi.isReady()) {
disableHotspots(componentApi.hotspots);
}
});
});
Sirv.on('viewer:fullscreenOut', (e) => {
e.items().forEach(item => {
const componentApi = item[item.component];
if (componentApi.hotspots && componentApi.isReady()) {
enableHotspots(componentApi.hotspots);
}
});
});
Sirv.on('spin:ready', (e) => {
if (e.parent().parent().isFullscreen() && e.hotspots) {
disableHotspots(e.hotspots);
}
});
</script>