Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 6
🧱 Classes 1
📦 Imports 11
📊 Variables & Constants 1
🟢 Vue Composition API 2
📐 Interfaces 3
📑 Type Aliases 2

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useResizeObserver/index.ts

📦 Imports

Name Source
MaybeRefOrGetter vue
ConfigurableWindow ../_configurable
MaybeComputedElementRef ../unrefElement
MaybeElement ../unrefElement
tryOnScopeDispose @vueuse/shared
computed vue
toValue vue
watch vue
defaultWindow ../_configurable
unrefElement ../unrefElement
useSupported ../useSupported

Variables & Constants

Name Type Kind Value Exported
observer ResizeObserver | undefined let/var *not shown*

Vue Composition API

Name Type Reactive Variables Composables
computed computed none none
watch watch none none

Functions

ResizeObserver.disconnect(): void

Code
disconnect(): void
  • Return Type: void

ResizeObserver.observe(target: Element, options: UseResizeObserverOptions): void

Code
observe(target: Element, options?: UseResizeObserverOptions): void
  • Parameters:
  • target: Element
  • options: UseResizeObserverOptions
  • Return Type: void

ResizeObserver.unobserve(target: Element): void

Code
unobserve(target: Element): void
  • Parameters:
  • target: Element
  • Return Type: void

useResizeObserver(target: MaybeComputedElementRef | MaybeComputedElementRef[] | MaybeRefOrGetter<MaybeElement[]>, callback: ResizeObserverCallback, options: UseResizeObserverOptions): { isSupported: any; stop: () => void; }

Code
export function useResizeObserver(
  target: MaybeComputedElementRef | MaybeComputedElementRef[] | MaybeRefOrGetter<MaybeElement[]>,
  callback: ResizeObserverCallback,
  options: UseResizeObserverOptions = {},
) {
  const { window = defaultWindow, ...observerOptions } = options
  let observer: ResizeObserver | undefined
  const isSupported = useSupported(() => window && 'ResizeObserver' in window)

  const cleanup = () => {
    if (observer) {
      observer.disconnect()
      observer = undefined
    }
  }

  const targets = computed(() => {
    const _targets = toValue(target)
    return Array.isArray(_targets)
      ? _targets.map(el => unrefElement(el))
      : [unrefElement(_targets)]
  })

  const stopWatch = watch(
    targets,
    (els) => {
      cleanup()
      if (isSupported.value && window) {
        observer = new ResizeObserver(callback)
        for (const _el of els) {
          if (_el)
            observer!.observe(_el, observerOptions)
        }
      }
    },
    { immediate: true, flush: 'post' },
  )

  const stop = () => {
    cleanup()
    stopWatch()
  }

  tryOnScopeDispose(stop)

  return {
    isSupported,
    stop,
  }
}
  • JSDoc:

    /**
     * Reports changes to the dimensions of an Element's content or the border-box
     *
     * @see https://vueuse.org/useResizeObserver
     * @param target
     * @param callback
     * @param options
     */
    

  • Parameters:

  • target: MaybeComputedElementRef | MaybeComputedElementRef[] | MaybeRefOrGetter<MaybeElement[]>
  • callback: ResizeObserverCallback
  • options: UseResizeObserverOptions
  • Return Type: { isSupported: any; stop: () => void; }
  • Calls:
  • useSupported (from ../useSupported)
  • observer.disconnect
  • computed (from vue)
  • toValue (from vue)
  • Array.isArray
  • _targets.map
  • unrefElement (from ../unrefElement)
  • watch (from vue)
  • cleanup
  • observer!.observe
  • stopWatch
  • tryOnScopeDispose (from @vueuse/shared)

cleanup(): void

Code
() => {
    if (observer) {
      observer.disconnect()
      observer = undefined
    }
  }
  • Return Type: void
  • Calls:
  • observer.disconnect

stop(): void

Code
() => {
    cleanup()
    stopWatch()
  }
  • Return Type: void
  • Calls:
  • cleanup
  • stopWatch

Classes

ResizeObserver

Class Code
declare class ResizeObserver {
  constructor(callback: ResizeObserverCallback)
  disconnect(): void
  observe(target: Element, options?: UseResizeObserverOptions): void
  unobserve(target: Element): void
}

Methods

disconnect(): void
Code
disconnect(): void
observe(target: Element, options: UseResizeObserverOptions): void
Code
observe(target: Element, options?: UseResizeObserverOptions): void
unobserve(target: Element): void
Code
unobserve(target: Element): void

Interfaces

ResizeObserverSize

Interface Code
export interface ResizeObserverSize {
  readonly inlineSize: number
  readonly blockSize: number
}

Properties

Name Type Optional Description
inlineSize number
blockSize number

ResizeObserverEntry

Interface Code
export interface ResizeObserverEntry {
  readonly target: Element
  readonly contentRect: DOMRectReadOnly
  readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>
  readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>
  readonly devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>
}

Properties

Name Type Optional Description
target Element
contentRect DOMRectReadOnly
borderBoxSize ReadonlyArray<ResizeObserverSize>
contentBoxSize ReadonlyArray<ResizeObserverSize>
devicePixelContentBoxSize ReadonlyArray<ResizeObserverSize>

UseResizeObserverOptions

Interface Code
export interface UseResizeObserverOptions extends ConfigurableWindow {
  /**
   * Sets which box model the observer will observe changes to. Possible values
   * are `content-box` (the default), `border-box` and `device-pixel-content-box`.
   *
   * @default 'content-box'
   */
  box?: ResizeObserverBoxOptions
}

Properties

Name Type Optional Description
box ResizeObserverBoxOptions

Type Aliases

ResizeObserverCallback

type ResizeObserverCallback = (entries: ReadonlyArray<ResizeObserverEntry>, observer: ResizeObserver) => void;

UseResizeObserverReturn

type UseResizeObserverReturn = ReturnType<typeof useResizeObserver>;