Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Apply VueUse composables in Vue 3/Nuxt projects to replace custom implementations with battle-tested utilities.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/useDevicesList.md
1---2category: Sensors3---45# useDevicesList67Reactive [enumerateDevices](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices) listing available input/output devices.89## Usage1011```ts12import { useDevicesList } from '@vueuse/core'1314const {15devices,16videoInputs: cameras,17audioInputs: microphones,18audioOutputs: speakers,19} = useDevicesList()20```2122## Requesting Permissions2324To request permissions, use the `ensurePermissions` method.2526```ts27import { useDevicesList } from '@vueuse/core'28// ---cut---29const {30ensurePermissions,31permissionGranted,32} = useDevicesList()3334await ensurePermissions()35console.log(permissionsGranted.value)36```3738# Component3940```vue41<template>42<UseDevicesList v-slot="{ videoInputs, audioInputs, audioOutputs }">43Cameras: {{ videoInputs }}44Microphones: {{ audioInputs }}45Speakers: {{ audioOutputs }}46</UseDevicesList>47</template>48```4950## Type Declarations5152```ts53export interface UseDevicesListOptions extends ConfigurableNavigator {54onUpdated?: (devices: MediaDeviceInfo[]) => void55/**56* Request for permissions immediately if it's not granted,57* otherwise label and deviceIds could be empty58*59* @default false60*/61requestPermissions?: boolean62/**63* Request for types of media permissions64*65* @default { audio: true, video: true }66*/67constraints?: MediaStreamConstraints68}69export interface UseDevicesListReturn extends Supportable {70/**71* All devices72*/73devices: Ref<MediaDeviceInfo[]>74videoInputs: ComputedRef<MediaDeviceInfo[]>75audioInputs: ComputedRef<MediaDeviceInfo[]>76audioOutputs: ComputedRef<MediaDeviceInfo[]>77permissionGranted: ShallowRef<boolean>78ensurePermissions: () => Promise<boolean>79}80/**81* Reactive `enumerateDevices` listing available input/output devices82*83* @see https://vueuse.org/useDevicesList84* @param options85*/86export declare function useDevicesList(87options?: UseDevicesListOptions,88): UseDevicesListReturn89```90