File tree Expand file tree Collapse file tree 7 files changed +89
-19
lines changed Expand file tree Collapse file tree 7 files changed +89
-19
lines changed Original file line number Diff line number Diff line change 11# @viamrobotics/svelte-sdk
22
3+ ## 0.2.0
4+
5+ ### Minor Changes
6+
7+ - 59452ac: Add CameraImage and CameraStream components
8+
39## 0.1.4
410
511### Patch Changes
Original file line number Diff line number Diff line change @@ -217,6 +217,53 @@ $inspect(resources.fetching);
217217</script>
218218```
219219
220+ ## Components
221+
222+ ### ` <CameraImage> `
223+
224+ Fetches a camera image at a constant interval and displays it in an ` <img> ` tag.
225+
226+ ``` svelte
227+ <script lang="ts">
228+ import { CameraImage } from '@viamrobotics/svelte-sdk';
229+
230+ interface Props {
231+ partID: string;
232+ name: string;
233+ }
234+
235+ let { partID, name }: Props = $props();
236+ </script>
237+
238+ <CameraImage
239+ {partID}
240+ {name}
241+ refetchInterval={2000}
242+ />
243+ ```
244+
245+ ### ` <CameraStream> `
246+
247+ Opens a camera stream and renders it in ` <video> ` tag.
248+
249+ ``` svelte
250+ <script lang="ts">
251+ import { CameraStream } from '@viamrobotics/svelte-sdk';
252+
253+ interface Props {
254+ partID: string;
255+ name: string;
256+ }
257+
258+ let { partID, name }: Props = $props();
259+ </script>
260+
261+ <CameraStream
262+ {partID}
263+ {name}
264+ />
265+ ```
266+
220267## Developing
221268
222269First install dependencies with ` pnpm install ` , then start a development server:
Original file line number Diff line number Diff line change 22 "name" : " @viamrobotics/svelte-sdk" ,
33 "description" : " Build Svelte apps with Viam" ,
44 "license" : " Apache-2.0" ,
5- "version" : " 0.1.4 " ,
5+ "version" : " 0.2.0 " ,
66 "scripts" : {
77 "dev" : " vite dev" ,
88 "build" : " vite build && npm run prepack" ,
Original file line number Diff line number Diff line change 11<script lang =" ts" >
22import { createResourceClient , createResourceQuery } from ' $lib' ;
33import { CameraClient } from ' @viamrobotics/sdk' ;
4+ import type { HTMLImgAttributes } from ' svelte/elements' ;
45
5- interface Props {
6+ interface Props extends HTMLImgAttributes {
67 partID: string ;
78 name: string ;
9+ refetchInterval? : number ;
10+ mimeType? : string ;
811}
912
10- let { partID, name }: Props = $props ();
13+ let {
14+ partID,
15+ name,
16+ refetchInterval = 1000 ,
17+ width = ' 200' ,
18+ mimeType = ' image/png' ,
19+ ... rest
20+ }: Props = $props ();
1121
1222const cameraClient = createResourceClient (
1323 CameraClient ,
1424 () => partID ,
1525 () => name
1626);
1727
18- const queryOptions = $state ({
19- refetchInterval: 1000 ,
20- });
21- const query = createResourceQuery (cameraClient , ' getImage' , () => queryOptions );
28+ const query = createResourceQuery (cameraClient , ' getImage' , () => ({
29+ refetchInterval ,
30+ }));
2231
2332const src = $derived (
2433 query .current .data
25- ? URL .createObjectURL (new Blob ([query .current .data ], { type: ' image/png ' }))
34+ ? URL .createObjectURL (new Blob ([query .current .data ], { type: mimeType }))
2635 : undefined
2736);
2837 </script >
@@ -32,7 +41,7 @@ const src = $derived(
3241{:else }
3342 <img
3443 {src }
35- alt = " "
36- width = " 200 "
44+ { width }
45+ {... rest }
3746 />
3847{/if }
Original file line number Diff line number Diff line change 11<script lang =" ts" >
22import { createStreamClient } from ' $lib' ;
3+ import type { HTMLVideoAttributes } from ' svelte/elements' ;
34
4- interface Props {
5+ interface Props extends HTMLVideoAttributes {
56 partID: string ;
67 name: string ;
78}
89
9- let { partID, name }: Props = $props ();
10+ let { partID, name, ... rest }: Props = $props ();
1011
1112let element: HTMLVideoElement ;
1213
@@ -22,8 +23,6 @@ $effect(() => {
2223$effect (() => {
2324 const [firstResolution] = client .resolutions ?? [];
2425
25- console .log (firstResolution );
26-
2726 if (firstResolution ) {
2827 client .setResolution (firstResolution );
2928 }
@@ -36,4 +35,5 @@ $effect(() => {
3635 controls ={false }
3736 playsinline
3837 bind:this ={element }
38+ {...rest }
3939></video >
Original file line number Diff line number Diff line change 11export { default as ViamProvider } from './components/provider.svelte' ;
22
3+ // Components
4+ export { default as CameraImage } from './components/camera.svelte' ;
5+ export { default as CameraStream } from './components/stream.svelte' ;
6+
7+ // Hooks
38export {
49 useConnectionStatus ,
510 useRobotClient ,
Original file line number Diff line number Diff line change 11<script lang =" ts" >
2- import { useConnectionStatus , useResourceNames } from ' $lib' ;
2+ import {
3+ useConnectionStatus ,
4+ useResourceNames ,
5+ CameraImage ,
6+ CameraStream ,
7+ } from ' $lib' ;
38import { dialConfigs } from ' ../configs' ;
49import Base from ' ./base.svelte' ;
5- import Camera from ' ./camera.svelte' ;
6- import Stream from ' ./stream.svelte' ;
710import Version from ' ./version.svelte' ;
811
912const partIDs = Object .keys (dialConfigs );
@@ -57,12 +60,12 @@ let streaming = true;
5760
5861 {#each cameras .current as { name } (name )}
5962 {#if streaming }
60- <Stream
63+ <CameraStream
6164 {name }
6265 {partID }
6366 />
6467 {:else }
65- <Camera
68+ <CameraImage
6669 {name }
6770 {partID }
6871 />
You can’t perform that action at this time.
0 commit comments