{"version":3,"file":"utils.mjs","sources":["../../../../../packages/components/popper/src/utils.ts"],"sourcesContent":["import type { ComponentPublicInstance } from 'vue'\nimport type { UsePopperCoreConfigProps, Measurable } from './popper'\n\ntype ArrowProps = {\n  arrowEl: HTMLElement | null\n  arrowOffset: number | undefined\n}\n\nexport const buildPopperOptions = (\n  props: UsePopperCoreConfigProps,\n  arrowProps: ArrowProps\n) => {\n  const { placement, strategy, popperOptions } = props\n  const options = {\n    placement,\n    strategy,\n    ...popperOptions,\n    modifiers: genModifiers(props),\n  }\n\n  attachArrow(options, arrowProps)\n  deriveExtraModifiers(options, popperOptions?.modifiers)\n  return options\n}\n\nexport const unwrapMeasurableEl = (\n  $el: Measurable | null | ComponentPublicInstance\n) => {\n  let el: HTMLElement | null = null\n  if (!$el) return null\n\n  if ('getBoundingClientRect' in $el || ($el as any) instanceof HTMLElement) {\n    el = $el as HTMLElement\n  } else {\n    // refs can be Vue component\n    el = ($el as any as ComponentPublicInstance).$el\n  }\n  return el\n}\n\nfunction genModifiers(options: UsePopperCoreConfigProps) {\n  const { offset, gpuAcceleration, fallbackPlacements } = options\n  return [\n    {\n      name: 'offset',\n      options: {\n        offset: [0, offset ?? 12],\n      },\n    },\n    {\n      name: 'preventOverflow',\n      options: {\n        padding: {\n          top: 2,\n          bottom: 2,\n          left: 5,\n          right: 5,\n        },\n      },\n    },\n    {\n      name: 'flip',\n      options: {\n        padding: 5,\n        fallbackPlacements: fallbackPlacements ?? [],\n      },\n    },\n    {\n      name: 'computeStyles',\n      options: {\n        gpuAcceleration,\n        adaptive: gpuAcceleration,\n      },\n    },\n  ]\n}\n\nfunction attachArrow(options: any, { arrowEl, arrowOffset }: ArrowProps) {\n  options.modifiers.push({\n    name: 'arrow',\n    options: {\n      element: arrowEl,\n      padding: arrowOffset ?? 5,\n    },\n  } as any)\n}\n\nfunction deriveExtraModifiers(\n  options: any,\n  modifiers: UsePopperCoreConfigProps['popperOptions']['modifiers']\n) {\n  if (modifiers) {\n    options.modifiers = [...options.modifiers, ...(modifiers ?? [])]\n  }\n}\n"],"names":[],"mappings":"AAQa,MAAA,kBAAA,GAAqB,CAChC,KAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,EAAE,SAAA,EAAW,QAAU,EAAA,aAAA,EAAkB,GAAA,KAAA,CAAA;AAC/C,EAAA,MAAM,OAAU,GAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG,aAAA;AAAA,IACH,SAAA,EAAW,aAAa,KAAK,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAA,WAAA,CAAY,SAAS,UAAU,CAAA,CAAA;AAC/B,EAAqB,oBAAA,CAAA,OAAA,EAAS,+CAAe,SAAS,CAAA,CAAA;AACtD,EAAO,OAAA,OAAA,CAAA;AACT,EAAA;AAEa,MAAA,kBAAA,GAAqB,CAChC,GACG,KAAA;AACH,EAAA,IAAI,EAAyB,GAAA,IAAA,CAAA;AAC7B,EAAA,IAAI,CAAC,GAAA;AAAK,IAAO,OAAA,IAAA,CAAA;AAEjB,EAAI,IAAA,uBAAA,IAA2B,GAAQ,IAAA,GAAA,YAAuB,WAAa,EAAA;AACzE,IAAK,EAAA,GAAA,GAAA,CAAA;AAAA,GACA,MAAA;AAEL,IAAA,EAAA,GAAM,GAAuC,CAAA,GAAA,CAAA;AAAA,GAC/C;AACA,EAAO,OAAA,EAAA,CAAA;AACT,EAAA;AAEA,SAAS,aAAa,OAAmC,EAAA;AACvD,EAAA,MAAM,EAAE,MAAA,EAAQ,eAAiB,EAAA,kBAAA,EAAuB,GAAA,OAAA,CAAA;AACxD,EAAO,OAAA;AAAA,IACL;AAAA,MACE,IAAM,EAAA,QAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,MAAQ,EAAA,CAAC,CAAG,EAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,EAAE,CAAA;AAAA,OAC1B;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,iBAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,UACP,GAAK,EAAA,CAAA;AAAA,UACL,MAAQ,EAAA,CAAA;AAAA,UACR,IAAM,EAAA,CAAA;AAAA,UACN,KAAO,EAAA,CAAA;AAAA,SACT;AAAA,OACF;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,OAAS,EAAA,CAAA;AAAA,QACT,kBAAA,EAAoB,kDAAsB,EAAC;AAAA,OAC7C;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,eAAA;AAAA,MACN,OAAS,EAAA;AAAA,QACP,eAAA;AAAA,QACA,QAAU,EAAA,eAAA;AAAA,OACZ;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;AAEA,SAAS,WAAY,CAAA,OAAA,EAAc,EAAE,OAAA,EAAS,aAA2B,EAAA;AACvE,EAAA,OAAA,CAAQ,UAAU,IAAK,CAAA;AAAA,IACrB,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,OAAS,EAAA,OAAA;AAAA,MACT,SAAS,WAAe,IAAA,IAAA,GAAA,WAAA,GAAA,CAAA;AAAA,KAC1B;AAAA,GACM,CAAA,CAAA;AACV,CAAA;AAEA,SAAS,oBAAA,CACP,SACA,SACA,EAAA;AACA,EAAA,IAAI,SAAW,EAAA;AACb,IAAQ,OAAA,CAAA,SAAA,GAAY,CAAC,GAAG,OAAA,CAAQ,WAAW,GAAI,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,EAAG,CAAA,CAAA;AAAA,GACjE;AACF;;;;"}