{"version":3,"file":"contextmenu.mjs","sources":["../../../../../../packages/components/contextmenu/src/contextmenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\n\nimport { useNamespace } from '@lit-element/hooks'\nimport { isFunction } from '@lit-element/utils'\nimport LtMenu from '@lit-element/components/menu'\nimport LtTooltip from '@lit-element/components/tooltip'\nimport menuItem from './menuItem.vue'\nimport type { ContextmenuConfig, ContextmenuOptions } from './symbol'\n\ndefineOptions({ name: 'Contextmenu' })\n\nconst ns = useNamespace('contextmenu')\nconst visible = ref(false)\nconst configs = ref<ContextmenuConfig[]>([])\nconst dropdownRef = ref()\n\nconst onSelect = ref<((key: string, keyPath: string[]) => void) | null>(null)\nconst onCancel = ref<(() => void) | null>(null)\n\nconst position = ref({\n  top: 0,\n  left: 0,\n  bottom: 0,\n  right: 0,\n})\n\nconst triggerRef: any = ref({\n  getBoundingClientRect() {\n    return position.value\n  },\n})\n\nfunction openContextmenu(options: ContextmenuOptions) {\n  position.value = DOMRect.fromRect({\n    width: 0,\n    height: 0,\n    x: options.clientX || 0,\n    y: options.clientY || 0,\n  })\n\n  configs.value = options.configs\n  visible.value = true\n  return new Promise<{ key: string; keyPath: string[] } | null>((resolve) => {\n    onSelect.value = (key: string, keyPath: string[]) => {\n      resolve({ key, keyPath })\n    }\n    onCancel.value = () => {\n      resolve(null)\n    }\n  })\n}\n\nfunction afterContextmenu() {\n  onSelect.value = null\n  onCancel.value = null\n}\n\nconst handleSelect = (key: string, keyPath: string[]) => {\n  visible.value = false\n  if (isFunction(onSelect.value)) {\n    onSelect.value(key, keyPath)\n    afterContextmenu()\n  }\n}\n\nfunction handleCancel() {\n  visible.value = false\n  if (isFunction(onCancel.value)) {\n    onCancel.value()\n    afterContextmenu()\n  }\n}\n\ndefineExpose({ visible, position, openContextmenu, handleSelect, handleCancel })\n</script>\n\n<template>\n  <LtTooltip\n    ref=\"dropdownRef\"\n    v-model:visible=\"visible\"\n    trigger=\"contextmenu\"\n    effect=\"light\"\n    virtual-triggering\n    :virtual-ref=\"triggerRef\"\n    :popper-class=\"[ns.b()]\"\n    @contextmenu.prevent.stop\n  >\n    <template #content>\n      <lt-menu collapse @select=\"handleSelect\">\n        <menuItem :list=\"configs\" :item-comp=\"menuItem\" />\n      </lt-menu>\n    </template>\n  </LtTooltip>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;mCAUc,CAAA,EAAE,IAAM,EAAA,aAAA,EAAc,CAAA,CAAA;;;;AAEpC,IAAM,MAAA,EAAA,GAAK,aAAa,aAAa,CAAA,CAAA;AACrC,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAM,MAAA,OAAA,GAAU,GAAyB,CAAA,EAAE,CAAA,CAAA;AAC3C,IAAA,MAAM,cAAc,GAAI,EAAA,CAAA;AAExB,IAAM,MAAA,QAAA,GAAW,IAAuD,IAAI,CAAA,CAAA;AAC5E,IAAM,MAAA,QAAA,GAAW,IAAyB,IAAI,CAAA,CAAA;AAE9C,IAAA,MAAM,WAAW,GAAI,CAAA;AAAA,MACnB,GAAK,EAAA,CAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,MAAQ,EAAA,CAAA;AAAA,MACR,KAAO,EAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,aAAkB,GAAI,CAAA;AAAA,MAC1B,qBAAwB,GAAA;AACtB,QAAA,OAAO,QAAS,CAAA,KAAA,CAAA;AAAA,OAClB;AAAA,KACD,CAAA,CAAA;AAED,IAAA,SAAS,gBAAgB,OAA6B,EAAA;AACpD,MAAS,QAAA,CAAA,KAAA,GAAQ,QAAQ,QAAS,CAAA;AAAA,QAChC,KAAO,EAAA,CAAA;AAAA,QACP,MAAQ,EAAA,CAAA;AAAA,QACR,CAAA,EAAG,QAAQ,OAAW,IAAA,CAAA;AAAA,QACtB,CAAA,EAAG,QAAQ,OAAW,IAAA,CAAA;AAAA,OACvB,CAAA,CAAA;AAED,MAAA,OAAA,CAAQ,QAAQ,OAAQ,CAAA,OAAA,CAAA;AACxB,MAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAChB,MAAO,OAAA,IAAI,OAAmD,CAAA,CAAC,OAAY,KAAA;AACzE,QAAS,QAAA,CAAA,KAAA,GAAQ,CAAC,GAAA,EAAa,OAAsB,KAAA;AACnD,UAAQ,OAAA,CAAA,EAAE,GAAK,EAAA,OAAA,EAAS,CAAA,CAAA;AAAA,SAC1B,CAAA;AACA,QAAA,QAAA,CAAS,QAAQ,MAAM;AACrB,UAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,SACd,CAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAEA,IAAA,SAAS,gBAAmB,GAAA;AAC1B,MAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AACjB,MAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AAAA,KACnB;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,GAAA,EAAa,OAAsB,KAAA;AACvD,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAI,IAAA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAG,EAAA;AAC9B,QAAS,QAAA,CAAA,KAAA,CAAM,KAAK,OAAO,CAAA,CAAA;AAC3B,QAAiB,gBAAA,EAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAEA,IAAA,SAAS,YAAe,GAAA;AACtB,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAChB,MAAI,IAAA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAG,EAAA;AAC9B,QAAA,QAAA,CAAS,KAAM,EAAA,CAAA;AACf,QAAiB,gBAAA,EAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAEA,IAAA,MAAA,CAAa,EAAE,OAAS,EAAA,QAAA,EAAU,eAAiB,EAAA,YAAA,EAAc,cAAc,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}