{"version":3,"file":"shared.mjs","sources":["../src/shared/composeEventHandlers.ts","../src/shared/convertPropsToHookProps.ts","../src/shared/focusFirst.ts","../src/shared/general.ts","../src/shared/getElFromTemplateRef.ts","../src/shared/getRawChildren.ts","../src/shared/isPointInPolygon.ts","../src/shared/mergeProps.ts"],"sourcesContent":["export function composeEventHandlers<E extends Event>(\n  originalEventHandler?: (event: E) => void,\n  ourEventHandler?: (event: E) => void,\n  { checkForDefaultPrevented = true } = {},\n) {\n  return function handleEvent(event: E) {\n    originalEventHandler?.(event)\n\n    if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented)\n      ourEventHandler?.(event)\n  }\n}\n","import type { Prettify } from '@vue/shared'\n\ntype ReplaceProps<T, K extends keyof T> = Omit<T, K> & { [P in K]: () => T[P] }\n\nexport function convertPropsToHookProps<\n  T extends Record<string, any>,\n  K extends keyof T,\n  EP extends Record<string, (...args: any[]) => any>,\n>(props: T, reactiveProps: K[], emits: () => EP): Prettify<ReplaceProps<T, K> & EP>\n\nexport function convertPropsToHookProps<\n  T extends Record<string, any>,\n  K extends keyof T,\n>(props: T, reactiveProps: K[]): Prettify<ReplaceProps<T, K>>\n\nexport function convertPropsToHookProps<\n  T extends Record<string, any>,\n>(props: T): Prettify<T>\n\nexport function convertPropsToHookProps(props: any, reactiveProps?: any, emits?: any) {\n  const result = (emits ? { ...props, ...emits() } : { ...props }) as Record<string, any>\n\n  if (!reactiveProps) {\n    return result\n  }\n\n  for (const field of reactiveProps) {\n    result[field] = () => props[field]\n  }\n\n  return result as any\n}\n","export function focusFirst(candidates: HTMLElement[], preventScroll = false) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement\n\n  for (const candidate of candidates) {\n    // if focus is already where we want to go, we don't want to keep going through the candidates\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT)\n      return true\n\n    candidate.focus({ preventScroll })\n\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT)\n      return true\n  }\n\n  return false\n}\n","// Is\n\nexport { isArray, isFunction } from '@vue/shared'\n\nexport const isDef = <T = any>(val?: T): val is T => typeof val !== 'undefined'\nexport const isPropFalsy = <T = any>(val?: T): val is T => val == null || val === false\n\nexport function isNumber(value: unknown): value is number {\n  return typeof value === 'number'\n}\n\n// Array\n\nexport function arrayify<T>(value: T | T[]): T[] {\n  return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n  const ret: T[] = []\n\n  for (let i = 0; i < array.length; i++) {\n    ret.push(array[(startIndex + i) % array.length]!)\n  }\n\n  return ret\n}\n\n// Number\n\nexport function clamp(value: number, min: number, max: number): number {\n  return Math.min(max, Math.max(min, value))\n}\n\nexport function roundValue(value: number, decimalCount: number) {\n  const rounder = 10 ** decimalCount\n  return Math.round(value * rounder) / rounder\n}\n\nexport function getDecimalCount(value: number) {\n  return (String(value).split('.')[1] || '').length\n}\n","import type { ComponentPublicInstance } from 'vue'\nimport type { VNodeRef } from './typeUtils'\n\nexport function getElFromTemplateRef<T extends HTMLElement>(nodeRef: VNodeRef) {\n  let node: T | undefined = (nodeRef as ComponentPublicInstance)?.$el ?? nodeRef\n\n  if (node && node.nodeType !== 1)\n    node = undefined\n\n  return node\n}\n","import { PatchFlags } from '@vue/shared'\nimport { Comment, Fragment, type VNode } from 'vue'\n\n// TODO: wip\nexport function getRawChildren(children: VNode[]): VNode[] {\n  let ret: VNode[] = []\n  let keyedFragmentCount = 0\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i]!\n    // #5360 inherit parent key in case of <template v-for>\n    // const key\n    //   = parentKey == null\n    //     ? child.key\n    //     : String(parentKey) + String(child.key != null ? child.key : i)\n    // handle fragment children case, e.g. v-for\n    if (child.type === Fragment) {\n      if (child.patchFlag & PatchFlags.KEYED_FRAGMENT)\n        keyedFragmentCount++\n      ret = ret.concat(\n        getRawChildren(child.children as VNode[]),\n      )\n    }\n    // comment placeholders should be skipped, e.g. v-if\n    else if (child.type !== Comment) {\n      ret.push(child)\n    }\n  }\n  // #1126 if a transition children list contains multiple sub fragments, these\n  // fragments will be merged into a flat children array. Since each v-for\n  // fragment may contain different static bindings inside, we need to de-op\n  // these children to force full diffs to ensure correct behavior.\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i]!.patchFlag = PatchFlags.BAIL\n    }\n  }\n  return ret\n}\n","export type Point = [number, number]\nexport type Polygon = Point[]\n\n// @see floatin-ui\nexport function isPointInPolygon(point: Point, polygon: Polygon) {\n  const [x, y] = point\n  let isInside = false\n  const length = polygon.length\n  for (let i = 0, j = length - 1; i < length; j = i++) {\n    const [xi, yi] = polygon[i] || [0, 0]\n    const [xj, yj] = polygon[j] || [0, 0]\n    const intersect\n      // eslint-disable-next-line style/no-mixed-operators\n      = yi >= y !== yj >= y && x <= ((xj - xi) * (y - yi)) / (yj - yi) + xi\n    if (intersect) {\n      isInside = !isInside\n    }\n  }\n  return isInside\n}\n","import type { PrimitiveElAttrs, VNodeRef } from './typeUtils'\nimport { isArray, isOn, NOOP } from '@vue/shared'\nimport { normalizeClass, normalizeStyle, type VNodeProps } from 'vue'\nimport { getElFromTemplateRef } from './getElFromTemplateRef.ts'\n\nexport type IAttrsData = Record<string, unknown> & VNodeProps\n\nexport function mergePrimitiveAttrs(attrs: PrimitiveElAttrs, extraAttrsList: PrimitiveElAttrs[]): PrimitiveElAttrs {\n  const ret = attrs\n\n  for (let i = 0; i < extraAttrsList.length; i++) {\n    const extraAttrs = extraAttrsList[i]!\n\n    for (const propName in extraAttrs) {\n      if (propName === 'class') {\n        if (ret.class !== extraAttrs.class) {\n          ret.class = normalizeClass([ret.class, extraAttrs.class])\n        }\n      }\n      else if (propName === 'style') {\n        ret.style = normalizeStyle([ret.style, extraAttrs.style])\n      }\n      else if (isOn(propName)) {\n        const incoming = extraAttrs[propName]\n\n        if (incoming) {\n          const existing = ret[propName]\n\n          if (existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n            ret[propName] = existing ? [].concat(incoming as any, existing as any) : incoming\n          }\n        }\n      }\n      else if (propName === 'ref') {\n        const incoming = extraAttrs[propName]\n        if (incoming) {\n          const existing = ret[propName]\n          ret[propName] = existing ? [].concat(existing as any, incoming as any) : incoming\n        }\n      }\n      else if (propName === 'elRef') {\n        const incoming = extraAttrs[propName]\n        if (incoming) {\n          const existing = ret[propName]\n          ret[propName] = existing ? [].concat(existing as any, incoming as any) : incoming\n        }\n      }\n      else if (propName !== '') {\n        ret[propName] = extraAttrs[propName]\n      }\n    }\n  }\n\n  return ret\n}\n\nexport function normalizeAttrs(attrs: PrimitiveElAttrs): IAttrsData {\n  const _elRef = attrs.elRef\n  delete attrs.elRef\n\n  let elRef: ((vNodeRef: VNodeRef) => void) | undefined\n  if (_elRef) {\n    elRef = (templateRef: VNodeRef) => {\n      const el = getElFromTemplateRef(templateRef)\n\n      if (Array.isArray(_elRef)) {\n        for (const setRef of _elRef) {\n          setRef(el)\n        }\n      }\n      else {\n        _elRef(el)\n      }\n    }\n  }\n\n  const _templateRef = attrs.ref\n  delete attrs.ref\n\n  let templateRef = _templateRef as ((vNodeRef: VNodeRef) => void) | undefined\n\n  if (_templateRef) {\n    if (Array.isArray(_templateRef)) {\n      templateRef = (templateRef: any) => {\n        for (const setRef of _templateRef) {\n          setRef(templateRef)\n        }\n      }\n    }\n  }\n\n  if (elRef && templateRef) {\n    attrs.ref = (vNodeRef: VNodeRef) => {\n      elRef(vNodeRef)\n      templateRef(vNodeRef)\n    }\n  }\n  else if (elRef) {\n    attrs.ref = elRef\n  }\n  else if (templateRef) {\n    attrs.ref = templateRef\n  }\n\n  const disabled = attrs.disabled === true || attrs['data-disabled'] != null || attrs['aria-disabled'] === true\n\n  if (disabled) {\n    for (const propName in attrs) {\n      if (isOn(propName) && attrs[propName] !== undefined) {\n        attrs[propName] = NOOP\n      }\n    }\n  }\n\n  return attrs\n}\n"],"names":["templateRef"],"mappings":"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"}