Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 2
📦 Imports 5
📊 Variables & Constants 3
⚡ Async/Await Patterns 1
📐 Interfaces 2
📑 Type Aliases 1

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useShare/index.ts

📦 Imports

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

Variables & Constants

Name Type Kind Value Exported
_navigator NavigatorWithShare const navigator as NavigatorWithShare
data any let/var `{
...toValue(shareOptions),
...toValue(overrideOptions),
}`
granted boolean let/var true

Async/Await Patterns

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

Functions

useShare(shareOptions: MaybeRefOrGetter<UseShareOptions>, options: ConfigurableNavigator): { isSupported: any; share: (overrideOptions?: MaybeRefOrGetter<UseShareOptions>) => Promise<void>; }

Code
export function useShare(shareOptions: MaybeRefOrGetter<UseShareOptions> = {}, options: ConfigurableNavigator = {}) {
  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 = true

      if (data.files && _navigator.canShare)
        granted = _navigator.canShare({ files: data.files })

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

  return {
    isSupported,
    share,
  }
}
  • JSDoc:

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

  • Parameters:

  • shareOptions: MaybeRefOrGetter<UseShareOptions>
  • options: ConfigurableNavigator
  • Return Type: { isSupported: any; share: (overrideOptions?: MaybeRefOrGetter<UseShareOptions>) => Promise<void>; }
  • Calls:
  • useSupported (from ../useSupported)
  • toValue (from vue)
  • _navigator.canShare
  • complex_call_1273

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

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

      if (data.files && _navigator.canShare)
        granted = _navigator.canShare({ files: data.files })

      if (granted)
        return _navigator.share!(data)
    }
  }
  • Parameters:
  • overrideOptions: MaybeRefOrGetter<UseShareOptions>
  • Return Type: Promise<void>
  • Calls:
  • toValue (from vue)
  • _navigator.canShare
  • complex_call_1273

Interfaces

UseShareOptions

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

Properties

Name Type Optional Description
title string
files File[]
text string
url string
Interface Code
interface NavigatorWithShare {
  share?: (data: UseShareOptions) => Promise<void>
  canShare?: (data: UseShareOptions) => boolean
}

Properties

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

Type Aliases

UseShareReturn

type UseShareReturn = ReturnType<typeof useShare>;