{"version":3,"file":"modal.mjs","sources":["../../../../../src/components/va-modal/modal.ts"],"sourcesContent":["import { VaModal } from './VaModal'\nimport type { ModalOptions } from './types'\nimport { VNode, render, AppContext, h, nextTick } from 'vue'\n\ntype OptionKeys = keyof ModalOptions;\n\nconst getNodeProps = (vNode: VNode): Record<OptionKeys, any> => {\n  return (vNode.component?.props as Record<OptionKeys, any>) || {}\n}\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?: ModalOptions; appContext?: AppContext } = {},\n): { vNode: VNode; el?: HTMLElement } => {\n  const el: HTMLElement | undefined = document?.createElement('div')\n\n  // eslint-disable-next-line prefer-const\n  let vNode: VNode | null\n\n  // handling the case when 'withoutTransitions = false'\n  const onClose = (event: HTMLElement) => {\n    props?.onClose?.(event)\n    destroy(el, vNode)\n  }\n\n  // handling the case when 'withoutTransitions = true'\n  const onUpdateModelValue = (value: boolean) => {\n    props?.['onUpdate:modelValue']?.(value)\n\n    if (props?.withoutTransitions && !value) {\n      nextTick(() => { // this is required for all handlers to execute\n        destroy(el, vNode)\n      })\n    }\n  }\n\n  vNode = h(component, {\n    ...props,\n    stateful: props?.stateful ?? true,\n    modelValue: true,\n    onClose,\n    'onUpdate:modelValue': onUpdateModelValue,\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\nconst getModalOptions = (options: string | ModalOptions): ModalOptions => typeof options === 'string'\n  ? { message: options }\n  : options\n\nexport const createModalInstance = (customProps: ModalOptions | string, appContext?: AppContext): VNode => {\n  const { vNode, el } = mount(VaModal, { appContext, props: getModalOptions(customProps) })\n\n  if (el && vNode.el && getNodeProps(vNode)) {\n    document.body.appendChild(el.childNodes[0])\n  }\n\n  return vNode\n}\n"],"names":[],"mappings":";;AAMA,MAAM,eAAe,CAAC,UAA0C;;AACtD,WAAA,WAAM,cAAN,mBAAiB,UAAqC;AAChE;AAEA,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,IAAuD,CAAA,MACpC;AACjC,QAAA,KAA8B,qCAAU,cAAc;AAGxD,MAAA;AAGE,QAAA,UAAU,CAAC,UAAuB;;AACtC,yCAAO,YAAP,+BAAiB;AACjB,YAAQ,EAAS;AAAA,EAAA;AAIb,QAAA,qBAAqB,CAAC,UAAmB;;AACrC,yCAAA,2BAAA,+BAAyB;AAE7B,SAAA,+BAAO,uBAAsB,CAAC,OAAO;AACvC,eAAS,MAAM;AACb,gBAAQ,EAAS;AAAA,MAAA,CAClB;AAAA,IACH;AAAA,EAAA;AAGF,UAAQ,EAAE,WAAW;AAAA,IACnB,GAAG;AAAA,IACH,WAAU,+BAAO,aAAY;AAAA,IAC7B,YAAY;AAAA,IACZ;AAAA,IACA,uBAAuB;AAAA,EAAA,CACxB;AAED,MAAI,YAAY;AACd,UAAM,aAAa;AAAA,EACrB;AAEA,MAAI,IAAI;AACN,WAAO,OAAO,EAAE;AAAA,EAClB;AAEO,SAAA,EAAE,OAAO;AAClB;AAEA,MAAM,kBAAkB,CAAC,YAAiD,OAAO,YAAY,WACzF,EAAE,SAAS,QACX,IAAA;AAES,MAAA,sBAAsB,CAAC,aAAoC,eAAmC;AACzG,QAAM,EAAE,OAAO,GAAG,IAAI,MAAM,SAAS,EAAE,YAAY,OAAO,gBAAgB,WAAW,EAAG,CAAA;AAExF,MAAI,MAAM,MAAM,MAAM,aAAa,KAAK,GAAG;AACzC,aAAS,KAAK,YAAY,GAAG,WAAW,CAAC,CAAC;AAAA,EAC5C;AAEO,SAAA;AACT;"}