{"version":3,"file":"helpers.mjs","names":["camelize","capitalize","computed","Fragment","reactive","toRefs","watchEffect","getNestedValue","obj","path","fallback","last","length","undefined","i","deepEqual","a","b","Date","getTime","Object","props","keys","every","p","getObjectValueByPath","replace","split","getPropertyFromItem","item","property","value","Array","isArray","createRange","start","arguments","from","v","k","getZIndex","el","nodeType","Node","ELEMENT_NODE","index","window","getComputedStyle","getPropertyValue","parentNode","convertToUnit","str","unit","isNaN","String","isFinite","concat","Number","isObject","_typeof","refElement","$el","keyCodes","freeze","enter","tab","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","shift","keyValues","o","has","key","hasOwnProperty","pick","paths","exclude","found","create","rest","_loop","some","RegExp","test","omit","clone","_objectSpread","forEach","prop","filterInputAttrs","attrs","arrayDiff","diff","includes","push","wrapInArray","defaultFilter","search","toString","toLocaleLowerCase","indexOf","searchItems","items","toLowerCase","trim","filter","debounce","fn","delay","timeoutId","_len","args","_key","clearTimeout","setTimeout","apply","throttle","limit","throttling","getPrefixedSlots","prefix","slots","startsWith","reduce","clamp","min","max","Math","getDecimals","trimmedStr","padEnd","char","repeat","padStart","chunk","size","chunked","substr","humanReadableFileSize","bytes","base","abs","toFixed","camelizeObjectKeys","mergeDeep","source","target","arrayFn","out","sourceProperty","targetProperty","fillArray","fill","flattenFragments","nodes","map","node","type","children","flat","randomHexColor","n","random","slice","toKebabCase","cache","get","kebab","set","Map","findChildren","vnode","child","component","_vnode$component","_toConsumableArray","subTree","findChildrenWithProvide","getOwnPropertySymbols","provides","_arr","WeakMap","_pointer","CircularBuffer","_classCallCheck","_classPrivateFieldInitSpec","writable","_createClass","val","_classPrivateFieldGet","_classPrivateFieldSet","values","getEventCoordinates","e","clientX","touches","clientY","destructComputed","getter","refs","flush","arr","onRE","isOn","eventName","propName","EventProp","Function","hasEvent","name","callEvent","handler","_len2","_key3","_iterator","_createForOfIteratorHelper","_step","s","done","h","err","f","focusableChildren","targets","join","querySelectorAll","focusChild","location","focusable","idx","document","activeElement","contains","_focusable$","focus","_focusable$2","_focusable$at","at","_el","idxx","inc","offsetParent","noop"],"sources":["../../src/utils/helpers.ts"],"sourcesContent":["// Utilities\nimport {\n  camelize,\n  capitalize,\n  computed,\n  Fragment,\n  reactive,\n  toRefs,\n  watchEffect,\n} from 'vue'\n\n// Types\nimport type {\n  ComponentInternalInstance,\n  ComponentPublicInstance,\n  ComputedGetter,\n  InjectionKey,\n  PropType,\n  Ref,\n  Slots,\n  ToRefs,\n  VNode,\n  VNodeChild,\n} from 'vue'\n\nexport function getNestedValue(\n  obj: any,\n  path: (string | number)[],\n  fallback?: any\n): any {\n  const last = path.length - 1\n\n  if (last < 0) return obj === undefined ? fallback : obj\n\n  for (let i = 0; i < last; i++) {\n    if (obj == null) {\n      return fallback\n    }\n    obj = obj[path[i]]\n  }\n\n  if (obj == null) return fallback\n\n  return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n  if (a === b) return true\n\n  if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n    // If the values are Date, compare them as timestamps\n    return false\n  }\n\n  if (a !== Object(a) || b !== Object(b)) {\n    // If the values aren't objects, they were already checked for equality\n    return false\n  }\n\n  const props = Object.keys(a)\n\n  if (props.length !== Object.keys(b).length) {\n    // Different number of props, don't bother to check\n    return false\n  }\n\n  return props.every((p) => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath(\n  obj: any,\n  path: string,\n  fallback?: any\n): any {\n  // eslint-disable-next-line max-len\n  // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n  if (obj == null || !path || typeof path !== 'string') return fallback\n  if (obj[path] !== undefined) return obj[path]\n  path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n  path = path.replace(/^\\./, '') // strip a leading dot\n  return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport type SelectItemKey =\n  | boolean // Ignored\n  | string // Lookup by key, can use dot notation for nested objects\n  | (string | number)[] // Nested lookup by key, each array item is a key in the next level\n  | ((item: Record<string, any>, fallback?: any) => any)\n\nexport function getPropertyFromItem(\n  item: any,\n  property: SelectItemKey,\n  fallback?: any\n): any {\n  if (property == null) return item === undefined ? fallback : item\n\n  if (item !== Object(item)) {\n    if (typeof property !== 'function') return fallback\n\n    const value = property(item, fallback)\n\n    return typeof value === 'undefined' ? fallback : value\n  }\n\n  if (typeof property === 'string')\n    return getObjectValueByPath(item, property, fallback)\n\n  if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n  if (typeof property !== 'function') return fallback\n\n  const value = property(item, fallback)\n\n  return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange(length: number, start = 0): number[] {\n  return Array.from({ length }, (v, k) => start + k)\n}\n\nexport function getZIndex(el?: Element | null): number {\n  if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n  const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n  if (!index) return getZIndex(el.parentNode as Element)\n  return index\n}\n\nexport function convertToUnit(str: number, unit?: string): string\nexport function convertToUnit(\n  str: string | number | null | undefined,\n  unit?: string\n): string | undefined\nexport function convertToUnit(\n  str: string | number | null | undefined,\n  unit = 'px'\n): string | undefined {\n  if (str == null || str === '') {\n    return undefined\n  } else if (isNaN(+str!)) {\n    return String(str)\n  } else if (!isFinite(+str!)) {\n    return undefined\n  } else {\n    return `${Number(str)}${unit}`\n  }\n}\n\nexport function isObject(obj: any): obj is object {\n  return obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n\nexport function refElement<T extends object | undefined>(\n  obj: T\n): Exclude<T, ComponentPublicInstance> | HTMLElement {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  return obj && '$el' in obj ? (obj.$el as HTMLElement) : (obj as HTMLElement)\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n  enter: 13,\n  tab: 9,\n  delete: 46,\n  esc: 27,\n  space: 32,\n  up: 38,\n  down: 40,\n  left: 37,\n  right: 39,\n  end: 35,\n  home: 36,\n  del: 46,\n  backspace: 8,\n  insert: 45,\n  pageup: 33,\n  pagedown: 34,\n  shift: 16,\n})\n\nexport const keyValues: Record<string, string> = Object.freeze({\n  enter: 'Enter',\n  tab: 'Tab',\n  delete: 'Delete',\n  esc: 'Escape',\n  space: 'Space',\n  up: 'ArrowUp',\n  down: 'ArrowDown',\n  left: 'ArrowLeft',\n  right: 'ArrowRight',\n  end: 'End',\n  home: 'Home',\n  del: 'Delete',\n  backspace: 'Backspace',\n  insert: 'Insert',\n  pageup: 'PageUp',\n  pagedown: 'PageDown',\n  shift: 'Shift',\n})\n\nexport function keys<O extends {}>(o: O) {\n  return Object.keys(o) as (keyof O)[]\n}\n\nexport function has<T extends string>(\n  obj: object,\n  key: T[]\n): obj is Record<T, unknown> {\n  // eslint-disable-next-line no-prototype-builtins\n  return key.every((k) => obj.hasOwnProperty(k))\n}\n\ntype MaybePick<T extends object, U extends Extract<keyof T, string>> = Record<\n  string,\n  unknown\n> extends T\n  ? Partial<Pick<T, U>>\n  : Pick<T, U>\n\n// Array of keys\nexport function pick<\n  T extends object,\n  U extends Extract<keyof T, string>,\n  E extends Extract<keyof T, string>\n>(\n  obj: T,\n  paths: U[],\n  exclude?: E[]\n): [yes: MaybePick<T, Exclude<U, E>>, no: Omit<T, Exclude<U, E>>]\n// Array of keys or RegExp to test keys against\nexport function pick<\n  T extends object,\n  U extends Extract<keyof T, string>,\n  E extends Extract<keyof T, string>\n>(\n  obj: T,\n  paths: (U | RegExp)[],\n  exclude?: E[]\n): [yes: Partial<T>, no: Partial<T>]\nexport function pick<\n  T extends object,\n  U extends Extract<keyof T, string>,\n  E extends Extract<keyof T, string>\n>(\n  obj: T,\n  paths: (U | RegExp)[],\n  exclude?: E[]\n): [yes: Partial<T>, no: Partial<T>] {\n  const found = Object.create(null)\n  const rest = Object.create(null)\n\n  for (const key in obj) {\n    if (\n      paths.some((path) =>\n        path instanceof RegExp ? path.test(key) : path === key\n      ) &&\n      !exclude?.some((path) => path === key)\n    ) {\n      found[key] = obj[key]\n    } else {\n      rest[key] = obj[key]\n    }\n  }\n\n  return [found, rest]\n}\n\nexport function omit<T extends object, U extends Extract<keyof T, string>>(\n  obj: T,\n  exclude: U[]\n): Omit<T, U> {\n  const clone = { ...obj }\n\n  exclude.forEach((prop) => delete clone[prop])\n\n  return clone\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of a an input component. Remaining\n * attributes should be passed to the <input> element inside.\n */\nexport function filterInputAttrs(attrs: Record<string, unknown>) {\n  return pick(attrs, ['class', 'style', 'id', /^data-/])\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff(a: any[], b: any[]): any[] {\n  const diff: any[] = []\n  for (let i = 0; i < b.length; i++) {\n    if (!a.includes(b[i])) diff.push(b[i])\n  }\n  return diff\n}\n\ntype IfAny<T, Y, N> = 0 extends 1 & T ? Y : N\nexport function wrapInArray<T>(\n  v: T | null | undefined\n): T extends readonly any[] ? IfAny<T, T[], T> : NonNullable<T>[] {\n  return v == null ? [] : Array.isArray(v) ? (v as any) : [v]\n}\n\nexport function defaultFilter(value: any, search: string | null, item: any) {\n  return (\n    value != null &&\n    search != null &&\n    typeof value !== 'boolean' &&\n    value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !==\n      -1\n  )\n}\n\nexport function searchItems<T extends any = any>(\n  items: T[],\n  search: string\n): T[] {\n  if (!search) return items\n  search = search.toString().toLowerCase()\n  if (search.trim() === '') return items\n\n  return items.filter((item: any) =>\n    Object.keys(item).some((key) =>\n      defaultFilter(getObjectValueByPath(item, key), search, item)\n    )\n  )\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function debounce(fn: Function, delay: number) {\n  let timeoutId = 0 as any\n  return (...args: any[]) => {\n    clearTimeout(timeoutId)\n    timeoutId = setTimeout(() => fn(...args), delay)\n  }\n}\n\nexport function throttle<T extends (...args: any[]) => any>(\n  fn: T,\n  limit: number\n) {\n  let throttling = false\n  return (...args: Parameters<T>): void | ReturnType<T> => {\n    if (!throttling) {\n      throttling = true\n      setTimeout(() => (throttling = false), limit)\n      return fn(...args)\n    }\n  }\n}\n\ntype Writable<T> = {\n  -readonly [P in keyof T]: T[P]\n}\n\n/**\n * Filters slots to only those starting with `prefix`, removing the prefix\n */\nexport function getPrefixedSlots(prefix: string, slots: Slots): Slots {\n  return Object.keys(slots)\n    .filter((k) => k.startsWith(prefix))\n    .reduce<Writable<Slots>>((obj, k) => {\n      obj[k.replace(prefix, '')] = slots[k]\n      return obj\n    }, {})\n}\n\nexport function clamp(value: number, min = 0, max = 1) {\n  return Math.max(min, Math.min(max, value))\n}\n\nexport function getDecimals(value: number) {\n  const trimmedStr = value.toString().trim()\n  return trimmedStr.includes('.')\n    ? trimmedStr.length - trimmedStr.indexOf('.') - 1\n    : 0\n}\n\nexport function padEnd(str: string, length: number, char = '0') {\n  return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function padStart(str: string, length: number, char = '0') {\n  return char.repeat(Math.max(0, length - str.length)) + str\n}\n\nexport function chunk(str: string, size = 1) {\n  const chunked: string[] = []\n  let index = 0\n  while (index < str.length) {\n    chunked.push(str.substr(index, size))\n    index += size\n  }\n  return chunked\n}\n\nexport function humanReadableFileSize(\n  bytes: number,\n  base: 1000 | 1024 = 1000\n): string {\n  if (bytes < base) {\n    return `${bytes} B`\n  }\n\n  const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n  let unit = -1\n  while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n    bytes /= base\n    ++unit\n  }\n  return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys(\n  obj: Record<string, any> | null | undefined\n) {\n  if (!obj) return {}\n\n  return Object.keys(obj).reduce((o: any, key: string) => {\n    o[camelize(key)] = obj[key]\n    return o\n  }, {})\n}\n\nexport function mergeDeep(\n  source: Record<string, any> = {},\n  target: Record<string, any> = {},\n  arrayFn?: (a: unknown[], b: unknown[]) => unknown[]\n) {\n  const out: Record<string, any> = {}\n\n  for (const key in source) {\n    out[key] = source[key]\n  }\n\n  for (const key in target) {\n    const sourceProperty = source[key]\n    const targetProperty = target[key]\n\n    // Only continue deep merging if\n    // both properties are objects\n    if (isObject(sourceProperty) && isObject(targetProperty)) {\n      out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn)\n\n      continue\n    }\n\n    if (\n      Array.isArray(sourceProperty) &&\n      Array.isArray(targetProperty) &&\n      arrayFn\n    ) {\n      out[key] = arrayFn(sourceProperty, targetProperty)\n\n      continue\n    }\n\n    out[key] = targetProperty\n  }\n\n  return out\n}\n\nexport function fillArray<T>(length: number, obj: T) {\n  return Array(length).fill(obj)\n}\n\nexport function flattenFragments(nodes: VNode[]): VNode[] {\n  return nodes\n    .map((node) => {\n      if (node.type === Fragment) {\n        return flattenFragments(node.children as VNode[])\n      } else {\n        return node\n      }\n    })\n    .flat()\n}\n\nexport const randomHexColor = () => {\n  const n = (Math.random() * 0xfffff * 1000000).toString(16)\n  return '#' + n.slice(0, 6)\n}\n\nexport function toKebabCase(str = '') {\n  if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str)!\n  const kebab = str\n    .replace(/[^a-z]/gi, '-')\n    .replace(/\\B([A-Z])/g, '-$1')\n    .toLowerCase()\n  toKebabCase.cache.set(str, kebab)\n  return kebab\n}\ntoKebabCase.cache = new Map<string, string>()\n\nexport type MaybeRef<T> = T | Ref<T>\n\nexport function findChildren(vnode?: VNodeChild): ComponentInternalInstance[] {\n  if (!vnode || typeof vnode !== 'object') {\n    return []\n  }\n\n  if (Array.isArray(vnode)) {\n    return vnode\n      .map((child) => findChildren(child))\n      .filter((v) => v)\n      .flat(1)\n  } else if (Array.isArray(vnode.children)) {\n    return vnode.children\n      .map((child) => findChildren(child))\n      .filter((v) => v)\n      .flat(1)\n  } else if (vnode.component) {\n    return [vnode.component, ...findChildren(vnode.component?.subTree)]\n      .filter((v) => v)\n      .flat(1)\n  }\n\n  return []\n}\n\nexport function findChildrenWithProvide(\n  key: InjectionKey<any> | symbol,\n  vnode?: VNodeChild\n): ComponentInternalInstance[] {\n  if (!vnode || typeof vnode !== 'object') return []\n\n  if (Array.isArray(vnode)) {\n    return vnode.map((child) => findChildrenWithProvide(key, child)).flat(1)\n  } else if (Array.isArray(vnode.children)) {\n    return vnode.children\n      .map((child) => findChildrenWithProvide(key, child))\n      .flat(1)\n  } else if (vnode.component) {\n    if (\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      Object.getOwnPropertySymbols(vnode.component.provides).includes(\n        key as symbol\n      )\n    ) {\n      return [vnode.component]\n    } else if (vnode.component.subTree) {\n      return findChildrenWithProvide(key, vnode.component.subTree).flat(1)\n    }\n  }\n\n  return []\n}\n\nexport class CircularBuffer<T = never> {\n  readonly #arr: Array<T> = []\n  #pointer = 0\n\n  constructor(public readonly size: number) {}\n\n  push(val: T) {\n    this.#arr[this.#pointer] = val\n    this.#pointer = (this.#pointer + 1) % this.size\n  }\n\n  values(): T[] {\n    return this.#arr\n      .slice(this.#pointer)\n      .concat(this.#arr.slice(0, this.#pointer))\n  }\n}\n\nexport type UnionToIntersection<U> = (\n  U extends any ? (k: U) => void : never\n) extends (k: infer I) => void\n  ? I\n  : never\n\nexport function getEventCoordinates(e: MouseEvent | TouchEvent) {\n  if ('touches' in e) {\n    return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n  }\n\n  return { clientX: e.clientX, clientY: e.clientY }\n}\n\n// Only allow a single return type\ntype NotAUnion<T> = [T] extends [infer U] ? _NotAUnion<U, U> : never\ntype _NotAUnion<T, U> = U extends any\n  ? [T] extends [U]\n    ? unknown\n    : never\n  : never\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\nexport function destructComputed<T extends object>(\n  getter: ComputedGetter<T & NotAUnion<T>>\n): ToRefs<T>\nexport function destructComputed<T extends object>(getter: ComputedGetter<T>) {\n  const refs = reactive({}) as T\n  const base = computed(getter)\n  watchEffect(\n    () => {\n      for (const key in base.value) {\n        refs[key] = base.value[key]\n      }\n    },\n    { flush: 'sync' }\n  )\n  return toRefs(refs)\n}\n\n/** Array.includes but value can be any type */\nexport function includes(arr: readonly any[], val: any) {\n  return arr.includes(val)\n}\n\nconst onRE = /^on[^a-z]/\nexport const isOn = (key: string) => onRE.test(key)\n\nexport function eventName(propName: string) {\n  return propName[2].toLowerCase() + propName.slice(3)\n}\n\nexport type EventProp<T extends any[] = any[], F = (...args: T) => any> =\n  | F\n  | F[]\nexport const EventProp = <T extends any[] = any[]>() =>\n  [Function, Array] as PropType<EventProp<T>>\n\nexport function hasEvent(props: Record<string, any>, name: string) {\n  name = 'on' + capitalize(name)\n  return !!(\n    props[name] ||\n    props[`${name}Once`] ||\n    props[`${name}Capture`] ||\n    props[`${name}OnceCapture`] ||\n    props[`${name}CaptureOnce`]\n  )\n}\n\nexport function callEvent<T extends any[]>(\n  handler: EventProp<T> | undefined,\n  ...args: T\n) {\n  if (Array.isArray(handler)) {\n    for (const h of handler) {\n      h(...args)\n    }\n  } else if (typeof handler === 'function') {\n    handler(...args)\n  }\n}\n\nexport function focusableChildren(el: Element) {\n  const targets = [\n    'button',\n    '[href]',\n    'input:not([type=\"hidden\"])',\n    'select',\n    'textarea',\n    '[tabindex]',\n  ]\n    .map((s) => `${s}:not([tabindex=\"-1\"]):not([disabled])`)\n    .join(', ')\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  return [...el.querySelectorAll(targets)] as HTMLElement[]\n}\n\nexport function focusChild(\n  el: Element,\n  location?: 'next' | 'prev' | 'first' | 'last'\n) {\n  const focusable = focusableChildren(el)\n  const idx = focusable.indexOf(document.activeElement as HTMLElement)\n\n  if (!location) {\n    if (el === document.activeElement || !el.contains(document.activeElement)) {\n      focusable[0]?.focus()\n    }\n  } else if (location === 'first') {\n    focusable[0]?.focus()\n  } else if (location === 'last') {\n    focusable.at(-1)?.focus()\n  } else {\n    let _el\n    let idxx = idx\n    const inc = location === 'next' ? 1 : -1\n    do {\n      idxx += inc\n      _el = focusable[idxx]\n    } while (\n      (!_el || _el.offsetParent == null) &&\n      idxx < focusable.length &&\n      idxx >= 0\n    )\n    if (_el) _el.focus()\n    else focusChild(el, location === 'next' ? 'first' : 'last')\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n"],"mappings":"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"}