{"version":3,"file":"useMount.mjs","sources":["../../../../src/composables/useMount.ts"],"sourcesContent":["\nimport { type VNode, type AppContext, render, h, nextTick, getCurrentInstance } from 'vue'\nimport { type VuesticComponent } from '../services/vue-plugin/types'\n\ntype Props = Record<string, any>\n\nconst destroy = (el: HTMLElement | null | undefined, vNode: VNode | null) => {\n  if (el) {\n    render(null, el)\n    el.remove()\n  }\n\n  el = null\n  vNode = null\n}\n\nconst mount = (\n  component: any,\n  { props, appContext }: { props?: Props; appContext?: AppContext } = {},\n): { vNode: VNode; el?: HTMLElement } => {\n  const el: HTMLElement | undefined = document?.createElement('div')\n\n  document.body.appendChild(el)\n\n  const vNode: VNode | null = h(component, {\n    ...props,\n    stateful: props?.stateful ?? true,\n  })\n\n  if (appContext) {\n    vNode.appContext = appContext\n  }\n\n  if (el) {\n    render(vNode, el)\n  }\n\n  return { vNode, el }\n}\n\nexport const useMount = (component: VuesticComponent) => {\n  const appContext = getCurrentInstance()?.appContext\n\n  if (!appContext) {\n    throw new Error('useMount can be used only in setup function')\n  }\n\n  const createInstance = (props: Props) => {\n    const { vNode, el } = mount(component, { props, appContext })\n    return () => {\n      nextTick(() => {\n        destroy(el, vNode)\n      })\n    }\n  }\n\n  return {\n    createInstance,\n  }\n}\n"],"names":[],"mappings":";AAMA,MAAM,UAAU,CAAC,IAAoC,UAAwB;AAC3E,MAAI,IAAI;AACN,WAAO,MAAM,EAAE;AACf,OAAG,OAAO;AAAA,EACZ;AAEK,OAAA;AAEP;AAEA,MAAM,QAAQ,CACZ,WACA,EAAE,OAAO,WAAW,IAAgD,CAAA,MAC7B;AACjC,QAAA,KAA8B,qCAAU,cAAc;AAEnD,WAAA,KAAK,YAAY,EAAE;AAEtB,QAAA,QAAsB,EAAE,WAAW;AAAA,IACvC,GAAG;AAAA,IACH,WAAU,+BAAO,aAAY;AAAA,EAAA,CAC9B;AAED,MAAI,YAAY;AACd,UAAM,aAAa;AAAA,EACrB;AAEA,MAAI,IAAI;AACN,WAAO,OAAO,EAAE;AAAA,EAClB;AAEO,SAAA,EAAE,OAAO;AAClB;AAEa,MAAA,WAAW,CAAC,cAAgC;;AACjD,QAAA,cAAa,wBAAsB,MAAtB,mBAAsB;AAEzC,MAAI,CAAC,YAAY;AACT,UAAA,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAEM,QAAA,iBAAiB,CAAC,UAAiB;AACjC,UAAA,EAAE,OAAO,OAAO,MAAM,WAAW,EAAE,OAAO,WAAA,CAAY;AAC5D,WAAO,MAAM;AACX,eAAS,MAAM;AACb,gBAAQ,EAAS;AAAA,MAAA,CAClB;AAAA,IAAA;AAAA,EACH;AAGK,SAAA;AAAA,IACL;AAAA,EAAA;AAEJ;"}