@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 3.64 kB
Source Map (JSON)
{"version":3,"file":"notify.mjs","sources":["../../../../../../packages/components/notification/src/notify.ts"],"sourcesContent":["import { createVNode, isVNode, render } from 'vue'\nimport { isClient, isObject } from '@vuesax-alpha/utils'\nimport {\n createContainer,\n useGlobalComponentSettings,\n} from '@vuesax-alpha/hooks'\n\nimport NotificationConstructor from './notification.vue'\nimport { useNotificationContainerId } from './use-notification'\nimport type { NotificationPosition, Notify, NotifyFn } from './notification'\n\nconst globalContainer: Record<NotificationPosition, HTMLElement | null> = {\n 'top-right': null,\n 'top-center': null,\n 'top-left': null,\n 'bottom-right': null,\n 'bottom-center': null,\n 'bottom-left': null,\n}\n\nexport const notification: NotifyFn & Partial<Notify> = (options = {}) => {\n if (!isClient)\n return {\n close: () => undefined,\n }\n\n if (typeof options === 'string' || isVNode(options)) {\n options = { content: options }\n }\n\n const position = options.position || 'bottom-right'\n\n const { id, selector } = useNotificationContainerId()\n\n if (\n !globalContainer[position] &&\n !document.body.querySelector(selector.value)\n ) {\n globalContainer[position] = createContainer(`${id.value}-${position}`)\n const { ns } = useGlobalComponentSettings('notification')\n globalContainer[position]?.classList.add(ns.is(position))\n }\n\n const vm = createVNode(\n NotificationConstructor,\n { ...options, position },\n isVNode(options.content)\n ? {\n default: () => (isObject(options) ? options.content : null),\n }\n : null\n )\n\n const container = document.createElement('div')\n render(vm, container)\n globalContainer[position]?.appendChild(container.firstChild!)\n\n const close = () => {\n ;(vm.component!.exposed as { close: () => void }).close()\n }\n\n return {\n close,\n }\n}\n\nexport default notification as Notify\n"],"names":[],"mappings":";;;;;;;;;;AAWA,MAAM,eAAoE,GAAA;AAAA,EACxE,WAAa,EAAA,IAAA;AAAA,EACb,YAAc,EAAA,IAAA;AAAA,EACd,UAAY,EAAA,IAAA;AAAA,EACZ,cAAgB,EAAA,IAAA;AAAA,EAChB,eAAiB,EAAA,IAAA;AAAA,EACjB,aAAe,EAAA,IAAA;AACjB,CAAA,CAAA;AAEO,MAAM,YAA2C,GAAA,CAAC,OAAU,GAAA,EAAO,KAAA;AApB1E,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAqBE,EAAA,IAAI,CAAC,QAAA;AACH,IAAO,OAAA;AAAA,MACL,OAAO,MAAM,KAAA,CAAA;AAAA,KACf,CAAA;AAEF,EAAA,IAAI,OAAO,OAAA,KAAY,QAAY,IAAA,OAAA,CAAQ,OAAO,CAAG,EAAA;AACnD,IAAU,OAAA,GAAA,EAAE,SAAS,OAAQ,EAAA,CAAA;AAAA,GAC/B;AAEA,EAAM,MAAA,QAAA,GAAW,QAAQ,QAAY,IAAA,cAAA,CAAA;AAErC,EAAA,MAAM,EAAE,EAAA,EAAI,QAAS,EAAA,GAAI,0BAA2B,EAAA,CAAA;AAEpD,EACE,IAAA,CAAC,gBAAgB,QACjB,CAAA,IAAA,CAAC,SAAS,IAAK,CAAA,aAAA,CAAc,QAAS,CAAA,KAAK,CAC3C,EAAA;AACA,IAAA,eAAA,CAAgB,QAAY,CAAA,GAAA,eAAA,CAAgB,CAAG,EAAA,EAAA,CAAG,SAAS,QAAU,CAAA,CAAA,CAAA,CAAA;AACrE,IAAA,MAAM,EAAE,EAAA,EAAO,GAAA,0BAAA,CAA2B,cAAc,CAAA,CAAA;AACxD,IAAA,CAAA,EAAA,GAAA,eAAA,CAAgB,cAAhB,IAA2B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAU,GAAI,CAAA,EAAA,CAAG,GAAG,QAAQ,CAAA,CAAA,CAAA;AAAA,GACzD;AAEA,EAAA,MAAM,EAAK,GAAA,WAAA;AAAA,IACT,uBAAA;AAAA,IACA,EAAE,GAAG,OAAA,EAAS,QAAS,EAAA;AAAA,IACvB,OAAA,CAAQ,OAAQ,CAAA,OAAO,CACnB,GAAA;AAAA,MACE,SAAS,MAAO,QAAA,CAAS,OAAO,CAAA,GAAI,QAAQ,OAAU,GAAA,IAAA;AAAA,KAExD,GAAA,IAAA;AAAA,GACN,CAAA;AAEA,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC9C,EAAA,MAAA,CAAO,IAAI,SAAS,CAAA,CAAA;AACpB,EAAgB,CAAA,EAAA,GAAA,eAAA,CAAA,QAAA,CAAA,KAAhB,IAA2B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA,CAAY,SAAU,CAAA,UAAA,CAAA,CAAA;AAEjD,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,CAAA;AAAC,IAAC,EAAA,CAAG,SAAW,CAAA,OAAA,CAAkC,KAAM,EAAA,CAAA;AAAA,GAC1D,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,GACF,CAAA;AACF;;;;"}