vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 2.22 kB
Source Map (JSON)
{"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;"}