{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/popper/src/utils.ts"],"sourcesContent":["import type { ComponentPublicInstance } from 'vue'\r\nimport type { UsePopperCoreConfigProps, Measurable } from './popper'\r\n\r\ntype ArrowProps = {\r\n  arrowEl: HTMLElement | null\r\n  arrowOffset: number | undefined\r\n}\r\n\r\nexport const buildPopperOptions = (\r\n  props: UsePopperCoreConfigProps,\r\n  arrowProps: ArrowProps\r\n) => {\r\n  const { placement, strategy, popperOptions } = props\r\n  const options = {\r\n    placement,\r\n    strategy,\r\n    ...popperOptions,\r\n    modifiers: genModifiers(props),\r\n  }\r\n\r\n  attachArrow(options, arrowProps)\r\n  deriveExtraModifiers(options, popperOptions?.modifiers)\r\n  return options\r\n}\r\n\r\nexport const unwrapMeasurableEl = (\r\n  $el: Measurable | ComponentPublicInstance | null | undefined\r\n) => {\r\n  let el: HTMLElement | null = null\r\n  if (!$el) return null\r\n\r\n  if ('getBoundingClientRect' in $el || ($el as any) instanceof HTMLElement) {\r\n    el = $el as HTMLElement\r\n  } else {\r\n    // refs can be Vue component\r\n    el = ($el as any as ComponentPublicInstance).$el\r\n  }\r\n  return el\r\n}\r\n\r\nfunction genModifiers(options: UsePopperCoreConfigProps) {\r\n  const { verticalOffset, offset, gpuAcceleration, fallbackPlacements } = options\r\n  return [\r\n    {\r\n      name: 'offset',\r\n      options: {\r\n        offset: [verticalOffset ?? 0, offset ?? 12],\r\n      },\r\n    },\r\n    {\r\n      name: 'preventOverflow',\r\n      options: {\r\n        padding: {\r\n          top: 2,\r\n          bottom: 2,\r\n          left: 5,\r\n          right: 5,\r\n        },\r\n      },\r\n    },\r\n    {\r\n      name: 'flip',\r\n      options: {\r\n        padding: 5,\r\n        fallbackPlacements: fallbackPlacements ?? [],\r\n      },\r\n    },\r\n    {\r\n      name: 'computeStyles',\r\n      options: {\r\n        gpuAcceleration,\r\n        adaptive: gpuAcceleration,\r\n      },\r\n    },\r\n  ]\r\n}\r\n\r\nfunction attachArrow(options: any, { arrowEl, arrowOffset }: ArrowProps) {\r\n  options.modifiers.push({\r\n    name: 'arrow',\r\n    options: {\r\n      element: arrowEl,\r\n      padding: arrowOffset ?? 5,\r\n    },\r\n  } as any)\r\n}\r\n\r\nfunction deriveExtraModifiers(\r\n  options: any,\r\n  modifiers: UsePopperCoreConfigProps['popperOptions']['modifiers']\r\n) {\r\n  if (modifiers) {\r\n    options.modifiers = [...options.modifiers, ...(modifiers ?? [])]\r\n  }\r\n}\r\n"],"names":[],"mappings":"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"}