Skip to content

⬅️ Back to Table of Contents

📄 useShare

📊 Analysis Summary

Metric Count
🔧 Functions 2
📦 Imports 6
⚡ Async/Await Patterns 1
📐 Interfaces 3

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useShare/index.ts

📦 Imports

Name Source
MaybeRefOrGetter vue
ConfigurableNavigator ../_configurable
Supportable ../types
toValue vue
defaultNavigator ../_configurable
useSupported ../useSupported

Async/Await Patterns

Type Function Await Expressions Promise Chains
async-function share none none

Functions

useShare(shareOptions: MaybeRefOrGetter<UseShareOptions>, options: ConfigurableNavigator): UseShareReturn

Reactive Web Share API.

Parameters:

  • shareOptions any: No description
  • options any: No description

See: https://vueuse.org/useShare

Tags: @__NO_SIDE_EFFECTS__

Raw JSDoc
/**
 * Reactive Web Share API.
 *
 * @see https://vueuse.org/useShare
 * @param shareOptions
 * @param options
 *
 * @__NO_SIDE_EFFECTS__
 */

Calls:

  • useSupported (from ../useSupported)
  • toValue (from vue)
  • _navigator.canShare
  • complex_call_1467
Code
export function useShare(shareOptions: MaybeRefOrGetter<UseShareOptions> = {}, options: ConfigurableNavigator = {}): UseShareReturn {
  const { navigator = defaultNavigator } = options

  const _navigator = navigator as NavigatorWithShare
  const isSupported = useSupported(() => _navigator && 'canShare' in _navigator)

  const share = async (overrideOptions: MaybeRefOrGetter<UseShareOptions> = {}) => {
    if (isSupported.value) {
      const data = {
        ...toValue(shareOptions),
        ...toValue(overrideOptions),
      }
      let granted = false

      if (_navigator.canShare)
        granted = _navigator.canShare(data)

      if (granted)
        return _navigator.share!(data)
    }
  }

  return {
    isSupported,
    share,
  }
}

Internal helpers

Declared inside another function in this file.

share(overrideOptions: MaybeRefOrGetter<UseShareOptions>): Promise<void>

Parameters:

  • overrideOptions MaybeRefOrGetter<UseShareOptions>

Returns: Promise<void>

Calls:

  • toValue (from vue)
  • _navigator.canShare
  • complex_call_1467
Code
async (overrideOptions: MaybeRefOrGetter<UseShareOptions> = {}) => {
    if (isSupported.value) {
      const data = {
        ...toValue(shareOptions),
        ...toValue(overrideOptions),
      }
      let granted = false

      if (_navigator.canShare)
        granted = _navigator.canShare(data)

      if (granted)
        return _navigator.share!(data)
    }
  }

Interfaces

UseShareOptions

Interface Code
export interface UseShareOptions {
  title?: string
  files?: File[]
  text?: string
  url?: string
}

Properties

Name Type Optional Description
title string not shown
files File[] not shown
text string not shown
url string not shown

UseShareReturn

Interface Code
export interface UseShareReturn extends Supportable {
  share: (overrideOptions?: MaybeRefOrGetter<UseShareOptions>) => Promise<void>
}

Properties

Name Type Optional Description
share (overrideOptions?: MaybeRefOrGetter<UseShareOptions>) => Promise<void> not shown
Interface Code
interface NavigatorWithShare {
  share?: (data: UseShareOptions) => Promise<void>
  canShare?: (data: UseShareOptions) => boolean
}

Properties

Name Type Optional Description
share (data: UseShareOptions) => Promise<void> not shown
canShare (data: UseShareOptions) => boolean not shown

Generated by Syntax Scribe