{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/contextmenu/src/index.ts"],"sourcesContent":["import { createApp, createVNode, render } from 'vue'\nimport { isClient } from '@lit-element/utils'\nimport { destroyObject, proxyExposed } from './utils'\nimport Component from './contextmenu.vue'\n\nimport type { App } from 'vue'\nimport type {\n  ContextmenuConfig,\n  ContextmenuInstance,\n  ContextmenuOptions,\n  Key,\n} from './symbol'\n\nexport type { ContextmenuConfig, ContextmenuOptions }\n\nexport class ContextmenuManager {\n  name: string\n\n  private _mountedApp: App<unknown> | null\n  private _instance: ContextmenuInstance | null\n  private _innerApp: App<unknown> | null\n  private _container: HTMLElement | null\n  private _pending: Promise<Key[] | null> | null\n  private _wrapper: HTMLElement | SVGElement | null\n  private _mountedEl: HTMLElement | null\n\n  constructor() {\n    this._mountedApp = null\n    this._instance = null\n    this._innerApp = null\n    this._container = null\n    this._pending = null\n    this._wrapper = null\n    this._mountedEl = null\n    this.name = 'LtContextmenu'\n  }\n\n  open(options: ContextmenuOptions) {\n    if (!isClient) {\n      return\n    }\n    const { target = document.body, ...others } = options\n    this._pending = this._getInstance()!.openContextmenu(others)\n    return this._pending\n  }\n\n  destroy() {\n    this._mountedEl && this._wrapper?.removeChild(this._mountedEl)\n    this._innerApp?.unmount()\n    this._container && render(null, this._container)\n    destroyObject(this)\n  }\n\n  isDestroyed() {\n    return false\n  }\n\n  install(app: App, options: { property?: string } = {}) {\n    const { property } = options\n\n    this._mountedApp = app\n\n    if (property || !app.config.globalProperties.$contextmenu) {\n      app.config.globalProperties[property || '$contextmenu'] = this\n    }\n  }\n\n  private _getInstance() {\n    if (!isClient) return\n\n    if (this._pending) {\n      let innerApp = this._innerApp\n      let container = this._container\n\n      const unmount = () => {\n        innerApp?.unmount()\n        container && render(null, container)\n\n        innerApp = null\n        container = null\n      }\n\n      this._pending.finally(unmount)\n      this._instance?.handleCancel()\n    } else {\n      this._innerApp?.unmount()\n      this._container && render(null, this._container)\n    }\n\n    this._pending = null\n\n    if (!this._mountedApp) {\n      // console.warn(\n      //   '[Contextmenu]: App missing, the plugin maybe not installed.'\n      // )\n\n      this._container = document.createElement('div')\n      this._innerApp = createApp(Component)\n      this._instance = this._innerApp.mount(\n        this._container\n      ) as ContextmenuInstance\n    } else {\n      const vnode = createVNode(Component, null, null)\n\n      this._container = document.createElement('div')\n      vnode.appContext = this._mountedApp._context\n      render(vnode, this._container)\n      this._instance = proxyExposed<ContextmenuInstance>(vnode)\n    }\n    return this._instance\n  }\n}\n\nexport const Contextmenu = new ContextmenuManager()\n"],"names":[],"mappings":"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"}