{"version":3,"file":"hooks.mjs","sources":["../src/hooks/createContext.ts","../src/hooks/useBodyScrollLock.ts","../src/hooks/useComposedElements.ts","../src/hooks/useControllableState.ts","../src/hooks/useEscapeKeydown.ts","../src/hooks/useForwardElement.ts","../src/hooks/useId.ts","../src/hooks/useRef.ts","../src/hooks/useSize.ts","../src/hooks/useStateMachine.ts"],"sourcesContent":["import { inject, type InjectionKey, provide } from 'vue'\n\n/**\n * Create global state that can be injected into components.\n *\n * @see https://vueuse.org/createInjectionState\n *\n */\nexport function createContext<T>(contextName: string, defaultValue: T): readonly [useProvidingState: (state: T) => void, useContext: (consumerName?: string) => T, key: InjectionKey<T>]\nexport function createContext<T>(contextName: string): readonly [useProvidingState: (state: T) => void, useContext: (consumerName: string) => T, key: InjectionKey<T>]\nexport function createContext<T>(contextName: string, defaultValue?: T): readonly [useProvidingState: (state: T) => void, useContext: (consumerName?: string) => T, key: InjectionKey<T>] {\n  const key: InjectionKey<T> = Symbol(contextName)\n\n  const provideContext = (state: T) => {\n    provide(key, state)\n  }\n\n  const useContext = (consumerName?: string, value?: any) => {\n    const state = inject(key, value ?? defaultValue)\n\n    if (state === null)\n      return state as any\n\n    if (!state) {\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${contextName}\\``)\n    }\n\n    return state\n  }\n\n  return [provideContext, useContext, key]\n}\n","import { isClient, isIOS } from '@vueuse/core'\n\nexport function useBodyScrollLock(): () => void {\n  if (!isClient)\n    return () => {}\n\n  const body = document.body\n  if (body.hasAttribute('data-scroll-lock'))\n    return () => {}\n\n  const html = document.documentElement\n  const bodyStyle = body.style\n\n  const originalStyles = {\n    overflow: bodyStyle.overflow,\n    overflowX: bodyStyle.overflowX,\n    overflowY: bodyStyle.overflowY,\n    position: bodyStyle.position,\n    top: bodyStyle.top,\n    left: bodyStyle.left,\n    right: bodyStyle.right,\n    bottom: bodyStyle.bottom,\n    scrollBehavior: html.style.scrollBehavior,\n  }\n\n  const initialOverflow = bodyStyle.overflow\n  const scrollY = window.scrollY\n\n  bodyStyle.top = `-${scrollY}px`\n  bodyStyle.overflowX = 'hidden'\n  html.style.scrollBehavior = 'auto'\n\n  if (body.scrollHeight > window.innerHeight)\n    bodyStyle.setProperty('overflow-y', 'scroll', 'important')\n\n  bodyStyle.position = 'fixed'\n  bodyStyle.left = '0'\n  bodyStyle.right = '0'\n  bodyStyle.bottom = '0'\n  body.setAttribute('data-scroll-lock', 'true')\n\n  let stopTouchMoveListener: (() => void) | undefined\n\n  if (isIOS) {\n    function onTouchmove(e: TouchEvent) {\n      preventDefault(e)\n    }\n\n    document.addEventListener('touchmove', onTouchmove, {\n      passive: false,\n    })\n\n    stopTouchMoveListener = () => {\n      document.removeEventListener('touchmove', onTouchmove)\n    }\n  }\n\n  const unlock = () => {\n    bodyStyle.overflow = initialOverflow ?? ''\n    body.removeAttribute('data-scroll-lock')\n\n    bodyStyle.overflowY = originalStyles.overflowY\n    bodyStyle.position = originalStyles.position\n    bodyStyle.left = originalStyles.left\n    bodyStyle.right = originalStyles.right\n    bodyStyle.bottom = originalStyles.bottom\n\n    bodyStyle.top = originalStyles.top\n    window.scrollTo(0, scrollY)\n    html.style.scrollBehavior = originalStyles.scrollBehavior\n\n    stopTouchMoveListener?.()\n  }\n\n  return unlock\n}\n\nfunction preventDefault(event: TouchEvent): boolean {\n  const _target = event.target as Element\n\n  // Do not prevent if element or parentNodes have overflow: scroll set.\n  if (checkOverflowScroll(_target))\n    return false\n\n  // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n  if (event.touches.length > 1)\n    return true\n\n  if (event.preventDefault)\n    event.preventDefault()\n\n  return false\n}\n\nfunction checkOverflowScroll(el: Element): boolean {\n  const style = window.getComputedStyle(el)\n  if (\n    style.overflowX === 'scroll'\n    || style.overflowY === 'scroll'\n    || (style.overflowX === 'auto' && el.clientWidth < el.scrollWidth)\n    || (style.overflowY === 'auto' && el.clientHeight < el.scrollHeight)\n  ) {\n    return true\n  }\n  else {\n    const parent = el.parentNode as Element\n\n    if (!parent || parent.tagName === 'BODY')\n      return false\n\n    return checkOverflowScroll(parent)\n  }\n}\n","import type { ComponentPublicInstance } from 'vue'\n\nexport function useComposedElements<T extends HTMLElement = HTMLElement>(cb: (el: T | undefined) => void) {\n  function setRef(nodeRef: any) {\n    let node: T | undefined = (nodeRef as ComponentPublicInstance)?.$el ?? nodeRef\n\n    if (node && node.nodeType !== 1)\n      node = undefined\n\n    cb(node)\n  }\n\n  return setRef\n}\n","import { computed, nextTick, type Ref, shallowRef, type UnwrapRef, watch } from 'vue'\n\n// type NonUndefined<T> = T extends undefined ? never : T\n\n/**\n * Shorthand for v-model binding, props + emit -> ref\n *\n * @see https://vueuse.org/useVModel\n * @param props\n * @param key\n * @param onChange\n * @param defaultValue\n */\nexport function useControllableState<P extends object, K extends keyof P, V = P[K]>(\n  props: P,\n  key: K,\n  onChange: (value: V) => void,\n  defaultValue?: V,\n): Ref<V> {\n  if (props[key] !== undefined) {\n    return computed<V>({\n      get() {\n        return (props[key] ?? defaultValue) as V\n      },\n      set(value) {\n        onChange(value)\n      },\n    })\n  }\n\n  const proxy = shallowRef<V>(defaultValue as V)\n  let isUpdating = false\n\n  watch(\n    () => props[key!],\n    (v) => {\n      if (!isUpdating) {\n        isUpdating = true\n        proxy.value = v as UnwrapRef<P[K]>\n        nextTick(() => isUpdating = false)\n      }\n    },\n  )\n\n  watch(\n    proxy,\n    (v) => {\n      if (!isUpdating && (v !== props[key!]))\n        onChange(v)\n    },\n  )\n\n  return proxy\n}\n\nexport function useControllableStateV2<P, U = P, V = P>(\n  prop: (() => P) | undefined,\n  onChange: ((value: U) => void) | undefined,\n  defaultValue: V | undefined,\n): Ref<V> {\n  const _isDef = prop?.() !== undefined\n\n  if (_isDef) {\n    return computed<V>({\n      get() {\n        return (prop?.() ?? defaultValue) as V\n      },\n      set(value) {\n        onChange?.(value as unknown as U)\n      },\n    })\n  }\n\n  const proxy = shallowRef<V>(defaultValue as V)\n  let isUpdating = false\n\n  if (prop) {\n    watch(\n      prop,\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true\n          ; (proxy as any).value = v\n          nextTick(() => isUpdating = false)\n        }\n      },\n    )\n  }\n\n  watch(\n    proxy,\n    (v) => {\n      if (!isUpdating && (v !== prop?.()))\n        onChange?.(v)\n    },\n  )\n\n  return proxy\n}\n\nexport function useControllableStateV3<P, U = P, V = P>(\n  prop: (() => P) | undefined,\n  onChange: ((value: U) => void) | undefined,\n  defaultValue: () => V,\n): Ref<V> {\n  const _isDef = prop?.() !== undefined\n\n  if (_isDef) {\n    return computed<V>({\n      get() {\n        return (prop?.() ?? defaultValue()) as V\n      },\n      set(value) {\n        onChange?.(value as unknown as U)\n      },\n    })\n  }\n\n  const proxy = shallowRef<V>(defaultValue() as V)\n  let isUpdating = false\n\n  if (prop) {\n    watch(\n      prop,\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true\n          ; (proxy as any).value = v\n          nextTick(() => isUpdating = false)\n        }\n      },\n    )\n  }\n\n  watch(\n    proxy,\n    (v) => {\n      if (!isUpdating && (v !== prop?.()))\n        onChange?.(v)\n    },\n  )\n\n  return proxy\n}\n","import { type MaybeRefOrGetter, onBeforeUnmount, onMounted, toValue } from 'vue'\n\nlet registeredEscapeHandlers: ((e: KeyboardEvent) => void)[] = []\n\nfunction cachedHandler(e: Event) {\n  const event = e as KeyboardEvent\n  if (event.key !== 'Escape')\n    return\n\n  for (const registeredHandler of registeredEscapeHandlers) {\n    registeredHandler(event)\n  }\n}\n\nexport function useEscapeKeydown(handler: (e: KeyboardEvent) => void, ownerDocument: MaybeRefOrGetter<Document | undefined> = globalThis?.document) {\n  let document: Document | undefined\n\n  onMounted(() => {\n    if (registeredEscapeHandlers.length === 0) {\n      document = toValue(ownerDocument)!\n      document.addEventListener('keydown', cachedHandler)\n    }\n    registeredEscapeHandlers.push(handler)\n  })\n\n  onBeforeUnmount(() => {\n    registeredEscapeHandlers = registeredEscapeHandlers.filter(\n      registeredHandler => registeredHandler !== handler,\n    )\n\n    if (registeredEscapeHandlers.length === 0) {\n      document?.removeEventListener('keydown', cachedHandler)\n    }\n  })\n}\n","import type { ComponentPublicInstance, Ref } from 'vue'\nimport type { MutableRefObject } from './useRef.ts'\n\nexport function useForwardElement<T extends HTMLElement = HTMLElement>(elRef: Ref<T | undefined> | MutableRefObject<T | undefined>) {\n  function setRef(nodeRef: Element | ComponentPublicInstance | null | undefined) {\n    let node: T | undefined = (nodeRef as ComponentPublicInstance)?.$el ?? nodeRef\n\n    if (node && node.nodeType !== 1)\n      node = undefined\n\n    elRef.value = node\n  }\n\n  return setRef\n}\n","import { useId as _useId } from 'vue'\n\nexport const useId = _useId as () => string\n","import type { IfAny } from '@vue/shared'\nimport type { Ref } from 'vue'\n\nexport interface MutableRefObject<T> {\n  value: T\n}\n\nexport interface RefObject<T> {\n  readonly value: T\n}\n\nexport function useRef<T>(value: T): Ref extends T\n  ? T extends Ref\n    ? IfAny<T, MutableRefObject<T>, T>\n    : MutableRefObject<T>\n  : MutableRefObject<T>\nexport function useRef<T = any>(): MutableRefObject<T | undefined>\nexport function useRef(initialValue?: unknown) {\n  return { value: initialValue }\n}\n","import { type MaybeRefOrGetter, onWatcherCleanup, shallowRef, toValue, watch } from 'vue'\n\ninterface Size {\n  width: number\n  height: number\n}\n\nexport function useSize(elementRef: MaybeRefOrGetter<HTMLElement | undefined>) {\n  const size = shallowRef<Size>()\n\n  watch(() => toValue(elementRef), (element) => {\n    if (!element) {\n    // We only want to reset to `undefined` when the element becomes `null`,\n    // not if it changes to another element.\n      size.value = undefined\n\n      return\n    }\n\n    size.value = { width: element.offsetWidth, height: element.offsetHeight }\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      if (!Array.isArray(entries))\n        return\n\n      // Since we only observe the one element, we don't need to loop over the\n      // array\n      if (!entries.length)\n        return\n\n      const entry = entries[0]\n      let width: number\n      let height: number\n\n      if (entry && 'borderBoxSize' in entry) {\n        const borderSizeEntry = entry.borderBoxSize\n        // iron out differences between browsers\n        const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry\n        width = borderSize.inlineSize\n        height = borderSize.blockSize\n      }\n      else {\n        // for browsers that don't support `borderBoxSize`\n        // we calculate it ourselves to get the correct border box.\n        width = element!.offsetWidth\n        height = element!.offsetHeight\n      }\n\n      size.value = { width, height }\n    })\n\n    resizeObserver.observe(element, { box: 'border-box' })\n\n    onWatcherCleanup(() => {\n      resizeObserver.unobserve(element)\n    })\n  }, { flush: 'post' })\n\n  return size\n}\n","import { type Ref, shallowRef } from 'vue'\n\ninterface Machine<S> { [k: string]: { [k: string]: S } }\ntype MachineState<T> = keyof T\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n  ? R\n  : never\n\nexport function useStateMachine<M extends object>(\n  initialState: MachineState<M>,\n  machine: M & Machine<MachineState<M>>,\n) {\n  const state = (shallowRef as any)(initialState) as Ref<MachineState<M>>\n\n  function reducer(event: MachineEvent<M>) {\n    const nextState = (machine[state.value] as any)[event]\n    return nextState ?? state.value\n  }\n\n  function send(event: MachineEvent<M>) {\n    state.value = reducer(event)\n  }\n\n  return [\n    state,\n    send,\n  ] as const\n}\n"],"names":["_useId"],"mappings":"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"}