{"version":3,"file":"useMenu.mjs","sources":["../../../../../../src/components/va-menu/hooks/useMenu.ts"],"sourcesContent":["import { useMount } from '../../../composables/useMount'\nimport { VaMenu } from '../va-menu'\nimport { ExtractComponentPropTypes } from '../../../utils/component-options'\nimport { onBeforeUnmount, computed } from 'vue'\n\ntype OmitMenuProps = 'modelValue' | 'anchor' | 'cursor' | 'stateful' | 'preset'\n\n/** This hook can be used without plugin used */\nexport const useMenu = () => {\n  const { createInstance } = useMount(VaMenu)\n  const instances: (() => void)[] = []\n\n  const destroyAll = () => instances.forEach(destroy => destroy())\n\n  const show = (props: Omit<ExtractComponentPropTypes<typeof VaMenu>, OmitMenuProps> & { event: MouseEvent }) => {\n    destroyAll()\n\n    props.event.preventDefault()\n\n    const destroy = createInstance({\n      ...props,\n      anchor: props.event.target,\n      cursor: {\n        getBoundingClientRect () {\n          const resX = props.event.clientX\n          const resY = props.event.clientY\n          return {\n            width: 0,\n            height: 0,\n            x: resX,\n            y: resY,\n            top: resY,\n            right: resX,\n            bottom: resY,\n            left: resX,\n          }\n        },\n        contextElement: props.event.target,\n      },\n      stateful: true,\n      modelValue: true,\n      preset: 'context',\n      onBeforeUnmount: () => {\n        destroy()\n      },\n    })\n\n    instances.push(destroy)\n\n    return () => {\n      destroy()\n      instances.splice(instances.indexOf(destroy), 1)\n    }\n  }\n\n  onBeforeUnmount(destroyAll)\n\n  return {\n    show,\n  }\n}\n"],"names":[],"mappings":";;;AAQO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,eAAA,IAAmB,SAAS,MAAM;AAC1C,QAAM,YAA4B,CAAA;AAElC,QAAM,aAAa,MAAM,UAAU,QAAQ,CAAA,YAAW,SAAS;AAEzD,QAAA,OAAO,CAAC,UAAiG;AAClG;AAEX,UAAM,MAAM;AAEZ,UAAM,UAAU,eAAe;AAAA,MAC7B,GAAG;AAAA,MACH,QAAQ,MAAM,MAAM;AAAA,MACpB,QAAQ;AAAA,QACN,wBAAyB;AACjB,gBAAA,OAAO,MAAM,MAAM;AACnB,gBAAA,OAAO,MAAM,MAAM;AAClB,iBAAA;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,GAAG;AAAA,YACH,GAAG;AAAA,YACH,KAAK;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,QAEV;AAAA,QACA,gBAAgB,MAAM,MAAM;AAAA,MAC9B;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,iBAAiB,MAAM;AACb;MACV;AAAA,IAAA,CACD;AAED,cAAU,KAAK,OAAO;AAEtB,WAAO,MAAM;AACH;AACR,gBAAU,OAAO,UAAU,QAAQ,OAAO,GAAG,CAAC;AAAA,IAAA;AAAA,EAChD;AAGF,kBAAgB,UAAU;AAEnB,SAAA;AAAA,IACL;AAAA,EAAA;AAEJ;"}